返回目录
其他 插件

dsh-client-url-shim

ankesu/dsh-client-url-shim

Browser url shim for DeepSeek Harness client bundles: inlines a node:url polyfill (parse/resolve/format/URL) so dependencies like @pixi/utils build and run in the web module table. · DSH 客户端构建的 url 浏览器垫片

Stars
0
Forks
0
Issues
0
更新
2 天前

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:ankesu/dsh-client-url-shim

该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。

PROJECT README

README

dsh-client-url-shim

Browser url shim for DeepSeek Harness client bundles — a tsdown plugin that inlines a node:url polyfill so dependencies like @pixi/utils build and run inside the DSH web module table.

DSH 客户端 bundle 的 url 浏览器垫片——把依赖里 node:url 的导入替换成浏览器安全实现, 解决 require("url") missed the module table 崩溃。

Problem / 问题

DSH client bundles are CJS artifacts executed by the harness's own module loader. The loader only answers requires from a frozen module table (platform seed modules). A dependency that imports Node builtins — e.g. @pixi/utils does import { parse } from 'url' — compiles to require("url"), which the table cannot answer:

client-modules: require("url") missed the module table — not a platform seed
word, not a shell-own module, and no registered factory

DSH 客户端 bundle 由 DSH 自己的模块加载器执行,只认冻结的模块表。依赖里 import node:url 会编译成 require("url"),模块表没有 url → 整个插件加载失败。

Solution / 方案

A small tsdown/Rolldown plugin intercepts url / node:url imports at build time and replaces them with a virtual browser-safe module:

  • parse — Node-style URL decomposition (falls back to new URL)
  • resolve — Node-style path resolution (absolute → URL, relative → join with .. handling)
  • format — best-effort href/pathname serialization
  • fileURLToPath / pathToFileURL — trivial browser equivalents
  • URL / URLSearchParams — the real browser globals

Usage / 用法

// tsdown.config.ts
import { defineConfig } from 'tsdown'
import { urlShim } from 'dsh-client-url-shim'

export default defineConfig({
  entry: { client: 'src/client/index.ts' },
  format: 'cjs',
  platform: 'browser',
  plugins: [urlShim()],
})

Or add the plugin object directly to an existing tsdown plugins array (see example/tsdown.config.ts for a full DSH plugin client build).

Verified with / 实测验证

  • DSH (DeepSeek Harness) web profile, tsdown 0.22.2 / rolldown 1.1.5
  • @pixi/utils 6.5.10 (import { parse } from 'url') — the exact dependency that blew up before the shim
  • pixi.js 6.5.10 + pixi-live2d-display 0.4.0 fully inlined client bundle, ~1.5 MB, boots and renders in the harness

How the shim was born / 来历

Built in an isolated test profile after a live1d table crash — the first of nine mines cleared while integrating Live2D into DSH. Full war story in the companion blog post (TBD).

License

MIT

CLASSIFICATION EVIDENCE

分类依据

项目类型插件
功能分类其他
规则置信度

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。