cudoc-vitepress 0.2.0

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 cudoment
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 ADDED
@@ -0,0 +1,33 @@
1
+ # cudoc-vitepress
2
+
3
+ Normalize actual VitePress Markdown-it tokens for cudoc syntax, document collection and embedding.
4
+
5
+ ESM · Node.js 20+
6
+
7
+ ```sh
8
+ npm install @cudoment/cudoc cudoc-vitepress
9
+ ```
10
+
11
+ ```js
12
+ import cudoc from "cudoc-vitepress"
13
+
14
+ // In VitePress markdown.config(md):
15
+ const markdown = {
16
+ config(md) {
17
+ md.use(cudoc, {
18
+ syntax: { headingAnchor: "both", callout: "both" },
19
+ })
20
+ },
21
+ }
22
+ ```
23
+
24
+ Import `@cudoment/cudoc/styles.css` in the theme entry. VitePress accepts `.md`, not React `.mdx`. `createDocumentCompiler(md)` reuses the configured renderer for collection and replacements. Embedding requires a collected library and prepared data. This adapter does not use `cudoc-remark`.
25
+
26
+ Choose `host`, `cudoc` or `both` independently for `headingAnchor`, `badge`, `tableCellList`, `callout` and `link`. The representative callout is `> [!NOTE] Title`. Authors do not register cudoc React components in the recommended setup. Syntax-only rendering needs no stored JSON; cross-document embedding requires document collection.
27
+
28
+ - [Usage guide](https://github.com/cudoment/cudoc/tree/main/docs/vitepress.md) · [한국어 가이드](https://github.com/cudoment/cudoc/tree/main/docs/vitepress.ko.md)
29
+ - [Markdown syntax](https://github.com/cudoment/cudoc/tree/main/docs/syntax.md)
30
+ - [Embedding](https://github.com/cudoment/cudoc/tree/main/docs/embedding.md)
31
+ - [Standalone HTML alongside a host](https://github.com/cudoment/cudoc/tree/main/docs/html.md#export-alongside-an-existing-site)
32
+ - [API reference](https://github.com/cudoment/cudoc/tree/main/docs/api-reference/README.md)
33
+ - [Runnable examples](https://github.com/cudoment/cudoc/tree/main/examples/README.md)
@@ -0,0 +1,18 @@
1
+ import type MarkdownIt from "markdown-it";
2
+ import type Token from "markdown-it/lib/token.mjs";
3
+ import type { Root } from "mdast";
4
+ import { type DocumentOptions } from "@cudoment/cudoc/document";
5
+ import type { DocumentCompiler, Library } from "@cudoment/cudoc/node/library";
6
+ export type VitePressOptions = Omit<DocumentOptions, "host" | "format"> & {
7
+ /** Called on the actual VitePress token stream after native Markdown processing. */
8
+ onDocument?: (tree: Root, source: string, env: Record<string, unknown>) => void;
9
+ library?: Library;
10
+ outDir?: string;
11
+ };
12
+ /** Converts the actual markdown-it tokens; it does not parse Markdown a second time. */
13
+ export declare function tokensToAst(tokens: Token[], source: string, options?: DocumentOptions): Root;
14
+ /** Install in VitePress markdown.config. Native anchors/links/containers run first. */
15
+ export default function cudocVitePress(md: MarkdownIt, options?: VitePressOptions): void;
16
+ /** Reuse the very same configured VitePress renderer for collection and source replacements. */
17
+ export declare function createDocumentCompiler(md: MarkdownIt): DocumentCompiler;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,EAAE,IAAI,EAAmB,MAAM,OAAO,CAAA;AAElD,OAAO,EAOL,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAU7E,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG;IACxE,oFAAoF;IACpF,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzB,IAAI,CAAA;IACT,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CACzB,MAAM,EAAE,KAAK,EAAE,EACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,IAAI,CA4MN;AAED,uFAAuF;AACvF,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,EAAE,EAAE,UAAU,EACd,OAAO,GAAE,gBAAqB,GAC7B,IAAI,CAkJN;AAED,gGAAgG;AAChG,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,UAAU,GAAG,gBAAgB,CAwCvE"}
package/dist/index.js ADDED
@@ -0,0 +1,355 @@
1
+ import { fromHtml } from "hast-util-from-html";
2
+ import { normalizeDocument, makeCallout, nodeText, resolveSyntax, isHost, } from "@cudoment/cudoc/document";
3
+ import { renderDocument } from "@cudoment/cudoc/render";
4
+ import { resolveEmbed, parseEmbedSpec, } from "@cudoment/cudoc/node/resolve-embed";
5
+ import { readPreparedEmbeds, embedKey, } from "@cudoment/cudoc/node/prepare-embeds";
6
+ /** Converts the actual markdown-it tokens; it does not parse Markdown a second time. */
7
+ export function tokensToAst(tokens, source, options = {}) {
8
+ const root = { type: "root", children: [] };
9
+ const stack = [root];
10
+ const offsets = [0];
11
+ for (let i = 0; i < source.length; i++)
12
+ if (source[i] === "\n")
13
+ offsets.push(i + 1);
14
+ const position = (token) => token.map
15
+ ? {
16
+ start: {
17
+ line: token.map[0] + 1,
18
+ column: 1,
19
+ offset: offsets[token.map[0]],
20
+ },
21
+ end: {
22
+ line: token.map[1] + 1,
23
+ column: 1,
24
+ offset: offsets[token.map[1]] ?? source.length,
25
+ },
26
+ }
27
+ : undefined;
28
+ const parent = () => stack.at(-1);
29
+ const add = (node) => {
30
+ parent().children.push(node);
31
+ };
32
+ const consume = (token) => {
33
+ if (token.nesting === -1) {
34
+ stack.pop();
35
+ return;
36
+ }
37
+ if (token.type === "inline") {
38
+ if (parent().type === "tableCell") {
39
+ const row = [...stack].reverse().find((n) => n.type === "tableRow");
40
+ const start = source.indexOf(token.content, row?.position?.start.offset ?? 0);
41
+ if (start >= 0)
42
+ parent().position = {
43
+ start: {
44
+ line: row?.position?.start.line ?? 1,
45
+ column: 1,
46
+ offset: start,
47
+ },
48
+ end: {
49
+ line: row?.position?.start.line ?? 1,
50
+ column: 1,
51
+ offset: start + token.content.length,
52
+ },
53
+ };
54
+ }
55
+ token.children?.forEach(consume);
56
+ return;
57
+ }
58
+ const attrs = Object.fromEntries(token.attrs ?? []);
59
+ let node;
60
+ const common = {
61
+ position: position(token),
62
+ ...(token.attrs?.length ? { data: { hProperties: attrs } } : {}),
63
+ };
64
+ if (["text", "text_special"].includes(token.type))
65
+ node = { type: "text", value: token.content };
66
+ else if (token.type === "softbreak")
67
+ node = { type: "text", value: "\n" };
68
+ else if (token.type === "hardbreak")
69
+ node = { type: "break" };
70
+ else if (token.type === "code_inline")
71
+ node = { type: "inlineCode", value: token.content };
72
+ else if (["fence", "code_block"].includes(token.type))
73
+ node = {
74
+ type: "code",
75
+ value: token.content.replace(/\n$/, ""),
76
+ lang: token.info.split(/\s+/)[0] || null,
77
+ meta: token.info.split(/\s+/).slice(1).join(" "),
78
+ ...common,
79
+ };
80
+ else if (token.type === "image")
81
+ node = {
82
+ type: "image",
83
+ url: String(attrs.src ?? ""),
84
+ alt: token.content,
85
+ title: attrs.title ?? null,
86
+ ...common,
87
+ };
88
+ else if (["html_inline", "html_block"].includes(token.type)) {
89
+ node = { type: "html", value: token.content, ...common };
90
+ if (isHost(resolveSyntax(options.syntax).badge) &&
91
+ /^<Badge\s/.test(token.content) &&
92
+ !/\s(?:[:@]|v-)/.test(token.content)) {
93
+ const element = fromHtml(token.content, { fragment: true }).children[0];
94
+ if (element?.type === "element" &&
95
+ typeof element.properties.text === "string")
96
+ node = {
97
+ type: "strong",
98
+ children: [{ type: "text", value: element.properties.text }],
99
+ data: {
100
+ hName: "span",
101
+ hProperties: { className: ["cudoc-badge"] },
102
+ cudoc: { kind: "badge" },
103
+ },
104
+ };
105
+ }
106
+ }
107
+ else if (token.type === "hr")
108
+ node = { type: "thematicBreak", ...common };
109
+ else if (token.type === "github_alert_open") {
110
+ node = makeCallout(token.meta.type, token.meta.title ? [{ type: "text", value: token.meta.title }] : [], [], position(token));
111
+ }
112
+ else if (token.type.startsWith("container_") && token.nesting === 1) {
113
+ const type = token.type.slice(10, -5);
114
+ const title = token.info.trim().slice(type.length).trim();
115
+ node =
116
+ type === "details"
117
+ ? {
118
+ type: "blockquote",
119
+ data: { hName: "details" },
120
+ position: position(token),
121
+ children: [
122
+ {
123
+ type: "paragraph",
124
+ data: { hName: "summary" },
125
+ children: [{ type: "text", value: title || "Details" }],
126
+ },
127
+ ],
128
+ }
129
+ : makeCallout(type, title ? [{ type: "text", value: title }] : [], [], position(token));
130
+ if (type !== "details" &&
131
+ !isHost(resolveSyntax(options.syntax).callout)) {
132
+ node.data = {
133
+ hName: "div",
134
+ hProperties: { className: ["custom-block", type] },
135
+ };
136
+ node.children[0].data = {
137
+ hProperties: { className: ["custom-block-title"] },
138
+ };
139
+ }
140
+ }
141
+ else {
142
+ const types = {
143
+ paragraph_open: "paragraph",
144
+ heading_open: "heading",
145
+ blockquote_open: "blockquote",
146
+ bullet_list_open: "list",
147
+ ordered_list_open: "list",
148
+ list_item_open: "listItem",
149
+ table_open: "table",
150
+ tr_open: "tableRow",
151
+ th_open: "tableCell",
152
+ td_open: "tableCell",
153
+ strong_open: "strong",
154
+ em_open: "emphasis",
155
+ s_open: "delete",
156
+ link_open: "link",
157
+ };
158
+ if (["thead_open", "tbody_open"].includes(token.type)) {
159
+ stack.push(parent());
160
+ return;
161
+ }
162
+ if (!types[token.type])
163
+ throw new Error(`cudoc-vitepress: unsupported token ${token.type}; provide a token adapter before exporting`);
164
+ node = { type: types[token.type], children: [], ...common };
165
+ if (node.type === "heading") {
166
+ node.depth = Number(token.tag.slice(1));
167
+ node.data = {
168
+ ...node.data,
169
+ cudoc: {
170
+ kind: "heading",
171
+ explicitId: /\{#[^}]+\}/.test(source.slice(node.position?.start.offset, node.position?.end.offset)),
172
+ },
173
+ };
174
+ }
175
+ if (node.type === "link")
176
+ node.url = String(attrs.href ?? "");
177
+ if (node.type === "list") {
178
+ node.ordered = token.type === "ordered_list_open";
179
+ node.start = node.ordered ? Number(attrs.start ?? 1) : null;
180
+ node.spread = false;
181
+ }
182
+ if (node.type === "listItem") {
183
+ node.spread = false;
184
+ node.checked = null;
185
+ }
186
+ }
187
+ add(node);
188
+ if (token.nesting === 1)
189
+ stack.push(node);
190
+ };
191
+ tokens.forEach(consume);
192
+ return root;
193
+ }
194
+ /** Install in VitePress markdown.config. Native anchors/links/containers run first. */
195
+ export default function cudocVitePress(md, options = {}) {
196
+ const nativeFence = md.renderer.rules.fence;
197
+ md.renderer.rules.fence = (tokens, index, renderOptions, env, self) => tokens[index].info.trim() === "cudoc-embed" &&
198
+ env.cudocRendered !== undefined
199
+ ? ""
200
+ : nativeFence
201
+ ? nativeFence(tokens, index, renderOptions, env, self)
202
+ : self.renderToken(tokens, index, renderOptions);
203
+ const nativeRender = md.renderer.render.bind(md.renderer);
204
+ md.renderer.render = (tokens, renderOptions, env) => {
205
+ const nativeHtml = nativeRender(tokens, renderOptions, env);
206
+ return env.cudocRendered ?? nativeHtml;
207
+ };
208
+ md.core.ruler.push("cudoc", (state) => {
209
+ // VitePress resolves links in renderer rules, after its core token passes.
210
+ // Render cloned inline tokens so those final attributes reach the AST without
211
+ // applying base paths twice to the original host tokens.
212
+ const cloneToken = (token) => Object.assign(Object.create(Object.getPrototypeOf(token)), token, {
213
+ attrs: token.attrs?.map((pair) => [...pair]) ?? null,
214
+ children: token.children?.map(cloneToken) ?? null,
215
+ });
216
+ const tokens = state.tokens.map(cloneToken);
217
+ for (const token of tokens)
218
+ if (token.type === "inline" && token.children)
219
+ md.renderer.renderInline(token.children, md.options, {
220
+ ...state.env,
221
+ links: [],
222
+ });
223
+ const tree = tokensToAst(tokens, state.src, options);
224
+ const diagnostics = normalizeDocument(tree, state.src, { ...options, host: "vitepress", format: "md", headingIds: "host" }, (source) => {
225
+ const inline = [];
226
+ const env = { ...state.env, links: [] };
227
+ md.inline.parse(source, md, env, inline);
228
+ for (const token of inline)
229
+ if (token.type === "text_special")
230
+ token.type = "text";
231
+ md.renderer.renderInline(inline, md.options, env);
232
+ return tokensToAst(inline, source, options)
233
+ .children;
234
+ });
235
+ const updateHeading = (node) => {
236
+ if (node.type === "heading")
237
+ for (const child of node.children ?? []) {
238
+ if (child.type === "link" &&
239
+ child.data?.hProperties?.class === "header-anchor") {
240
+ child.url = `#${node.data?.hProperties?.id}`;
241
+ child.data.hProperties.href = child.url;
242
+ child.data.cudoc = { kind: "permalink" };
243
+ }
244
+ }
245
+ node.children?.forEach(updateHeading);
246
+ };
247
+ updateHeading(tree);
248
+ const headingMap = new Map();
249
+ const collectHeadings = (node) => {
250
+ if (node.type === "heading" && node.position)
251
+ headingMap.set(node.position.start.line, node);
252
+ node.children?.forEach(collectHeadings);
253
+ };
254
+ collectHeadings(tree);
255
+ state.tokens.forEach((token, index) => {
256
+ if (token.type !== "heading_open")
257
+ return;
258
+ const heading = headingMap.get((token.map?.[0] ?? -1) + 1);
259
+ if (!heading)
260
+ return;
261
+ token.attrSet("id", String(heading.data?.hProperties?.id));
262
+ const inline = state.tokens[index + 1];
263
+ const title = heading.children
264
+ ?.filter((n) => !["badge", "permalink"].includes(n.data?.cudoc?.kind ?? ""))
265
+ .map(nodeText)
266
+ .join("")
267
+ .trim() ?? "";
268
+ inline.content = title;
269
+ const label = new state.Token("text", "", 0);
270
+ label.content = title;
271
+ inline.children = [label];
272
+ });
273
+ state.env.cudoc = {
274
+ tree: structuredClone(tree),
275
+ source: state.src,
276
+ diagnostics,
277
+ };
278
+ options.onDocument?.(structuredClone(tree), state.src, state.env);
279
+ let index = 0;
280
+ const expand = (node) => {
281
+ if (!node.children)
282
+ return;
283
+ node.children = node.children.flatMap((child) => {
284
+ if (child.type === "code" && child.lang === "cudoc-embed") {
285
+ if (!options.library)
286
+ throw new Error("cudoc-vitepress: build documents and provide library before rendering embeds");
287
+ const documentId = String(state.env.relativePath ?? state.env.path ?? "index.md")
288
+ .replace(/^\//, "")
289
+ .replace(/\.md$/, "");
290
+ const snapshot = options.library.documents.find((d) => d.id === documentId);
291
+ if (snapshot && !snapshot.source.text.endsWith(state.src))
292
+ throw new Error(`cudoc-vitepress: stale collected source ${documentId}; recollect documents`);
293
+ if (!options.library.compiler) {
294
+ const prepared = readPreparedEmbeds(options.outDir ?? ".cudoc/documents", documentId, snapshot?.source.text ?? state.src);
295
+ const result = prepared.blocks[embedKey(documentId, child.value, ++index)];
296
+ if (!result)
297
+ throw new Error(`cudoc-vitepress: missing prepared embed in ${documentId}`);
298
+ return structuredClone(result.children);
299
+ }
300
+ return resolveEmbed(options.library, parseEmbedSpec(child.value), {
301
+ documentId,
302
+ prefix: `embed-${++index}`,
303
+ }).children;
304
+ }
305
+ expand(child);
306
+ return [child];
307
+ });
308
+ };
309
+ if (!state.env.cudocCollect)
310
+ expand(tree);
311
+ const html = renderDocument(tree, {
312
+ highlight: (code, lang) => lang === "cudoc-embed"
313
+ ? ""
314
+ : (md.options.highlight?.(code, lang ?? "", "") ?? ""),
315
+ });
316
+ state.env.cudocRendered = html;
317
+ });
318
+ }
319
+ /** Reuse the very same configured VitePress renderer for collection and source replacements. */
320
+ export function createDocumentCompiler(md) {
321
+ return (source, context) => {
322
+ if (context.options.format === "mdx")
323
+ throw new Error("cudoc-vitepress: VitePress accepts Markdown/Vue .md documents, not React .mdx");
324
+ const env = {
325
+ path: context.filePath,
326
+ relativePath: context.id + ".md",
327
+ cudocCollect: true,
328
+ };
329
+ md.render(source, env);
330
+ const captured = env.cudoc;
331
+ if (!captured)
332
+ throw new Error("cudoc-vitepress: install the plugin on the supplied renderer");
333
+ const tree = structuredClone(captured.tree);
334
+ const offset = source.indexOf(captured.source);
335
+ if (offset < 0)
336
+ throw new Error("cudoc-vitepress: cannot map processed Markdown back to source");
337
+ const lines = source.slice(0, offset).split("\n").length - 1;
338
+ const adjust = (node) => {
339
+ if (node.position)
340
+ for (const point of [node.position.start, node.position.end]) {
341
+ if (point.offset !== undefined)
342
+ point.offset += offset;
343
+ point.line += lines;
344
+ }
345
+ node.children?.forEach(adjust);
346
+ };
347
+ adjust(tree);
348
+ return {
349
+ tree,
350
+ frontmatter: env.frontmatter ?? {},
351
+ diagnostics: captured.diagnostics,
352
+ };
353
+ };
354
+ }
355
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "cudoc-vitepress",
3
+ "version": "0.2.0",
4
+ "type": "module",
5
+ "license": "MIT",
6
+ "author": "cudoment",
7
+ "description": "VitePress Markdown integration for cudoc",
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "scripts": {
22
+ "build": "tsc --build"
23
+ },
24
+ "dependencies": {
25
+ "@cudoment/cudoc": "0.2.0",
26
+ "hast-util-from-html": "^2.0.3"
27
+ },
28
+ "engines": {
29
+ "node": ">=20"
30
+ },
31
+ "peerDependencies": {
32
+ "markdown-it": "^14.1.0",
33
+ "vitepress": "^1.6.4"
34
+ },
35
+ "devDependencies": {
36
+ "@types/markdown-it": "^14.2.0"
37
+ },
38
+ "homepage": "https://github.com/cudoment/cudoc/tree/main/packages/cudoc-vitepress#readme",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "git+https://github.com/cudoment/cudoc.git",
42
+ "directory": "packages/cudoc-vitepress"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public"
46
+ }
47
+ }