@openuji/speculator 0.7.3 → 0.7.5
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 +1 -1
- package/dist/parse/html/SpecStatementHtmlParser.d.ts +4 -1
- package/dist/parse/html/SpecStatementHtmlParser.d.ts.map +1 -1
- package/dist/parse/html/SpecStatementHtmlParser.js +45 -26
- package/dist/parse/html/SpecStatementHtmlParser.js.map +1 -1
- package/dist/parse/html/VocabHtmlParser.d.ts +12 -0
- package/dist/parse/html/VocabHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/VocabHtmlParser.js +1156 -0
- package/dist/parse/html/VocabHtmlParser.js.map +1 -0
- package/dist/parse/html/parser.d.ts.map +1 -1
- package/dist/parse/html/parser.js +42 -29
- package/dist/parse/html/parser.js.map +1 -1
- package/dist/parse/index.d.ts +1 -0
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js +2 -0
- package/dist/parse/index.js.map +1 -1
- package/dist/parse/markdown/HeadingsMarkdownParser.d.ts.map +1 -1
- package/dist/parse/markdown/HeadingsMarkdownParser.js +5 -31
- package/dist/parse/markdown/HeadingsMarkdownParser.js.map +1 -1
- package/dist/parse/markdown/HtmlBlockMarkdownParser.d.ts.map +1 -1
- package/dist/parse/markdown/HtmlBlockMarkdownParser.js +2 -1
- package/dist/parse/markdown/HtmlBlockMarkdownParser.js.map +1 -1
- package/dist/parse/markdown/MdxJsxMarkdownParser.d.ts +8 -0
- package/dist/parse/markdown/MdxJsxMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/MdxJsxMarkdownParser.js +61 -0
- package/dist/parse/markdown/MdxJsxMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/MdxMarkdownParser.d.ts +13 -0
- package/dist/parse/markdown/MdxMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/MdxMarkdownParser.js +310 -0
- package/dist/parse/markdown/MdxMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/parser.d.ts.map +1 -1
- package/dist/parse/markdown/parser.js +59 -13
- package/dist/parse/markdown/parser.js.map +1 -1
- package/dist/parse/markdown/plugins.d.ts +26 -0
- package/dist/parse/markdown/plugins.d.ts.map +1 -0
- package/dist/parse/markdown/plugins.js +83 -0
- package/dist/parse/markdown/plugins.js.map +1 -0
- package/dist/parse/markdown/remark-mdx-jsx-only.d.ts +10 -0
- package/dist/parse/markdown/remark-mdx-jsx-only.d.ts.map +1 -0
- package/dist/parse/markdown/remark-mdx-jsx-only.js +26 -0
- package/dist/parse/markdown/remark-mdx-jsx-only.js.map +1 -0
- package/dist/parse/parsers.d.ts +2 -2
- package/dist/parse/parsers.d.ts.map +1 -1
- package/dist/parse/parsers.js +6 -6
- package/dist/parse/parsers.js.map +1 -1
- package/dist/parse/pipeline.d.ts.map +1 -1
- package/dist/parse/pipeline.js +8 -2
- package/dist/parse/pipeline.js.map +1 -1
- package/dist/parse/utils/hast-utils.d.ts.map +1 -1
- package/dist/parse/utils/hast-utils.js +127 -19
- package/dist/parse/utils/hast-utils.js.map +1 -1
- package/dist/parse/utils/html-element-utils.d.ts +9 -0
- package/dist/parse/utils/html-element-utils.d.ts.map +1 -0
- package/dist/parse/utils/html-element-utils.js +88 -0
- package/dist/parse/utils/html-element-utils.js.map +1 -0
- package/dist/parse/utils/markdown-utils.d.ts +24 -0
- package/dist/parse/utils/markdown-utils.d.ts.map +1 -1
- package/dist/parse/utils/markdown-utils.js +106 -0
- package/dist/parse/utils/markdown-utils.js.map +1 -1
- package/dist/parse/utils/normative.js +3 -3
- package/dist/parse/utils/normative.js.map +1 -1
- package/dist/postprocess/index.d.ts +1 -0
- package/dist/postprocess/index.d.ts.map +1 -1
- package/dist/postprocess/index.js +3 -0
- package/dist/postprocess/index.js.map +1 -1
- package/dist/postprocess/plugins/statement-distribute.d.ts +13 -0
- package/dist/postprocess/plugins/statement-distribute.d.ts.map +1 -0
- package/dist/postprocess/plugins/statement-distribute.js +150 -0
- package/dist/postprocess/plugins/statement-distribute.js.map +1 -0
- package/dist/postprocess/plugins/statement-index.d.ts.map +1 -1
- package/dist/postprocess/plugins/statement-index.js +20 -17
- package/dist/postprocess/plugins/statement-index.js.map +1 -1
- package/dist/postprocess/plugins/statementsJsonLd-compute.d.ts.map +1 -1
- package/dist/postprocess/plugins/statementsJsonLd-compute.js +1 -0
- package/dist/postprocess/plugins/statementsJsonLd-compute.js.map +1 -1
- package/dist/postprocess/walk-ast.d.ts +7 -15
- package/dist/postprocess/walk-ast.d.ts.map +1 -1
- package/dist/postprocess/walk-ast.js +49 -57
- package/dist/postprocess/walk-ast.js.map +1 -1
- package/dist/preprocess/include/resolver.d.ts.map +1 -1
- package/dist/preprocess/include/resolver.js +53 -3
- package/dist/preprocess/include/resolver.js.map +1 -1
- package/dist/preprocess/types.d.ts +8 -0
- package/dist/preprocess/types.d.ts.map +1 -1
- package/dist/types/ast.generated.d.ts +65 -5
- package/dist/types/ast.generated.d.ts.map +1 -1
- package/dist/types/ast.generated.js +4 -4
- package/dist/types/ast.generated.js.map +1 -1
- package/package.json +10 -1
- package/schema/spec-ast.schema.json +193 -4
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MDX Markdown Parser
|
|
3
|
+
*
|
|
4
|
+
* Handles mdast MDX JSX nodes and delegates by tag name to HTML handlers.
|
|
5
|
+
* This lets tags like <dfn>, <a>, <aside>, <spec-statement>, etc. share
|
|
6
|
+
* the same parsing logic across HTML and Markdown inputs.
|
|
7
|
+
*/
|
|
8
|
+
import { isHtmlBlockTag } from '#src/parse/utils/markdown-utils';
|
|
9
|
+
import { createBlockHtmlElement, createInlineHtmlElement } from '#src/parse/utils/html-element-utils';
|
|
10
|
+
function isMdxJsxNode(node) {
|
|
11
|
+
return node?.type === 'mdxJsxFlowElement' || node?.type === 'mdxJsxTextElement';
|
|
12
|
+
}
|
|
13
|
+
function isMdxTextExpression(node) {
|
|
14
|
+
return node?.type === 'mdxTextExpression';
|
|
15
|
+
}
|
|
16
|
+
function toCamelCase(name) {
|
|
17
|
+
return name.replace(/-([a-z0-9])/g, (_, char) => char.toUpperCase());
|
|
18
|
+
}
|
|
19
|
+
function toKebabCase(name) {
|
|
20
|
+
return name.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
function normalizeAttrValue(attrValue) {
|
|
23
|
+
if (attrValue === null || attrValue === undefined)
|
|
24
|
+
return true;
|
|
25
|
+
if (typeof attrValue === 'string' || typeof attrValue === 'number' || typeof attrValue === 'boolean') {
|
|
26
|
+
return attrValue;
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
function setAttrAliases(properties, name, value) {
|
|
31
|
+
properties[name] = value;
|
|
32
|
+
const camelName = toCamelCase(name);
|
|
33
|
+
if (camelName !== name)
|
|
34
|
+
properties[camelName] = value;
|
|
35
|
+
const kebabName = toKebabCase(name);
|
|
36
|
+
if (kebabName !== name)
|
|
37
|
+
properties[kebabName] = value;
|
|
38
|
+
if (name === 'class')
|
|
39
|
+
properties.className = value;
|
|
40
|
+
if (name === 'className')
|
|
41
|
+
properties.class = value;
|
|
42
|
+
}
|
|
43
|
+
function toMdxProperties(node) {
|
|
44
|
+
const properties = {};
|
|
45
|
+
for (const attr of node.attributes ?? []) {
|
|
46
|
+
if (!attr || attr.type === 'mdxJsxExpressionAttribute')
|
|
47
|
+
continue;
|
|
48
|
+
if (typeof attr.name !== 'string' || attr.name.length === 0)
|
|
49
|
+
continue;
|
|
50
|
+
const attrValue = normalizeAttrValue(attr.value);
|
|
51
|
+
if (attrValue === undefined)
|
|
52
|
+
continue;
|
|
53
|
+
setAttrAliases(properties, attr.name, attrValue);
|
|
54
|
+
}
|
|
55
|
+
return properties;
|
|
56
|
+
}
|
|
57
|
+
function toMdxVirtualElement(node, mode) {
|
|
58
|
+
const mdxChildren = node.children ?? [];
|
|
59
|
+
const childrenForMode = mode === 'block' && node.type === 'mdxJsxTextElement'
|
|
60
|
+
? [{
|
|
61
|
+
type: 'paragraph',
|
|
62
|
+
children: mdxChildren,
|
|
63
|
+
position: node.position,
|
|
64
|
+
}]
|
|
65
|
+
: mdxChildren;
|
|
66
|
+
return {
|
|
67
|
+
type: 'element',
|
|
68
|
+
tagName: node.name ?? '',
|
|
69
|
+
properties: toMdxProperties(node),
|
|
70
|
+
children: childrenForMode,
|
|
71
|
+
position: node.position,
|
|
72
|
+
__mdxSource: node,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function isMdxVirtualElement(element) {
|
|
76
|
+
return '__mdxSource' in element;
|
|
77
|
+
}
|
|
78
|
+
function attrValueToString(value, attrName) {
|
|
79
|
+
if (typeof value === 'string')
|
|
80
|
+
return value;
|
|
81
|
+
if (typeof value === 'number')
|
|
82
|
+
return String(value);
|
|
83
|
+
if (Array.isArray(value))
|
|
84
|
+
return value.map((part) => String(part)).join(' ');
|
|
85
|
+
if (typeof value === 'boolean' && value)
|
|
86
|
+
return attrName;
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
function getMdxAttr(element, name) {
|
|
90
|
+
const properties = element.properties;
|
|
91
|
+
if (!properties)
|
|
92
|
+
return undefined;
|
|
93
|
+
const candidates = [name, toCamelCase(name), toKebabCase(name)];
|
|
94
|
+
for (const candidate of candidates) {
|
|
95
|
+
const normalized = attrValueToString(properties[candidate], name);
|
|
96
|
+
if (normalized !== undefined)
|
|
97
|
+
return normalized;
|
|
98
|
+
}
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
function collectMdxText(node) {
|
|
102
|
+
if (Array.isArray(node)) {
|
|
103
|
+
return node.map(collectMdxText).join('');
|
|
104
|
+
}
|
|
105
|
+
if (!node || typeof node !== 'object')
|
|
106
|
+
return '';
|
|
107
|
+
const candidate = node;
|
|
108
|
+
if ((candidate.type === 'text' || candidate.type === 'inlineCode' || candidate.type === 'code')
|
|
109
|
+
&& typeof candidate.value === 'string') {
|
|
110
|
+
return candidate.value;
|
|
111
|
+
}
|
|
112
|
+
if (Array.isArray(candidate.children)) {
|
|
113
|
+
return candidate.children.map(collectMdxText).join('');
|
|
114
|
+
}
|
|
115
|
+
return '';
|
|
116
|
+
}
|
|
117
|
+
function createMdxContext(ctx) {
|
|
118
|
+
return {
|
|
119
|
+
...ctx,
|
|
120
|
+
getAttr: (element, name) => {
|
|
121
|
+
if (isMdxVirtualElement(element)) {
|
|
122
|
+
const value = getMdxAttr(element, name);
|
|
123
|
+
if (value !== undefined)
|
|
124
|
+
return value;
|
|
125
|
+
}
|
|
126
|
+
return ctx.getAttr(element, name);
|
|
127
|
+
},
|
|
128
|
+
getTextContent: (element) => {
|
|
129
|
+
if (isMdxVirtualElement(element)) {
|
|
130
|
+
return collectMdxText(element.children);
|
|
131
|
+
}
|
|
132
|
+
return ctx.getTextContent(element);
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function inlineResultToParagraph(result, sourcePos) {
|
|
137
|
+
if (result === null)
|
|
138
|
+
return null;
|
|
139
|
+
const inlines = Array.isArray(result) ? result : [result];
|
|
140
|
+
if (inlines.length === 0)
|
|
141
|
+
return null;
|
|
142
|
+
const paragraph = {
|
|
143
|
+
type: 'paragraph',
|
|
144
|
+
children: inlines,
|
|
145
|
+
};
|
|
146
|
+
if (sourcePos)
|
|
147
|
+
paragraph.sourcePos = sourcePos;
|
|
148
|
+
return paragraph;
|
|
149
|
+
}
|
|
150
|
+
function appendBlockResult(target, result) {
|
|
151
|
+
if (result === null)
|
|
152
|
+
return;
|
|
153
|
+
if (Array.isArray(result)) {
|
|
154
|
+
target.push(...result);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
target.push(result);
|
|
158
|
+
}
|
|
159
|
+
function isBlockLikeMdxTag(node, ctx) {
|
|
160
|
+
const tagName = (node.name ?? '').toLowerCase();
|
|
161
|
+
if (!tagName)
|
|
162
|
+
return false;
|
|
163
|
+
if (ctx.registry.getHtmlBlockHandler(tagName)?.handleBlock)
|
|
164
|
+
return true;
|
|
165
|
+
if (isHtmlBlockTag(tagName))
|
|
166
|
+
return true;
|
|
167
|
+
if (tagName.includes('-'))
|
|
168
|
+
return true;
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
function fallbackBlockFromChildren(node, ctx) {
|
|
172
|
+
if (node.name) {
|
|
173
|
+
const virtualElement = toMdxVirtualElement(node, 'block');
|
|
174
|
+
let children = ctx.transformBlockChildren(node.children ?? []);
|
|
175
|
+
if (children.length === 0) {
|
|
176
|
+
const inlines = ctx.transformInlineChildren(node.children ?? []);
|
|
177
|
+
if (inlines.length > 0) {
|
|
178
|
+
const paragraph = {
|
|
179
|
+
type: 'paragraph',
|
|
180
|
+
children: inlines,
|
|
181
|
+
};
|
|
182
|
+
const sourcePos = ctx.createSourcePos(node);
|
|
183
|
+
if (sourcePos)
|
|
184
|
+
paragraph.sourcePos = sourcePos;
|
|
185
|
+
children = [paragraph];
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return createBlockHtmlElement(virtualElement, ctx, children);
|
|
189
|
+
}
|
|
190
|
+
const blocks = ctx.transformBlockChildren(node.children ?? []);
|
|
191
|
+
if (blocks.length > 0)
|
|
192
|
+
return blocks;
|
|
193
|
+
const inlines = ctx.transformInlineChildren(node.children ?? []);
|
|
194
|
+
if (inlines.length === 0)
|
|
195
|
+
return null;
|
|
196
|
+
const paragraph = {
|
|
197
|
+
type: 'paragraph',
|
|
198
|
+
children: inlines,
|
|
199
|
+
};
|
|
200
|
+
const sourcePos = ctx.createSourcePos(node);
|
|
201
|
+
if (sourcePos)
|
|
202
|
+
paragraph.sourcePos = sourcePos;
|
|
203
|
+
return paragraph;
|
|
204
|
+
}
|
|
205
|
+
function fallbackInlineFromChildren(node, ctx) {
|
|
206
|
+
if (node.name) {
|
|
207
|
+
const virtualElement = toMdxVirtualElement(node, 'inline');
|
|
208
|
+
return createInlineHtmlElement(virtualElement, ctx, ctx.transformInlineChildren(node.children ?? []));
|
|
209
|
+
}
|
|
210
|
+
const inlines = ctx.transformInlineChildren(node.children ?? []);
|
|
211
|
+
if (inlines.length === 0)
|
|
212
|
+
return null;
|
|
213
|
+
return inlines.length === 1 ? inlines[0] : inlines;
|
|
214
|
+
}
|
|
215
|
+
function handleMdxBlock(node, ctx) {
|
|
216
|
+
const tagName = (node.name ?? '').toLowerCase();
|
|
217
|
+
if (!tagName)
|
|
218
|
+
return fallbackBlockFromChildren(node, ctx);
|
|
219
|
+
const wrapperCtx = createMdxContext(ctx);
|
|
220
|
+
const blockHandler = ctx.registry.getHtmlBlockHandler(tagName);
|
|
221
|
+
if (blockHandler?.handleBlock) {
|
|
222
|
+
return blockHandler.handleBlock(toMdxVirtualElement(node, 'block'), wrapperCtx);
|
|
223
|
+
}
|
|
224
|
+
const inlineHandler = ctx.registry.getHtmlInlineHandler(tagName);
|
|
225
|
+
if (inlineHandler?.handleInline) {
|
|
226
|
+
const inlineResult = inlineHandler.handleInline(toMdxVirtualElement(node, 'inline'), wrapperCtx);
|
|
227
|
+
return inlineResultToParagraph(inlineResult, ctx.createSourcePos(node));
|
|
228
|
+
}
|
|
229
|
+
return fallbackBlockFromChildren(node, ctx);
|
|
230
|
+
}
|
|
231
|
+
function handleMdxInline(node, ctx) {
|
|
232
|
+
const tagName = (node.name ?? '').toLowerCase();
|
|
233
|
+
if (!tagName)
|
|
234
|
+
return fallbackInlineFromChildren(node, ctx);
|
|
235
|
+
const wrapperCtx = createMdxContext(ctx);
|
|
236
|
+
const inlineHandler = ctx.registry.getHtmlInlineHandler(tagName);
|
|
237
|
+
if (inlineHandler?.handleInline) {
|
|
238
|
+
return inlineHandler.handleInline(toMdxVirtualElement(node, 'inline'), wrapperCtx);
|
|
239
|
+
}
|
|
240
|
+
return fallbackInlineFromChildren(node, ctx);
|
|
241
|
+
}
|
|
242
|
+
function handleMdxExpressionInline(node, ctx) {
|
|
243
|
+
const rawValue = typeof node.value === 'string' ? node.value : '';
|
|
244
|
+
if (!rawValue)
|
|
245
|
+
return null;
|
|
246
|
+
// Recreate original source text so shorthand parser can still detect patterns
|
|
247
|
+
// like {{Interface}} that MDX tokenizes as mdxTextExpression.
|
|
248
|
+
const syntheticText = {
|
|
249
|
+
type: 'text',
|
|
250
|
+
value: `{${rawValue}}`,
|
|
251
|
+
position: node.position,
|
|
252
|
+
};
|
|
253
|
+
const inlines = ctx.transformInlineChildren([syntheticText]);
|
|
254
|
+
if (inlines.length === 0)
|
|
255
|
+
return null;
|
|
256
|
+
return inlines.length === 1 ? inlines[0] : inlines;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Markdown parser module for MDX nodes.
|
|
260
|
+
*/
|
|
261
|
+
export const MdxMarkdownParser = {
|
|
262
|
+
name: 'MdxMarkdownParser',
|
|
263
|
+
handles: ['mdxJsxFlowElement', 'mdxJsxTextElement', 'mdxTextExpression', 'paragraph'],
|
|
264
|
+
order: 5,
|
|
265
|
+
handleBlock(node, ctx) {
|
|
266
|
+
// When a single MDX tag sits inside a paragraph, allow block handlers
|
|
267
|
+
// (e.g. <spec-statement>) to claim it before Paragraph parser runs.
|
|
268
|
+
if (node.type === 'paragraph') {
|
|
269
|
+
const paragraph = node;
|
|
270
|
+
if (paragraph.children.length === 1) {
|
|
271
|
+
const onlyChild = paragraph.children[0];
|
|
272
|
+
if (!isMdxJsxNode(onlyChild))
|
|
273
|
+
return null;
|
|
274
|
+
const tagName = (onlyChild.name ?? '').toLowerCase();
|
|
275
|
+
const blockHandler = tagName ? ctx.registry.getHtmlBlockHandler(tagName) : undefined;
|
|
276
|
+
if (!blockHandler?.handleBlock && !isHtmlBlockTag(tagName) && !tagName.includes('-'))
|
|
277
|
+
return null;
|
|
278
|
+
return handleMdxBlock(onlyChild, ctx);
|
|
279
|
+
}
|
|
280
|
+
const blocks = [];
|
|
281
|
+
let sawBlockLikeTag = false;
|
|
282
|
+
for (const child of paragraph.children) {
|
|
283
|
+
if (isMdxJsxNode(child) && isBlockLikeMdxTag(child, ctx)) {
|
|
284
|
+
sawBlockLikeTag = true;
|
|
285
|
+
appendBlockResult(blocks, handleMdxBlock(child, ctx));
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
if (child.type === 'text' && child.value.trim().length === 0) {
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
// Mixed content paragraph (normal inline text + MDX tags): let
|
|
292
|
+
// ParagraphsMarkdownParser handle this as an inline paragraph.
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
return sawBlockLikeTag ? blocks : null;
|
|
296
|
+
}
|
|
297
|
+
if (!isMdxJsxNode(node))
|
|
298
|
+
return null;
|
|
299
|
+
return handleMdxBlock(node, ctx);
|
|
300
|
+
},
|
|
301
|
+
handleInline(node, ctx) {
|
|
302
|
+
if (isMdxTextExpression(node)) {
|
|
303
|
+
return handleMdxExpressionInline(node, ctx);
|
|
304
|
+
}
|
|
305
|
+
if (!isMdxJsxNode(node))
|
|
306
|
+
return null;
|
|
307
|
+
return handleMdxInline(node, ctx);
|
|
308
|
+
},
|
|
309
|
+
};
|
|
310
|
+
//# sourceMappingURL=MdxMarkdownParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MdxMarkdownParser.js","sourceRoot":"","sources":["../../../src/parse/markdown/MdxMarkdownParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EACR,OAAO,EACP,KAAK,EAGR,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,oBAAoB,EAIvB,MAAM,qBAAqB,CAAC;AAqD7B;;GAEG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IACjD,QAAQ,CAAC,MAAM,EAAG,UAAU,CAAU;IAEtC,OAAO,CAAC,SAAS,CAIiB;IAElC,OAAO,CAAC,QAAQ,CAAuB;gBAE3B,QAAQ,GAAE,oBAAsC;IAI5D;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;IA8C5C;;OAEG;IACH,OAAO,CAAC,aAAa;IAoCrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAgBlC"}
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
import { unified } from 'unified';
|
|
8
8
|
import remarkParse from 'remark-parse';
|
|
9
9
|
import remarkGfm from 'remark-gfm';
|
|
10
|
+
import { remarkMdxAgnostic, remarkHeadingAttrBlocks } from './plugins.js';
|
|
10
11
|
import { defaultRegistry, } from '#src/parse/registry';
|
|
11
|
-
import { escapeShorthandPipesInTables } from '../utils/markdown-utils.js';
|
|
12
|
+
import { escapeShorthandPipesInTables, normalizeMdxTags } from '../utils/markdown-utils.js';
|
|
12
13
|
/**
|
|
13
14
|
* Create source position from mdast node position
|
|
14
15
|
*/
|
|
@@ -38,12 +39,31 @@ function createSourcePos(unit, node) {
|
|
|
38
39
|
}
|
|
39
40
|
return result;
|
|
40
41
|
}
|
|
42
|
+
function adjustErrorLineNumbers(error, startLine) {
|
|
43
|
+
if (!(error instanceof Error) || startLine <= 1)
|
|
44
|
+
return;
|
|
45
|
+
const startOff = startLine - 1;
|
|
46
|
+
// Match (L:C), (L:C-L:C), or even just L:C if MDX format changes
|
|
47
|
+
const posRegex = /(\(?|)(\d+):(\d+)(?:-(\d+):(\d+))?(\)?|)/g;
|
|
48
|
+
error.message = error.message.replace(posRegex, (_match, openParen = '', l1, c1, l2, c2, closeParen = '') => {
|
|
49
|
+
const nl1 = parseInt(l1) + startOff;
|
|
50
|
+
if (l2 && c2) {
|
|
51
|
+
const nl2 = parseInt(l2) + startOff;
|
|
52
|
+
return `${openParen}${nl1}:${c1}-${nl2}:${c2}${closeParen}`;
|
|
53
|
+
}
|
|
54
|
+
return `${openParen}${nl1}:${c1}${closeParen}`;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
41
57
|
/**
|
|
42
58
|
* Markdown unit parser implementation using handler registry
|
|
43
59
|
*/
|
|
44
60
|
export class MarkdownUnitParser {
|
|
45
61
|
format = 'markdown';
|
|
46
|
-
processor = unified()
|
|
62
|
+
processor = unified()
|
|
63
|
+
.use(remarkParse)
|
|
64
|
+
.use(remarkGfm)
|
|
65
|
+
.use(remarkMdxAgnostic)
|
|
66
|
+
.use(remarkHeadingAttrBlocks);
|
|
47
67
|
registry;
|
|
48
68
|
constructor(registry = defaultRegistry) {
|
|
49
69
|
this.registry = registry;
|
|
@@ -52,13 +72,41 @@ export class MarkdownUnitParser {
|
|
|
52
72
|
* Parse markdown unit to AST blocks
|
|
53
73
|
*/
|
|
54
74
|
parse(unit) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
75
|
+
let content = unit.content;
|
|
76
|
+
// Refined pre-processing for MDX:
|
|
77
|
+
// 1. Escape shorthand pipes in tables (GFM compat)
|
|
78
|
+
content = escapeShorthandPipesInTables(content);
|
|
79
|
+
// Parse to mdast tree
|
|
80
|
+
let tree;
|
|
81
|
+
try {
|
|
82
|
+
tree = this.processor.parse(content);
|
|
83
|
+
}
|
|
84
|
+
catch (initialError) {
|
|
85
|
+
// Retry once after normalizing MDX block-like tags. This rescues cases
|
|
86
|
+
// where custom tags begin inline and then cross block boundaries.
|
|
87
|
+
const normalizedContent = normalizeMdxTags(content);
|
|
88
|
+
if (normalizedContent !== content) {
|
|
89
|
+
try {
|
|
90
|
+
content = normalizedContent;
|
|
91
|
+
tree = this.processor.parse(content);
|
|
92
|
+
}
|
|
93
|
+
catch (normalizedError) {
|
|
94
|
+
adjustErrorLineNumbers(normalizedError, unit.startLine);
|
|
95
|
+
throw normalizedError;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
adjustErrorLineNumbers(initialError, unit.startLine);
|
|
100
|
+
throw initialError;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Run transformers (like remarkHeadingAttrBlocks)
|
|
104
|
+
// We use runSync because our plugins are currently synchronous
|
|
105
|
+
const transformedTree = this.processor.runSync(tree);
|
|
58
106
|
// Create context for handlers
|
|
59
107
|
const ctx = this.createContext(unit);
|
|
60
108
|
const blocks = [];
|
|
61
|
-
for (const child of
|
|
109
|
+
for (const child of transformedTree.children) {
|
|
62
110
|
const blocksResult = this.transformBlock(child, ctx);
|
|
63
111
|
blocks.push(...blocksResult);
|
|
64
112
|
}
|
|
@@ -68,17 +116,15 @@ export class MarkdownUnitParser {
|
|
|
68
116
|
* Create parse context for handlers
|
|
69
117
|
*/
|
|
70
118
|
createContext(unit) {
|
|
71
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
72
|
-
const self = this;
|
|
73
119
|
return {
|
|
74
120
|
unit,
|
|
75
121
|
createSourcePos: (node) => createSourcePos(unit, node),
|
|
76
|
-
transformInlineChildren: (children) =>
|
|
122
|
+
transformInlineChildren: (children) => this.transformInlineChildren(children, unit),
|
|
77
123
|
transformBlockChildren: (children) => {
|
|
78
124
|
const results = [];
|
|
79
|
-
const ctx =
|
|
125
|
+
const ctx = this.createContext(unit);
|
|
80
126
|
for (const child of children) {
|
|
81
|
-
const blocksResult =
|
|
127
|
+
const blocksResult = this.transformBlock(child, ctx);
|
|
82
128
|
results.push(...blocksResult);
|
|
83
129
|
}
|
|
84
130
|
return results;
|
|
@@ -91,7 +137,7 @@ export class MarkdownUnitParser {
|
|
|
91
137
|
text += child.value;
|
|
92
138
|
}
|
|
93
139
|
else if (child.type === 'element') {
|
|
94
|
-
text +=
|
|
140
|
+
text += this.createContext(unit).getTextContent(child);
|
|
95
141
|
}
|
|
96
142
|
}
|
|
97
143
|
return text;
|
|
@@ -104,7 +150,7 @@ export class MarkdownUnitParser {
|
|
|
104
150
|
return val.join(' ');
|
|
105
151
|
return undefined;
|
|
106
152
|
},
|
|
107
|
-
registry:
|
|
153
|
+
registry: this.registry,
|
|
108
154
|
};
|
|
109
155
|
}
|
|
110
156
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/parse/markdown/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,SAAS,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/parse/markdown/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Plugins
|
|
3
|
+
*
|
|
4
|
+
* Custom remark plugins for MDX and attribute blocks.
|
|
5
|
+
*/
|
|
6
|
+
import type { Processor } from 'unified';
|
|
7
|
+
import type { Root } from 'mdast';
|
|
8
|
+
type HeadingAttributeValue = string | boolean;
|
|
9
|
+
type HeadingAttributeMap = Record<string, HeadingAttributeValue>;
|
|
10
|
+
/**
|
|
11
|
+
* Enables MDX (JSX/expressions) without full JS validation.
|
|
12
|
+
* This turns <spec-statement> into MDast MDX nodes instead of raw HTML nodes.
|
|
13
|
+
*/
|
|
14
|
+
export declare function remarkMdxAgnostic(this: Processor): void;
|
|
15
|
+
/**
|
|
16
|
+
* Parses attribute text into a property object.
|
|
17
|
+
* Handles #id and key="value" or key='value' or key=value.
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseAttrText(text: string): HeadingAttributeMap;
|
|
20
|
+
/**
|
|
21
|
+
* Plugin to process heading attribute blocks { #id data-cop-concept="..." }
|
|
22
|
+
* when they appear as an mdxTextExpression at the end of a heading.
|
|
23
|
+
*/
|
|
24
|
+
export declare function remarkHeadingAttrBlocks(): (tree: Root) => void;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/plugins.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAIlC,KAAK,qBAAqB,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9C,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AASjE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,QAmBhD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,uBAsBzC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,KAC7B,MAAM,IAAI,UA2BnB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Plugins
|
|
3
|
+
*
|
|
4
|
+
* Custom remark plugins for MDX and attribute blocks.
|
|
5
|
+
*/
|
|
6
|
+
import { mdx } from "micromark-extension-mdx";
|
|
7
|
+
import { mdxFromMarkdown, mdxToMarkdown } from "mdast-util-mdx";
|
|
8
|
+
import { visit } from "unist-util-visit";
|
|
9
|
+
/**
|
|
10
|
+
* Enables MDX (JSX/expressions) without full JS validation.
|
|
11
|
+
* This turns <spec-statement> into MDast MDX nodes instead of raw HTML nodes.
|
|
12
|
+
*/
|
|
13
|
+
export function remarkMdxAgnostic() {
|
|
14
|
+
const data = this.data();
|
|
15
|
+
const micromarkExtensions = data.micromarkExtensions ?? [];
|
|
16
|
+
const fromMarkdownExtensions = data.fromMarkdownExtensions ?? [];
|
|
17
|
+
const toMarkdownExtensions = data.toMarkdownExtensions ?? [];
|
|
18
|
+
micromarkExtensions.push(mdx());
|
|
19
|
+
fromMarkdownExtensions.push(mdxFromMarkdown());
|
|
20
|
+
// optional: only if you also use remark-stringify later
|
|
21
|
+
toMarkdownExtensions.push(mdxToMarkdown());
|
|
22
|
+
data.micromarkExtensions = micromarkExtensions;
|
|
23
|
+
data.fromMarkdownExtensions = fromMarkdownExtensions;
|
|
24
|
+
data.toMarkdownExtensions = toMarkdownExtensions;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Parses attribute text into a property object.
|
|
28
|
+
* Handles #id and key="value" or key='value' or key=value.
|
|
29
|
+
*/
|
|
30
|
+
export function parseAttrText(text) {
|
|
31
|
+
// text is the inside of `{...}` (no braces), e.g. '#node data-cop-concept="node"'
|
|
32
|
+
const parts = text.match(/(?:[^\s"']+|"[^"]*"|'[^']*')+/g) ?? [];
|
|
33
|
+
const props = {};
|
|
34
|
+
for (const p of parts) {
|
|
35
|
+
if (p.startsWith("#")) {
|
|
36
|
+
props.id = p.slice(1);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (p.startsWith(".")) {
|
|
40
|
+
props[p.slice(1)] = true;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (p.includes("=")) {
|
|
44
|
+
const [k, ...rest] = p.split("=");
|
|
45
|
+
let v = rest.join("=");
|
|
46
|
+
v = v.replace(/^['"]|['"]$/g, "");
|
|
47
|
+
props[k] = v;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return props;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Plugin to process heading attribute blocks { #id data-cop-concept="..." }
|
|
54
|
+
* when they appear as an mdxTextExpression at the end of a heading.
|
|
55
|
+
*/
|
|
56
|
+
export function remarkHeadingAttrBlocks() {
|
|
57
|
+
return (tree) => {
|
|
58
|
+
if (!tree)
|
|
59
|
+
return;
|
|
60
|
+
visit(tree, "heading", (node) => {
|
|
61
|
+
const heading = node;
|
|
62
|
+
const last = heading.children?.[heading.children.length - 1];
|
|
63
|
+
if (!last)
|
|
64
|
+
return;
|
|
65
|
+
if (last.type !== "mdxTextExpression" && last.type !== "text")
|
|
66
|
+
return;
|
|
67
|
+
const raw = String(last.value ?? "").trim();
|
|
68
|
+
if (!raw.startsWith("{") && !raw.startsWith("#") && !raw.startsWith(".") && !raw.includes("="))
|
|
69
|
+
return;
|
|
70
|
+
const props = parseAttrText(raw);
|
|
71
|
+
// Remove the attribute expression from children
|
|
72
|
+
heading.children?.pop();
|
|
73
|
+
// Trim trailing whitespace from the new last child if it's text
|
|
74
|
+
const newLast = heading.children?.[heading.children.length - 1];
|
|
75
|
+
if (newLast && newLast.type === 'text' && typeof newLast.value === 'string') {
|
|
76
|
+
newLast.value = newLast.value.replace(/\s+$/, '');
|
|
77
|
+
}
|
|
78
|
+
heading.data ??= {};
|
|
79
|
+
heading.data.hProperties = { ...(heading.data.hProperties || {}), ...props };
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/parse/markdown/plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A custom remark plugin to ONLY enable MDX JSX (HTML-like tags)
|
|
3
|
+
* without enabling JS expressions, ESM imports/exports, etc.
|
|
4
|
+
*
|
|
5
|
+
* This enables us to natively parse complex HTML trees in Markdown
|
|
6
|
+
* using the remark ecosystem, without breaking on normal `{ }`
|
|
7
|
+
* characters that appear in specs (such as IDL blocks).
|
|
8
|
+
*/
|
|
9
|
+
export default function remarkMdxJsxOnly(this: any): void;
|
|
10
|
+
//# sourceMappingURL=remark-mdx-jsx-only.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remark-mdx-jsx-only.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/remark-mdx-jsx-only.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,IAAI,EAAE,GAAG,QAcjD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { mdxJsx } from 'micromark-extension-mdx-jsx';
|
|
2
|
+
import { mdxJsxFromMarkdown, mdxJsxToMarkdown } from 'mdast-util-mdx-jsx';
|
|
3
|
+
import * as acorn from 'acorn';
|
|
4
|
+
/**
|
|
5
|
+
* A custom remark plugin to ONLY enable MDX JSX (HTML-like tags)
|
|
6
|
+
* without enabling JS expressions, ESM imports/exports, etc.
|
|
7
|
+
*
|
|
8
|
+
* This enables us to natively parse complex HTML trees in Markdown
|
|
9
|
+
* using the remark ecosystem, without breaking on normal `{ }`
|
|
10
|
+
* characters that appear in specs (such as IDL blocks).
|
|
11
|
+
*/
|
|
12
|
+
export default function remarkMdxJsxOnly() {
|
|
13
|
+
const data = this.data();
|
|
14
|
+
function add(field, value) {
|
|
15
|
+
if (data[field]) {
|
|
16
|
+
data[field].push(value);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
data[field] = [value];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
add('micromarkExtensions', mdxJsx({ acorn, addResult: true }));
|
|
23
|
+
add('fromMarkdownExtensions', mdxJsxFromMarkdown());
|
|
24
|
+
add('toMarkdownExtensions', mdxJsxToMarkdown());
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=remark-mdx-jsx-only.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remark-mdx-jsx-only.js","sourceRoot":"","sources":["../../../src/parse/markdown/remark-mdx-jsx-only.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEzB,SAAS,GAAG,CAAC,KAAa,EAAE,KAAU;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/D,GAAG,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACpD,GAAG,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACpD,CAAC"}
|