@cocoar/markdown-core 0.1.0-beta.100

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 ADDED
@@ -0,0 +1,23 @@
1
+ # @cocoar/markdown-core
2
+
3
+ Framework-agnostic Markdown core for Cocoar.
4
+
5
+ Provides a COCOAR-owned AST plus `parse()` / `serialize()` / `transform()`.
6
+
7
+ ## Usage
8
+
9
+ ```ts
10
+ import { parse, serialize } from '@cocoar/markdown-core';
11
+
12
+ const doc = parse('# Hello\n\nThis is **Markdown**.');
13
+ const markdown = serialize(doc);
14
+ ```
15
+
16
+ Notes:
17
+ - GFM parsing/serialization is enabled by default.
18
+ - Raw HTML nodes are mapped to `unsupported`.
19
+
20
+ ## Nx targets
21
+
22
+ - `nx test markdown-core`
23
+ - `nx build markdown-core`
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@cocoar/markdown-core",
3
+ "version": "0.1.0-beta.100",
4
+ "description": "Core markdown processing utilities for Cocoar Design System",
5
+ "author": "Cocoar",
6
+ "license": "Apache-2.0",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/cocoar-dev/cocoar-ui.git",
10
+ "directory": "libs/markdown-core"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/cocoar-dev/cocoar-ui/issues"
14
+ },
15
+ "homepage": "https://github.com/cocoar-dev/cocoar-ui",
16
+ "keywords": [
17
+ "markdown",
18
+ "remark",
19
+ "unified",
20
+ "cocoar"
21
+ ],
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "type": "commonjs",
26
+ "main": "./src/index.js",
27
+ "types": "./src/index.d.ts",
28
+ "dependencies": {
29
+ "@types/mdast": "^4.0.4",
30
+ "remark-gfm": "^4.0.1",
31
+ "remark-parse": "^11.0.0",
32
+ "remark-stringify": "^11.0.0",
33
+ "unified": "^11.0.5",
34
+ "tslib": "^2.3.0"
35
+ }
36
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export * from './lib/types';
2
+ export * from './lib/parse';
3
+ export * from './lib/serialize';
4
+ export * from './lib/transform';
5
+ export * from './lib/id';
package/src/index.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib/types"), exports);
5
+ tslib_1.__exportStar(require("./lib/parse"), exports);
6
+ tslib_1.__exportStar(require("./lib/serialize"), exports);
7
+ tslib_1.__exportStar(require("./lib/transform"), exports);
8
+ tslib_1.__exportStar(require("./lib/id"), exports);
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/markdown-core/src/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,sDAA4B;AAC5B,0DAAgC;AAChC,0DAAgC;AAChC,mDAAyB"}
@@ -0,0 +1,2 @@
1
+ export declare function hashStringFNV1a32(value: string): number;
2
+ export declare function createNodeId(seed: string): string;
package/src/lib/id.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hashStringFNV1a32 = hashStringFNV1a32;
4
+ exports.createNodeId = createNodeId;
5
+ const FNV_OFFSET_BASIS_32 = 0x811c9dc5;
6
+ const FNV_PRIME_32 = 0x01000193;
7
+ function hashStringFNV1a32(value) {
8
+ let hash = FNV_OFFSET_BASIS_32;
9
+ for (let index = 0; index < value.length; index++) {
10
+ hash ^= value.charCodeAt(index);
11
+ hash = Math.imul(hash, FNV_PRIME_32);
12
+ }
13
+ return hash >>> 0;
14
+ }
15
+ function createNodeId(seed) {
16
+ return hashStringFNV1a32(seed).toString(36);
17
+ }
18
+ //# sourceMappingURL=id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../../../../../libs/markdown-core/src/lib/id.ts"],"names":[],"mappings":";;AAGA,8CAOC;AAED,oCAEC;AAdD,MAAM,mBAAmB,GAAG,UAAU,CAAC;AACvC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,IAAI,IAAI,GAAG,mBAAmB,CAAC;IAC/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { MarkdownDocument } from './types';
2
+ export interface ParseMarkdownOptions {
3
+ readonly gfm?: boolean;
4
+ }
5
+ export declare function parse(markdown: string, options?: ParseMarkdownOptions): MarkdownDocument;
@@ -0,0 +1,441 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parse = parse;
4
+ const unified_1 = require("unified");
5
+ const remark_parse_1 = require("remark-parse");
6
+ const remark_gfm_1 = require("remark-gfm");
7
+ const id_1 = require("./id");
8
+ function parse(markdown, options = {}) {
9
+ var _a;
10
+ const processor = (0, unified_1.unified)().use(remark_parse_1.default);
11
+ if ((_a = options.gfm) !== null && _a !== void 0 ? _a : true) {
12
+ processor.use(remark_gfm_1.default);
13
+ }
14
+ const root = processor.parse(markdown);
15
+ return fromMdastRoot(root);
16
+ }
17
+ function fromMdastRoot(root) {
18
+ const headingSlugger = createHeadingSlugger();
19
+ const definitions = collectDefinitions(root);
20
+ const nodes = root.children
21
+ .map((child, index) => fromMdastNode(child, undefined, index, headingSlugger, definitions))
22
+ .filter(isMarkdownNode);
23
+ return { nodes };
24
+ }
25
+ function collectDefinitions(root) {
26
+ const definitions = new Map();
27
+ for (const child of root.children) {
28
+ if (child.type !== 'definition')
29
+ continue;
30
+ const def = child;
31
+ const identifier = typeof def.identifier === 'string' ? def.identifier : '';
32
+ const url = typeof def.url === 'string' ? def.url : '';
33
+ const title = typeof def.title === 'string' ? def.title : undefined;
34
+ if (identifier.length === 0 || url.length === 0)
35
+ continue;
36
+ definitions.set(identifier, { url, title });
37
+ }
38
+ return definitions;
39
+ }
40
+ function isMarkdownNode(node) {
41
+ return node !== null;
42
+ }
43
+ function fromMdastNode(node, parentId, indexInParent, headingSlugger, definitions) {
44
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
45
+ const position = toPosition(node.position);
46
+ const idSeed = `${node.type}|${(_a = position === null || position === void 0 ? void 0 : position.start) !== null && _a !== void 0 ? _a : 'na'}-${(_b = position === null || position === void 0 ? void 0 : position.end) !== null && _b !== void 0 ? _b : 'na'}|${parentId !== null && parentId !== void 0 ? parentId : 'root'}|${indexInParent}`;
47
+ const id = (0, id_1.createNodeId)(idSeed);
48
+ switch (node.type) {
49
+ case 'heading':
50
+ return fromHeading(node, id, position, headingSlugger, definitions);
51
+ case 'paragraph':
52
+ return {
53
+ id,
54
+ type: 'paragraph',
55
+ position,
56
+ children: ((_c = node.children) !== null && _c !== void 0 ? _c : [])
57
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
58
+ .filter(isMarkdownNode),
59
+ };
60
+ case 'blockquote':
61
+ return {
62
+ id,
63
+ type: 'blockquote',
64
+ position,
65
+ children: ((_d = node.children) !== null && _d !== void 0 ? _d : [])
66
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
67
+ .filter(isMarkdownNode),
68
+ };
69
+ case 'list':
70
+ return fromList(node, id, position, headingSlugger, definitions);
71
+ case 'listItem':
72
+ return fromListItem(node, id, position, headingSlugger, definitions);
73
+ case 'code':
74
+ return {
75
+ id,
76
+ type: 'codeBlock',
77
+ position,
78
+ text: node.value,
79
+ attrs: {
80
+ language: (_e = node.lang) !== null && _e !== void 0 ? _e : undefined,
81
+ meta: (_f = node.meta) !== null && _f !== void 0 ? _f : undefined,
82
+ },
83
+ };
84
+ case 'inlineCode':
85
+ return {
86
+ id,
87
+ type: 'inlineCode',
88
+ position,
89
+ text: node.value,
90
+ };
91
+ case 'break':
92
+ return {
93
+ id,
94
+ type: 'lineBreak',
95
+ position,
96
+ };
97
+ case 'text':
98
+ return {
99
+ id,
100
+ type: 'text',
101
+ position,
102
+ text: node.value,
103
+ };
104
+ case 'emphasis':
105
+ return {
106
+ id,
107
+ type: 'emphasis',
108
+ position,
109
+ children: ((_g = node.children) !== null && _g !== void 0 ? _g : [])
110
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
111
+ .filter(isMarkdownNode),
112
+ };
113
+ case 'strong':
114
+ return {
115
+ id,
116
+ type: 'strong',
117
+ position,
118
+ children: ((_h = node.children) !== null && _h !== void 0 ? _h : [])
119
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
120
+ .filter(isMarkdownNode),
121
+ };
122
+ case 'delete':
123
+ return {
124
+ id,
125
+ type: 'strikethrough',
126
+ position,
127
+ children: ((_j = node.children) !== null && _j !== void 0 ? _j : [])
128
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
129
+ .filter(isMarkdownNode),
130
+ };
131
+ case 'link':
132
+ return fromLink(node, id, position, headingSlugger, definitions);
133
+ case 'linkReference': {
134
+ const ref = node;
135
+ const identifier = typeof ref.identifier === 'string' ? ref.identifier : '';
136
+ const definition = identifier.length > 0 ? definitions.get(identifier) : undefined;
137
+ if (!(definition === null || definition === void 0 ? void 0 : definition.url)) {
138
+ return {
139
+ id,
140
+ type: 'text',
141
+ position,
142
+ text: mdastPlainText(node),
143
+ };
144
+ }
145
+ const children = Array.isArray(ref.children) ? ref.children : [];
146
+ return {
147
+ id,
148
+ type: 'link',
149
+ position,
150
+ attrs: {
151
+ url: definition.url,
152
+ title: (_k = definition.title) !== null && _k !== void 0 ? _k : undefined,
153
+ },
154
+ children: children
155
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
156
+ .filter(isMarkdownNode),
157
+ };
158
+ }
159
+ case 'image': {
160
+ const img = node;
161
+ const url = typeof img.url === 'string' ? img.url : '';
162
+ const title = typeof img.title === 'string' ? img.title : undefined;
163
+ const alt = typeof img.alt === 'string' ? img.alt : '';
164
+ if (url.length === 0) {
165
+ return {
166
+ id,
167
+ type: 'text',
168
+ position,
169
+ text: alt,
170
+ };
171
+ }
172
+ return {
173
+ id,
174
+ type: 'image',
175
+ position,
176
+ attrs: {
177
+ url,
178
+ title,
179
+ alt,
180
+ },
181
+ };
182
+ }
183
+ case 'imageReference': {
184
+ const ref = node;
185
+ const identifier = typeof ref.identifier === 'string' ? ref.identifier : '';
186
+ const definition = identifier.length > 0 ? definitions.get(identifier) : undefined;
187
+ const alt = typeof ref.alt === 'string' ? ref.alt : '';
188
+ if (!(definition === null || definition === void 0 ? void 0 : definition.url)) {
189
+ return {
190
+ id,
191
+ type: 'text',
192
+ position,
193
+ text: alt,
194
+ };
195
+ }
196
+ return {
197
+ id,
198
+ type: 'image',
199
+ position,
200
+ attrs: {
201
+ url: definition.url,
202
+ title: (_l = definition.title) !== null && _l !== void 0 ? _l : undefined,
203
+ alt,
204
+ },
205
+ };
206
+ }
207
+ case 'thematicBreak':
208
+ return {
209
+ id,
210
+ type: 'thematicBreak',
211
+ position,
212
+ };
213
+ case 'table':
214
+ return fromTable(node, id, position, headingSlugger, definitions);
215
+ case 'tableRow':
216
+ return fromTableRow(node, id, position, headingSlugger, definitions);
217
+ case 'tableCell':
218
+ return fromTableCell(node, id, position, headingSlugger, definitions);
219
+ // Reference-style definitions should not render as visible content.
220
+ case 'definition':
221
+ return null;
222
+ // Footnotes are supported by remark-gfm but not rendered as interactive footnotes in v1.
223
+ // Convert them to readable content instead of emitting unsupported placeholders.
224
+ case 'footnoteReference': {
225
+ const ref = node;
226
+ const identifier = typeof ref.identifier === 'string' ? ref.identifier : typeof ref.label === 'string' ? ref.label : '';
227
+ const label = identifier.length > 0 ? identifier : '?';
228
+ return {
229
+ id,
230
+ type: 'text',
231
+ position,
232
+ text: `[^${label}]`,
233
+ };
234
+ }
235
+ case 'footnoteDefinition': {
236
+ const def = node;
237
+ const identifier = typeof def.identifier === 'string' ? def.identifier : typeof def.label === 'string' ? def.label : '';
238
+ const label = identifier.length > 0 ? identifier : '?';
239
+ const labelTextId = (0, id_1.createNodeId)(`${idSeed}|footnote-label-text`);
240
+ const labelParagraphId = (0, id_1.createNodeId)(`${idSeed}|footnote-label-paragraph`);
241
+ const labelParagraph = {
242
+ id: labelParagraphId,
243
+ type: 'paragraph',
244
+ position,
245
+ children: [
246
+ {
247
+ id: labelTextId,
248
+ type: 'text',
249
+ position,
250
+ text: `[^${label}]: `,
251
+ },
252
+ ],
253
+ };
254
+ const children = Array.isArray(def.children) ? def.children : [];
255
+ return {
256
+ id,
257
+ type: 'blockquote',
258
+ position,
259
+ children: [
260
+ labelParagraph,
261
+ ...children
262
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
263
+ .filter(isMarkdownNode),
264
+ ],
265
+ };
266
+ }
267
+ // Raw HTML is intentionally unsupported in v1.
268
+ case 'html':
269
+ return {
270
+ id,
271
+ type: 'unsupported',
272
+ position,
273
+ attrs: { originalType: 'html' },
274
+ text: node.value,
275
+ };
276
+ default:
277
+ return {
278
+ id,
279
+ // Preserve the original type string for better diagnostics.
280
+ type: 'unsupported',
281
+ position,
282
+ attrs: { originalType: node.type },
283
+ };
284
+ }
285
+ }
286
+ function fromHeading(node, id, position, headingSlugger, definitions) {
287
+ var _a;
288
+ const plainText = mdastPlainText(node);
289
+ const anchor = plainText.length > 0 ? headingSlugger.slug(plainText) : undefined;
290
+ return {
291
+ id,
292
+ type: 'heading',
293
+ position,
294
+ attrs: { depth: node.depth, anchor },
295
+ children: ((_a = node.children) !== null && _a !== void 0 ? _a : [])
296
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
297
+ .filter(isMarkdownNode),
298
+ };
299
+ }
300
+ function fromLink(node, id, position, headingSlugger, definitions) {
301
+ var _a, _b;
302
+ return {
303
+ id,
304
+ type: 'link',
305
+ position,
306
+ attrs: {
307
+ url: node.url,
308
+ title: (_a = node.title) !== null && _a !== void 0 ? _a : undefined,
309
+ },
310
+ children: ((_b = node.children) !== null && _b !== void 0 ? _b : [])
311
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
312
+ .filter(isMarkdownNode),
313
+ };
314
+ }
315
+ function fromList(node, id, position, headingSlugger, definitions) {
316
+ var _a, _b, _c, _d;
317
+ return {
318
+ id,
319
+ type: 'list',
320
+ position,
321
+ attrs: {
322
+ ordered: (_a = node.ordered) !== null && _a !== void 0 ? _a : false,
323
+ start: (_b = node.start) !== null && _b !== void 0 ? _b : undefined,
324
+ spread: (_c = node.spread) !== null && _c !== void 0 ? _c : undefined,
325
+ },
326
+ children: ((_d = node.children) !== null && _d !== void 0 ? _d : [])
327
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
328
+ .filter(isMarkdownNode),
329
+ };
330
+ }
331
+ function fromListItem(node, id, position, headingSlugger, definitions) {
332
+ var _a, _b, _c;
333
+ return {
334
+ id,
335
+ type: 'listItem',
336
+ position,
337
+ attrs: {
338
+ checked: (_a = node.checked) !== null && _a !== void 0 ? _a : undefined,
339
+ spread: (_b = node.spread) !== null && _b !== void 0 ? _b : undefined,
340
+ },
341
+ children: ((_c = node.children) !== null && _c !== void 0 ? _c : [])
342
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
343
+ .filter(isMarkdownNode),
344
+ };
345
+ }
346
+ function fromTable(node, id, position, headingSlugger, definitions) {
347
+ var _a, _b;
348
+ return {
349
+ id,
350
+ type: 'table',
351
+ position,
352
+ attrs: {
353
+ align: (_a = node.align) !== null && _a !== void 0 ? _a : undefined,
354
+ },
355
+ children: ((_b = node.children) !== null && _b !== void 0 ? _b : [])
356
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
357
+ .filter(isMarkdownNode),
358
+ };
359
+ }
360
+ function fromTableRow(node, id, position, headingSlugger, definitions) {
361
+ var _a;
362
+ return {
363
+ id,
364
+ type: 'tableRow',
365
+ position,
366
+ children: ((_a = node.children) !== null && _a !== void 0 ? _a : [])
367
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
368
+ .filter(isMarkdownNode),
369
+ };
370
+ }
371
+ function fromTableCell(node, id, position, headingSlugger, definitions) {
372
+ var _a;
373
+ return {
374
+ id,
375
+ type: 'tableCell',
376
+ position,
377
+ children: ((_a = node.children) !== null && _a !== void 0 ? _a : [])
378
+ .map((c, i) => fromMdastNode(c, id, i, headingSlugger, definitions))
379
+ .filter(isMarkdownNode),
380
+ };
381
+ }
382
+ function createHeadingSlugger() {
383
+ const counts = new Map();
384
+ return {
385
+ slug(value) {
386
+ var _a;
387
+ const base = slugifyHeading(value);
388
+ const prev = (_a = counts.get(base)) !== null && _a !== void 0 ? _a : 0;
389
+ counts.set(base, prev + 1);
390
+ return prev === 0 ? base : `${base}-${prev}`;
391
+ },
392
+ };
393
+ }
394
+ function slugifyHeading(value) {
395
+ const normalized = value.trim().toLowerCase();
396
+ // Roughly match common GitHub-style anchors for typical docs.
397
+ // - Keep letters/numbers/spaces/hyphens
398
+ // - Convert whitespace to '-'
399
+ // - Collapse duplicate '-'
400
+ const stripped = normalized
401
+ .replace(/[^\p{L}\p{N}\s-]+/gu, '')
402
+ .replace(/\s+/g, '-')
403
+ .replace(/-+/g, '-')
404
+ .replace(/^-|-$/g, '');
405
+ return stripped.length > 0 ? stripped : 'section';
406
+ }
407
+ function mdastPlainText(node) {
408
+ if (!node || typeof node !== 'object')
409
+ return '';
410
+ const anyNode = node;
411
+ if (typeof anyNode.type !== 'string')
412
+ return '';
413
+ if (anyNode.type === 'text' || anyNode.type === 'inlineCode') {
414
+ return typeof anyNode.value === 'string' ? anyNode.value : '';
415
+ }
416
+ const children = Array.isArray(anyNode.children) ? anyNode.children : [];
417
+ return children.map((c) => mdastPlainText(c)).join('');
418
+ }
419
+ function toPosition(position) {
420
+ const p = position;
421
+ if (!(p === null || p === void 0 ? void 0 : p.start) || !(p === null || p === void 0 ? void 0 : p.end)) {
422
+ return undefined;
423
+ }
424
+ const startOffset = p.start.offset;
425
+ const endOffset = p.end.offset;
426
+ const line = p.start.line;
427
+ const column = p.start.column;
428
+ if (typeof startOffset !== 'number' ||
429
+ typeof endOffset !== 'number' ||
430
+ typeof line !== 'number' ||
431
+ typeof column !== 'number') {
432
+ return undefined;
433
+ }
434
+ return {
435
+ start: startOffset,
436
+ end: endOffset,
437
+ line,
438
+ column,
439
+ };
440
+ }
441
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../../libs/markdown-core/src/lib/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { MarkdownDocument } from './types';
2
+ export interface SerializeMarkdownOptions {
3
+ readonly gfm?: boolean;
4
+ }
5
+ export declare function serialize(doc: MarkdownDocument, options?: SerializeMarkdownOptions): string;
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serialize = serialize;
4
+ const unified_1 = require("unified");
5
+ const remark_stringify_1 = require("remark-stringify");
6
+ const remark_gfm_1 = require("remark-gfm");
7
+ function serialize(doc, options = {}) {
8
+ var _a;
9
+ const mdast = toMdastRoot(doc);
10
+ const processor = (0, unified_1.unified)().use(remark_stringify_1.default);
11
+ if ((_a = options.gfm) !== null && _a !== void 0 ? _a : true) {
12
+ processor.use(remark_gfm_1.default);
13
+ }
14
+ return String(processor.stringify(mdast));
15
+ }
16
+ function toMdastRoot(doc) {
17
+ return {
18
+ type: 'root',
19
+ children: doc.nodes.map((n) => toMdastNode(n)),
20
+ };
21
+ }
22
+ function toMdastNode(node) {
23
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7;
24
+ switch (node.type) {
25
+ case 'heading':
26
+ return {
27
+ type: 'heading',
28
+ depth: clampHeadingDepth((_a = node.attrs) === null || _a === void 0 ? void 0 : _a['depth']),
29
+ children: ((_b = node.children) !== null && _b !== void 0 ? _b : []).map(toMdastNode),
30
+ };
31
+ case 'paragraph':
32
+ return {
33
+ type: 'paragraph',
34
+ children: ((_c = node.children) !== null && _c !== void 0 ? _c : []).map(toMdastNode),
35
+ };
36
+ case 'blockquote':
37
+ return {
38
+ type: 'blockquote',
39
+ children: ((_d = node.children) !== null && _d !== void 0 ? _d : []).map(toMdastNode),
40
+ };
41
+ case 'list':
42
+ return {
43
+ type: 'list',
44
+ ordered: Boolean((_e = node.attrs) === null || _e === void 0 ? void 0 : _e['ordered']),
45
+ start: typeof ((_f = node.attrs) === null || _f === void 0 ? void 0 : _f['start']) === 'number' ? node.attrs['start'] : undefined,
46
+ spread: typeof ((_g = node.attrs) === null || _g === void 0 ? void 0 : _g['spread']) === 'boolean' ? node.attrs['spread'] : undefined,
47
+ children: ((_h = node.children) !== null && _h !== void 0 ? _h : []).map(toMdastNode),
48
+ };
49
+ case 'listItem':
50
+ return {
51
+ type: 'listItem',
52
+ checked: typeof ((_j = node.attrs) === null || _j === void 0 ? void 0 : _j['checked']) === 'boolean' ? node.attrs['checked'] : null,
53
+ spread: typeof ((_k = node.attrs) === null || _k === void 0 ? void 0 : _k['spread']) === 'boolean' ? node.attrs['spread'] : undefined,
54
+ children: ((_l = node.children) !== null && _l !== void 0 ? _l : []).map(toMdastNode),
55
+ };
56
+ case 'codeBlock':
57
+ return {
58
+ type: 'code',
59
+ lang: typeof ((_m = node.attrs) === null || _m === void 0 ? void 0 : _m['language']) === 'string' ? node.attrs['language'] : null,
60
+ meta: typeof ((_o = node.attrs) === null || _o === void 0 ? void 0 : _o['meta']) === 'string' ? node.attrs['meta'] : null,
61
+ value: (_p = node.text) !== null && _p !== void 0 ? _p : '',
62
+ };
63
+ case 'inlineCode':
64
+ return {
65
+ type: 'inlineCode',
66
+ value: (_q = node.text) !== null && _q !== void 0 ? _q : '',
67
+ };
68
+ case 'text':
69
+ return {
70
+ type: 'text',
71
+ value: (_r = node.text) !== null && _r !== void 0 ? _r : '',
72
+ };
73
+ case 'emphasis':
74
+ return {
75
+ type: 'emphasis',
76
+ children: ((_s = node.children) !== null && _s !== void 0 ? _s : []).map(toMdastNode),
77
+ };
78
+ case 'strong':
79
+ return {
80
+ type: 'strong',
81
+ children: ((_t = node.children) !== null && _t !== void 0 ? _t : []).map(toMdastNode),
82
+ };
83
+ case 'strikethrough':
84
+ return {
85
+ type: 'delete',
86
+ children: ((_u = node.children) !== null && _u !== void 0 ? _u : []).map(toMdastNode),
87
+ };
88
+ case 'link':
89
+ return {
90
+ type: 'link',
91
+ url: typeof ((_v = node.attrs) === null || _v === void 0 ? void 0 : _v['url']) === 'string' ? node.attrs['url'] : '',
92
+ title: typeof ((_w = node.attrs) === null || _w === void 0 ? void 0 : _w['title']) === 'string' ? node.attrs['title'] : null,
93
+ children: ((_x = node.children) !== null && _x !== void 0 ? _x : []).map(toMdastNode),
94
+ };
95
+ case 'image':
96
+ return {
97
+ type: 'image',
98
+ url: typeof ((_y = node.attrs) === null || _y === void 0 ? void 0 : _y['url']) === 'string' ? node.attrs['url'] : '',
99
+ title: typeof ((_z = node.attrs) === null || _z === void 0 ? void 0 : _z['title']) === 'string' ? node.attrs['title'] : null,
100
+ alt: typeof ((_0 = node.attrs) === null || _0 === void 0 ? void 0 : _0['alt']) === 'string' ? node.attrs['alt'] : '',
101
+ };
102
+ case 'thematicBreak':
103
+ return {
104
+ type: 'thematicBreak',
105
+ };
106
+ case 'lineBreak':
107
+ return {
108
+ type: 'break',
109
+ };
110
+ case 'table':
111
+ return {
112
+ type: 'table',
113
+ align: Array.isArray((_1 = node.attrs) === null || _1 === void 0 ? void 0 : _1['align']) ? (_2 = node.attrs) === null || _2 === void 0 ? void 0 : _2['align'] : undefined,
114
+ children: ((_3 = node.children) !== null && _3 !== void 0 ? _3 : []).map(toMdastNode),
115
+ };
116
+ case 'tableRow':
117
+ return {
118
+ type: 'tableRow',
119
+ children: ((_4 = node.children) !== null && _4 !== void 0 ? _4 : []).map(toMdastNode),
120
+ };
121
+ case 'tableCell':
122
+ return {
123
+ type: 'tableCell',
124
+ children: ((_5 = node.children) !== null && _5 !== void 0 ? _5 : []).map(toMdastNode),
125
+ };
126
+ case 'unsupported':
127
+ return {
128
+ type: 'html',
129
+ value: `<!-- Unsupported node: ${String((_7 = (_6 = node.attrs) === null || _6 === void 0 ? void 0 : _6['originalType']) !== null && _7 !== void 0 ? _7 : 'unknown')} -->`,
130
+ };
131
+ default:
132
+ return {
133
+ type: 'html',
134
+ value: `<!-- Unsupported node: ${String(node.type)} -->`,
135
+ };
136
+ }
137
+ }
138
+ function clampHeadingDepth(depth) {
139
+ const value = typeof depth === 'number' ? Math.trunc(depth) : 1;
140
+ if (value <= 1)
141
+ return 1;
142
+ if (value === 2)
143
+ return 2;
144
+ if (value === 3)
145
+ return 3;
146
+ if (value === 4)
147
+ return 4;
148
+ if (value === 5)
149
+ return 5;
150
+ return 6;
151
+ }
152
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../../../libs/markdown-core/src/lib/serialize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { MarkdownDocument, MarkdownTransform } from './types';
2
+ export declare function transform(doc: MarkdownDocument, ...transforms: readonly MarkdownTransform[]): MarkdownDocument;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transform = transform;
4
+ function transform(doc, ...transforms) {
5
+ return transforms.reduce((current, applyTransform) => applyTransform(current), doc);
6
+ }
7
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../../libs/markdown-core/src/lib/transform.ts"],"names":[],"mappings":";;AAEA,8BAEC;AAFD,SAAgB,SAAS,CAAC,GAAqB,EAAE,GAAG,UAAwC;IAC1F,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface MarkdownPosition {
2
+ readonly start: number;
3
+ readonly end: number;
4
+ readonly line: number;
5
+ readonly column: number;
6
+ }
7
+ export type MarkdownNodeType = 'heading' | 'paragraph' | 'blockquote' | 'list' | 'listItem' | 'codeBlock' | 'table' | 'tableRow' | 'tableCell' | 'thematicBreak' | 'lineBreak' | 'text' | 'emphasis' | 'strong' | 'strikethrough' | 'inlineCode' | 'link' | 'image' | 'unsupported';
8
+ export interface MarkdownNode {
9
+ readonly id: string;
10
+ readonly type: MarkdownNodeType | (string & {});
11
+ readonly children?: readonly MarkdownNode[];
12
+ readonly text?: string;
13
+ readonly attrs?: Readonly<Record<string, unknown>>;
14
+ readonly position?: MarkdownPosition;
15
+ }
16
+ export interface MarkdownDocument {
17
+ readonly nodes: readonly MarkdownNode[];
18
+ readonly meta?: {
19
+ readonly sourceMap?: unknown;
20
+ };
21
+ }
22
+ export type MarkdownTransform = (doc: MarkdownDocument) => MarkdownDocument;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../libs/markdown-core/src/lib/types.ts"],"names":[],"mappings":""}