@openuji/speculator 0.5.4 → 0.6.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.
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/parse/__tests__/assembler.test.js +29 -3
- package/dist/parse/__tests__/assembler.test.js.map +1 -1
- package/dist/parse/__tests__/html-in-markdown.test.js +3 -3
- package/dist/parse/__tests__/html-in-markdown.test.js.map +1 -1
- package/dist/parse/__tests__/pipeline.test.js +4 -3
- package/dist/parse/__tests__/pipeline.test.js.map +1 -1
- package/dist/parse/__tests__/respec.test.js +9 -9
- package/dist/parse/__tests__/respec.test.js.map +1 -1
- package/dist/parse/__tests__/shorthands.test.js +6 -6
- package/dist/parse/__tests__/shorthands.test.js.map +1 -1
- package/dist/parse/assembler.d.ts.map +1 -1
- package/dist/parse/assembler.js +56 -0
- package/dist/parse/assembler.js.map +1 -1
- package/dist/parse/html/InlinesHtmlParser.d.ts +2 -2
- package/dist/parse/html/InlinesHtmlParser.d.ts.map +1 -1
- package/dist/parse/html/InlinesHtmlParser.js +3 -81
- package/dist/parse/html/InlinesHtmlParser.js.map +1 -1
- package/dist/parse/html/ReferenceHtmlParser.d.ts +9 -0
- package/dist/parse/html/ReferenceHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/ReferenceHtmlParser.js +128 -0
- package/dist/parse/html/ReferenceHtmlParser.js.map +1 -0
- package/dist/parse/html/parser.d.ts.map +1 -1
- package/dist/parse/html/parser.js +7 -4
- package/dist/parse/html/parser.js.map +1 -1
- package/dist/parse/markdown/HtmlBlockMarkdownParser.d.ts.map +1 -1
- package/dist/parse/markdown/HtmlBlockMarkdownParser.js +3 -2
- package/dist/parse/markdown/HtmlBlockMarkdownParser.js.map +1 -1
- package/dist/parse/markdown/HtmlParagraphMarkdownParser.js +2 -2
- package/dist/parse/markdown/HtmlParagraphMarkdownParser.js.map +1 -1
- package/dist/parse/markdown/ShorthandsMarkdownParser.d.ts.map +1 -1
- package/dist/parse/markdown/ShorthandsMarkdownParser.js +3 -5
- package/dist/parse/markdown/ShorthandsMarkdownParser.js.map +1 -1
- package/dist/parse/markdown/parser.d.ts.map +1 -1
- package/dist/parse/markdown/parser.js +8 -6
- package/dist/parse/markdown/parser.js.map +1 -1
- package/dist/parse/parsers.d.ts +1 -1
- package/dist/parse/parsers.d.ts.map +1 -1
- package/dist/parse/parsers.js +3 -3
- package/dist/parse/parsers.js.map +1 -1
- package/dist/parse/pipeline.d.ts.map +1 -1
- package/dist/parse/pipeline.js +1 -1
- package/dist/parse/pipeline.js.map +1 -1
- package/dist/parse/registry.d.ts +9 -5
- package/dist/parse/registry.d.ts.map +1 -1
- package/dist/parse/registry.js.map +1 -1
- package/dist/parse/utils/hast-utils.d.ts +5 -2
- package/dist/parse/utils/hast-utils.d.ts.map +1 -1
- package/dist/parse/utils/hast-utils.js +30 -2
- package/dist/parse/utils/hast-utils.js.map +1 -1
- package/dist/pipeline/__tests__/pipeline.test.js +1 -2
- package/dist/pipeline/__tests__/pipeline.test.js.map +1 -1
- package/dist/pipeline/__tests__/workspace.test.js +2 -1
- package/dist/pipeline/__tests__/workspace.test.js.map +1 -1
- package/dist/postprocess/__tests__/dfn-resolve.test.d.ts +0 -3
- package/dist/postprocess/__tests__/dfn-resolve.test.d.ts.map +1 -1
- package/dist/postprocess/__tests__/dfn-resolve.test.js +147 -127
- package/dist/postprocess/__tests__/dfn-resolve.test.js.map +1 -1
- package/dist/postprocess/__tests__/section-id.test.js +2 -1
- package/dist/postprocess/__tests__/section-id.test.js.map +1 -1
- package/dist/postprocess/__tests__/toc.test.js +3 -1
- package/dist/postprocess/__tests__/toc.test.js.map +1 -1
- package/dist/postprocess/plugins/dfn-index.d.ts.map +1 -1
- package/dist/postprocess/plugins/dfn-index.js +1 -0
- package/dist/postprocess/plugins/dfn-index.js.map +1 -1
- package/dist/postprocess/plugins/reference-resolve.d.ts +4 -4
- package/dist/postprocess/plugins/reference-resolve.d.ts.map +1 -1
- package/dist/postprocess/plugins/reference-resolve.js +28 -7
- package/dist/postprocess/plugins/reference-resolve.js.map +1 -1
- package/dist/postprocess/plugins/section-id.d.ts.map +1 -1
- package/dist/postprocess/plugins/section-id.js +8 -4
- package/dist/postprocess/plugins/section-id.js.map +1 -1
- package/dist/postprocess/plugins/toc.d.ts.map +1 -1
- package/dist/postprocess/plugins/toc.js +11 -4
- package/dist/postprocess/plugins/toc.js.map +1 -1
- package/dist/postprocess/walk-ast.d.ts.map +1 -1
- package/dist/postprocess/walk-ast.js +4 -1
- package/dist/postprocess/walk-ast.js.map +1 -1
- package/dist/preprocess/__tests__/pipeline.test.js +16 -12
- package/dist/preprocess/__tests__/pipeline.test.js.map +1 -1
- package/dist/preprocess/config/__tests__/rules.test.js +22 -11
- package/dist/preprocess/config/__tests__/rules.test.js.map +1 -1
- package/dist/preprocess/config/doc-config.js +1 -1
- package/dist/preprocess/config/doc-config.js.map +1 -1
- package/dist/preprocess/config/index.d.ts +1 -1
- package/dist/preprocess/config/index.d.ts.map +1 -1
- package/dist/preprocess/config/index.js +1 -1
- package/dist/preprocess/config/index.js.map +1 -1
- package/dist/preprocess/config/normalize.d.ts +4 -8
- package/dist/preprocess/config/normalize.d.ts.map +1 -1
- package/dist/preprocess/config/normalize.js +20 -12
- package/dist/preprocess/config/normalize.js.map +1 -1
- package/dist/preprocess/config/types.d.ts +13 -0
- package/dist/preprocess/config/types.d.ts.map +1 -1
- package/dist/preprocess/index.d.ts +2 -2
- package/dist/preprocess/index.d.ts.map +1 -1
- package/dist/preprocess/index.js +1 -1
- package/dist/preprocess/index.js.map +1 -1
- package/dist/preprocess/pipeline.d.ts +1 -1
- package/dist/preprocess/pipeline.d.ts.map +1 -1
- package/dist/preprocess/pipeline.js +11 -16
- package/dist/preprocess/pipeline.js.map +1 -1
- package/dist/preprocess/types.d.ts +49 -2
- package/dist/preprocess/types.d.ts.map +1 -1
- package/dist/types/ast.generated.d.ts +84 -33
- package/dist/types/ast.generated.d.ts.map +1 -1
- package/dist/types/ast.generated.js +9 -3
- package/dist/types/ast.generated.js.map +1 -1
- package/dist/workspace/__tests__/sort.test.js +8 -8
- package/dist/workspace/__tests__/sort.test.js.map +1 -1
- package/dist/workspace/builder.d.ts +23 -0
- package/dist/workspace/builder.d.ts.map +1 -0
- package/dist/workspace/builder.js +50 -0
- package/dist/workspace/builder.js.map +1 -0
- package/dist/workspace/index.d.ts +2 -0
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +1 -0
- package/dist/workspace/index.js.map +1 -1
- package/package.json +1 -2
- package/schema/spec-ast.schema.json +209 -68
package/dist/parse/pipeline.js
CHANGED
|
@@ -102,7 +102,7 @@ export function registerParser(parser) {
|
|
|
102
102
|
*
|
|
103
103
|
* Useful for testing or when config is handled separately.
|
|
104
104
|
*/
|
|
105
|
-
export function parseCompositeSource(source, config = {}) {
|
|
105
|
+
export function parseCompositeSource(source, config = { id: 'anonymous' }) {
|
|
106
106
|
return parse({ config, source });
|
|
107
107
|
}
|
|
108
108
|
//# sourceMappingURL=pipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/parse/pipeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/parse/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/parse/registry.d.ts
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Manages the registration and lookup of HTML and Markdown parser modules.
|
|
5
5
|
*/
|
|
6
|
-
import type { Element } from 'hast';
|
|
6
|
+
import type { Element, RootContent as HastRootContent } from 'hast';
|
|
7
7
|
import type { RootContent as MdastRootContent } from 'mdast';
|
|
8
|
-
import type { Block, Inline, Section } from '#src/types/ast.generated';
|
|
8
|
+
import type { Block, Inline, Section, SourcePos } from '#src/types/ast.generated';
|
|
9
9
|
import type { SourceUnit } from '#src/preprocess/types';
|
|
10
10
|
/** Node with position info from standard parsers */
|
|
11
11
|
export interface NodeWithPosition {
|
|
@@ -28,6 +28,10 @@ export type BlockHandlerResult = Block | Section | (Block | Section)[] | null;
|
|
|
28
28
|
export type InlineHandlerResult = Inline | Inline[] | null;
|
|
29
29
|
/** Generic result type for either block or inline handler */
|
|
30
30
|
export type HandlerResult = BlockHandlerResult | InlineHandlerResult;
|
|
31
|
+
/**
|
|
32
|
+
* Union of possible children arrays from different parsers
|
|
33
|
+
*/
|
|
34
|
+
export type ParseContextChildren = HastRootContent[] | MdastRootContent[];
|
|
31
35
|
/**
|
|
32
36
|
* Context provided to parser modules during transformation.
|
|
33
37
|
*/
|
|
@@ -35,11 +39,11 @@ export interface ParseContext {
|
|
|
35
39
|
/** The source unit being parsed */
|
|
36
40
|
readonly unit: SourceUnit;
|
|
37
41
|
/** Create a source position for the AST node */
|
|
38
|
-
createSourcePos(node: NodeWithPosition):
|
|
42
|
+
createSourcePos(node: NodeWithPosition): SourcePos;
|
|
39
43
|
/** Transform an array of mdast/hast inline children */
|
|
40
|
-
transformInlineChildren(children:
|
|
44
|
+
transformInlineChildren(children: ParseContextChildren): Inline[];
|
|
41
45
|
/** Transform an array of mdast/hast block children */
|
|
42
|
-
transformBlockChildren(children:
|
|
46
|
+
transformBlockChildren(children: ParseContextChildren): (Section | Block)[];
|
|
43
47
|
/** Get text content of element (HTML) */
|
|
44
48
|
getTextContent(element: Element): string;
|
|
45
49
|
/** Get attribute value (HTML) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/parse/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/parse/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/parse/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/parse/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { Element, RootContent as HastRootContent } from 'hast';
|
|
8
8
|
import type { ParseContext } from '#src/parse/registry';
|
|
9
|
-
import type { Inline } from '#src/types/ast.generated';
|
|
9
|
+
import type { Inline, SourcePos } from '#src/types/ast.generated';
|
|
10
10
|
/**
|
|
11
11
|
* Get element attribute value from hast element.
|
|
12
12
|
* Handles various types: strings, arrays (joins with space), numbers, and booleans.
|
|
@@ -25,6 +25,9 @@ export declare function transformHastInline(node: HastRootContent, ctx: ParseCon
|
|
|
25
25
|
/**
|
|
26
26
|
* Create a hast-aware ParseContext from a base (markdown) context.
|
|
27
27
|
* This allows hast nodes to be transformed using the same handler infrastructure.
|
|
28
|
+
*
|
|
29
|
+
* If parentSourcePos is provided, it will be used as the base for all child nodes
|
|
30
|
+
* created from the hast tree (correcting offsets for HTML inside Markdown).
|
|
28
31
|
*/
|
|
29
|
-
export declare function createHastContext(ctx: ParseContext): ParseContext;
|
|
32
|
+
export declare function createHastContext(ctx: ParseContext, parentSourcePos?: SourcePos): ParseContext;
|
|
30
33
|
//# sourceMappingURL=hast-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hast-utils.d.ts","sourceRoot":"","sources":["../../../src/parse/utils/hast-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAoB,WAAW,IAAI,eAAe,EAAE,MAAM,MAAM,CAAC;AAEtF,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"hast-utils.d.ts","sourceRoot":"","sources":["../../../src/parse/utils/hast-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAoB,WAAW,IAAI,eAAe,EAAE,MAAM,MAAM,CAAC;AAEtF,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc1E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAUvD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAsBtG;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,YAAY,CA8C9F"}
|
|
@@ -9,7 +9,12 @@
|
|
|
9
9
|
* Handles various types: strings, arrays (joins with space), numbers, and booleans.
|
|
10
10
|
*/
|
|
11
11
|
export function getAttr(element, name) {
|
|
12
|
-
|
|
12
|
+
let val = element.properties?.[name];
|
|
13
|
+
// Fallback: if camelCase name not found, try kebab-case for data- attributes
|
|
14
|
+
if (val === undefined && name.startsWith('data')) {
|
|
15
|
+
const kebab = name.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
|
|
16
|
+
val = element.properties?.[kebab];
|
|
17
|
+
}
|
|
13
18
|
if (typeof val === 'string')
|
|
14
19
|
return val;
|
|
15
20
|
if (Array.isArray(val))
|
|
@@ -62,11 +67,34 @@ export function transformHastInline(node, ctx) {
|
|
|
62
67
|
/**
|
|
63
68
|
* Create a hast-aware ParseContext from a base (markdown) context.
|
|
64
69
|
* This allows hast nodes to be transformed using the same handler infrastructure.
|
|
70
|
+
*
|
|
71
|
+
* If parentSourcePos is provided, it will be used as the base for all child nodes
|
|
72
|
+
* created from the hast tree (correcting offsets for HTML inside Markdown).
|
|
65
73
|
*/
|
|
66
|
-
export function createHastContext(ctx) {
|
|
74
|
+
export function createHastContext(ctx, parentSourcePos) {
|
|
67
75
|
const originalTransform = ctx.transformInlineChildren;
|
|
76
|
+
// Create an overridden createSourcePos if we have a parent offset
|
|
77
|
+
const createSourcePos = parentSourcePos
|
|
78
|
+
? (hastNode) => {
|
|
79
|
+
const localPos = hastNode.position;
|
|
80
|
+
if (!localPos)
|
|
81
|
+
return parentSourcePos;
|
|
82
|
+
return {
|
|
83
|
+
...parentSourcePos,
|
|
84
|
+
line: parentSourcePos.line + localPos.start.line - 1,
|
|
85
|
+
// Column is only relative if on the first line of the fragment
|
|
86
|
+
column: localPos.start.line === 1
|
|
87
|
+
? parentSourcePos.column + localPos.start.column - 1
|
|
88
|
+
: localPos.start.column,
|
|
89
|
+
offset: parentSourcePos.offset !== undefined
|
|
90
|
+
? parentSourcePos.offset + (localPos.start.offset || 0)
|
|
91
|
+
: undefined
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
: ctx.createSourcePos;
|
|
68
95
|
const hastCtx = {
|
|
69
96
|
...ctx,
|
|
97
|
+
createSourcePos,
|
|
70
98
|
transformInlineChildren: (children) => {
|
|
71
99
|
const results = [];
|
|
72
100
|
for (const child of children) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hast-utils.js","sourceRoot":"","sources":["../../../src/parse/utils/hast-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,OAAgB,EAAE,IAAY;IAClD,
|
|
1
|
+
{"version":3,"file":"hast-utils.js","sourceRoot":"","sources":["../../../src/parse/utils/hast-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,14 +20,13 @@ describe('speculate', () => {
|
|
|
20
20
|
it('processes markdown with config', async () => {
|
|
21
21
|
const fileProvider = new MemoryFileProvider({
|
|
22
22
|
'/spec/index.md': '# Title\n\nContent',
|
|
23
|
-
'/spec/config.
|
|
23
|
+
'/spec/config.json': JSON.stringify({
|
|
24
24
|
title: 'Test Spec',
|
|
25
25
|
shortName: 'test',
|
|
26
26
|
}),
|
|
27
27
|
});
|
|
28
28
|
const result = await speculate({
|
|
29
29
|
entry: '/spec/index.md',
|
|
30
|
-
configPath: '/spec/config.respec.json',
|
|
31
30
|
plugins: corePlugins,
|
|
32
31
|
fileProvider,
|
|
33
32
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../../src/pipeline/__tests__/pipeline.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC;YACxC,gBAAgB,EAAE,iCAAiC;SACtD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;YAC3B,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE,WAAW;YACpB,YAAY;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAE9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC;YACxC,gBAAgB,EAAE,oBAAoB;YACtC,
|
|
1
|
+
{"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../../src/pipeline/__tests__/pipeline.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,8 +45,9 @@ describe('Workspace processing', () => {
|
|
|
45
45
|
// Deep walk docB to find the reference
|
|
46
46
|
const findRef = (node) => {
|
|
47
47
|
if (typeof node === 'object' && node !== null && 'type' in node) {
|
|
48
|
-
if (node.type === '
|
|
48
|
+
if (node.type === 'workspaceDfnReference' && 'targetTerm' in node && node.targetTerm === 'term a') {
|
|
49
49
|
expect('targetId' in node ? node.targetId : undefined).toBe('term-a');
|
|
50
|
+
expect('targetDocumentId' in node ? node.targetDocumentId : undefined).toBe('spec-a');
|
|
50
51
|
resolved = true;
|
|
51
52
|
}
|
|
52
53
|
if ('children' in node && Array.isArray(node.children)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.test.js","sourceRoot":"","sources":["../../../src/pipeline/__tests__/workspace.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAE9C,wBAAwB;QACxB,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE;;;;;SAKpC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE;;;;;SAKpC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;YACvC,OAAO,EAAE;gBACL,EAAE,KAAK,EAAE,cAAc,EAAE;gBACzB,EAAE,KAAK,EAAE,cAAc,EAAE;aAC5B;YACD,YAAY;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEnD,kFAAkF;QAClF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,KAAK,cAAc,CAAE,CAAC;QAC1F,kFAAkF;QAClF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,KAAK,cAAc,CAAE,CAAC;QAG1F,sCAAsC;QACtC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7D,kFAAkF;QAClF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAE,CAAC,CAAC,aAAa;QACvF,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhC,uCAAuC;QACvC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,uCAAuC;QACvC,MAAM,OAAO,GAAG,CAAC,IAAa,EAAQ,EAAE;YACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC9D,IAAI,IAAI,CAAC,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"workspace.test.js","sourceRoot":"","sources":["../../../src/pipeline/__tests__/workspace.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dfn-resolve.test.d.ts","sourceRoot":"","sources":["../../../src/postprocess/__tests__/dfn-resolve.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dfn-resolve.test.d.ts","sourceRoot":"","sources":["../../../src/postprocess/__tests__/dfn-resolve.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,160 +1,180 @@
|
|
|
1
|
+
import { referenceResolvePlugin } from '../plugins/reference-resolve.js';
|
|
2
|
+
import { describe, it, expect } from 'vitest';
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
4
|
+
* Mock ResolveContext
|
|
3
5
|
*/
|
|
4
|
-
|
|
5
|
-
import { dfnIndexPlugin } from '#src/postprocess/plugins/dfn-index';
|
|
6
|
-
import { referenceResolvePlugin } from '#src/postprocess/plugins/reference-resolve';
|
|
7
|
-
function createDocWithDfnAndRef(dfnTerm, refTerm) {
|
|
6
|
+
function createCtx(doc) {
|
|
8
7
|
return {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
document: doc,
|
|
9
|
+
level: 0,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
describe('ReferenceResolvePlugin', () => {
|
|
13
|
+
it('resolves basic internal references', async () => {
|
|
14
|
+
const doc = {
|
|
15
|
+
id: 'doc-1',
|
|
16
|
+
type: 'document',
|
|
17
|
+
children: [
|
|
18
|
+
{
|
|
19
|
+
type: 'paragraph',
|
|
20
|
+
children: [
|
|
21
|
+
{ type: 'text', value: 'See ' },
|
|
22
|
+
{
|
|
23
|
+
type: 'workspaceDfnReference',
|
|
24
|
+
targetTerm: 'term a',
|
|
25
|
+
children: [{ type: 'text', value: 'Term A' }],
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
indexes: {
|
|
31
|
+
definitions: [
|
|
13
32
|
{
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
children: [{ type: 'text', value: dfnTerm }],
|
|
19
|
-
}],
|
|
33
|
+
id: 'dfn-term-a',
|
|
34
|
+
term: 'term a',
|
|
35
|
+
documentId: 'doc-1',
|
|
36
|
+
sourcePos: { file: 'test.md', line: 10, column: 1 },
|
|
20
37
|
},
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
await referenceResolvePlugin.resolve(createCtx(doc));
|
|
42
|
+
const ref = doc.children[0].children[1];
|
|
43
|
+
expect(ref.targetId).toBe('dfn-term-a');
|
|
44
|
+
expect(ref.targetDocumentId).toBe('doc-1');
|
|
45
|
+
});
|
|
46
|
+
it('resolves using candidateTerms', async () => {
|
|
47
|
+
const doc = {
|
|
48
|
+
id: 'doc-1',
|
|
49
|
+
type: 'document',
|
|
50
|
+
children: [
|
|
51
|
+
{
|
|
52
|
+
type: 'paragraph',
|
|
53
|
+
children: [
|
|
54
|
+
{
|
|
55
|
+
type: 'workspaceDfnReference',
|
|
56
|
+
targetTerm: 'alias',
|
|
57
|
+
candidateTerms: ['primary'],
|
|
58
|
+
children: [{ type: 'text', value: 'Alias' }],
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
indexes: {
|
|
64
|
+
definitions: [
|
|
21
65
|
{
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
children: [{ type: 'text', value: refTerm }],
|
|
27
|
-
}],
|
|
66
|
+
id: 'dfn-primary',
|
|
67
|
+
term: 'primary',
|
|
68
|
+
documentId: 'doc-1',
|
|
69
|
+
sourcePos: { file: 'test.md', line: 10, column: 1 },
|
|
28
70
|
},
|
|
29
71
|
],
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const doc = createDocWithDfnAndRef('task queue', 'task queue');
|
|
36
|
-
await dfnIndexPlugin.index({ document: doc, level: 0 });
|
|
37
|
-
const section = doc.children[0];
|
|
38
|
-
const dfnPara = section.children[0];
|
|
39
|
-
const dfn = dfnPara.children[0];
|
|
40
|
-
expect(dfn.id).toBe('dfn-task-queue');
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
await referenceResolvePlugin.resolve(createCtx(doc));
|
|
75
|
+
const ref = doc.children[0].children[0];
|
|
76
|
+
expect(ref.targetId).toBe('dfn-primary');
|
|
41
77
|
});
|
|
42
|
-
it('
|
|
78
|
+
it('handles unresolved references gracefully', async () => {
|
|
43
79
|
const doc = {
|
|
80
|
+
id: 'doc-1',
|
|
44
81
|
type: 'document',
|
|
45
|
-
children: [
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
82
|
+
children: [
|
|
83
|
+
{
|
|
84
|
+
type: 'paragraph',
|
|
85
|
+
children: [
|
|
86
|
+
{
|
|
87
|
+
type: 'workspaceDfnReference',
|
|
88
|
+
targetTerm: 'unknown',
|
|
89
|
+
children: [{ type: 'text', value: 'Unknown' }],
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
indexes: { definitions: [] },
|
|
57
95
|
};
|
|
58
|
-
await
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
const dfn = dfnPara.children[0];
|
|
62
|
-
expect(dfn.id).toBe('dom-focus');
|
|
63
|
-
});
|
|
64
|
-
it('builds definition index', async () => {
|
|
65
|
-
const doc = createDocWithDfnAndRef('event loop', 'event loop');
|
|
66
|
-
await dfnIndexPlugin.index({ document: doc, level: 0 });
|
|
67
|
-
expect(doc.indexes?.definitions).toHaveLength(1);
|
|
68
|
-
expect(doc.indexes?.definitions?.[0].term).toBe('event loop');
|
|
69
|
-
expect(doc.indexes?.definitions?.[0].id).toBe('dfn-event-loop');
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
describe('ReferenceResolvePlugin', () => {
|
|
73
|
-
it('resolves reference to definition with same term', async () => {
|
|
74
|
-
const doc = createDocWithDfnAndRef('event loop', 'event loop');
|
|
75
|
-
await dfnIndexPlugin.index({ document: doc, level: 0 });
|
|
76
|
-
await referenceResolvePlugin.resolve({ document: doc, level: 0 });
|
|
77
|
-
const section = doc.children[0];
|
|
78
|
-
const refPara = section.children[1];
|
|
79
|
-
const ref = refPara.children[0];
|
|
80
|
-
expect(ref.targetId).toBe('dfn-event-loop');
|
|
96
|
+
await referenceResolvePlugin.resolve(createCtx(doc));
|
|
97
|
+
const ref = doc.children[0].children[0];
|
|
98
|
+
expect(ref.targetId).toBeUndefined();
|
|
81
99
|
});
|
|
82
|
-
it('resolves
|
|
100
|
+
it('resolves in workspace mode using targetDocumentId', async () => {
|
|
83
101
|
const doc = {
|
|
102
|
+
id: 'doc-1',
|
|
84
103
|
type: 'document',
|
|
85
|
-
children: [
|
|
86
|
-
|
|
104
|
+
children: [
|
|
105
|
+
{
|
|
106
|
+
type: 'paragraph',
|
|
87
107
|
children: [
|
|
88
108
|
{
|
|
89
|
-
type: '
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
term: 'event loop',
|
|
93
|
-
linkTexts: ['event loop', 'loop'],
|
|
94
|
-
children: [{ type: 'text', value: 'event loop' }],
|
|
95
|
-
}],
|
|
109
|
+
type: 'workspaceDfnReference',
|
|
110
|
+
targetTerm: 'term a',
|
|
111
|
+
children: [{ type: 'text', value: 'Term A' }],
|
|
96
112
|
},
|
|
113
|
+
],
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
};
|
|
117
|
+
const globalIndex = {
|
|
118
|
+
definitions: new Map([
|
|
119
|
+
[
|
|
120
|
+
'term a',
|
|
121
|
+
[
|
|
97
122
|
{
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
candidateTerms: ['loop'],
|
|
103
|
-
children: [{ type: 'text', value: 'loop' }],
|
|
104
|
-
}],
|
|
123
|
+
id: 'dfn-term-a',
|
|
124
|
+
term: 'term a',
|
|
125
|
+
documentId: 'other-doc',
|
|
126
|
+
sourcePos: { file: 'other.md', line: 5, column: 1 },
|
|
105
127
|
},
|
|
106
128
|
],
|
|
107
|
-
|
|
129
|
+
],
|
|
130
|
+
]),
|
|
108
131
|
};
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
expect(ref.
|
|
132
|
+
const ctx = createCtx(doc);
|
|
133
|
+
ctx.workspace = { globalIndex };
|
|
134
|
+
await referenceResolvePlugin.resolve(ctx);
|
|
135
|
+
const ref = doc.children[0].children[0];
|
|
136
|
+
expect(ref.targetId).toBe('dfn-term-a');
|
|
137
|
+
expect(ref.targetDocumentId).toBe('other-doc');
|
|
115
138
|
});
|
|
116
|
-
it('
|
|
139
|
+
it('respects forContext when resolving', async () => {
|
|
117
140
|
const doc = {
|
|
141
|
+
id: 'doc-1',
|
|
118
142
|
type: 'document',
|
|
119
|
-
children: [
|
|
120
|
-
|
|
143
|
+
children: [
|
|
144
|
+
{
|
|
145
|
+
type: 'paragraph',
|
|
121
146
|
children: [
|
|
122
147
|
{
|
|
123
|
-
type: '
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
forContexts: ['Window'],
|
|
128
|
-
children: [{ type: 'text', value: 'postMessage' }],
|
|
129
|
-
}],
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
type: 'paragraph',
|
|
133
|
-
children: [{
|
|
134
|
-
type: 'reference',
|
|
135
|
-
targetTerm: 'postMessage',
|
|
136
|
-
forContexts: ['Window'],
|
|
137
|
-
children: [{ type: 'text', value: 'postMessage' }],
|
|
138
|
-
}],
|
|
148
|
+
type: 'workspaceDfnReference',
|
|
149
|
+
targetTerm: 'term a',
|
|
150
|
+
forContexts: ['context-b'],
|
|
151
|
+
children: [{ type: 'text', value: 'Term A' }],
|
|
139
152
|
},
|
|
140
153
|
],
|
|
141
|
-
}
|
|
154
|
+
},
|
|
155
|
+
],
|
|
156
|
+
indexes: {
|
|
157
|
+
definitions: [
|
|
158
|
+
{
|
|
159
|
+
id: 'dfn-term-a-1',
|
|
160
|
+
term: 'term a',
|
|
161
|
+
documentId: 'doc-1',
|
|
162
|
+
forContexts: ['context-a'],
|
|
163
|
+
sourcePos: { file: 'test.md', line: 10, column: 1 },
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
id: 'dfn-term-a-2',
|
|
167
|
+
term: 'term a',
|
|
168
|
+
documentId: 'doc-1',
|
|
169
|
+
forContexts: ['context-b'],
|
|
170
|
+
sourcePos: { file: 'test.md', line: 20, column: 1 },
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
},
|
|
142
174
|
};
|
|
143
|
-
await
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
const refPara = section.children[1];
|
|
147
|
-
const ref = refPara.children[0];
|
|
148
|
-
expect(ref.targetId).toBe('dfn-window-postmessage');
|
|
149
|
-
});
|
|
150
|
-
it('leaves targetId undefined for unresolved reference', async () => {
|
|
151
|
-
const doc = createDocWithDfnAndRef('foo', 'bar');
|
|
152
|
-
await dfnIndexPlugin.index({ document: doc, level: 0 });
|
|
153
|
-
await referenceResolvePlugin.resolve({ document: doc, level: 0 });
|
|
154
|
-
const section = doc.children[0];
|
|
155
|
-
const refPara = section.children[1];
|
|
156
|
-
const ref = refPara.children[0];
|
|
157
|
-
expect(ref.targetId).toBeUndefined();
|
|
175
|
+
await referenceResolvePlugin.resolve(createCtx(doc));
|
|
176
|
+
const ref = doc.children[0].children[0];
|
|
177
|
+
expect(ref.targetId).toBe('dfn-term-a-2');
|
|
158
178
|
});
|
|
159
179
|
});
|
|
160
180
|
//# sourceMappingURL=dfn-resolve.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dfn-resolve.test.js","sourceRoot":"","sources":["../../../src/postprocess/__tests__/dfn-resolve.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dfn-resolve.test.js","sourceRoot":"","sources":["../../../src/postprocess/__tests__/dfn-resolve.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ function createSectionWithHeading(headingText, explicitId) {
|
|
|
21
21
|
function createDocWithSections(sections) {
|
|
22
22
|
return {
|
|
23
23
|
type: 'document',
|
|
24
|
+
id: 'test-doc',
|
|
24
25
|
children: sections,
|
|
25
26
|
};
|
|
26
27
|
}
|
|
@@ -146,7 +147,7 @@ describe('SectionIdPlugin', () => {
|
|
|
146
147
|
children: [
|
|
147
148
|
{ type: 'text', value: 'Understanding ' },
|
|
148
149
|
{
|
|
149
|
-
type: '
|
|
150
|
+
type: 'workspaceDfnReference',
|
|
150
151
|
targetTerm: 'task queue',
|
|
151
152
|
children: [{ type: 'text', value: 'Task Queue' }]
|
|
152
153
|
},
|