@purestack/ts-highlight 0.0.0-stage → 1.1.15
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/LICENSE +21 -0
- package/README.md +30 -2
- package/dist/ts-highlight.d.mts +35 -0
- package/dist/ts-highlight.d.mts.map +1 -0
- package/dist/ts-highlight.mjs +87 -0
- package/dist/ts-highlight.mjs.map +1 -0
- package/package.json +43 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Ahmed Yasin Koculu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @purestack/ts-highlight
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Syntax-highlighting backends and the default PureStack highlighting plugin.
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
import { highlightPlugin } from '@purestack/ts-highlight'
|
|
7
|
+
|
|
8
|
+
const plugin = highlightPlugin()
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Included automatically by `ts-ssg`. The plugin selects `mdx.highlighter`,
|
|
12
|
+
initializes the selected engine once per build/session, and respects
|
|
13
|
+
`mdx.disableHighlighter`. Fenced, inline, imported, and Regor markup examples
|
|
14
|
+
all use the same highlighter. Language aliases, inferred file extensions,
|
|
15
|
+
tagged TypeScript templates, and light/dark Shiki themes are preserved.
|
|
16
|
+
|
|
17
|
+
Pass `createShiki(options)` or `createHighlightJs()` to customize the native
|
|
18
|
+
backend. Both may return an instance synchronously or asynchronously; the
|
|
19
|
+
unused factory is never called. The Shiki options contain the default
|
|
20
|
+
languages and themes. For highlight.js, prefer a new instance with explicitly
|
|
21
|
+
registered grammars to avoid changing the shared registry.
|
|
22
|
+
|
|
23
|
+
`createMdxHighlighter`, `createHljsHighlighter`, `DEFAULT_MDX_CODE_LANGS`, and
|
|
24
|
+
`DEFAULT_MDX_CODE_THEMES` are exported for standalone use. The shared
|
|
25
|
+
`MdxCodeHighlighter` contract is exported by `ts-common` and `ts-ssg`.
|
|
26
|
+
|
|
27
|
+
To replace the backend entirely, supply `markdown.createHighlighter(config)`
|
|
28
|
+
from an ordinary plugin. It takes precedence over the default provider, which
|
|
29
|
+
is not initialized. Per-language `markdown.resolveHighlighter` callbacks take
|
|
30
|
+
precedence over either provider and remain available when default highlighting
|
|
31
|
+
is disabled. Disable automatic plugins to omit this provider altogether.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*! @purestack/ts-highlight v1.1.15 | (c) 2026 Ahmed Yasin Koculu | MIT License */
|
|
2
|
+
|
|
3
|
+
import { MdxCodeHighlighter, SiteMdxConfig } from "@purestack/ts-common";
|
|
4
|
+
import { HLJSApi } from "highlight.js";
|
|
5
|
+
import { Highlighter, createHighlighter } from "shiki";
|
|
6
|
+
//#region packages/ts-highlight/src/shiki.d.ts
|
|
7
|
+
type MdxShikiFactory = (options: Parameters<typeof createHighlighter>[0]) => Highlighter | Promise<Highlighter>;
|
|
8
|
+
interface MdxCodeThemes {
|
|
9
|
+
light: string;
|
|
10
|
+
dark: string;
|
|
11
|
+
}
|
|
12
|
+
type MdxCodeLangs = string[];
|
|
13
|
+
export declare const DEFAULT_MDX_CODE_THEMES: MdxCodeThemes;
|
|
14
|
+
export declare const DEFAULT_MDX_CODE_LANGS: MdxCodeLangs;
|
|
15
|
+
export declare function createMdxHighlighter(themes?: MdxCodeThemes, langs?: MdxCodeLangs, create?: MdxShikiFactory): Promise<MdxCodeHighlighter>;
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region packages/ts-highlight/src/highlightjs.d.ts
|
|
18
|
+
export declare function createHljsHighlighter(highlighter?: HLJSApi): MdxCodeHighlighter;
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region packages/ts-highlight/src/index.d.ts
|
|
21
|
+
export interface HighlightPluginOptions {
|
|
22
|
+
createShiki?: MdxShikiFactory;
|
|
23
|
+
createHighlightJs?: () => HLJSApi | Promise<HLJSApi>;
|
|
24
|
+
}
|
|
25
|
+
/** The standard highlighter, replaceable through markdown.createHighlighter. */
|
|
26
|
+
export declare function highlightPlugin(options?: HighlightPluginOptions): {
|
|
27
|
+
name: string;
|
|
28
|
+
defaults: boolean;
|
|
29
|
+
markdown: {
|
|
30
|
+
createHighlighter(config: Partial<SiteMdxConfig>): Promise<import("@purestack/ts-common").MdxCodeHighlighter | undefined>;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
export type { MdxCodeLangs, MdxCodeThemes, MdxShikiFactory };
|
|
35
|
+
//# sourceMappingURL=ts-highlight.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-highlight.d.mts","names":[],"sources":["../src/shiki.ts","../src/highlightjs.ts","../src/index.ts"],"mappings":";;;;KAOY,mBACV,SAAS,kBAAkB,0BACxB,cAAc,QAAQ;UAEV;EACf;EACA;;KAGU;qBAEC,yBAAyB;qBAKzB,wBAAwB;wBAIf,qBACpB,SAAQ,eACR,QAAO,cACP,SAAQ,kBACP,QAAQ;;;wBCjBK,sBACd,cAAa,UACZ;;;iBCDc;EACf,cAAc;EACd,0BAA0B,UAAU,QAAQ;;;wBAI9B,gBAAgB,UAAS;EAErC;EACA;EACA;IACQ,kBAAiB,QAAS,QAAQ,iBAAc,uCAAA"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*! @purestack/ts-highlight v1.1.15 | (c) 2026 Ahmed Yasin Koculu | MIT License */
|
|
2
|
+
|
|
3
|
+
import { DEFAULT_CODE_LANGUAGES, normalizeCodeLanguage } from "@purestack/ts-common";
|
|
4
|
+
import hljs from "highlight.js";
|
|
5
|
+
import { createHighlighter } from "shiki";
|
|
6
|
+
|
|
7
|
+
//#region packages/ts-highlight/src/highlightjs.ts
|
|
8
|
+
const hljsLanguages = /* @__PURE__ */ new Map([
|
|
9
|
+
["jsonc", "json"],
|
|
10
|
+
["mdx", "markdown"],
|
|
11
|
+
["objective-c", "objectivec"],
|
|
12
|
+
["ts-tags", "typescript"]
|
|
13
|
+
]);
|
|
14
|
+
function createHljsHighlighter(highlighter = hljs) {
|
|
15
|
+
return { codeToHtml: (code, lang) => {
|
|
16
|
+
const normalizedLang = normalizeCodeLanguage(lang ?? "");
|
|
17
|
+
const highlightLang = hljsLanguages.get(normalizedLang) ?? normalizedLang;
|
|
18
|
+
if (highlightLang && highlighter.getLanguage(highlightLang)) {
|
|
19
|
+
const highlighted = highlighter.highlight(code, {
|
|
20
|
+
language: highlightLang,
|
|
21
|
+
ignoreIllegals: true
|
|
22
|
+
});
|
|
23
|
+
return `<pre class="hljs"><code class="hljs language-${highlighted.language}">${highlighted.value}</code></pre>`;
|
|
24
|
+
}
|
|
25
|
+
const escaped = escapeHtml(code);
|
|
26
|
+
return `<pre class="hljs"><code class="hljs${normalizedLang ? ` language-${normalizedLang}` : ""}">${escaped}</code></pre>`;
|
|
27
|
+
} };
|
|
28
|
+
}
|
|
29
|
+
function escapeHtml(value) {
|
|
30
|
+
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region packages/ts-highlight/src/shiki.ts
|
|
35
|
+
const DEFAULT_MDX_CODE_THEMES = {
|
|
36
|
+
light: "github-light",
|
|
37
|
+
dark: "github-dark"
|
|
38
|
+
};
|
|
39
|
+
const DEFAULT_MDX_CODE_LANGS = DEFAULT_CODE_LANGUAGES;
|
|
40
|
+
const TYPESCRIPT_WITH_TAGS_LANG = "ts-tags";
|
|
41
|
+
async function createMdxHighlighter(themes = DEFAULT_MDX_CODE_THEMES, langs = DEFAULT_MDX_CODE_LANGS, create = createHighlighter) {
|
|
42
|
+
const highlighter = await create({
|
|
43
|
+
themes: dedupe([themes.light, themes.dark]),
|
|
44
|
+
langs: resolveLoadedLanguages(langs)
|
|
45
|
+
});
|
|
46
|
+
return { codeToHtml: (code, lang) => {
|
|
47
|
+
return highlighter.codeToHtml(code, {
|
|
48
|
+
lang: resolveHighlightLanguage(lang),
|
|
49
|
+
themes: {
|
|
50
|
+
light: themes.light,
|
|
51
|
+
dark: themes.dark
|
|
52
|
+
},
|
|
53
|
+
defaultColor: false
|
|
54
|
+
});
|
|
55
|
+
} };
|
|
56
|
+
}
|
|
57
|
+
function resolveLoadedLanguages(langs) {
|
|
58
|
+
const resolved = dedupe(langs.map(normalizeCodeLanguage));
|
|
59
|
+
if (resolved.includes("typescript") && !resolved.includes(TYPESCRIPT_WITH_TAGS_LANG)) resolved.push(TYPESCRIPT_WITH_TAGS_LANG);
|
|
60
|
+
return resolved;
|
|
61
|
+
}
|
|
62
|
+
function resolveHighlightLanguage(lang) {
|
|
63
|
+
const normalized = normalizeCodeLanguage(lang ?? "text");
|
|
64
|
+
return normalized === "typescript" ? TYPESCRIPT_WITH_TAGS_LANG : normalized || "text";
|
|
65
|
+
}
|
|
66
|
+
function dedupe(values) {
|
|
67
|
+
return Array.from(new Set(values.filter((value) => value.length > 0)));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
//#region packages/ts-highlight/src/index.ts
|
|
72
|
+
/** The standard highlighter, replaceable through markdown.createHighlighter. */
|
|
73
|
+
function highlightPlugin(options = {}) {
|
|
74
|
+
return {
|
|
75
|
+
name: "purestack:highlight",
|
|
76
|
+
defaults: true,
|
|
77
|
+
markdown: { async createHighlighter(config) {
|
|
78
|
+
if (config.disableHighlighter) return void 0;
|
|
79
|
+
if (config.highlighter === "highlightjs") return createHljsHighlighter(await options.createHighlightJs?.());
|
|
80
|
+
return createMdxHighlighter(void 0, void 0, options.createShiki);
|
|
81
|
+
} }
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
//#endregion
|
|
86
|
+
export { DEFAULT_MDX_CODE_LANGS, DEFAULT_MDX_CODE_THEMES, createHljsHighlighter, createMdxHighlighter, highlightPlugin };
|
|
87
|
+
//# sourceMappingURL=ts-highlight.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-highlight.mjs","names":[],"sources":["../src/highlightjs.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 {\n DEFAULT_CODE_LANGUAGES,\n type MdxCodeHighlighter,\n normalizeCodeLanguage,\n} from '@purestack/ts-common'\nimport { createHighlighter, type Highlighter } from 'shiki'\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 async function createMdxHighlighter(\n themes: MdxCodeThemes = DEFAULT_MDX_CODE_THEMES,\n langs: MdxCodeLangs = DEFAULT_MDX_CODE_LANGS,\n create: MdxShikiFactory = createHighlighter,\n): Promise<MdxCodeHighlighter> {\n const themeList = dedupe([themes.light, themes.dark])\n const langList = resolveLoadedLanguages(langs)\n const highlighter = await create({\n themes: themeList,\n langs: langList,\n })\n\n return {\n codeToHtml: (code: string, lang?: string) => {\n return highlighter.codeToHtml(code, {\n lang: resolveHighlightLanguage(lang),\n themes: { light: themes.light, dark: themes.dark },\n defaultColor: false,\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 { 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 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 markdown: {\n async createHighlighter(config: Partial<SiteMdxConfig>) {\n if (config.disableHighlighter) return undefined\n if (config.highlighter === 'highlightjs')\n return createHljsHighlighter(await options.createHighlightJs?.())\n return createMdxHighlighter(undefined, undefined, options.createShiki)\n },\n },\n }\n}\n"],"mappings":";;;;;AAOA,MAAM,gCAAgB,IAAI,IAAI;CAC5B,CAAC,SAAS,MAAM;CAChB,CAAC,OAAO,UAAU;CAClB,CAAC,eAAe,YAAY;CAC5B,CAAC,WAAW,YAAY;AAC1B,CAAC;AAED,SAAgB,sBACd,cAAuB,MACH;CACpB,OAAO,EACL,aAAa,MAAc,SAAkB;EAC3C,MAAM,iBAAiB,sBAAsB,QAAQ,EAAE;EACvD,MAAM,gBAAgB,cAAc,IAAI,cAAc,KAAK;EAC3D,IAAI,iBAAiB,YAAY,YAAY,aAAa,GAAG;GAC3D,MAAM,cAAc,YAAY,UAAU,MAAM;IAC9C,UAAU;IACV,gBAAgB;GAClB,CAAC;GACD,OAAO,gDAAgD,YAAY,SAAS,IAAI,YAAY,MAAM;EACpG;EAEA,MAAM,UAAU,WAAW,IAAI;EAE/B,OAAO,sCADW,iBAAiB,aAAa,mBAAmB,GACZ,IAAI,QAAQ;CACrE,EACF;AACF;AAEA,SAAS,WAAW,OAAuB;CACzC,OAAO,MACJ,WAAW,KAAK,OAAO,CAAC,CACxB,WAAW,KAAK,MAAM,CAAC,CACvB,WAAW,KAAK,MAAM;AAC3B;;;;ACvBA,MAAa,0BAAyC;CACpD,OAAO;CACP,MAAM;AACR;AAEA,MAAa,yBAAuC;AAEpD,MAAM,4BAA4B;AAElC,eAAsB,qBACpB,SAAwB,yBACxB,QAAsB,wBACtB,SAA0B,mBACG;CAG7B,MAAM,cAAc,MAAM,OAAO;EAC/B,QAHgB,OAAO,CAAC,OAAO,OAAO,OAAO,IAAI,CAGjC;EAChB,OAHe,uBAAuB,KAGxB;CAChB,CAAC;CAED,OAAO,EACL,aAAa,MAAc,SAAkB;EAC3C,OAAO,YAAY,WAAW,MAAM;GAClC,MAAM,yBAAyB,IAAI;GACnC,QAAQ;IAAE,OAAO,OAAO;IAAO,MAAM,OAAO;GAAK;GACjD,cAAc;EAChB,CAAC;CACH,EACF;AACF;AAEA,SAAS,uBAAuB,OAAiB;CAC/C,MAAM,WAAW,OAAO,MAAM,IAAI,qBAAqB,CAAC;CACxD,IACE,SAAS,SAAS,YAAY,KAC9B,CAAC,SAAS,SAAS,yBAAyB,GAE5C,SAAS,KAAK,yBAAyB;CAEzC,OAAO;AACT;AAEA,SAAS,yBAAyB,MAA0B;CAC1D,MAAM,aAAa,sBAAsB,QAAQ,MAAM;CACvD,OAAO,eAAe,eAClB,4BACA,cAAc;AACpB;AAEA,SAAS,OAAO,QAAkB;CAChC,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,QAAQ,UAAU,MAAM,SAAS,CAAC,CAAC,CAAC;AACvE;;;;;ACjDA,SAAgB,gBAAgB,UAAkC,CAAC,GAAG;CACpE,OAAO;EACL,MAAM;EACN,UAAU;EACV,UAAU,EACR,MAAM,kBAAkB,QAAgC;GACtD,IAAI,OAAO,oBAAoB,OAAO;GACtC,IAAI,OAAO,gBAAgB,eACzB,OAAO,sBAAsB,MAAM,QAAQ,oBAAoB,CAAC;GAClE,OAAO,qBAAqB,QAAW,QAAW,QAAQ,WAAW;EACvE,EACF;CACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,46 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@purestack/ts-highlight",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "1.1.15",
|
|
4
|
+
"packageManager": "yarn@4.9.2",
|
|
5
|
+
"module": "./dist/ts-highlight.mjs",
|
|
6
|
+
"types": "./dist/ts-highlight.d.mts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/PureStackStudio/PureStack.git",
|
|
12
|
+
"directory": "packages/ts-highlight"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://purestack.studio",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/PureStackStudio/PureStack/issues"
|
|
17
|
+
},
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public"
|
|
20
|
+
},
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/ts-highlight.d.mts",
|
|
24
|
+
"import": "./dist/ts-highlight.mjs"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"files": [
|
|
29
|
+
"dist/*.mjs",
|
|
30
|
+
"dist/*.mjs.map",
|
|
31
|
+
"dist/*.d.mts",
|
|
32
|
+
"dist/*.d.mts.map",
|
|
33
|
+
"README.md",
|
|
34
|
+
"LICENSE"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "tsc",
|
|
38
|
+
"lint": "biome check ./src --formatter-enabled=false --write",
|
|
39
|
+
"test": "vitest"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@purestack/ts-common": "^1.1.15",
|
|
43
|
+
"highlight.js": "^11.11.1",
|
|
44
|
+
"shiki": "^3.22.0"
|
|
45
|
+
}
|
|
6
46
|
}
|