@openuji/speculator 0.5.3 → 0.5.4

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 (126) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/parse/__tests__/html-in-markdown.test.d.ts +2 -0
  6. package/dist/parse/__tests__/html-in-markdown.test.d.ts.map +1 -0
  7. package/dist/parse/__tests__/html-in-markdown.test.js +83 -0
  8. package/dist/parse/__tests__/html-in-markdown.test.js.map +1 -0
  9. package/dist/parse/__tests__/pipeline.test.js +1 -8
  10. package/dist/parse/__tests__/pipeline.test.js.map +1 -1
  11. package/dist/parse/__tests__/shorthands.test.d.ts +5 -0
  12. package/dist/parse/__tests__/shorthands.test.d.ts.map +1 -0
  13. package/dist/parse/__tests__/shorthands.test.js +96 -0
  14. package/dist/parse/__tests__/shorthands.test.js.map +1 -0
  15. package/dist/parse/assembler.d.ts.map +1 -1
  16. package/dist/parse/assembler.js +18 -0
  17. package/dist/parse/assembler.js.map +1 -1
  18. package/dist/parse/html/InlinesHtmlParser.d.ts.map +1 -1
  19. package/dist/parse/html/InlinesHtmlParser.js +11 -1
  20. package/dist/parse/html/InlinesHtmlParser.js.map +1 -1
  21. package/dist/parse/html/parser.d.ts +1 -12
  22. package/dist/parse/html/parser.d.ts.map +1 -1
  23. package/dist/parse/html/parser.js +15 -47
  24. package/dist/parse/html/parser.js.map +1 -1
  25. package/dist/parse/index.d.ts +1 -1
  26. package/dist/parse/index.d.ts.map +1 -1
  27. package/dist/parse/index.js.map +1 -1
  28. package/dist/parse/markdown/HtmlBlockMarkdownParser.d.ts +13 -0
  29. package/dist/parse/markdown/HtmlBlockMarkdownParser.d.ts.map +1 -0
  30. package/dist/parse/markdown/HtmlBlockMarkdownParser.js +61 -0
  31. package/dist/parse/markdown/HtmlBlockMarkdownParser.js.map +1 -0
  32. package/dist/parse/markdown/HtmlInlinesMarkdownParser.d.ts +12 -0
  33. package/dist/parse/markdown/HtmlInlinesMarkdownParser.d.ts.map +1 -0
  34. package/dist/parse/markdown/HtmlInlinesMarkdownParser.js +187 -0
  35. package/dist/parse/markdown/HtmlInlinesMarkdownParser.js.map +1 -0
  36. package/dist/parse/markdown/HtmlParagraphMarkdownParser.d.ts +15 -0
  37. package/dist/parse/markdown/HtmlParagraphMarkdownParser.d.ts.map +1 -0
  38. package/dist/parse/markdown/HtmlParagraphMarkdownParser.js +67 -0
  39. package/dist/parse/markdown/HtmlParagraphMarkdownParser.js.map +1 -0
  40. package/dist/parse/markdown/ShorthandsMarkdownParser.d.ts +29 -0
  41. package/dist/parse/markdown/ShorthandsMarkdownParser.d.ts.map +1 -0
  42. package/dist/parse/markdown/ShorthandsMarkdownParser.js +200 -0
  43. package/dist/parse/markdown/ShorthandsMarkdownParser.js.map +1 -0
  44. package/dist/parse/markdown/parser.d.ts +3 -14
  45. package/dist/parse/markdown/parser.d.ts.map +1 -1
  46. package/dist/parse/markdown/parser.js +72 -47
  47. package/dist/parse/markdown/parser.js.map +1 -1
  48. package/dist/parse/parsers.d.ts +3 -0
  49. package/dist/parse/parsers.d.ts.map +1 -1
  50. package/dist/parse/parsers.js +10 -0
  51. package/dist/parse/parsers.js.map +1 -1
  52. package/dist/parse/pipeline.d.ts.map +1 -1
  53. package/dist/parse/pipeline.js +8 -20
  54. package/dist/parse/pipeline.js.map +1 -1
  55. package/dist/parse/registry.d.ts +50 -91
  56. package/dist/parse/registry.d.ts.map +1 -1
  57. package/dist/parse/registry.js +39 -58
  58. package/dist/parse/registry.js.map +1 -1
  59. package/dist/parse/types.d.ts +1 -23
  60. package/dist/parse/types.d.ts.map +1 -1
  61. package/dist/parse/types.js.map +1 -1
  62. package/dist/parse/utils/hast-utils.d.ts +30 -0
  63. package/dist/parse/utils/hast-utils.d.ts.map +1 -0
  64. package/dist/parse/utils/hast-utils.js +94 -0
  65. package/dist/parse/utils/hast-utils.js.map +1 -0
  66. package/dist/pipeline/runner.d.ts.map +1 -1
  67. package/dist/pipeline/runner.js +16 -12
  68. package/dist/pipeline/runner.js.map +1 -1
  69. package/dist/postprocess/index.d.ts +1 -1
  70. package/dist/postprocess/index.d.ts.map +1 -1
  71. package/dist/postprocess/index.js +3 -3
  72. package/dist/postprocess/index.js.map +1 -1
  73. package/dist/postprocess/plugins/citation-resolve.d.ts +8 -0
  74. package/dist/postprocess/plugins/citation-resolve.d.ts.map +1 -0
  75. package/dist/postprocess/plugins/citation-resolve.js +33 -0
  76. package/dist/postprocess/plugins/citation-resolve.js.map +1 -0
  77. package/dist/preprocess/__tests__/pipeline.test.js +33 -45
  78. package/dist/preprocess/__tests__/pipeline.test.js.map +1 -1
  79. package/dist/preprocess/__tests__/resolver.test.js +38 -40
  80. package/dist/preprocess/__tests__/resolver.test.js.map +1 -1
  81. package/dist/preprocess/config/__tests__/rules.test.d.ts +2 -0
  82. package/dist/preprocess/config/__tests__/rules.test.d.ts.map +1 -0
  83. package/dist/preprocess/config/__tests__/rules.test.js +212 -0
  84. package/dist/preprocess/config/__tests__/rules.test.js.map +1 -0
  85. package/dist/preprocess/config/doc-config.js +1 -1
  86. package/dist/preprocess/config/doc-config.js.map +1 -1
  87. package/dist/preprocess/config/index.d.ts +3 -4
  88. package/dist/preprocess/config/index.d.ts.map +1 -1
  89. package/dist/preprocess/config/index.js +2 -2
  90. package/dist/preprocess/config/index.js.map +1 -1
  91. package/dist/preprocess/config/loader.d.ts +12 -48
  92. package/dist/preprocess/config/loader.d.ts.map +1 -1
  93. package/dist/preprocess/config/loader.js +23 -13
  94. package/dist/preprocess/config/loader.js.map +1 -1
  95. package/dist/preprocess/config/normalize.d.ts +11 -6
  96. package/dist/preprocess/config/normalize.d.ts.map +1 -1
  97. package/dist/preprocess/config/normalize.js +58 -8
  98. package/dist/preprocess/config/normalize.js.map +1 -1
  99. package/dist/preprocess/config/types.d.ts +57 -22
  100. package/dist/preprocess/config/types.d.ts.map +1 -1
  101. package/dist/preprocess/include/index.d.ts +1 -1
  102. package/dist/preprocess/include/index.d.ts.map +1 -1
  103. package/dist/preprocess/include/index.js +1 -1
  104. package/dist/preprocess/include/index.js.map +1 -1
  105. package/dist/preprocess/include/resolver.d.ts +14 -8
  106. package/dist/preprocess/include/resolver.d.ts.map +1 -1
  107. package/dist/preprocess/include/resolver.js +27 -18
  108. package/dist/preprocess/include/resolver.js.map +1 -1
  109. package/dist/preprocess/index.d.ts +6 -6
  110. package/dist/preprocess/index.d.ts.map +1 -1
  111. package/dist/preprocess/index.js +4 -4
  112. package/dist/preprocess/index.js.map +1 -1
  113. package/dist/preprocess/pipeline.d.ts +19 -16
  114. package/dist/preprocess/pipeline.d.ts.map +1 -1
  115. package/dist/preprocess/pipeline.js +43 -45
  116. package/dist/preprocess/pipeline.js.map +1 -1
  117. package/dist/preprocess/types.d.ts +21 -46
  118. package/dist/preprocess/types.d.ts.map +1 -1
  119. package/dist/preprocess/types.js +0 -6
  120. package/dist/preprocess/types.js.map +1 -1
  121. package/dist/types/ast.generated.d.ts +21 -2
  122. package/dist/types/ast.generated.d.ts.map +1 -1
  123. package/dist/types/ast.generated.js +1 -1
  124. package/dist/types/ast.generated.js.map +1 -1
  125. package/package.json +1 -1
  126. package/schema/spec-ast.schema.json +40 -0
@@ -7,6 +7,7 @@
7
7
  import { unified } from 'unified';
8
8
  import rehypeParse from 'rehype-parse';
9
9
  import { defaultRegistry, } from '#src/parse/registry';
10
+ import { getAttr, getTextContent } from '#src/parse/utils/hast-utils';
10
11
  /**
11
12
  * Create source position from hast node position
12
13
  */
@@ -31,32 +32,6 @@ function createSourcePos(unit, node) {
31
32
  }
32
33
  return result;
33
34
  }
34
- /**
35
- * Get element attribute value
36
- */
37
- function getAttr(element, name) {
38
- const val = element.properties?.[name];
39
- if (typeof val === 'string')
40
- return val;
41
- if (Array.isArray(val))
42
- return val.join(' ');
43
- return undefined;
44
- }
45
- /**
46
- * Get text content of element recursively
47
- */
48
- function getTextContent(element) {
49
- let text = '';
50
- for (const child of element.children) {
51
- if (child.type === 'text') {
52
- text += child.value;
53
- }
54
- else if (child.type === 'element') {
55
- text += getTextContent(child);
56
- }
57
- }
58
- return text;
59
- }
60
35
  /**
61
36
  * HTML unit parser implementation using handler registry
62
37
  */
@@ -71,46 +46,39 @@ export class HtmlUnitParser {
71
46
  * Parse HTML unit to AST blocks
72
47
  */
73
48
  parse(unit) {
74
- return this.parseWithDiagnostics(unit).blocks;
75
- }
76
- /**
77
- * Parse HTML unit to AST blocks with diagnostics
78
- */
79
- parseWithDiagnostics(unit) {
80
49
  const tree = this.processor.parse(unit.content);
81
- const diagnostics = [];
82
50
  // Create context for handlers
83
- const ctx = this.createContext(unit, diagnostics);
51
+ const ctx = this.createContext(unit);
84
52
  const results = [];
85
53
  for (const child of tree.children) {
86
54
  const blocks = this.transformBlock(child, ctx);
87
55
  results.push(...blocks);
88
56
  }
89
- return { blocks: results, diagnostics };
57
+ return results;
90
58
  }
91
59
  /**
92
60
  * Create parse context for handlers
93
61
  */
94
- createContext(unit, diagnostics) {
62
+ createContext(unit) {
95
63
  // eslint-disable-next-line @typescript-eslint/no-this-alias
96
64
  const self = this;
97
65
  return {
98
66
  unit,
99
67
  createSourcePos: (node) => createSourcePos(unit, node),
100
- transformInlineChildren: (children) => self.transformInlineChildren(children, unit, diagnostics),
68
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
+ transformInlineChildren: (children) => self.transformInlineChildren(children, unit),
70
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
101
71
  transformBlockChildren: (children) => {
102
72
  const results = [];
103
- const ctx = self.createContext(unit, diagnostics);
73
+ const ctx = self.createContext(unit);
104
74
  for (const child of children) {
105
75
  results.push(...self.transformBlock(child, ctx));
106
76
  }
107
77
  return results;
108
78
  },
109
- emitDiagnostic: (diagnostic) => {
110
- diagnostics.push({ ...diagnostic, file: unit.file });
111
- },
112
79
  getTextContent,
113
80
  getAttr,
81
+ registry: self.registry,
114
82
  };
115
83
  }
116
84
  /**
@@ -132,7 +100,7 @@ export class HtmlUnitParser {
132
100
  return [result];
133
101
  }
134
102
  // Fallback: try to handle as inline (e.g., <dfn> or <span> at top level)
135
- const inline = this.transformInline(element, ctx.unit, []); // Empty diagnostics, we'll re-collect if needed
103
+ const inline = this.transformInline(element, ctx.unit);
136
104
  if (inline) {
137
105
  const sourcePos = ctx.createSourcePos(element);
138
106
  const result = {
@@ -160,7 +128,7 @@ export class HtmlUnitParser {
160
128
  /**
161
129
  * Transform hast inline content to Speculator inline
162
130
  */
163
- transformInline(node, unit, diagnostics) {
131
+ transformInline(node, unit) {
164
132
  if (node.type === 'text') {
165
133
  const textNode = node;
166
134
  // Skip whitespace-only text
@@ -175,7 +143,7 @@ export class HtmlUnitParser {
175
143
  return null;
176
144
  const element = node;
177
145
  const tagName = element.tagName.toLowerCase();
178
- const ctx = this.createContext(unit, diagnostics);
146
+ const ctx = this.createContext(unit);
179
147
  // Look up handler in registry
180
148
  const handler = this.registry.getHtmlInlineHandler(tagName);
181
149
  if (handler?.handleInline) {
@@ -196,13 +164,13 @@ export class HtmlUnitParser {
196
164
  /**
197
165
  * Transform array of inline children
198
166
  */
199
- transformInlineChildren(children, unit, diagnostics) {
167
+ transformInlineChildren(children, unit) {
200
168
  const results = [];
201
169
  for (const child of children) {
202
170
  if (child.type === 'element') {
203
171
  const element = child;
204
172
  const tagName = element.tagName.toLowerCase();
205
- const ctx = this.createContext(unit, diagnostics);
173
+ const ctx = this.createContext(unit);
206
174
  const handler = this.registry.getHtmlInlineHandler(tagName);
207
175
  if (handler?.handleInline) {
208
176
  const result = handler.handleInline(element, ctx);
@@ -217,7 +185,7 @@ export class HtmlUnitParser {
217
185
  }
218
186
  }
219
187
  }
220
- const inline = this.transformInline(child, unit, diagnostics);
188
+ const inline = this.transformInline(child, unit);
221
189
  if (inline) {
222
190
  results.push(inline);
223
191
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/parse/html/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/parse/html/parser.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  export { parse, parseCompositeSource, parseWithRegistry, registerParser } from '#src/parse/pipeline';
8
8
  export { ParseHandlerRegistry, defaultRegistry, } from '#src/parse/registry';
9
9
  export type { HtmlParserModule, MarkdownParserModule, ParseContext, NodeWithPosition, HandlerResult, BlockHandlerResult, InlineHandlerResult, } from '#src/parse/registry';
10
- export type { UnitParser, ParsedSpec, ParseDiagnosticCode, DiagnosticSeverity, ParseDiagnostic, ParseResult, } from '#src/parse/types';
10
+ export type { UnitParser, ParsedSpec, ParseResult, } from '#src/parse/types';
11
11
  export { createSourcePos } from '#src/parse/types';
12
12
  export { buildSectionHierarchy, assembleDocument } from '#src/parse/assembler';
13
13
  export { MarkdownUnitParser } from '#src/parse/markdown/index';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parse/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrG,OAAO,EACH,oBAAoB,EACpB,eAAe,GAClB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACR,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACR,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,WAAW,GACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parse/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrG,OAAO,EACH,oBAAoB,EACpB,eAAe,GAClB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACR,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACR,UAAU,EACV,UAAU,EACV,WAAW,GACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parse/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sBAAsB;AACtB,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErG,6DAA6D;AAC7D,OAAO,EACH,oBAAoB,EACpB,eAAe,GAClB,MAAM,qBAAqB,CAAC;AAsB7B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,6BAA6B;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parse/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sBAAsB;AACtB,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErG,6DAA6D;AAC7D,OAAO,EACH,oBAAoB,EACpB,eAAe,GAClB,MAAM,qBAAqB,CAAC;AAmB7B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,6BAA6B;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * HTML Block Markdown Parser
3
+ *
4
+ * Handles standalone block-level HTML nodes in mdast (e.g., <aside>, <figure>).
5
+ */
6
+ import { type MarkdownParserModule } from '#src/parse/registry';
7
+ /**
8
+ * Markdown parser module for block-level HTML nodes.
9
+ *
10
+ * Handles standalone HTML blocks like `<aside>...</aside>` or `<figure>`.
11
+ */
12
+ export declare const HtmlBlockMarkdownParser: MarkdownParserModule;
13
+ //# sourceMappingURL=HtmlBlockMarkdownParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlBlockMarkdownParser.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/HtmlBlockMarkdownParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,KAAK,oBAAoB,EAAwE,MAAM,qBAAqB,CAAC;AAGtI;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,oBAsDrC,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * HTML Block Markdown Parser
3
+ *
4
+ * Handles standalone block-level HTML nodes in mdast (e.g., <aside>, <figure>).
5
+ */
6
+ import { unified } from 'unified';
7
+ import rehypeParse from 'rehype-parse';
8
+ import { createHastContext } from '#src/parse/utils/hast-utils';
9
+ /**
10
+ * Markdown parser module for block-level HTML nodes.
11
+ *
12
+ * Handles standalone HTML blocks like `<aside>...</aside>` or `<figure>`.
13
+ */
14
+ export const HtmlBlockMarkdownParser = {
15
+ name: 'HtmlBlockMarkdownParser',
16
+ handles: ['html'],
17
+ order: 4, // Higher priority than fallback parsers
18
+ handleInline(_node, _ctx) {
19
+ return null;
20
+ },
21
+ handleBlock(node, ctx) {
22
+ if (node.type !== 'html')
23
+ return null;
24
+ const htmlNode = node;
25
+ const html = htmlNode.value;
26
+ // Parse HTML to get proper element structure
27
+ const processor = unified().use(rehypeParse, { fragment: true });
28
+ const tree = processor.parse(html);
29
+ if (tree.children.length === 0)
30
+ return null;
31
+ const hastCtx = createHastContext(ctx);
32
+ // Look for the first top-level element
33
+ const firstElement = tree.children.find((c) => c.type === 'element');
34
+ if (!firstElement) {
35
+ // No element found - wrap text content in paragraph
36
+ const children = hastCtx.transformInlineChildren(tree.children);
37
+ return {
38
+ type: 'paragraph',
39
+ children,
40
+ sourcePos: ctx.createSourcePos(node),
41
+ };
42
+ }
43
+ // Look up block handler for this element
44
+ const tagName = firstElement.tagName.toLowerCase();
45
+ const handler = ctx.registry.getHtmlBlockHandler(tagName);
46
+ if (handler?.handleBlock) {
47
+ const result = handler.handleBlock(firstElement, hastCtx);
48
+ if (Array.isArray(result))
49
+ return result[0] || null;
50
+ return result;
51
+ }
52
+ // Fallback: wrap as inlines in paragraph
53
+ const children = hastCtx.transformInlineChildren(tree.children);
54
+ return {
55
+ type: 'paragraph',
56
+ children,
57
+ sourcePos: ctx.createSourcePos(node),
58
+ };
59
+ }
60
+ };
61
+ //# sourceMappingURL=HtmlBlockMarkdownParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlBlockMarkdownParser.js","sourceRoot":"","sources":["../../../src/parse/markdown/HtmlBlockMarkdownParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,WAAW,MAAM,cAAc,CAAC;AAIvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAyB;IACzD,IAAI,EAAE,yBAAyB;IAC/B,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,EAAE,wCAAwC;IAElD,YAAY,CAAC,KAAuB,EAAE,IAAkB;QACpD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,IAAsB,EAAE,GAAiB;QACjD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAEtC,MAAM,QAAQ,GAAG,IAAY,CAAC;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;QAE5B,6CAA6C;QAC7C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAS,CAAC;QAE3C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE5C,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEvC,uCAAuC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAEnF,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,oDAAoD;YACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAyB,CAAC,CAAC;YACjF,OAAO;gBACH,IAAI,EAAE,WAAW;gBACjB,QAAQ;gBACR,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;aACvC,CAAC;QACN,CAAC;QAED,yCAAyC;QACzC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE1D,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YACpD,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,yCAAyC;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAyB,CAAC,CAAC;QACjF,OAAO;YACH,IAAI,EAAE,WAAW;YACjB,QAAQ;YACR,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;SACvC,CAAC;IACN,CAAC;CACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * HTML Inlines Markdown Parser
3
+ *
4
+ * Handles inline HTML nodes in mdast by grouping them within paragraphs
5
+ * and parsing with rehype to support multi-node tags like <dfn>...</dfn>.
6
+ */
7
+ import { type MarkdownParserModule } from '#src/parse/registry';
8
+ /**
9
+ * Markdown parser module for HTML nodes.
10
+ */
11
+ export declare const HtmlInlinesMarkdownParser: MarkdownParserModule;
12
+ //# sourceMappingURL=HtmlInlinesMarkdownParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlInlinesMarkdownParser.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/HtmlInlinesMarkdownParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,KAAK,oBAAoB,EAAwE,MAAM,qBAAqB,CAAC;AAsFtI;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,oBAmGvC,CAAC"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * HTML Inlines Markdown Parser
3
+ *
4
+ * Handles inline HTML nodes in mdast by grouping them within paragraphs
5
+ * and parsing with rehype to support multi-node tags like <dfn>...</dfn>.
6
+ */
7
+ import { unified } from 'unified';
8
+ import rehypeParse from 'rehype-parse';
9
+ /**
10
+ * Get element attribute value (mirrors logic from html/parser.ts)
11
+ */
12
+ function getAttr(element, name) {
13
+ const val = element.properties?.[name];
14
+ if (typeof val === 'string')
15
+ return val;
16
+ if (Array.isArray(val))
17
+ return val.join(' ');
18
+ if (typeof val === 'number')
19
+ return String(val);
20
+ if (typeof val === 'boolean' && val)
21
+ return name;
22
+ return undefined;
23
+ }
24
+ /**
25
+ * Get text content of element recursively (mirrors logic from html/parser.ts)
26
+ */
27
+ function getTextContent(element) {
28
+ let text = '';
29
+ for (const child of element.children) {
30
+ if (child.type === 'text') {
31
+ text += child.value;
32
+ }
33
+ else if (child.type === 'element') {
34
+ text += getTextContent(child);
35
+ }
36
+ }
37
+ return text;
38
+ }
39
+ /**
40
+ * Transform a hast node to Speculator inline(s) using HTML handlers
41
+ */
42
+ function transformHastInline(node, ctx) {
43
+ if (node.type === 'text') {
44
+ const textValue = node.value;
45
+ // Delegate back to Markdown's transformInlineChildren to handle shorthands (|var|)
46
+ const res = ctx.transformInlineChildren([{ type: 'text', value: textValue }]);
47
+ return res.length === 0 ? null : res;
48
+ }
49
+ if (node.type !== 'element')
50
+ return null;
51
+ const element = node;
52
+ const tagName = element.tagName.toLowerCase();
53
+ // Look up handler in the registry provided in the context
54
+ const handler = ctx.registry.getHtmlInlineHandler(tagName);
55
+ if (handler?.handleInline) {
56
+ return handler.handleInline(element, ctx);
57
+ }
58
+ // Fallback: recurse into children if no handler for this tag
59
+ return ctx.transformInlineChildren(element.children);
60
+ }
61
+ /**
62
+ * Create a hast-aware ParseContext from a base (markdown) context
63
+ */
64
+ function createHastContext(ctx) {
65
+ const originalTransform = ctx.transformInlineChildren;
66
+ const hastCtx = {
67
+ ...ctx,
68
+ transformInlineChildren: (children) => {
69
+ const results = [];
70
+ for (const child of children) {
71
+ if (child.type === 'element') {
72
+ const res = transformHastInline(child, hastCtx);
73
+ if (res) {
74
+ if (Array.isArray(res))
75
+ results.push(...res);
76
+ else
77
+ results.push(res);
78
+ }
79
+ }
80
+ else {
81
+ // Delegate anything else (text, mdast nodes) to the original transformer
82
+ results.push(...originalTransform([child]));
83
+ }
84
+ }
85
+ return results;
86
+ },
87
+ getTextContent,
88
+ getAttr,
89
+ };
90
+ return hastCtx;
91
+ }
92
+ /**
93
+ * Markdown parser module for HTML nodes.
94
+ */
95
+ export const HtmlInlinesMarkdownParser = {
96
+ name: 'HtmlInlinesMarkdownParser',
97
+ handles: ['html', 'paragraph'],
98
+ order: 4, // Higher priority than standard ParagraphsMarkdownParser (10)
99
+ handleInline(_node, _ctx) {
100
+ // Individual inline HTML nodes are now handled via the paragraph grouper.
101
+ return null;
102
+ },
103
+ handleBlock(node, ctx) {
104
+ // 1. Handle Paragraph Grouping
105
+ if (node.type === 'paragraph') {
106
+ const paraNode = node;
107
+ // Only take over if it contains HTML
108
+ if (paraNode.children.some(c => c.type === 'html')) {
109
+ let rawHtml = '';
110
+ for (const child of paraNode.children) {
111
+ if (child.type === 'text') {
112
+ rawHtml += child.value;
113
+ }
114
+ else if (child.type === 'html') {
115
+ rawHtml += child.value;
116
+ }
117
+ else {
118
+ // For other nodes (if any already processed), we'd need serialization.
119
+ // Since we are order 4, it's mostly text/html.
120
+ }
121
+ }
122
+ const processor = unified().use(rehypeParse, { fragment: true });
123
+ const tree = processor.parse(rawHtml);
124
+ const hastCtx = createHastContext(ctx);
125
+ const children = [];
126
+ for (const child of tree.children) {
127
+ const res = transformHastInline(child, hastCtx);
128
+ if (res) {
129
+ if (Array.isArray(res))
130
+ children.push(...res);
131
+ else
132
+ children.push(res);
133
+ }
134
+ }
135
+ const result = {
136
+ type: 'paragraph',
137
+ children,
138
+ };
139
+ const sourcePos = ctx.createSourcePos(node);
140
+ if (sourcePos)
141
+ result.sourcePos = sourcePos;
142
+ return result;
143
+ }
144
+ return null;
145
+ }
146
+ // 2. Handle Block-level HTML
147
+ if (node.type === 'html') {
148
+ const htmlNode = node;
149
+ const html = htmlNode.value;
150
+ const processor = unified().use(rehypeParse, { fragment: true });
151
+ const tree = processor.parse(html);
152
+ if (tree.children.length === 0)
153
+ return null;
154
+ const hastCtx = createHastContext(ctx);
155
+ // For blocks, we look at the first top-level element
156
+ const firstElement = tree.children.find((c) => c.type === 'element');
157
+ if (!firstElement) {
158
+ // Wrap in paragraph
159
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
160
+ const children = hastCtx.transformInlineChildren(tree.children);
161
+ return {
162
+ type: 'paragraph',
163
+ children,
164
+ sourcePos: ctx.createSourcePos(node),
165
+ };
166
+ }
167
+ const tagName = firstElement.tagName.toLowerCase();
168
+ const handler = ctx.registry.getHtmlBlockHandler(tagName);
169
+ if (handler?.handleBlock) {
170
+ const result = handler.handleBlock(firstElement, hastCtx);
171
+ if (Array.isArray(result))
172
+ return result[0] || null;
173
+ return result;
174
+ }
175
+ // Fallback: handle as inlines wrapped in paragraph
176
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
177
+ const children = hastCtx.transformInlineChildren(tree.children);
178
+ return {
179
+ type: 'paragraph',
180
+ children,
181
+ sourcePos: ctx.createSourcePos(node),
182
+ };
183
+ }
184
+ return null;
185
+ }
186
+ };
187
+ //# sourceMappingURL=HtmlInlinesMarkdownParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlInlinesMarkdownParser.js","sourceRoot":"","sources":["../../../src/parse/markdown/HtmlInlinesMarkdownParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * HTML Paragraph Markdown Parser
3
+ *
4
+ * Handles paragraphs containing inline HTML nodes in mdast by re-parsing
5
+ * with rehype to support multi-node tags like <dfn>...</dfn>.
6
+ */
7
+ import { type MarkdownParserModule } from '#src/parse/registry';
8
+ /**
9
+ * Markdown parser module for paragraphs containing HTML nodes.
10
+ *
11
+ * When a paragraph contains inline HTML (e.g., `<dfn>term</dfn>`),
12
+ * this parser takes over to properly reconstruct the HTML elements.
13
+ */
14
+ export declare const HtmlParagraphMarkdownParser: MarkdownParserModule;
15
+ //# sourceMappingURL=HtmlParagraphMarkdownParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlParagraphMarkdownParser.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/HtmlParagraphMarkdownParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,KAAK,oBAAoB,EAAwE,MAAM,qBAAqB,CAAC;AAItI;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,oBAqDzC,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * HTML Paragraph Markdown Parser
3
+ *
4
+ * Handles paragraphs containing inline HTML nodes in mdast by re-parsing
5
+ * with rehype to support multi-node tags like <dfn>...</dfn>.
6
+ */
7
+ import { unified } from 'unified';
8
+ import rehypeParse from 'rehype-parse';
9
+ import { createHastContext, transformHastInline } from '#src/parse/utils/hast-utils';
10
+ /**
11
+ * Markdown parser module for paragraphs containing HTML nodes.
12
+ *
13
+ * When a paragraph contains inline HTML (e.g., `<dfn>term</dfn>`),
14
+ * this parser takes over to properly reconstruct the HTML elements.
15
+ */
16
+ export const HtmlParagraphMarkdownParser = {
17
+ name: 'HtmlParagraphMarkdownParser',
18
+ handles: ['paragraph'],
19
+ order: 4, // Higher priority than standard ParagraphsMarkdownParser (10)
20
+ handleInline(_node, _ctx) {
21
+ return null;
22
+ },
23
+ handleBlock(node, ctx) {
24
+ if (node.type !== 'paragraph')
25
+ return null;
26
+ const paraNode = node;
27
+ // Only take over if paragraph contains HTML nodes
28
+ if (!paraNode.children.some(c => c.type === 'html')) {
29
+ return null;
30
+ }
31
+ // Concatenate all text and html into raw HTML string
32
+ let rawHtml = '';
33
+ for (const child of paraNode.children) {
34
+ if (child.type === 'text') {
35
+ rawHtml += child.value;
36
+ }
37
+ else if (child.type === 'html') {
38
+ rawHtml += child.value;
39
+ }
40
+ // Other node types (if any) are skipped since we're order 4
41
+ }
42
+ // Re-parse as HTML to get proper element structure
43
+ const processor = unified().use(rehypeParse, { fragment: true });
44
+ const tree = processor.parse(rawHtml);
45
+ const hastCtx = createHastContext(ctx);
46
+ // Transform hast children to Speculator inlines
47
+ const children = [];
48
+ for (const child of tree.children) {
49
+ const res = transformHastInline(child, hastCtx);
50
+ if (res) {
51
+ if (Array.isArray(res))
52
+ children.push(...res);
53
+ else
54
+ children.push(res);
55
+ }
56
+ }
57
+ const result = {
58
+ type: 'paragraph',
59
+ children,
60
+ };
61
+ const sourcePos = ctx.createSourcePos(node);
62
+ if (sourcePos)
63
+ result.sourcePos = sourcePos;
64
+ return result;
65
+ }
66
+ };
67
+ //# sourceMappingURL=HtmlParagraphMarkdownParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlParagraphMarkdownParser.js","sourceRoot":"","sources":["../../../src/parse/markdown/HtmlParagraphMarkdownParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,WAAW,MAAM,cAAc,CAAC;AAKvC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAErF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAyB;IAC7D,IAAI,EAAE,6BAA6B;IACnC,OAAO,EAAE,CAAC,WAAW,CAAC;IACtB,KAAK,EAAE,CAAC,EAAE,8DAA8D;IAExE,YAAY,CAAC,KAAuB,EAAE,IAAkB;QACpD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,IAAsB,EAAE,GAAiB;QACjD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAE3C,MAAM,QAAQ,GAAG,IAAiB,CAAC;QAEnC,kDAAkD;QAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,qDAAqD;QACrD,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,OAAO,IAAK,KAAc,CAAC,KAAK,CAAC;YACrC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC/B,OAAO,IAAK,KAAc,CAAC,KAAK,CAAC;YACrC,CAAC;YACD,4DAA4D;QAChE,CAAC;QAED,mDAAmD;QACnD,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAS,CAAC;QAC9C,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEvC,gDAAgD;QAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAoB,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,GAAG,EAAE,CAAC;gBACN,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;;oBACzC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAmB;YAC3B,IAAI,EAAE,WAAW;YACjB,QAAQ;SACX,CAAC;QACF,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5C,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Shorthands Markdown Parser
3
+ *
4
+ * Detects ReSpec-like shorthands in text nodes and transforms them to Speculator AST nodes.
5
+ */
6
+ import type { MarkdownParserModule, ParseContext, NodeWithPosition } from '#src/parse/registry';
7
+ import type { Inline } from '#src/types/ast.generated';
8
+ /**
9
+ * Definition of a shorthand and its implementation status
10
+ */
11
+ export interface ShorthandDefinition {
12
+ name: string;
13
+ syntax: string;
14
+ description: string;
15
+ pattern: RegExp;
16
+ status: 'implemented' | 'planned' | 'not-planned';
17
+ handler: (match: RegExpExecArray, ctx: ParseContext, node: NodeWithPosition) => Inline;
18
+ }
19
+ /**
20
+ * Registry of supported shorthands.
21
+ * This satisfies the requirement to track what shorthands are implemented.
22
+ */
23
+ export declare const SHORTHAND_REGISTRY: ShorthandDefinition[];
24
+ /**
25
+ * Markdown parser module for shorthands.
26
+ * Priority-based: it handles 'text' nodes and splits them into fragments.
27
+ */
28
+ export declare const ShorthandsMarkdownParser: MarkdownParserModule;
29
+ //# sourceMappingURL=ShorthandsMarkdownParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShorthandsMarkdownParser.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/ShorthandsMarkdownParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAuB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,KAAK,EAAE,MAAM,EAA+C,MAAM,0BAA0B,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,aAAa,CAAC;IAClD,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,KAAK,MAAM,CAAC;CAC1F;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAkHnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,oBAqEtC,CAAC"}