pd-markdown 2.0.0 → 2.0.1

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.
Files changed (75) hide show
  1. package/README.md +52 -170
  2. package/package.json +12 -11
  3. package/packages/parser/README.md +120 -0
  4. package/packages/utils/README.md +130 -0
  5. package/packages/web/README.md +110 -0
  6. package/packages/parser/dist/index.cjs +0 -191
  7. package/packages/parser/dist/index.cjs.map +0 -1
  8. package/packages/parser/dist/index.d.ts +0 -4
  9. package/packages/parser/dist/index.d.ts.map +0 -1
  10. package/packages/parser/dist/index.mjs +0 -185
  11. package/packages/parser/dist/index.mjs.map +0 -1
  12. package/packages/parser/dist/plugins/index.d.ts +0 -4
  13. package/packages/parser/dist/plugins/index.d.ts.map +0 -1
  14. package/packages/parser/dist/plugins/transform/heading.d.ts +0 -6
  15. package/packages/parser/dist/plugins/transform/heading.d.ts.map +0 -1
  16. package/packages/parser/dist/plugins/transform/list.d.ts +0 -14
  17. package/packages/parser/dist/plugins/transform/list.d.ts.map +0 -1
  18. package/packages/parser/dist/plugins/transform/table.d.ts +0 -27
  19. package/packages/parser/dist/plugins/transform/table.d.ts.map +0 -1
  20. package/packages/parser/dist/processor.d.ts +0 -22
  21. package/packages/parser/dist/processor.d.ts.map +0 -1
  22. package/packages/parser/dist/types/index.d.ts +0 -55
  23. package/packages/parser/dist/types/index.d.ts.map +0 -1
  24. package/packages/utils/dist/ast/query.d.ts +0 -36
  25. package/packages/utils/dist/ast/query.d.ts.map +0 -1
  26. package/packages/utils/dist/ast/traverse.d.ts +0 -22
  27. package/packages/utils/dist/ast/traverse.d.ts.map +0 -1
  28. package/packages/utils/dist/index.cjs +0 -358
  29. package/packages/utils/dist/index.cjs.map +0 -1
  30. package/packages/utils/dist/index.d.ts +0 -7
  31. package/packages/utils/dist/index.d.ts.map +0 -1
  32. package/packages/utils/dist/index.mjs +0 -343
  33. package/packages/utils/dist/index.mjs.map +0 -1
  34. package/packages/utils/dist/string/sanitize.d.ts +0 -22
  35. package/packages/utils/dist/string/sanitize.d.ts.map +0 -1
  36. package/packages/utils/dist/string/slugify.d.ts +0 -16
  37. package/packages/utils/dist/string/slugify.d.ts.map +0 -1
  38. package/packages/utils/dist/types/index.d.ts +0 -49
  39. package/packages/utils/dist/types/index.d.ts.map +0 -1
  40. package/packages/web/dist/components/MarkdownRenderer.d.ts +0 -27
  41. package/packages/web/dist/components/MarkdownRenderer.d.ts.map +0 -1
  42. package/packages/web/dist/components/NodeRenderer.d.ts +0 -10
  43. package/packages/web/dist/components/NodeRenderer.d.ts.map +0 -1
  44. package/packages/web/dist/components/StreamMarkdownRenderer.d.ts +0 -58
  45. package/packages/web/dist/components/StreamMarkdownRenderer.d.ts.map +0 -1
  46. package/packages/web/dist/components/context.d.ts +0 -17
  47. package/packages/web/dist/components/context.d.ts.map +0 -1
  48. package/packages/web/dist/components/defaults/Blockquote.d.ts +0 -8
  49. package/packages/web/dist/components/defaults/Blockquote.d.ts.map +0 -1
  50. package/packages/web/dist/components/defaults/Code.d.ts +0 -13
  51. package/packages/web/dist/components/defaults/Code.d.ts.map +0 -1
  52. package/packages/web/dist/components/defaults/Heading.d.ts +0 -8
  53. package/packages/web/dist/components/defaults/Heading.d.ts.map +0 -1
  54. package/packages/web/dist/components/defaults/Image.d.ts +0 -7
  55. package/packages/web/dist/components/defaults/Image.d.ts.map +0 -1
  56. package/packages/web/dist/components/defaults/Link.d.ts +0 -8
  57. package/packages/web/dist/components/defaults/Link.d.ts.map +0 -1
  58. package/packages/web/dist/components/defaults/List.d.ts +0 -13
  59. package/packages/web/dist/components/defaults/List.d.ts.map +0 -1
  60. package/packages/web/dist/components/defaults/Paragraph.d.ts +0 -8
  61. package/packages/web/dist/components/defaults/Paragraph.d.ts.map +0 -1
  62. package/packages/web/dist/components/defaults/Table.d.ts +0 -19
  63. package/packages/web/dist/components/defaults/Table.d.ts.map +0 -1
  64. package/packages/web/dist/components/defaults/index.d.ts +0 -42
  65. package/packages/web/dist/components/defaults/index.d.ts.map +0 -1
  66. package/packages/web/dist/hooks/useMarkdown.d.ts +0 -11
  67. package/packages/web/dist/hooks/useMarkdown.d.ts.map +0 -1
  68. package/packages/web/dist/hooks/useStreamMarkdown.d.ts +0 -59
  69. package/packages/web/dist/hooks/useStreamMarkdown.d.ts.map +0 -1
  70. package/packages/web/dist/index.cjs +0 -715
  71. package/packages/web/dist/index.cjs.map +0 -1
  72. package/packages/web/dist/index.d.ts +0 -8
  73. package/packages/web/dist/index.d.ts.map +0 -1
  74. package/packages/web/dist/index.mjs +0 -694
  75. package/packages/web/dist/index.mjs.map +0 -1
@@ -1,191 +0,0 @@
1
- 'use strict';
2
-
3
- var unified = require('unified');
4
- var remarkParse = require('remark-parse');
5
- var remarkGfm = require('remark-gfm');
6
- var remarkFrontmatter = require('remark-frontmatter');
7
- var unistUtilVisit = require('unist-util-visit');
8
- var yaml = require('yaml');
9
- var pdMarkdownUtils = require('pd-markdown-utils');
10
-
11
- /**
12
- * Extract text content from phrasing content nodes
13
- */
14
- function extractText(nodes) {
15
- return nodes
16
- .map((node) => {
17
- if (node.type === 'text') {
18
- return node.value;
19
- }
20
- if ('children' in node) {
21
- return extractText(node.children);
22
- }
23
- return '';
24
- })
25
- .join('');
26
- }
27
- /**
28
- * Transform plugin that adds slug IDs to headings
29
- */
30
- function transformHeading(tree) {
31
- const slugs = new Set();
32
- unistUtilVisit.visit(tree, 'heading', (node) => {
33
- const text = extractText(node.children);
34
- const slug = pdMarkdownUtils.uniqueSlugify(text, slugs);
35
- // Add data.id to the heading node
36
- const data = (node.data || {});
37
- data.id = slug;
38
- const hProperties = (data.hProperties || {});
39
- hProperties.id = slug;
40
- data.hProperties = hProperties;
41
- node.data = data;
42
- });
43
- }
44
-
45
- /**
46
- * Transform plugin that adds index to list items
47
- */
48
- function transformList(tree) {
49
- unistUtilVisit.visit(tree, 'list', (node) => {
50
- node.children.forEach((item, index) => {
51
- item.data = item.data || {};
52
- item.data.index = index;
53
- // For ordered lists, also store the actual number
54
- if (node.ordered) {
55
- const start = node.start ?? 1;
56
- item.data.index = start + index;
57
- }
58
- });
59
- });
60
- }
61
-
62
- /**
63
- * Transform plugin that enhances table structure
64
- * - Separates header and body rows
65
- * - Adds alignment and index info to cells
66
- */
67
- function transformTable(tree) {
68
- unistUtilVisit.visit(tree, 'table', (node) => {
69
- if (node.children.length === 0)
70
- return;
71
- const [headerRow, ...bodyRows] = node.children;
72
- const align = node.align || [];
73
- // Mark header row and cells
74
- if (headerRow) {
75
- headerRow.children.forEach((cell, index) => {
76
- cell.data = cell.data || {};
77
- cell.data.isHeader = true;
78
- cell.data.align = align[index] || null;
79
- cell.data.columnIndex = index;
80
- });
81
- }
82
- // Mark body cells
83
- bodyRows.forEach((row) => {
84
- row.children.forEach((cell, index) => {
85
- cell.data = cell.data || {};
86
- cell.data.isHeader = false;
87
- cell.data.align = align[index] || null;
88
- cell.data.columnIndex = index;
89
- });
90
- });
91
- // Store structured data on table node
92
- node.data = node.data || {};
93
- node.data.header = headerRow;
94
- node.data.body = bodyRows;
95
- });
96
- }
97
-
98
- /**
99
- * Default parser options
100
- */
101
- const DEFAULT_OPTIONS = {
102
- gfm: true,
103
- frontmatter: true,
104
- };
105
- /**
106
- * Create frontmatter extraction plugin
107
- */
108
- function extractFrontmatter() {
109
- return (tree, file) => {
110
- unistUtilVisit.visit(tree, 'yaml', (node) => {
111
- try {
112
- const data = yaml.parse(node.value);
113
- file.data.frontmatter = data;
114
- }
115
- catch {
116
- // Invalid YAML, ignore
117
- }
118
- });
119
- };
120
- }
121
- /**
122
- * Create a markdown parser with the specified options
123
- *
124
- * @param options - Parser configuration options
125
- * @returns Parser instance with parse method
126
- */
127
- function createParser(options = {}) {
128
- const opts = { ...DEFAULT_OPTIONS, ...options };
129
- const customPlugins = options.plugins || [];
130
- // Build processor (使用 any 绕过复杂的类型检查)
131
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
132
- let processor = unified.unified().use(remarkParse);
133
- // Add GFM support
134
- if (opts.gfm) {
135
- processor = processor.use(remarkGfm);
136
- }
137
- // Add frontmatter support
138
- if (opts.frontmatter) {
139
- processor = processor.use(remarkFrontmatter, ['yaml']);
140
- }
141
- // Run custom "before" plugins
142
- const beforePlugins = customPlugins.filter((p) => p.phase === 'before');
143
- for (const plugin of beforePlugins) {
144
- processor = processor.use(() => plugin.transform);
145
- }
146
- // Add frontmatter extraction
147
- if (opts.frontmatter) {
148
- processor = processor.use(extractFrontmatter);
149
- }
150
- // Add built-in transform plugins
151
- processor = processor
152
- .use(() => transformHeading)
153
- .use(() => transformList)
154
- .use(() => transformTable);
155
- // Run custom "after" plugins
156
- const afterPlugins = customPlugins.filter((p) => p.phase === 'after');
157
- for (const plugin of afterPlugins) {
158
- processor = processor.use(() => plugin.transform);
159
- }
160
- // Freeze processor
161
- processor.freeze();
162
- return {
163
- parse(content) {
164
- // Parse markdown to AST
165
- const tree = processor.parse(content);
166
- // Run all transform plugins
167
- processor.runSync(tree);
168
- return tree;
169
- },
170
- };
171
- }
172
- /**
173
- * Type-safe helper to define a parser plugin
174
- *
175
- * @param config - Plugin configuration
176
- * @returns Parser plugin
177
- */
178
- function definePlugin(config, options) {
179
- return {
180
- name: config.name,
181
- phase: config.phase,
182
- transform: config.transform(options),
183
- };
184
- }
185
-
186
- exports.createParser = createParser;
187
- exports.definePlugin = definePlugin;
188
- exports.transformHeading = transformHeading;
189
- exports.transformList = transformList;
190
- exports.transformTable = transformTable;
191
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/plugins/transform/heading.ts","../src/plugins/transform/list.ts","../src/plugins/transform/table.ts","../src/processor.ts"],"sourcesContent":[null,null,null,null],"names":["visit","uniqueSlugify","parseYaml","unified"],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export type { Parser, ParserOptions, ParserPlugin, PluginConfig, FrontmatterData, FileData, } from './types';
2
- export { createParser, definePlugin } from './processor';
3
- export { transformHeading, transformList, transformTable } from './plugins';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,MAAM,EACN,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,QAAQ,GACT,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGxD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA"}
@@ -1,185 +0,0 @@
1
- import { unified } from 'unified';
2
- import remarkParse from 'remark-parse';
3
- import remarkGfm from 'remark-gfm';
4
- import remarkFrontmatter from 'remark-frontmatter';
5
- import { visit } from 'unist-util-visit';
6
- import { parse } from 'yaml';
7
- import { uniqueSlugify } from 'pd-markdown-utils';
8
-
9
- /**
10
- * Extract text content from phrasing content nodes
11
- */
12
- function extractText(nodes) {
13
- return nodes
14
- .map((node) => {
15
- if (node.type === 'text') {
16
- return node.value;
17
- }
18
- if ('children' in node) {
19
- return extractText(node.children);
20
- }
21
- return '';
22
- })
23
- .join('');
24
- }
25
- /**
26
- * Transform plugin that adds slug IDs to headings
27
- */
28
- function transformHeading(tree) {
29
- const slugs = new Set();
30
- visit(tree, 'heading', (node) => {
31
- const text = extractText(node.children);
32
- const slug = uniqueSlugify(text, slugs);
33
- // Add data.id to the heading node
34
- const data = (node.data || {});
35
- data.id = slug;
36
- const hProperties = (data.hProperties || {});
37
- hProperties.id = slug;
38
- data.hProperties = hProperties;
39
- node.data = data;
40
- });
41
- }
42
-
43
- /**
44
- * Transform plugin that adds index to list items
45
- */
46
- function transformList(tree) {
47
- visit(tree, 'list', (node) => {
48
- node.children.forEach((item, index) => {
49
- item.data = item.data || {};
50
- item.data.index = index;
51
- // For ordered lists, also store the actual number
52
- if (node.ordered) {
53
- const start = node.start ?? 1;
54
- item.data.index = start + index;
55
- }
56
- });
57
- });
58
- }
59
-
60
- /**
61
- * Transform plugin that enhances table structure
62
- * - Separates header and body rows
63
- * - Adds alignment and index info to cells
64
- */
65
- function transformTable(tree) {
66
- visit(tree, 'table', (node) => {
67
- if (node.children.length === 0)
68
- return;
69
- const [headerRow, ...bodyRows] = node.children;
70
- const align = node.align || [];
71
- // Mark header row and cells
72
- if (headerRow) {
73
- headerRow.children.forEach((cell, index) => {
74
- cell.data = cell.data || {};
75
- cell.data.isHeader = true;
76
- cell.data.align = align[index] || null;
77
- cell.data.columnIndex = index;
78
- });
79
- }
80
- // Mark body cells
81
- bodyRows.forEach((row) => {
82
- row.children.forEach((cell, index) => {
83
- cell.data = cell.data || {};
84
- cell.data.isHeader = false;
85
- cell.data.align = align[index] || null;
86
- cell.data.columnIndex = index;
87
- });
88
- });
89
- // Store structured data on table node
90
- node.data = node.data || {};
91
- node.data.header = headerRow;
92
- node.data.body = bodyRows;
93
- });
94
- }
95
-
96
- /**
97
- * Default parser options
98
- */
99
- const DEFAULT_OPTIONS = {
100
- gfm: true,
101
- frontmatter: true,
102
- };
103
- /**
104
- * Create frontmatter extraction plugin
105
- */
106
- function extractFrontmatter() {
107
- return (tree, file) => {
108
- visit(tree, 'yaml', (node) => {
109
- try {
110
- const data = parse(node.value);
111
- file.data.frontmatter = data;
112
- }
113
- catch {
114
- // Invalid YAML, ignore
115
- }
116
- });
117
- };
118
- }
119
- /**
120
- * Create a markdown parser with the specified options
121
- *
122
- * @param options - Parser configuration options
123
- * @returns Parser instance with parse method
124
- */
125
- function createParser(options = {}) {
126
- const opts = { ...DEFAULT_OPTIONS, ...options };
127
- const customPlugins = options.plugins || [];
128
- // Build processor (使用 any 绕过复杂的类型检查)
129
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
130
- let processor = unified().use(remarkParse);
131
- // Add GFM support
132
- if (opts.gfm) {
133
- processor = processor.use(remarkGfm);
134
- }
135
- // Add frontmatter support
136
- if (opts.frontmatter) {
137
- processor = processor.use(remarkFrontmatter, ['yaml']);
138
- }
139
- // Run custom "before" plugins
140
- const beforePlugins = customPlugins.filter((p) => p.phase === 'before');
141
- for (const plugin of beforePlugins) {
142
- processor = processor.use(() => plugin.transform);
143
- }
144
- // Add frontmatter extraction
145
- if (opts.frontmatter) {
146
- processor = processor.use(extractFrontmatter);
147
- }
148
- // Add built-in transform plugins
149
- processor = processor
150
- .use(() => transformHeading)
151
- .use(() => transformList)
152
- .use(() => transformTable);
153
- // Run custom "after" plugins
154
- const afterPlugins = customPlugins.filter((p) => p.phase === 'after');
155
- for (const plugin of afterPlugins) {
156
- processor = processor.use(() => plugin.transform);
157
- }
158
- // Freeze processor
159
- processor.freeze();
160
- return {
161
- parse(content) {
162
- // Parse markdown to AST
163
- const tree = processor.parse(content);
164
- // Run all transform plugins
165
- processor.runSync(tree);
166
- return tree;
167
- },
168
- };
169
- }
170
- /**
171
- * Type-safe helper to define a parser plugin
172
- *
173
- * @param config - Plugin configuration
174
- * @returns Parser plugin
175
- */
176
- function definePlugin(config, options) {
177
- return {
178
- name: config.name,
179
- phase: config.phase,
180
- transform: config.transform(options),
181
- };
182
- }
183
-
184
- export { createParser, definePlugin, transformHeading, transformList, transformTable };
185
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/plugins/transform/heading.ts","../src/plugins/transform/list.ts","../src/plugins/transform/table.ts","../src/processor.ts"],"sourcesContent":[null,null,null,null],"names":["parseYaml"],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export { transformHeading } from './transform/heading';
2
- export { transformList } from './transform/list';
3
- export { transformTable } from './transform/table';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA"}
@@ -1,6 +0,0 @@
1
- import type { Root } from 'mdast';
2
- /**
3
- * Transform plugin that adds slug IDs to headings
4
- */
5
- export declare function transformHeading(tree: Root): void;
6
- //# sourceMappingURL=heading.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../src/plugins/transform/heading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA4B,MAAM,OAAO,CAAA;AAqB3D;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAejD"}
@@ -1,14 +0,0 @@
1
- import type { Root } from 'mdast';
2
- /**
3
- * Extended list item with index
4
- */
5
- declare module 'mdast' {
6
- interface ListItemData {
7
- index?: number;
8
- }
9
- }
10
- /**
11
- * Transform plugin that adds index to list items
12
- */
13
- export declare function transformList(tree: Root): void;
14
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/plugins/transform/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,OAAO,CAAA;AAGjD;;GAEG;AACH,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,YAAY;QACpB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf;CACF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAa9C"}
@@ -1,27 +0,0 @@
1
- import type { Root } from 'mdast';
2
- /**
3
- * Extended table data
4
- */
5
- declare module 'mdast' {
6
- interface TableData {
7
- /** Header row */
8
- header?: TableRow;
9
- /** Body rows */
10
- body?: TableRow[];
11
- }
12
- interface TableCellData {
13
- /** Whether this cell is in header */
14
- isHeader?: boolean;
15
- /** Column alignment */
16
- align?: 'left' | 'center' | 'right' | null;
17
- /** Column index */
18
- columnIndex?: number;
19
- }
20
- }
21
- /**
22
- * Transform plugin that enhances table structure
23
- * - Separates header and body rows
24
- * - Adds alignment and index info to cells
25
- */
26
- export declare function transformTable(tree: Root): void;
27
- //# sourceMappingURL=table.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/plugins/transform/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAoB,MAAM,OAAO,CAAA;AAGnD;;GAEG;AACH,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,SAAS;QACjB,iBAAiB;QACjB,MAAM,CAAC,EAAE,QAAQ,CAAA;QACjB,gBAAgB;QAChB,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA;KAClB;IAED,UAAU,aAAa;QACrB,qCAAqC;QACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,uBAAuB;QACvB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAA;QAC1C,mBAAmB;QACnB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB;CACF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAgC/C"}
@@ -1,22 +0,0 @@
1
- import type { Root } from 'mdast';
2
- import type { VFile } from 'vfile';
3
- import type { Parser, ParserOptions, ParserPlugin } from './types';
4
- /**
5
- * Create a markdown parser with the specified options
6
- *
7
- * @param options - Parser configuration options
8
- * @returns Parser instance with parse method
9
- */
10
- export declare function createParser(options?: ParserOptions): Parser;
11
- /**
12
- * Type-safe helper to define a parser plugin
13
- *
14
- * @param config - Plugin configuration
15
- * @returns Parser plugin
16
- */
17
- export declare function definePlugin<T = void>(config: {
18
- name: string;
19
- phase: 'before' | 'after';
20
- transform: (options?: T) => (tree: Root, file: VFile) => void;
21
- }, options?: T): ParserPlugin;
22
- //# sourceMappingURL=processor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAQ,MAAM,OAAO,CAAA;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAY,MAAM,SAAS,CAAA;AA2B5E;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CAuDhE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,IAAI,EACnC,MAAM,EAAE;IACN,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAA;IACzB,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAA;CAC9D,EACD,OAAO,CAAC,EAAE,CAAC,GACV,YAAY,CAMd"}
@@ -1,55 +0,0 @@
1
- import type { Root } from 'mdast';
2
- import type { VFile } from 'vfile';
3
- /**
4
- * Parser plugin configuration
5
- */
6
- export interface ParserPlugin {
7
- /** Unique plugin name */
8
- name: string;
9
- /** When to run: before or after built-in transforms */
10
- phase: 'before' | 'after';
11
- /** Transform function */
12
- transform: (tree: Root, file: VFile) => void;
13
- }
14
- /**
15
- * Parser options
16
- */
17
- export interface ParserOptions {
18
- /** Custom plugins to add */
19
- plugins?: ParserPlugin[];
20
- /** Enable GFM syntax (default: true) */
21
- gfm?: boolean;
22
- /** Enable frontmatter parsing (default: true) */
23
- frontmatter?: boolean;
24
- }
25
- /**
26
- * Parser instance
27
- */
28
- export interface Parser {
29
- /** Parse markdown string to AST */
30
- parse(content: string): Root;
31
- }
32
- /**
33
- * Plugin definition helper config
34
- */
35
- export interface PluginConfig<T = unknown> {
36
- /** Plugin name */
37
- name: string;
38
- /** When to run */
39
- phase: 'before' | 'after';
40
- /** Transform function factory */
41
- transform: (options?: T) => (tree: Root, file: VFile) => void;
42
- }
43
- /**
44
- * Frontmatter data extracted from markdown
45
- */
46
- export interface FrontmatterData {
47
- [key: string]: unknown;
48
- }
49
- /**
50
- * Extended file data with frontmatter
51
- */
52
- export interface FileData {
53
- frontmatter?: FrontmatterData;
54
- }
55
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAElC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAA;IACzB,yBAAyB;IACzB,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAA;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB,wCAAwC;IACxC,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,mCAAmC;IACnC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB;IAClB,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAA;IACzB,iCAAiC;IACjC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAA;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B"}
@@ -1,36 +0,0 @@
1
- import type { Node } from 'unist';
2
- import type { MdNode, Parent } from '../types';
3
- /**
4
- * Find all nodes of a specific type in the AST
5
- *
6
- * @param node - Root node to search from
7
- * @param type - Node type to find
8
- * @returns Array of matching nodes
9
- */
10
- export declare function findNodes<T extends Node = MdNode>(node: Node, type: string): T[];
11
- /**
12
- * Find the first node of a specific type in the AST
13
- *
14
- * @param node - Root node to search from
15
- * @param type - Node type to find
16
- * @returns The first matching node or undefined
17
- */
18
- export declare function findNode<T extends Node = MdNode>(node: Node, type: string): T | undefined;
19
- /**
20
- * Find all nodes matching a predicate
21
- *
22
- * @param node - Root node to search from
23
- * @param predicate - Function to test each node
24
- * @returns Array of matching nodes
25
- */
26
- export declare function findNodesBy<T extends Node = MdNode>(node: Node, predicate: (node: Node) => boolean): T[];
27
- /**
28
- * Get the parent of a node in the AST
29
- * Note: This requires traversing from root, use sparingly
30
- *
31
- * @param root - Root node of the AST
32
- * @param target - Node to find parent of
33
- * @returns Parent node or undefined if not found or is root
34
- */
35
- export declare function findParent(root: Node, target: Node): Parent | undefined;
36
- //# sourceMappingURL=query.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/ast/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAG9C;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,EAC/C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,GACX,CAAC,EAAE,CAiBL;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,EAC9C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,GACX,CAAC,GAAG,SAAS,CAsBf;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,EACjD,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,GACjC,CAAC,EAAE,CAiBL;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAsBvE"}
@@ -1,22 +0,0 @@
1
- import type { Node } from 'unist';
2
- import type { MdNode, Visitor } from '../types';
3
- /**
4
- * Traverse AST in depth-first order
5
- *
6
- * @param node - Root node to start traversal
7
- * @param visitor - Visitor function called for each node
8
- * Return `false` to skip children of current node
9
- * Return `true` or `undefined` to continue
10
- */
11
- export declare function traverseAst<T extends Node = MdNode>(node: T, visitor: Visitor<T>): void;
12
- /**
13
- * Traverse AST with enter and leave callbacks
14
- *
15
- * @param node - Root node to start traversal
16
- * @param callbacks - Object with optional enter and leave functions
17
- */
18
- export declare function traverseAstWithCallbacks<T extends Node = MdNode>(node: T, callbacks: {
19
- enter?: Visitor<T>;
20
- leave?: Visitor<T>;
21
- }): void;
22
- //# sourceMappingURL=traverse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../src/ast/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,KAAK,EAAU,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAGvD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,EACjD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,IAAI,CAsBN;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,EAC9D,IAAI,EAAE,CAAC,EACP,SAAS,EAAE;IACT,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CACnB,GACA,IAAI,CAqBN"}