dsh-claude-style 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -2
- package/LICENSE +9 -0
- package/README.en.md +4 -3
- package/README.md +4 -15
- package/docs/STYLE.md +22 -14
- package/docs/architecture.md +74 -0
- package/fonts/GoogleSansFlexPicker.woff2 +0 -0
- package/fonts/OFL-GoogleSansFlex.txt +93 -0
- package/lib/client.js +710 -1485
- package/lib/index.js +6 -23
- package/lib/model-descriptions.json +225 -209
- package/package.json +7 -2
- package/docs/REFACTOR.md +0 -294
- package/lib/icons/providers/ClaudeApi.png +0 -0
- package/lib/icons/providers/README.md +0 -13
- package/lib/icons/providers/TeamoRouter-icon-dark.png +0 -0
- package/lib/icons/providers/a6-icon.png +0 -0
- package/lib/icons/providers/aicodemirror.svg +0 -19
- package/lib/icons/providers/aicoding.svg +0 -20
- package/lib/icons/providers/aihubmix-color.svg +0 -1
- package/lib/icons/providers/algocode.svg +0 -51
- package/lib/icons/providers/alibaba.svg +0 -1
- package/lib/icons/providers/amuxapi-icon.svg +0 -13
- package/lib/icons/providers/anthropic.svg +0 -1
- package/lib/icons/providers/apikeyfun.png +0 -0
- package/lib/icons/providers/apinebula_icon.png +0 -0
- package/lib/icons/providers/atlascloud_icon.png +0 -0
- package/lib/icons/providers/aws.svg +0 -1
- package/lib/icons/providers/azure.svg +0 -1
- package/lib/icons/providers/baidu.svg +0 -1
- package/lib/icons/providers/bailian.svg +0 -1
- package/lib/icons/providers/bytedance.svg +0 -1
- package/lib/icons/providers/byteplus.png +0 -0
- package/lib/icons/providers/catcoder.svg +0 -1
- package/lib/icons/providers/ccsub.svg +0 -4
- package/lib/icons/providers/chatglm.svg +0 -1
- package/lib/icons/providers/cherryin.png +0 -0
- package/lib/icons/providers/claude.svg +0 -1
- package/lib/icons/providers/claudecn.png +0 -0
- package/lib/icons/providers/claw.svg +0 -22
- package/lib/icons/providers/cloudflare.svg +0 -1
- package/lib/icons/providers/code0.png +0 -0
- package/lib/icons/providers/cohere.svg +0 -1
- package/lib/icons/providers/copilot.svg +0 -1
- package/lib/icons/providers/crazyrouter.svg +0 -1
- package/lib/icons/providers/cubence.svg +0 -9
- package/lib/icons/providers/deepseek.svg +0 -1
- package/lib/icons/providers/doubao.svg +0 -1
- package/lib/icons/providers/eflowcode.png +0 -0
- package/lib/icons/providers/etok.png +0 -0
- package/lib/icons/providers/fenno-icon.webp +0 -0
- package/lib/icons/providers/gemini.svg +0 -1
- package/lib/icons/providers/gemma.svg +0 -1
- package/lib/icons/providers/github.svg +0 -1
- package/lib/icons/providers/githubcopilot.svg +0 -1
- package/lib/icons/providers/google.svg +0 -1
- package/lib/icons/providers/googlecloud.svg +0 -1
- package/lib/icons/providers/grok.svg +0 -1
- package/lib/icons/providers/hermes.png +0 -0
- package/lib/icons/providers/huawei.svg +0 -1
- package/lib/icons/providers/huggingface.svg +0 -1
- package/lib/icons/providers/hunyuan.svg +0 -1
- package/lib/icons/providers/huoshan.png +0 -0
- package/lib/icons/providers/kimi.svg +0 -1
- package/lib/icons/providers/lioncc.svg +0 -6
- package/lib/icons/providers/longcat-color.svg +0 -1
- package/lib/icons/providers/mcp.svg +0 -1
- package/lib/icons/providers/meta.svg +0 -1
- package/lib/icons/providers/micu.svg +0 -23
- package/lib/icons/providers/midjourney.svg +0 -1
- package/lib/icons/providers/minimax.svg +0 -1
- package/lib/icons/providers/mistral.svg +0 -1
- package/lib/icons/providers/modelscope-color.svg +0 -1
- package/lib/icons/providers/nekocode-icon.png +0 -0
- package/lib/icons/providers/newapi.svg +0 -1
- package/lib/icons/providers/notion.svg +0 -1
- package/lib/icons/providers/novita.svg +0 -11
- package/lib/icons/providers/nvidia.svg +0 -1
- package/lib/icons/providers/ollama.svg +0 -1
- package/lib/icons/providers/openai.svg +0 -1
- package/lib/icons/providers/opencode-logo-light.svg +0 -1
- package/lib/icons/providers/openrouter.svg +0 -1
- package/lib/icons/providers/packycode.svg +0 -1
- package/lib/icons/providers/palm.svg +0 -1
- package/lib/icons/providers/pateway.jpg +0 -0
- package/lib/icons/providers/perplexity.svg +0 -1
- package/lib/icons/providers/pipellm.png +0 -0
- package/lib/icons/providers/ppio.svg +0 -1
- package/lib/icons/providers/qianwenai.svg +0 -1
- package/lib/icons/providers/qiniu.png +0 -0
- package/lib/icons/providers/qwen.svg +0 -1
- package/lib/icons/providers/qwencloud.svg +0 -1
- package/lib/icons/providers/rc.svg +0 -1
- package/lib/icons/providers/relaxcode.png +0 -0
- package/lib/icons/providers/runapi.jpg +0 -0
- package/lib/icons/providers/shengsuanyun.svg +0 -4
- package/lib/icons/providers/siliconflow.svg +0 -1
- package/lib/icons/providers/sssaicode.svg +0 -73
- package/lib/icons/providers/stability.svg +0 -1
- package/lib/icons/providers/stepfun.svg +0 -10
- package/lib/icons/providers/subrouter.svg +0 -30
- package/lib/icons/providers/sudocode-us.png +0 -0
- package/lib/icons/providers/sudocode.png +0 -0
- package/lib/icons/providers/tencent.svg +0 -1
- package/lib/icons/providers/ucloud.svg +0 -1
- package/lib/icons/providers/unity2.png +0 -0
- package/lib/icons/providers/vercel.svg +0 -1
- package/lib/icons/providers/wenxin.svg +0 -1
- package/lib/icons/providers/xai.svg +0 -1
- package/lib/icons/providers/xiaomimimo.svg +0 -1
- package/lib/icons/providers/xycai-icon.png +0 -0
- package/lib/icons/providers/yi.svg +0 -1
- package/lib/icons/providers/zeroone.svg +0 -1
- package/lib/icons/providers/zetaapi-icon.png +0 -0
- package/lib/icons/providers/zhipu.svg +0 -1
package/lib/index.js
CHANGED
|
@@ -45,16 +45,18 @@ const COPY_FILE = 'model-descriptions.json'
|
|
|
45
45
|
* Webfonts this plugin serves under `${ROUTE_PREFIX}/fonts/`, mapped to their
|
|
46
46
|
* content type. The table is a whitelist: the filename is the whole request
|
|
47
47
|
* contract, so nothing below the package's `fonts/` directory is reachable
|
|
48
|
-
* and no path traversal is possible. The JetBrains Mono files
|
|
49
|
-
* package; the Anthropic faces do not (copyright) —
|
|
50
|
-
* user-supplied copy in `fonts/` is served, and
|
|
51
|
-
* into a 404 the browser half's font stacks fall
|
|
48
|
+
* and no path traversal is possible. The JetBrains Mono files and the Gemini
|
|
49
|
+
* picker face ship in the npm package; the Anthropic faces do not (copyright) —
|
|
50
|
+
* their entries exist so a user-supplied copy in `fonts/` is served, and
|
|
51
|
+
* readFileSync's ENOENT turns into a 404 the browser half's font stacks fall
|
|
52
|
+
* back from.
|
|
52
53
|
*/
|
|
53
54
|
const FONT_FILES = {
|
|
54
55
|
'JetBrainsMonoVariable.ttf': 'font/ttf',
|
|
55
56
|
'JetBrainsMonoItalicVariable.ttf': 'font/ttf',
|
|
56
57
|
'AnthropicSansWebText.ttf': 'font/ttf',
|
|
57
58
|
'AnthropicSerifWebText.ttf': 'font/ttf',
|
|
59
|
+
'GoogleSansFlexPicker.woff2': 'font/woff2',
|
|
58
60
|
}
|
|
59
61
|
/** Preferences route: `POST` reads when the body carries no write key, writes otherwise. */
|
|
60
62
|
const PREFS_PATH = `${ROUTE_PREFIX}/prefs`
|
|
@@ -229,7 +231,6 @@ export function apply(ctx) {
|
|
|
229
231
|
const here = dirname(fileURLToPath(import.meta.url))
|
|
230
232
|
const file = join(here, COPY_FILE)
|
|
231
233
|
const fontsDir = join(here, '..', 'fonts')
|
|
232
|
-
const providersDir = join(here, 'icons', 'providers')
|
|
233
234
|
|
|
234
235
|
/**
|
|
235
236
|
* Answer one request under the route prefix with a static file.
|
|
@@ -290,24 +291,6 @@ export function apply(ctx) {
|
|
|
290
291
|
})
|
|
291
292
|
return
|
|
292
293
|
}
|
|
293
|
-
const providerFile = sub.startsWith('/icons/providers/') ? sub.slice('/icons/providers/'.length) : undefined
|
|
294
|
-
if (providerFile !== undefined && /^[A-Za-z0-9._-]+$/.test(providerFile)) {
|
|
295
|
-
const ext = providerFile.slice(providerFile.lastIndexOf('.')).toLowerCase()
|
|
296
|
-
const mime = ext === '.svg'
|
|
297
|
-
? 'image/svg+xml'
|
|
298
|
-
: ext === '.png'
|
|
299
|
-
? 'image/png'
|
|
300
|
-
: ext === '.jpg' || ext === '.jpeg'
|
|
301
|
-
? 'image/jpeg'
|
|
302
|
-
: ext === '.webp'
|
|
303
|
-
? 'image/webp'
|
|
304
|
-
: 'application/octet-stream'
|
|
305
|
-
sendFile(res, req.method, join(providersDir, providerFile), {
|
|
306
|
-
'content-type': mime,
|
|
307
|
-
'cache-control': 'public, max-age=86400',
|
|
308
|
-
})
|
|
309
|
-
return
|
|
310
|
-
}
|
|
311
294
|
res.writeHead(404)
|
|
312
295
|
res.end()
|
|
313
296
|
},
|