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
- Language
- JavaScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-client-url-shim
Browser
urlshim for DeepSeek Harness client bundles — a tsdown plugin that inlines anode:urlpolyfill so dependencies like@pixi/utilsbuild 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 tonew URL)resolve— Node-style path resolution (absolute → URL, relative → join with..handling)format— best-effort href/pathname serializationfileURLToPath/pathToFileURL— trivial browser equivalentsURL/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/utils6.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