@purestack/ts-highlight 1.1.34 → 1.1.35
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/README.md +3 -0
- package/dist/ts-highlight.d.mts +5 -2
- package/dist/ts-highlight.d.mts.map +1 -1
- package/dist/ts-highlight.mjs +236 -3
- package/dist/ts-highlight.mjs.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -46,6 +46,9 @@ namespace, version, and input keys.
|
|
|
46
46
|
`DEFAULT_MDX_CODE_THEMES` are exported for standalone use. The shared
|
|
47
47
|
`MdxCodeHighlighter` contract is exported by `ts-common` and `ts-ssg`.
|
|
48
48
|
|
|
49
|
+
This package also owns `DEFAULT_CODE_LANGUAGES`, `LANGUAGE_BY_EXTENSION`, and
|
|
50
|
+
`normalizeCodeLanguage` for language defaults, extension inference, and aliases.
|
|
51
|
+
|
|
49
52
|
To replace the backend entirely, supply `markdown.createHighlighter(config)`
|
|
50
53
|
from an ordinary plugin. It takes precedence over the default provider, which
|
|
51
54
|
is not initialized. Per-language `markdown.resolveHighlighter` callbacks take
|
package/dist/ts-highlight.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/*! @purestack/ts-highlight v1.1.
|
|
1
|
+
/*! @purestack/ts-highlight v1.1.35 | (c) 2026 Ahmed Yasin Koculu | MIT License */
|
|
2
2
|
|
|
3
|
-
import { MdxCodeHighlighter, SiteConfigResolution, SiteMdxConfig } from "@purestack/ts-common";
|
|
4
3
|
import { HLJSApi } from "highlight.js";
|
|
5
4
|
import { Highlighter, createHighlighter } from "shiki";
|
|
5
|
+
import { MdxCodeHighlighter, SiteConfigResolution, SiteMdxConfig } from "@purestack/ts-common";
|
|
6
6
|
type MdxShikiFactory = (options: Parameters<typeof createHighlighter>[0]) => Highlighter | Promise<Highlighter>;
|
|
7
7
|
interface MdxCodeThemes {
|
|
8
8
|
light: string;
|
|
@@ -18,6 +18,9 @@ interface MdxHighlighterOptions {
|
|
|
18
18
|
cache?: boolean;
|
|
19
19
|
}
|
|
20
20
|
export declare function createMdxHighlighter(themes?: MdxCodeThemes, langs?: MdxCodeLangs, { create, cache: useCache }?: MdxHighlighterOptions): Promise<MdxCodeHighlighter>;
|
|
21
|
+
export declare const DEFAULT_CODE_LANGUAGES: string[];
|
|
22
|
+
export declare const LANGUAGE_BY_EXTENSION: Record<string, string>;
|
|
23
|
+
export declare function normalizeCodeLanguage(value: string): string;
|
|
21
24
|
export declare function createHljsHighlighter(highlighter?: HLJSApi): MdxCodeHighlighter;
|
|
22
25
|
export interface HighlightPluginOptions {
|
|
23
26
|
createShiki?: MdxShikiFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-highlight.d.mts","names":[],"sources":["../src/shiki.ts","../src/highlightjs.ts","../src/index.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ts-highlight.d.mts","names":[],"sources":["../src/shiki.ts","../src/codeLanguages.ts","../src/highlightjs.ts","../src/index.ts"],"mappings":";;;KAKY,mBACV,SAAS,kBAAkB,0BACxB,cAAc,QAAQ;UAEV;EACf;EACA;;KAGU;qBAEC,yBAAyB;qBAKzB,wBAAwB;UAIpB;;EAEf,SAAS;;EAET;;wBAGoB,qBACpB,SAAQ,eACR,QAAO,gBACL,QAAQ,OAAO,aAAmB,wBACnC,QAAQ;qBCiDE;qBAQA,uBAAuB;wBAMpB,sBAAsB;wBCvFtB,sBACd,cAAa,UACZ;iBCOc;EACf,cAAc;EACd,0BAA0B,UAAU,QAAQ;;;wBAI9B,gBAAgB,UAAS;EAErC;EACA;EACA;IACE,YAAS,UAAa;MAElB;QAAO;;;;EAIb;IACQ,oBAAiB,KAAA;MAIrB,KAAK,QAAQ;MACb;QACD,uCAAA"}
|
package/dist/ts-highlight.mjs
CHANGED
|
@@ -1,11 +1,244 @@
|
|
|
1
|
-
/*! @purestack/ts-highlight v1.1.
|
|
1
|
+
/*! @purestack/ts-highlight v1.1.35 | (c) 2026 Ahmed Yasin Koculu | MIT License */
|
|
2
2
|
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
|
-
import { DEFAULT_CODE_LANGUAGES, normalizeCodeLanguage } from "@purestack/ts-common";
|
|
5
4
|
import hljs from "highlight.js";
|
|
6
5
|
import { createHighlighter } from "shiki";
|
|
7
6
|
import { PersistentCache } from "@purestack/ts-util-node";
|
|
8
7
|
|
|
8
|
+
// packages/ts-highlight/src/codeLanguages.ts
|
|
9
|
+
const codeLanguages = {
|
|
10
|
+
bash: {
|
|
11
|
+
aliases: [
|
|
12
|
+
"sh",
|
|
13
|
+
"shell",
|
|
14
|
+
"shellscript",
|
|
15
|
+
"zsh"
|
|
16
|
+
],
|
|
17
|
+
extensions: [
|
|
18
|
+
".sh",
|
|
19
|
+
".bash",
|
|
20
|
+
".zsh"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
bat: {
|
|
24
|
+
aliases: [
|
|
25
|
+
"batch",
|
|
26
|
+
"cmd",
|
|
27
|
+
"dos"
|
|
28
|
+
],
|
|
29
|
+
extensions: [".bat", ".cmd"]
|
|
30
|
+
},
|
|
31
|
+
c: { extensions: [".c", ".h"] },
|
|
32
|
+
cmake: { extensions: [".cmake"] },
|
|
33
|
+
cpp: {
|
|
34
|
+
aliases: [
|
|
35
|
+
"c++",
|
|
36
|
+
"cc",
|
|
37
|
+
"cxx",
|
|
38
|
+
"h++",
|
|
39
|
+
"hpp",
|
|
40
|
+
"hxx"
|
|
41
|
+
],
|
|
42
|
+
extensions: [
|
|
43
|
+
".cc",
|
|
44
|
+
".cpp",
|
|
45
|
+
".cxx",
|
|
46
|
+
".hh",
|
|
47
|
+
".hpp",
|
|
48
|
+
".hxx"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
csharp: {
|
|
52
|
+
aliases: ["c#", "cs"],
|
|
53
|
+
extensions: [".cs", ".csx"]
|
|
54
|
+
},
|
|
55
|
+
css: { extensions: [".css"] },
|
|
56
|
+
dart: { extensions: [".dart"] },
|
|
57
|
+
diff: {
|
|
58
|
+
aliases: ["patch"],
|
|
59
|
+
extensions: [".diff", ".patch"]
|
|
60
|
+
},
|
|
61
|
+
dockerfile: {
|
|
62
|
+
aliases: ["docker"],
|
|
63
|
+
extensions: [".dockerfile"]
|
|
64
|
+
},
|
|
65
|
+
elixir: {
|
|
66
|
+
aliases: ["ex", "exs"],
|
|
67
|
+
extensions: [".ex", ".exs"]
|
|
68
|
+
},
|
|
69
|
+
erlang: {
|
|
70
|
+
aliases: ["erl"],
|
|
71
|
+
extensions: [".erl", ".hrl"]
|
|
72
|
+
},
|
|
73
|
+
fsharp: {
|
|
74
|
+
aliases: ["f#", "fs"],
|
|
75
|
+
extensions: [
|
|
76
|
+
".fs",
|
|
77
|
+
".fsi",
|
|
78
|
+
".fsx"
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
go: {
|
|
82
|
+
aliases: ["golang"],
|
|
83
|
+
extensions: [".go"]
|
|
84
|
+
},
|
|
85
|
+
graphql: {
|
|
86
|
+
aliases: ["gql"],
|
|
87
|
+
extensions: [".graphql", ".gql"]
|
|
88
|
+
},
|
|
89
|
+
groovy: { extensions: [".groovy", ".gradle"] },
|
|
90
|
+
html: {
|
|
91
|
+
aliases: ["htm"],
|
|
92
|
+
extensions: [".html", ".htm"]
|
|
93
|
+
},
|
|
94
|
+
http: {
|
|
95
|
+
aliases: ["https"],
|
|
96
|
+
extensions: [".http", ".rest"]
|
|
97
|
+
},
|
|
98
|
+
ini: {
|
|
99
|
+
aliases: ["properties"],
|
|
100
|
+
extensions: [
|
|
101
|
+
".ini",
|
|
102
|
+
".cfg",
|
|
103
|
+
".properties"
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
java: { extensions: [".java"] },
|
|
107
|
+
javascript: {
|
|
108
|
+
aliases: [
|
|
109
|
+
"js",
|
|
110
|
+
"cjs",
|
|
111
|
+
"mjs"
|
|
112
|
+
],
|
|
113
|
+
extensions: [
|
|
114
|
+
".js",
|
|
115
|
+
".cjs",
|
|
116
|
+
".mjs"
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
json: { extensions: [".json"] },
|
|
120
|
+
jsonc: { extensions: [".jsonc"] },
|
|
121
|
+
jsx: { extensions: [".jsx"] },
|
|
122
|
+
kotlin: {
|
|
123
|
+
aliases: ["kt", "kts"],
|
|
124
|
+
extensions: [".kt", ".kts"]
|
|
125
|
+
},
|
|
126
|
+
less: { extensions: [".less"] },
|
|
127
|
+
lua: { extensions: [".lua"] },
|
|
128
|
+
makefile: {
|
|
129
|
+
aliases: ["make", "mk"],
|
|
130
|
+
extensions: [".mk", ".mak"]
|
|
131
|
+
},
|
|
132
|
+
markdown: {
|
|
133
|
+
aliases: [
|
|
134
|
+
"md",
|
|
135
|
+
"mkd",
|
|
136
|
+
"mdown"
|
|
137
|
+
],
|
|
138
|
+
extensions: [
|
|
139
|
+
".md",
|
|
140
|
+
".markdown",
|
|
141
|
+
".mkd",
|
|
142
|
+
".mdown"
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
mdx: {
|
|
146
|
+
aliases: ["rmdx"],
|
|
147
|
+
extensions: [".mdx", ".rmdx"]
|
|
148
|
+
},
|
|
149
|
+
"objective-c": {
|
|
150
|
+
aliases: ["objc", "objectivec"],
|
|
151
|
+
extensions: [".m"]
|
|
152
|
+
},
|
|
153
|
+
perl: {
|
|
154
|
+
aliases: ["pl", "pm"],
|
|
155
|
+
extensions: [".pl", ".pm"]
|
|
156
|
+
},
|
|
157
|
+
php: { extensions: [".php", ".phtml"] },
|
|
158
|
+
powershell: {
|
|
159
|
+
aliases: [
|
|
160
|
+
"ps",
|
|
161
|
+
"ps1",
|
|
162
|
+
"pwsh"
|
|
163
|
+
],
|
|
164
|
+
extensions: [
|
|
165
|
+
".ps1",
|
|
166
|
+
".psm1",
|
|
167
|
+
".psd1"
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
python: {
|
|
171
|
+
aliases: [
|
|
172
|
+
"py",
|
|
173
|
+
"py3",
|
|
174
|
+
"python3"
|
|
175
|
+
],
|
|
176
|
+
extensions: [
|
|
177
|
+
".py",
|
|
178
|
+
".pyw",
|
|
179
|
+
".pyi"
|
|
180
|
+
]
|
|
181
|
+
},
|
|
182
|
+
r: { extensions: [".r"] },
|
|
183
|
+
ruby: {
|
|
184
|
+
aliases: ["rb", "gemspec"],
|
|
185
|
+
extensions: [
|
|
186
|
+
".rb",
|
|
187
|
+
".rake",
|
|
188
|
+
".gemspec"
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
rust: {
|
|
192
|
+
aliases: ["rs"],
|
|
193
|
+
extensions: [".rs"]
|
|
194
|
+
},
|
|
195
|
+
scala: { extensions: [".scala", ".sc"] },
|
|
196
|
+
scss: { extensions: [".scss"] },
|
|
197
|
+
sql: { extensions: [".sql"] },
|
|
198
|
+
swift: { extensions: [".swift"] },
|
|
199
|
+
text: {
|
|
200
|
+
aliases: ["txt", "plaintext"],
|
|
201
|
+
extensions: [".txt", ".text"]
|
|
202
|
+
},
|
|
203
|
+
toml: { extensions: [".toml"] },
|
|
204
|
+
"ts-tags": { aliases: ["lit"] },
|
|
205
|
+
tsx: { extensions: [".tsx"] },
|
|
206
|
+
typescript: {
|
|
207
|
+
aliases: [
|
|
208
|
+
"ts",
|
|
209
|
+
"cts",
|
|
210
|
+
"mts"
|
|
211
|
+
],
|
|
212
|
+
extensions: [
|
|
213
|
+
".ts",
|
|
214
|
+
".cts",
|
|
215
|
+
".mts"
|
|
216
|
+
]
|
|
217
|
+
},
|
|
218
|
+
xml: {
|
|
219
|
+
aliases: ["svg", "xhtml"],
|
|
220
|
+
extensions: [
|
|
221
|
+
".xml",
|
|
222
|
+
".svg",
|
|
223
|
+
".xhtml",
|
|
224
|
+
".xsd",
|
|
225
|
+
".xsl",
|
|
226
|
+
".xslt"
|
|
227
|
+
]
|
|
228
|
+
},
|
|
229
|
+
yaml: {
|
|
230
|
+
aliases: ["yml"],
|
|
231
|
+
extensions: [".yaml", ".yml"]
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
const DEFAULT_CODE_LANGUAGES = Object.keys(codeLanguages);
|
|
235
|
+
const languageAliases = new Map(Object.entries(codeLanguages).flatMap(([language, { aliases = [] }]) => aliases.map((alias) => [alias, language])));
|
|
236
|
+
const LANGUAGE_BY_EXTENSION = Object.fromEntries(Object.entries(codeLanguages).flatMap(([language, { extensions = [] }]) => extensions.map((extension) => [extension, language])));
|
|
237
|
+
function normalizeCodeLanguage(value) {
|
|
238
|
+
const normalized = value.trim().toLowerCase();
|
|
239
|
+
return languageAliases.get(normalized) ?? normalized;
|
|
240
|
+
}
|
|
241
|
+
|
|
9
242
|
// packages/ts-highlight/src/highlightjs.ts
|
|
10
243
|
const hljsLanguages = /* @__PURE__ */ new Map([
|
|
11
244
|
["jsonc", "json"],
|
|
@@ -128,5 +361,5 @@ function backendIdentifier(value) {
|
|
|
128
361
|
return value.trim();
|
|
129
362
|
}
|
|
130
363
|
|
|
131
|
-
export { DEFAULT_MDX_CODE_LANGS, DEFAULT_MDX_CODE_THEMES, createHljsHighlighter, createMdxHighlighter, highlightPlugin };
|
|
364
|
+
export { DEFAULT_CODE_LANGUAGES, DEFAULT_MDX_CODE_LANGS, DEFAULT_MDX_CODE_THEMES, LANGUAGE_BY_EXTENSION, createHljsHighlighter, createMdxHighlighter, highlightPlugin, normalizeCodeLanguage };
|
|
132
365
|
//# sourceMappingURL=ts-highlight.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-highlight.mjs","names":[],"sources":["../src/highlightjs.ts","../src/shikiCache.ts","../src/shiki.ts","../src/index.ts"],"sourcesContent":["import {\n type MdxCodeHighlighter,\n normalizeCodeLanguage,\n} from '@purestack/ts-common'\nimport hljs, { type HLJSApi } from 'highlight.js'\n\n// Use highlight.js names, or the closest grammar for Shiki-only languages.\nconst hljsLanguages = new Map([\n ['jsonc', 'json'],\n ['mdx', 'markdown'],\n ['objective-c', 'objectivec'],\n ['ts-tags', 'typescript'],\n])\n\nexport function createHljsHighlighter(\n highlighter: HLJSApi = hljs,\n): MdxCodeHighlighter {\n return {\n codeToHtml: (code: string, lang?: string) => {\n const normalizedLang = normalizeCodeLanguage(lang ?? '')\n const highlightLang = hljsLanguages.get(normalizedLang) ?? normalizedLang\n if (highlightLang && highlighter.getLanguage(highlightLang)) {\n const highlighted = highlighter.highlight(code, {\n language: highlightLang,\n ignoreIllegals: true,\n })\n return `<pre class=\"hljs\"><code class=\"hljs language-${highlighted.language}\">${highlighted.value}</code></pre>`\n }\n\n const escaped = escapeHtml(code)\n const langClass = normalizedLang ? ` language-${normalizedLang}` : ''\n return `<pre class=\"hljs\"><code class=\"hljs${langClass}\">${escaped}</code></pre>`\n },\n }\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n}\n","import { createRequire } from 'node:module'\nimport { PersistentCache } from '@purestack/ts-util-node'\n\n// Bump when the highlighter's rendering options change cached output.\nconst CACHE_SCHEMA = 1\nconst SHIKI_VERSION: string = createRequire(import.meta.url)(\n 'shiki/package.json',\n).version\n\nexport function openShikiCache(\n themes: Record<'light' | 'dark', string>,\n languages: readonly string[],\n) {\n return new PersistentCache<string>({\n namespace: 'shiki',\n version: JSON.stringify([CACHE_SCHEMA, SHIKI_VERSION, themes, languages]),\n codec: {\n encode: (html) => html,\n decode: (data) => data.toString('utf8'),\n },\n })\n}\n","import {\n DEFAULT_CODE_LANGUAGES,\n type MdxCodeHighlighter,\n normalizeCodeLanguage,\n} from '@purestack/ts-common'\nimport { createHighlighter, type Highlighter } from 'shiki'\nimport { openShikiCache } from './shikiCache'\n\nexport type MdxShikiFactory = (\n options: Parameters<typeof createHighlighter>[0],\n) => Highlighter | Promise<Highlighter>\n\nexport interface MdxCodeThemes {\n light: string\n dark: string\n}\n\nexport type MdxCodeLangs = string[]\n\nexport const DEFAULT_MDX_CODE_THEMES: MdxCodeThemes = {\n light: 'github-light',\n dark: 'github-dark',\n}\n\nexport const DEFAULT_MDX_CODE_LANGS: MdxCodeLangs = DEFAULT_CODE_LANGUAGES\n\nconst TYPESCRIPT_WITH_TAGS_LANG = 'ts-tags'\n\nexport interface MdxHighlighterOptions {\n /** A custom factory; its grammars are unknown, so its output is never cached. */\n create?: MdxShikiFactory\n /** `false` disables the persistent cache for this run. Defaults to `true`. */\n cache?: boolean\n}\n\nexport async function createMdxHighlighter(\n themes: MdxCodeThemes = DEFAULT_MDX_CODE_THEMES,\n langs: MdxCodeLangs = DEFAULT_MDX_CODE_LANGS,\n { create, cache: useCache = true }: MdxHighlighterOptions = {},\n): Promise<MdxCodeHighlighter> {\n const options = {\n themes: dedupe([themes.light, themes.dark]),\n langs: resolveLoadedLanguages(langs),\n }\n const render = (highlighter: Highlighter, code: string, lang: string) =>\n highlighter.codeToHtml(code, {\n lang,\n themes: { light: themes.light, dark: themes.dark },\n defaultColor: false,\n })\n\n if (create || !useCache) {\n const highlighter = await (create ?? createHighlighter)(options)\n return {\n codeToHtml: (code: string, lang?: string) =>\n render(highlighter, code, resolveHighlightLanguage(lang)),\n }\n }\n\n // Bundled grammars and themes are identified by name and Shiki's version, so\n // their output is reused across builds. Shiki loads on the first cache miss.\n const cache = openShikiCache(themes, options.langs)\n let highlighter: Promise<Highlighter> | undefined\n return {\n flush: () => cache.flush(),\n async codeToHtml(code: string, lang?: string) {\n const resolved = resolveHighlightLanguage(lang)\n return cache.getOrSetAsync(`${resolved}\\0${code}`, async () => {\n highlighter ??= createHighlighter(options)\n return render(await highlighter, code, resolved)\n })\n },\n }\n}\n\nfunction resolveLoadedLanguages(langs: string[]) {\n const resolved = dedupe(langs.map(normalizeCodeLanguage))\n if (\n resolved.includes('typescript') &&\n !resolved.includes(TYPESCRIPT_WITH_TAGS_LANG)\n ) {\n resolved.push(TYPESCRIPT_WITH_TAGS_LANG)\n }\n return resolved\n}\n\nfunction resolveHighlightLanguage(lang: string | undefined) {\n const normalized = normalizeCodeLanguage(lang ?? 'text')\n return normalized === 'typescript'\n ? TYPESCRIPT_WITH_TAGS_LANG\n : normalized || 'text'\n}\n\nfunction dedupe(values: string[]) {\n return Array.from(new Set(values.filter((value) => value.length > 0)))\n}\n","import type { SiteConfigResolution, SiteMdxConfig } from '@purestack/ts-common'\nimport type { HLJSApi } from 'highlight.js'\nimport { createHljsHighlighter } from './highlightjs'\nimport { createMdxHighlighter, type MdxShikiFactory } from './shiki'\n\nexport { createHljsHighlighter } from './highlightjs'\nexport {\n createMdxHighlighter,\n DEFAULT_MDX_CODE_LANGS,\n DEFAULT_MDX_CODE_THEMES,\n type MdxCodeLangs,\n type MdxCodeThemes,\n type MdxHighlighterOptions,\n type MdxShikiFactory,\n} from './shiki'\n\nexport interface HighlightPluginOptions {\n createShiki?: MdxShikiFactory\n createHighlightJs?: () => HLJSApi | Promise<HLJSApi>\n}\n\n/** The standard highlighter, replaceable through markdown.createHighlighter. */\nexport function highlightPlugin(options: HighlightPluginOptions = {}) {\n return {\n name: 'purestack:highlight',\n defaults: true,\n config: {\n normalize({ config }: SiteConfigResolution) {\n return {\n mdx: { highlighter: backendIdentifier(config.mdx.highlighter) },\n }\n },\n },\n markdown: {\n async createHighlighter({\n mdx,\n cache,\n }: {\n mdx: Partial<SiteMdxConfig>\n cache: boolean\n }) {\n if (mdx.disableHighlighter) return undefined\n const backend = backendIdentifier(mdx.highlighter)\n if (backend === 'highlightjs')\n return createHljsHighlighter(await options.createHighlightJs?.())\n if (backend === 'shiki')\n return createMdxHighlighter(undefined, undefined, {\n create: options.createShiki,\n cache,\n })\n throw new Error(\n `The standard highlighting plugin does not support backend \"${backend}\". Supply a custom markdown.createHighlighter provider.`,\n )\n },\n },\n }\n}\n\nfunction backendIdentifier(value: unknown): string {\n if (value === undefined) return 'highlightjs'\n if (typeof value !== 'string' || !value.trim())\n throw new Error('mdx.highlighter must be a non-empty backend identifier.')\n return value.trim()\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ts-highlight.mjs","names":[],"sources":["../src/codeLanguages.ts","../src/highlightjs.ts","../src/shikiCache.ts","../src/shiki.ts","../src/index.ts"],"sourcesContent":["interface CodeLanguage {\n aliases?: string[]\n extensions?: string[]\n}\n\n// Use Shiki names (including its aliases) as the canonical language identifiers.\nconst codeLanguages: Record<string, CodeLanguage> = {\n bash: {\n aliases: ['sh', 'shell', 'shellscript', 'zsh'],\n extensions: ['.sh', '.bash', '.zsh'],\n },\n bat: { aliases: ['batch', 'cmd', 'dos'], extensions: ['.bat', '.cmd'] },\n c: { extensions: ['.c', '.h'] },\n cmake: { extensions: ['.cmake'] },\n cpp: {\n aliases: ['c++', 'cc', 'cxx', 'h++', 'hpp', 'hxx'],\n extensions: ['.cc', '.cpp', '.cxx', '.hh', '.hpp', '.hxx'],\n },\n csharp: { aliases: ['c#', 'cs'], extensions: ['.cs', '.csx'] },\n css: { extensions: ['.css'] },\n dart: { extensions: ['.dart'] },\n diff: { aliases: ['patch'], extensions: ['.diff', '.patch'] },\n dockerfile: { aliases: ['docker'], extensions: ['.dockerfile'] },\n elixir: { aliases: ['ex', 'exs'], extensions: ['.ex', '.exs'] },\n erlang: { aliases: ['erl'], extensions: ['.erl', '.hrl'] },\n fsharp: { aliases: ['f#', 'fs'], extensions: ['.fs', '.fsi', '.fsx'] },\n go: { aliases: ['golang'], extensions: ['.go'] },\n graphql: { aliases: ['gql'], extensions: ['.graphql', '.gql'] },\n groovy: { extensions: ['.groovy', '.gradle'] },\n html: { aliases: ['htm'], extensions: ['.html', '.htm'] },\n http: { aliases: ['https'], extensions: ['.http', '.rest'] },\n ini: { aliases: ['properties'], extensions: ['.ini', '.cfg', '.properties'] },\n java: { extensions: ['.java'] },\n javascript: {\n aliases: ['js', 'cjs', 'mjs'],\n extensions: ['.js', '.cjs', '.mjs'],\n },\n json: { extensions: ['.json'] },\n jsonc: { extensions: ['.jsonc'] },\n jsx: { extensions: ['.jsx'] },\n kotlin: { aliases: ['kt', 'kts'], extensions: ['.kt', '.kts'] },\n less: { extensions: ['.less'] },\n lua: { extensions: ['.lua'] },\n makefile: { aliases: ['make', 'mk'], extensions: ['.mk', '.mak'] },\n markdown: {\n aliases: ['md', 'mkd', 'mdown'],\n extensions: ['.md', '.markdown', '.mkd', '.mdown'],\n },\n mdx: { aliases: ['rmdx'], extensions: ['.mdx', '.rmdx'] },\n 'objective-c': { aliases: ['objc', 'objectivec'], extensions: ['.m'] },\n perl: { aliases: ['pl', 'pm'], extensions: ['.pl', '.pm'] },\n php: { extensions: ['.php', '.phtml'] },\n powershell: {\n aliases: ['ps', 'ps1', 'pwsh'],\n extensions: ['.ps1', '.psm1', '.psd1'],\n },\n python: {\n aliases: ['py', 'py3', 'python3'],\n extensions: ['.py', '.pyw', '.pyi'],\n },\n r: { extensions: ['.r'] },\n ruby: {\n aliases: ['rb', 'gemspec'],\n extensions: ['.rb', '.rake', '.gemspec'],\n },\n rust: { aliases: ['rs'], extensions: ['.rs'] },\n scala: { extensions: ['.scala', '.sc'] },\n scss: { extensions: ['.scss'] },\n sql: { extensions: ['.sql'] },\n swift: { extensions: ['.swift'] },\n text: { aliases: ['txt', 'plaintext'], extensions: ['.txt', '.text'] },\n toml: { extensions: ['.toml'] },\n 'ts-tags': { aliases: ['lit'] },\n tsx: { extensions: ['.tsx'] },\n typescript: {\n aliases: ['ts', 'cts', 'mts'],\n extensions: ['.ts', '.cts', '.mts'],\n },\n xml: {\n aliases: ['svg', 'xhtml'],\n extensions: ['.xml', '.svg', '.xhtml', '.xsd', '.xsl', '.xslt'],\n },\n yaml: { aliases: ['yml'], extensions: ['.yaml', '.yml'] },\n}\n\nexport const DEFAULT_CODE_LANGUAGES = Object.keys(codeLanguages)\n\nconst languageAliases = new Map(\n Object.entries(codeLanguages).flatMap(([language, { aliases = [] }]) =>\n aliases.map((alias) => [alias, language] as const),\n ),\n)\n\nexport const LANGUAGE_BY_EXTENSION: Record<string, string> = Object.fromEntries(\n Object.entries(codeLanguages).flatMap(([language, { extensions = [] }]) =>\n extensions.map((extension) => [extension, language]),\n ),\n)\n\nexport function normalizeCodeLanguage(value: string): string {\n const normalized = value.trim().toLowerCase()\n return languageAliases.get(normalized) ?? normalized\n}\n","import type { MdxCodeHighlighter } from '@purestack/ts-common'\nimport hljs, { type HLJSApi } from 'highlight.js'\nimport { normalizeCodeLanguage } from './codeLanguages'\n\n// Use highlight.js names, or the closest grammar for Shiki-only languages.\nconst hljsLanguages = new Map([\n ['jsonc', 'json'],\n ['mdx', 'markdown'],\n ['objective-c', 'objectivec'],\n ['ts-tags', 'typescript'],\n])\n\nexport function createHljsHighlighter(\n highlighter: HLJSApi = hljs,\n): MdxCodeHighlighter {\n return {\n codeToHtml: (code: string, lang?: string) => {\n const normalizedLang = normalizeCodeLanguage(lang ?? '')\n const highlightLang = hljsLanguages.get(normalizedLang) ?? normalizedLang\n if (highlightLang && highlighter.getLanguage(highlightLang)) {\n const highlighted = highlighter.highlight(code, {\n language: highlightLang,\n ignoreIllegals: true,\n })\n return `<pre class=\"hljs\"><code class=\"hljs language-${highlighted.language}\">${highlighted.value}</code></pre>`\n }\n\n const escaped = escapeHtml(code)\n const langClass = normalizedLang ? ` language-${normalizedLang}` : ''\n return `<pre class=\"hljs\"><code class=\"hljs${langClass}\">${escaped}</code></pre>`\n },\n }\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n}\n","import { createRequire } from 'node:module'\nimport { PersistentCache } from '@purestack/ts-util-node'\n\n// Bump when the highlighter's rendering options change cached output.\nconst CACHE_SCHEMA = 1\nconst SHIKI_VERSION: string = createRequire(import.meta.url)(\n 'shiki/package.json',\n).version\n\nexport function openShikiCache(\n themes: Record<'light' | 'dark', string>,\n languages: readonly string[],\n) {\n return new PersistentCache<string>({\n namespace: 'shiki',\n version: JSON.stringify([CACHE_SCHEMA, SHIKI_VERSION, themes, languages]),\n codec: {\n encode: (html) => html,\n decode: (data) => data.toString('utf8'),\n },\n })\n}\n","import type { MdxCodeHighlighter } from '@purestack/ts-common'\nimport { createHighlighter, type Highlighter } from 'shiki'\nimport { DEFAULT_CODE_LANGUAGES, normalizeCodeLanguage } from './codeLanguages'\nimport { openShikiCache } from './shikiCache'\n\nexport type MdxShikiFactory = (\n options: Parameters<typeof createHighlighter>[0],\n) => Highlighter | Promise<Highlighter>\n\nexport interface MdxCodeThemes {\n light: string\n dark: string\n}\n\nexport type MdxCodeLangs = string[]\n\nexport const DEFAULT_MDX_CODE_THEMES: MdxCodeThemes = {\n light: 'github-light',\n dark: 'github-dark',\n}\n\nexport const DEFAULT_MDX_CODE_LANGS: MdxCodeLangs = DEFAULT_CODE_LANGUAGES\n\nconst TYPESCRIPT_WITH_TAGS_LANG = 'ts-tags'\n\nexport interface MdxHighlighterOptions {\n /** A custom factory; its grammars are unknown, so its output is never cached. */\n create?: MdxShikiFactory\n /** `false` disables the persistent cache for this run. Defaults to `true`. */\n cache?: boolean\n}\n\nexport async function createMdxHighlighter(\n themes: MdxCodeThemes = DEFAULT_MDX_CODE_THEMES,\n langs: MdxCodeLangs = DEFAULT_MDX_CODE_LANGS,\n { create, cache: useCache = true }: MdxHighlighterOptions = {},\n): Promise<MdxCodeHighlighter> {\n const options = {\n themes: dedupe([themes.light, themes.dark]),\n langs: resolveLoadedLanguages(langs),\n }\n const render = (highlighter: Highlighter, code: string, lang: string) =>\n highlighter.codeToHtml(code, {\n lang,\n themes: { light: themes.light, dark: themes.dark },\n defaultColor: false,\n })\n\n if (create || !useCache) {\n const highlighter = await (create ?? createHighlighter)(options)\n return {\n codeToHtml: (code: string, lang?: string) =>\n render(highlighter, code, resolveHighlightLanguage(lang)),\n }\n }\n\n // Bundled grammars and themes are identified by name and Shiki's version, so\n // their output is reused across builds. Shiki loads on the first cache miss.\n const cache = openShikiCache(themes, options.langs)\n let highlighter: Promise<Highlighter> | undefined\n return {\n flush: () => cache.flush(),\n async codeToHtml(code: string, lang?: string) {\n const resolved = resolveHighlightLanguage(lang)\n return cache.getOrSetAsync(`${resolved}\\0${code}`, async () => {\n highlighter ??= createHighlighter(options)\n return render(await highlighter, code, resolved)\n })\n },\n }\n}\n\nfunction resolveLoadedLanguages(langs: string[]) {\n const resolved = dedupe(langs.map(normalizeCodeLanguage))\n if (\n resolved.includes('typescript') &&\n !resolved.includes(TYPESCRIPT_WITH_TAGS_LANG)\n ) {\n resolved.push(TYPESCRIPT_WITH_TAGS_LANG)\n }\n return resolved\n}\n\nfunction resolveHighlightLanguage(lang: string | undefined) {\n const normalized = normalizeCodeLanguage(lang ?? 'text')\n return normalized === 'typescript'\n ? TYPESCRIPT_WITH_TAGS_LANG\n : normalized || 'text'\n}\n\nfunction dedupe(values: string[]) {\n return Array.from(new Set(values.filter((value) => value.length > 0)))\n}\n","import type { SiteConfigResolution, SiteMdxConfig } from '@purestack/ts-common'\nimport type { HLJSApi } from 'highlight.js'\nimport { createHljsHighlighter } from './highlightjs'\nimport { createMdxHighlighter, type MdxShikiFactory } from './shiki'\n\nexport {\n DEFAULT_CODE_LANGUAGES,\n LANGUAGE_BY_EXTENSION,\n normalizeCodeLanguage,\n} from './codeLanguages'\nexport { createHljsHighlighter } from './highlightjs'\nexport {\n createMdxHighlighter,\n DEFAULT_MDX_CODE_LANGS,\n DEFAULT_MDX_CODE_THEMES,\n type MdxCodeLangs,\n type MdxCodeThemes,\n type MdxHighlighterOptions,\n type MdxShikiFactory,\n} from './shiki'\n\nexport interface HighlightPluginOptions {\n createShiki?: MdxShikiFactory\n createHighlightJs?: () => HLJSApi | Promise<HLJSApi>\n}\n\n/** The standard highlighter, replaceable through markdown.createHighlighter. */\nexport function highlightPlugin(options: HighlightPluginOptions = {}) {\n return {\n name: 'purestack:highlight',\n defaults: true,\n config: {\n normalize({ config }: SiteConfigResolution) {\n return {\n mdx: { highlighter: backendIdentifier(config.mdx.highlighter) },\n }\n },\n },\n markdown: {\n async createHighlighter({\n mdx,\n cache,\n }: {\n mdx: Partial<SiteMdxConfig>\n cache: boolean\n }) {\n if (mdx.disableHighlighter) return undefined\n const backend = backendIdentifier(mdx.highlighter)\n if (backend === 'highlightjs')\n return createHljsHighlighter(await options.createHighlightJs?.())\n if (backend === 'shiki')\n return createMdxHighlighter(undefined, undefined, {\n create: options.createShiki,\n cache,\n })\n throw new Error(\n `The standard highlighting plugin does not support backend \"${backend}\". Supply a custom markdown.createHighlighter provider.`,\n )\n },\n },\n }\n}\n\nfunction backendIdentifier(value: unknown): string {\n if (value === undefined) return 'highlightjs'\n if (typeof value !== 'string' || !value.trim())\n throw new Error('mdx.highlighter must be a non-empty backend identifier.')\n return value.trim()\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@purestack/ts-highlight",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.35",
|
|
4
4
|
"packageManager": "yarn@4.9.2",
|
|
5
5
|
"module": "./dist/ts-highlight.mjs",
|
|
6
6
|
"types": "./dist/ts-highlight.d.mts",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"test": "vitest"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@purestack/ts-common": "^1.1.
|
|
43
|
-
"@purestack/ts-util-node": "^1.1.
|
|
42
|
+
"@purestack/ts-common": "^1.1.35",
|
|
43
|
+
"@purestack/ts-util-node": "^1.1.35",
|
|
44
44
|
"highlight.js": "^11.11.1",
|
|
45
45
|
"shiki": "^3.22.0"
|
|
46
46
|
}
|