@openuji/speculator 0.5.3 → 0.6.0
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 +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- 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.d.ts +2 -0
- package/dist/parse/__tests__/html-in-markdown.test.d.ts.map +1 -0
- package/dist/parse/__tests__/html-in-markdown.test.js +83 -0
- package/dist/parse/__tests__/html-in-markdown.test.js.map +1 -0
- package/dist/parse/__tests__/pipeline.test.js +5 -11
- 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.d.ts +5 -0
- package/dist/parse/__tests__/shorthands.test.d.ts.map +1 -0
- package/dist/parse/__tests__/shorthands.test.js +96 -0
- package/dist/parse/__tests__/shorthands.test.js.map +1 -0
- package/dist/parse/assembler.d.ts.map +1 -1
- package/dist/parse/assembler.js +35 -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 +7 -75
- 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 +1 -12
- package/dist/parse/html/parser.d.ts.map +1 -1
- package/dist/parse/html/parser.js +20 -49
- package/dist/parse/html/parser.js.map +1 -1
- package/dist/parse/index.d.ts +1 -1
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js.map +1 -1
- package/dist/parse/markdown/HtmlBlockMarkdownParser.d.ts +13 -0
- package/dist/parse/markdown/HtmlBlockMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/HtmlBlockMarkdownParser.js +62 -0
- package/dist/parse/markdown/HtmlBlockMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/HtmlInlinesMarkdownParser.d.ts +12 -0
- package/dist/parse/markdown/HtmlInlinesMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/HtmlInlinesMarkdownParser.js +187 -0
- package/dist/parse/markdown/HtmlInlinesMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/HtmlParagraphMarkdownParser.d.ts +15 -0
- package/dist/parse/markdown/HtmlParagraphMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/HtmlParagraphMarkdownParser.js +67 -0
- package/dist/parse/markdown/HtmlParagraphMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/ShorthandsMarkdownParser.d.ts +29 -0
- package/dist/parse/markdown/ShorthandsMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/ShorthandsMarkdownParser.js +198 -0
- package/dist/parse/markdown/ShorthandsMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/parser.d.ts +3 -14
- package/dist/parse/markdown/parser.d.ts.map +1 -1
- package/dist/parse/markdown/parser.js +76 -49
- package/dist/parse/markdown/parser.js.map +1 -1
- package/dist/parse/parsers.d.ts +4 -1
- package/dist/parse/parsers.d.ts.map +1 -1
- package/dist/parse/parsers.js +13 -3
- package/dist/parse/parsers.js.map +1 -1
- package/dist/parse/pipeline.d.ts.map +1 -1
- package/dist/parse/pipeline.js +9 -21
- package/dist/parse/pipeline.js.map +1 -1
- package/dist/parse/registry.d.ts +53 -90
- package/dist/parse/registry.d.ts.map +1 -1
- package/dist/parse/registry.js +39 -58
- package/dist/parse/registry.js.map +1 -1
- package/dist/parse/types.d.ts +1 -23
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/parse/types.js.map +1 -1
- package/dist/parse/utils/hast-utils.d.ts +33 -0
- package/dist/parse/utils/hast-utils.d.ts.map +1 -0
- package/dist/parse/utils/hast-utils.js +122 -0
- package/dist/parse/utils/hast-utils.js.map +1 -0
- 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/pipeline/runner.d.ts.map +1 -1
- package/dist/pipeline/runner.js +16 -12
- package/dist/pipeline/runner.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/index.d.ts +1 -1
- package/dist/postprocess/index.d.ts.map +1 -1
- package/dist/postprocess/index.js +3 -3
- package/dist/postprocess/index.js.map +1 -1
- package/dist/postprocess/plugins/citation-resolve.d.ts +8 -0
- package/dist/postprocess/plugins/citation-resolve.d.ts.map +1 -0
- package/dist/postprocess/plugins/citation-resolve.js +33 -0
- package/dist/postprocess/plugins/citation-resolve.js.map +1 -0
- 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 +39 -47
- package/dist/preprocess/__tests__/pipeline.test.js.map +1 -1
- package/dist/preprocess/__tests__/resolver.test.js +38 -40
- package/dist/preprocess/__tests__/resolver.test.js.map +1 -1
- package/dist/preprocess/config/__tests__/rules.test.d.ts +2 -0
- package/dist/preprocess/config/__tests__/rules.test.d.ts.map +1 -0
- package/dist/preprocess/config/__tests__/rules.test.js +223 -0
- package/dist/preprocess/config/__tests__/rules.test.js.map +1 -0
- package/dist/preprocess/config/doc-config.js +2 -2
- package/dist/preprocess/config/doc-config.js.map +1 -1
- package/dist/preprocess/config/index.d.ts +3 -4
- package/dist/preprocess/config/index.d.ts.map +1 -1
- package/dist/preprocess/config/index.js +2 -2
- package/dist/preprocess/config/index.js.map +1 -1
- package/dist/preprocess/config/loader.d.ts +12 -48
- package/dist/preprocess/config/loader.d.ts.map +1 -1
- package/dist/preprocess/config/loader.js +23 -13
- package/dist/preprocess/config/loader.js.map +1 -1
- package/dist/preprocess/config/normalize.d.ts +11 -10
- package/dist/preprocess/config/normalize.d.ts.map +1 -1
- package/dist/preprocess/config/normalize.js +61 -18
- package/dist/preprocess/config/normalize.js.map +1 -1
- package/dist/preprocess/config/types.d.ts +57 -22
- package/dist/preprocess/config/types.d.ts.map +1 -1
- package/dist/preprocess/include/index.d.ts +1 -1
- package/dist/preprocess/include/index.d.ts.map +1 -1
- package/dist/preprocess/include/index.js +1 -1
- package/dist/preprocess/include/index.js.map +1 -1
- package/dist/preprocess/include/resolver.d.ts +14 -8
- package/dist/preprocess/include/resolver.d.ts.map +1 -1
- package/dist/preprocess/include/resolver.js +27 -18
- package/dist/preprocess/include/resolver.js.map +1 -1
- package/dist/preprocess/index.d.ts +6 -6
- package/dist/preprocess/index.d.ts.map +1 -1
- package/dist/preprocess/index.js +4 -4
- package/dist/preprocess/index.js.map +1 -1
- package/dist/preprocess/pipeline.d.ts +20 -17
- package/dist/preprocess/pipeline.d.ts.map +1 -1
- package/dist/preprocess/pipeline.js +45 -52
- package/dist/preprocess/pipeline.js.map +1 -1
- package/dist/preprocess/types.d.ts +33 -41
- package/dist/preprocess/types.d.ts.map +1 -1
- package/dist/preprocess/types.js +0 -6
- package/dist/preprocess/types.js.map +1 -1
- package/dist/types/ast.generated.d.ts +84 -34
- 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 +161 -68
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
|
|
3
3
|
*
|
|
4
4
|
* Generated from: schema/spec-ast.schema.json
|
|
5
|
-
* Generated at: 2026-01-
|
|
5
|
+
* Generated at: 2026-01-27T16:58:52.776Z
|
|
6
6
|
*
|
|
7
7
|
* Regenerate with: npx ts-node scripts/generate-types.ts
|
|
8
8
|
*/
|
|
@@ -45,7 +45,9 @@ export function isInline(node) {
|
|
|
45
45
|
const type = node.type;
|
|
46
46
|
return [
|
|
47
47
|
'text', 'emphasis', 'strong', 'inlineCode', 'link',
|
|
48
|
-
'image', 'definition', '
|
|
48
|
+
'image', 'definition', 'requirement', 'issue', 'cite', 'variable',
|
|
49
|
+
'workspaceDfnReference', 'workspaceIdlReference', 'workspaceElementReference',
|
|
50
|
+
'externalDfnReference', 'externalIdlReference', 'externalElementReference'
|
|
49
51
|
].includes(type);
|
|
50
52
|
}
|
|
51
53
|
/**
|
|
@@ -55,7 +57,11 @@ export function isIndexableInline(node) {
|
|
|
55
57
|
if (typeof node !== 'object' || node === null)
|
|
56
58
|
return false;
|
|
57
59
|
const type = node.type;
|
|
58
|
-
return [
|
|
60
|
+
return [
|
|
61
|
+
'definition', 'requirement', 'issue',
|
|
62
|
+
'workspaceDfnReference', 'workspaceIdlReference', 'workspaceElementReference',
|
|
63
|
+
'externalDfnReference', 'externalIdlReference', 'externalElementReference'
|
|
64
|
+
].includes(type);
|
|
59
65
|
}
|
|
60
66
|
/**
|
|
61
67
|
* Type guard for BlockExample (indexable block)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.generated.js","sourceRoot":"","sources":["../../src/types/ast.generated.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"ast.generated.js","sourceRoot":"","sources":["../../src/types/ast.generated.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2kBH;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAK,IAAY,CAAC,IAAI,KAAK,WAAW,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAK,IAAY,CAAC,IAAI,KAAK,UAAU,CAAC;AACxF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAK,IAAY,CAAC,IAAI,KAAK,SAAS,CAAC;AACvF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAa;IACnC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC;IAChC,OAAO;QACL,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;QAC9C,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM;KACvD,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC;IAChC,OAAO;QACL,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM;QAClD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU;QACjE,uBAAuB,EAAE,uBAAuB,EAAE,2BAA2B;QAC7E,sBAAsB,EAAE,sBAAsB,EAAE,0BAA0B;KAC3E,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC;IAChC,OAAO;QACL,YAAY,EAAE,aAAa,EAAE,OAAO;QACpC,uBAAuB,EAAE,uBAAuB,EAAE,2BAA2B;QAC7E,sBAAsB,EAAE,sBAAsB,EAAE,0BAA0B;KAC3E,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAK,IAAY,CAAC,IAAI,KAAK,SAAS,CAAC;AACvF,CAAC"}
|
|
@@ -3,17 +3,17 @@ import { MemoryFileProvider } from '#src/file-provider/memory';
|
|
|
3
3
|
import { sortEntriesByDeps } from '../sort.js';
|
|
4
4
|
import { generateIdFromPath, getConfigPath } from '#src/preprocess/config/doc-config';
|
|
5
5
|
describe('generateIdFromPath', () => {
|
|
6
|
-
it('should generate id from parent folder
|
|
7
|
-
expect(generateIdFromPath('/spec/workspace/pkg-a/index.html')).toBe('pkg-a
|
|
8
|
-
expect(generateIdFromPath('/spec/overview/intro.md')).toBe('overview
|
|
9
|
-
expect(generateIdFromPath('/docs/api/reference.html')).toBe('api
|
|
6
|
+
it('should generate id from parent folder', () => {
|
|
7
|
+
expect(generateIdFromPath('/spec/workspace/pkg-a/index.html')).toBe('pkg-a');
|
|
8
|
+
expect(generateIdFromPath('/spec/overview/intro.md')).toBe('overview');
|
|
9
|
+
expect(generateIdFromPath('/docs/api/reference.html')).toBe('api');
|
|
10
10
|
});
|
|
11
11
|
it('should handle single-segment paths', () => {
|
|
12
12
|
expect(generateIdFromPath('/index.html')).toBe('index');
|
|
13
13
|
expect(generateIdFromPath('readme.md')).toBe('readme');
|
|
14
14
|
});
|
|
15
15
|
it('should handle Windows-style paths', () => {
|
|
16
|
-
expect(generateIdFromPath('C:\\spec\\core\\index.html')).toBe('core
|
|
16
|
+
expect(generateIdFromPath('C:\\spec\\core\\index.html')).toBe('core');
|
|
17
17
|
});
|
|
18
18
|
});
|
|
19
19
|
describe('getConfigPath', () => {
|
|
@@ -62,14 +62,14 @@ describe('sortEntriesByDeps', () => {
|
|
|
62
62
|
// Only core has config, depends on auto-generated ID
|
|
63
63
|
fileProvider.setFile('/spec/core/config.json', JSON.stringify({
|
|
64
64
|
id: 'core',
|
|
65
|
-
deps: ['overview
|
|
65
|
+
deps: ['overview'] // auto-generated ID is now just the parent folder
|
|
66
66
|
}));
|
|
67
67
|
const result = await sortEntriesByDeps([
|
|
68
68
|
{ entry: '/spec/core/index.html' },
|
|
69
|
-
{ entry: '/spec/overview/index.html' }, // will get auto-generated ID
|
|
69
|
+
{ entry: '/spec/overview/index.html' }, // will get auto-generated ID 'overview'
|
|
70
70
|
], fileProvider);
|
|
71
71
|
expect(result.errors).toHaveLength(0);
|
|
72
|
-
// overview should come before core (core depends on overview
|
|
72
|
+
// overview should come before core (core depends on overview)
|
|
73
73
|
expect(result.entries[0].entry).toBe('/spec/overview/index.html');
|
|
74
74
|
expect(result.entries[1].entry).toBe('/spec/core/index.html');
|
|
75
75
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort.test.js","sourceRoot":"","sources":["../../../src/workspace/__tests__/sort.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEtF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"sort.test.js","sourceRoot":"","sources":["../../../src/workspace/__tests__/sort.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SpeculatorPipeline } from '#src/pipeline/runner';
|
|
2
|
+
import type { FileProvider } from '#src/file-provider/types';
|
|
3
|
+
import type { Workspace } from '#src/types/ast.generated';
|
|
4
|
+
import type { WorkspaceConfig } from '#src/preprocess/types';
|
|
5
|
+
/**
|
|
6
|
+
* Result of building workspaces
|
|
7
|
+
*/
|
|
8
|
+
export interface BuildWorkspacesResult {
|
|
9
|
+
/** Map of workspace name -> built Workspace AST */
|
|
10
|
+
workspaces: Record<string, Workspace>;
|
|
11
|
+
/** Any errors encountered during process */
|
|
12
|
+
errors: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Build multiple isolated workspaces from a configuration
|
|
16
|
+
*
|
|
17
|
+
* @param config - Workspace configuration (map of name -> entries)
|
|
18
|
+
* @param fileProvider - File provider for reading specs
|
|
19
|
+
* @param configPath - Optional path to the config file (for relative path resolution)
|
|
20
|
+
* @param pipeline - Optional pipeline instance (uses core plugins by default)
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildWorkspaces(config: WorkspaceConfig, _fileProvider?: FileProvider, configPath?: string, pipeline?: SpeculatorPipeline): Promise<BuildWorkspacesResult>;
|
|
23
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/workspace/builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACjC,MAAM,EAAE,eAAe,EACvB,aAAa,CAAC,EAAE,YAAY,EAC5B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,kBAAkB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAwChC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { resolve, dirname } from 'path';
|
|
2
|
+
import { SpeculatorPipeline } from '#src/pipeline/runner';
|
|
3
|
+
import { corePlugins } from '#src/postprocess/index';
|
|
4
|
+
import { sortEntriesByDeps } from '#src/workspace/sort';
|
|
5
|
+
import { NodeFileProvider } from '#src/file-provider/node';
|
|
6
|
+
/**
|
|
7
|
+
* Build multiple isolated workspaces from a configuration
|
|
8
|
+
*
|
|
9
|
+
* @param config - Workspace configuration (map of name -> entries)
|
|
10
|
+
* @param fileProvider - File provider for reading specs
|
|
11
|
+
* @param configPath - Optional path to the config file (for relative path resolution)
|
|
12
|
+
* @param pipeline - Optional pipeline instance (uses core plugins by default)
|
|
13
|
+
*/
|
|
14
|
+
export async function buildWorkspaces(config, _fileProvider, configPath, pipeline) {
|
|
15
|
+
const fileProvider = _fileProvider ?? new NodeFileProvider();
|
|
16
|
+
const workspaces = {};
|
|
17
|
+
const errors = [];
|
|
18
|
+
const p = pipeline ?? new SpeculatorPipeline(corePlugins);
|
|
19
|
+
const configDir = configPath ? dirname(resolve(configPath)) : process.cwd();
|
|
20
|
+
for (const [name, entries] of Object.entries(config)) {
|
|
21
|
+
try {
|
|
22
|
+
// 1. Resolve entry paths relative to config file
|
|
23
|
+
const resolvedEntries = entries.map(e => ({
|
|
24
|
+
...e,
|
|
25
|
+
entry: resolve(configDir, e.entry)
|
|
26
|
+
}));
|
|
27
|
+
// 2. Sort entries by dependencies
|
|
28
|
+
const sortResult = await sortEntriesByDeps(resolvedEntries, fileProvider);
|
|
29
|
+
if (sortResult.errors.length > 0) {
|
|
30
|
+
errors.push(...sortResult.errors.map(err => `[${name}] ${err}`));
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// 3. Build workspace AST
|
|
34
|
+
const result = await p.runWorkspace({
|
|
35
|
+
entries: sortResult.entries,
|
|
36
|
+
fileProvider,
|
|
37
|
+
});
|
|
38
|
+
if (!result.workspace) {
|
|
39
|
+
errors.push(`[${name}] Failed to build workspace AST.`);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
workspaces[name] = result.workspace;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
errors.push(`[${name}] ${error instanceof Error ? error.message : String(error)}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return { workspaces, errors };
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/workspace/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAY3D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,MAAuB,EACvB,aAA4B,EAC5B,UAAmB,EACnB,QAA6B;IAE7B,MAAM,YAAY,GAAG,aAAa,IAAI,IAAI,gBAAgB,EAAE,CAAC;IAC7D,MAAM,UAAU,GAA8B,EAAE,CAAC;IACjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,QAAQ,IAAI,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAE5E,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC;YACD,iDAAiD;YACjD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACtC,GAAG,CAAC;gBACJ,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC;aACrC,CAAC,CAAC,CAAC;YAEJ,kCAAkC;YAClC,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YAC1E,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;gBACjE,SAAS;YACb,CAAC;YAED,yBAAyB;YACzB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC;gBAChC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,YAAY;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,kCAAkC,CAAC,CAAC;gBACxD,SAAS;YACb,CAAC;YAED,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;IACL,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/workspace/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openuji/speculator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "AST-first specification processor with schema-central architecture",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
"#src/*": "./dist/*.js"
|
|
10
10
|
},
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"@changesets/cli": "^2.29.8",
|
|
13
12
|
"@types/hast": "^3.0.4",
|
|
14
13
|
"@types/mdast": "^4.0.4",
|
|
15
14
|
"@types/node": "^20.10.0",
|
|
@@ -280,75 +280,71 @@
|
|
|
280
280
|
}
|
|
281
281
|
]
|
|
282
282
|
},
|
|
283
|
-
"
|
|
283
|
+
"WorkspaceReferenceBase": {
|
|
284
|
+
"type": "object",
|
|
285
|
+
"properties": {
|
|
286
|
+
"targetTerm": { "type": "string" },
|
|
287
|
+
"candidateTerms": { "type": "array", "items": { "type": "string" } },
|
|
288
|
+
"forContexts": { "type": "array", "items": { "type": ["string", "null"] } },
|
|
289
|
+
"targetId": { "type": "string" },
|
|
290
|
+
"targetDocumentId": { "type": "string" },
|
|
291
|
+
"children": { "type": "array", "items": { "$ref": "#/definitions/Inline" } }
|
|
292
|
+
},
|
|
293
|
+
"required": ["targetTerm", "children"]
|
|
294
|
+
},
|
|
295
|
+
"ExternalReferenceBase": {
|
|
296
|
+
"type": "object",
|
|
297
|
+
"properties": {
|
|
298
|
+
"targetTerm": { "type": "string" },
|
|
299
|
+
"candidateTerms": { "type": "array", "items": { "type": "string" } },
|
|
300
|
+
"forContexts": { "type": "array", "items": { "type": ["string", "null"] } },
|
|
301
|
+
"xrefSpec": { "type": "string" },
|
|
302
|
+
"targetId": { "type": "string" },
|
|
303
|
+
"url": { "type": "string" },
|
|
304
|
+
"children": { "type": "array", "items": { "$ref": "#/definitions/Inline" } }
|
|
305
|
+
},
|
|
306
|
+
"required": ["targetTerm", "xrefSpec", "children"]
|
|
307
|
+
},
|
|
308
|
+
"InlineWorkspaceDfnReference": {
|
|
284
309
|
"allOf": [
|
|
285
|
-
{
|
|
286
|
-
|
|
287
|
-
},
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
"xrefSpec": {
|
|
324
|
-
"type": [
|
|
325
|
-
"string",
|
|
326
|
-
"null"
|
|
327
|
-
],
|
|
328
|
-
"description": "Explicit spec to search from data-xref-spec. Restricts external search."
|
|
329
|
-
},
|
|
330
|
-
"allowExternal": {
|
|
331
|
-
"type": "boolean",
|
|
332
|
-
"description": "Whether external lookup is allowed. False if data-allow-external='no'.",
|
|
333
|
-
"default": true
|
|
334
|
-
},
|
|
335
|
-
"targetId": {
|
|
336
|
-
"type": "string",
|
|
337
|
-
"description": "Resolved ID of the referenced definition. Filled during resolve phase."
|
|
338
|
-
},
|
|
339
|
-
"children": {
|
|
340
|
-
"type": "array",
|
|
341
|
-
"items": {
|
|
342
|
-
"$ref": "#/definitions/Inline"
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
},
|
|
346
|
-
"required": [
|
|
347
|
-
"type",
|
|
348
|
-
"targetTerm",
|
|
349
|
-
"children"
|
|
350
|
-
]
|
|
351
|
-
}
|
|
310
|
+
{ "$ref": "#/definitions/BaseNode" },
|
|
311
|
+
{ "$ref": "#/definitions/WorkspaceReferenceBase" },
|
|
312
|
+
{ "type": "object", "properties": { "type": { "const": "workspaceDfnReference" } }, "required": ["type"] }
|
|
313
|
+
]
|
|
314
|
+
},
|
|
315
|
+
"InlineWorkspaceIdlReference": {
|
|
316
|
+
"allOf": [
|
|
317
|
+
{ "$ref": "#/definitions/BaseNode" },
|
|
318
|
+
{ "$ref": "#/definitions/WorkspaceReferenceBase" },
|
|
319
|
+
{ "type": "object", "properties": { "type": { "const": "workspaceIdlReference" } }, "required": ["type"] }
|
|
320
|
+
]
|
|
321
|
+
},
|
|
322
|
+
"InlineWorkspaceElementReference": {
|
|
323
|
+
"allOf": [
|
|
324
|
+
{ "$ref": "#/definitions/BaseNode" },
|
|
325
|
+
{ "$ref": "#/definitions/WorkspaceReferenceBase" },
|
|
326
|
+
{ "type": "object", "properties": { "type": { "const": "workspaceElementReference" } }, "required": ["type"] }
|
|
327
|
+
]
|
|
328
|
+
},
|
|
329
|
+
"InlineExternalDfnReference": {
|
|
330
|
+
"allOf": [
|
|
331
|
+
{ "$ref": "#/definitions/BaseNode" },
|
|
332
|
+
{ "$ref": "#/definitions/ExternalReferenceBase" },
|
|
333
|
+
{ "type": "object", "properties": { "type": { "const": "externalDfnReference" } }, "required": ["type"] }
|
|
334
|
+
]
|
|
335
|
+
},
|
|
336
|
+
"InlineExternalIdlReference": {
|
|
337
|
+
"allOf": [
|
|
338
|
+
{ "$ref": "#/definitions/BaseNode" },
|
|
339
|
+
{ "$ref": "#/definitions/ExternalReferenceBase" },
|
|
340
|
+
{ "type": "object", "properties": { "type": { "const": "externalIdlReference" } }, "required": ["type"] }
|
|
341
|
+
]
|
|
342
|
+
},
|
|
343
|
+
"InlineExternalElementReference": {
|
|
344
|
+
"allOf": [
|
|
345
|
+
{ "$ref": "#/definitions/BaseNode" },
|
|
346
|
+
{ "$ref": "#/definitions/ExternalReferenceBase" },
|
|
347
|
+
{ "type": "object", "properties": { "type": { "const": "externalElementReference" } }, "required": ["type"] }
|
|
352
348
|
]
|
|
353
349
|
},
|
|
354
350
|
"InlineRequirement": {
|
|
@@ -485,6 +481,14 @@
|
|
|
485
481
|
],
|
|
486
482
|
"description": "Fragment identifier from data-cite (e.g., 'the-a-element')."
|
|
487
483
|
},
|
|
484
|
+
"targetId": {
|
|
485
|
+
"type": "string",
|
|
486
|
+
"description": "Resolved ID of the bibliography entry. Filled during resolve phase."
|
|
487
|
+
},
|
|
488
|
+
"url": {
|
|
489
|
+
"type": "string",
|
|
490
|
+
"description": "Resolved URL of the citation. Filled during resolve phase."
|
|
491
|
+
},
|
|
488
492
|
"children": {
|
|
489
493
|
"type": "array",
|
|
490
494
|
"items": {
|
|
@@ -500,6 +504,30 @@
|
|
|
500
504
|
}
|
|
501
505
|
]
|
|
502
506
|
},
|
|
507
|
+
"InlineVariable": {
|
|
508
|
+
"allOf": [
|
|
509
|
+
{
|
|
510
|
+
"$ref": "#/definitions/BaseNode"
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
"type": "object",
|
|
514
|
+
"description": "Algorithm variable marker (e.g., |x| in ReSpec). Rendered as <var> in HTML.",
|
|
515
|
+
"properties": {
|
|
516
|
+
"type": {
|
|
517
|
+
"const": "variable"
|
|
518
|
+
},
|
|
519
|
+
"value": {
|
|
520
|
+
"type": "string",
|
|
521
|
+
"description": "The variable name or content."
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
"required": [
|
|
525
|
+
"type",
|
|
526
|
+
"value"
|
|
527
|
+
]
|
|
528
|
+
}
|
|
529
|
+
]
|
|
530
|
+
},
|
|
503
531
|
"Inline": {
|
|
504
532
|
"oneOf": [
|
|
505
533
|
{
|
|
@@ -534,6 +562,9 @@
|
|
|
534
562
|
},
|
|
535
563
|
{
|
|
536
564
|
"$ref": "#/definitions/InlineCite"
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"$ref": "#/definitions/InlineVariable"
|
|
537
568
|
}
|
|
538
569
|
]
|
|
539
570
|
},
|
|
@@ -1051,6 +1082,10 @@
|
|
|
1051
1082
|
"term": {
|
|
1052
1083
|
"type": "string"
|
|
1053
1084
|
},
|
|
1085
|
+
"documentId": {
|
|
1086
|
+
"type": "string",
|
|
1087
|
+
"description": "ID of the document containing this definition"
|
|
1088
|
+
},
|
|
1054
1089
|
"linkTexts": {
|
|
1055
1090
|
"type": "array",
|
|
1056
1091
|
"items": {
|
|
@@ -1086,12 +1121,22 @@
|
|
|
1086
1121
|
"type": "object",
|
|
1087
1122
|
"description": "Entry in the references index, extracted from InlineReference nodes",
|
|
1088
1123
|
"properties": {
|
|
1124
|
+
"type": {
|
|
1125
|
+
"type": "string",
|
|
1126
|
+
"description": "Concrete reference type (e.g., workspaceDfnReference, externalIdlReference)"
|
|
1127
|
+
},
|
|
1089
1128
|
"targetId": {
|
|
1090
1129
|
"type": "string"
|
|
1091
1130
|
},
|
|
1092
1131
|
"targetTerm": {
|
|
1093
1132
|
"type": "string"
|
|
1094
1133
|
},
|
|
1134
|
+
"targetDocumentId": {
|
|
1135
|
+
"type": "string"
|
|
1136
|
+
},
|
|
1137
|
+
"url": {
|
|
1138
|
+
"type": "string"
|
|
1139
|
+
},
|
|
1095
1140
|
"sourcePos": {
|
|
1096
1141
|
"$ref": "#/definitions/SourcePos"
|
|
1097
1142
|
}
|
|
@@ -1318,6 +1363,29 @@
|
|
|
1318
1363
|
}
|
|
1319
1364
|
}
|
|
1320
1365
|
},
|
|
1366
|
+
"InlineReference": {
|
|
1367
|
+
"description": "Union of all inline reference types",
|
|
1368
|
+
"oneOf": [
|
|
1369
|
+
{
|
|
1370
|
+
"$ref": "#/definitions/InlineWorkspaceDfnReference"
|
|
1371
|
+
},
|
|
1372
|
+
{
|
|
1373
|
+
"$ref": "#/definitions/InlineWorkspaceIdlReference"
|
|
1374
|
+
},
|
|
1375
|
+
{
|
|
1376
|
+
"$ref": "#/definitions/InlineWorkspaceElementReference"
|
|
1377
|
+
},
|
|
1378
|
+
{
|
|
1379
|
+
"$ref": "#/definitions/InlineExternalDfnReference"
|
|
1380
|
+
},
|
|
1381
|
+
{
|
|
1382
|
+
"$ref": "#/definitions/InlineExternalIdlReference"
|
|
1383
|
+
},
|
|
1384
|
+
{
|
|
1385
|
+
"$ref": "#/definitions/InlineExternalElementReference"
|
|
1386
|
+
}
|
|
1387
|
+
]
|
|
1388
|
+
},
|
|
1321
1389
|
"DocumentMetadata": {
|
|
1322
1390
|
"type": "object",
|
|
1323
1391
|
"description": "Document-level metadata from frontmatter or config",
|
|
@@ -1376,8 +1444,28 @@
|
|
|
1376
1444
|
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
1377
1445
|
"description": "ISO 8601 date format (YYYY-MM-DD)"
|
|
1378
1446
|
},
|
|
1447
|
+
"lastUpdateDate": {
|
|
1448
|
+
"type": "string",
|
|
1449
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
1450
|
+
"description": "Last update date (YYYY-MM-DD)"
|
|
1451
|
+
},
|
|
1379
1452
|
"abstract": {
|
|
1380
1453
|
"type": "string"
|
|
1454
|
+
},
|
|
1455
|
+
"maturityLevel": {
|
|
1456
|
+
"type": "string",
|
|
1457
|
+
"enum": [
|
|
1458
|
+
"incubating",
|
|
1459
|
+
"draft",
|
|
1460
|
+
"prerelease",
|
|
1461
|
+
"stable"
|
|
1462
|
+
],
|
|
1463
|
+
"description": "Normalized maturity level"
|
|
1464
|
+
},
|
|
1465
|
+
"custom": {
|
|
1466
|
+
"type": "object",
|
|
1467
|
+
"description": "Highest priority user-defined properties",
|
|
1468
|
+
"additionalProperties": true
|
|
1381
1469
|
}
|
|
1382
1470
|
}
|
|
1383
1471
|
},
|
|
@@ -1388,6 +1476,10 @@
|
|
|
1388
1476
|
"type": {
|
|
1389
1477
|
"const": "document"
|
|
1390
1478
|
},
|
|
1479
|
+
"id": {
|
|
1480
|
+
"type": "string",
|
|
1481
|
+
"description": "Document identifier, used as slug for internal link resolution. Synced from config.id"
|
|
1482
|
+
},
|
|
1391
1483
|
"metadata": {
|
|
1392
1484
|
"$ref": "#/definitions/DocumentMetadata"
|
|
1393
1485
|
},
|
|
@@ -1418,6 +1510,7 @@
|
|
|
1418
1510
|
},
|
|
1419
1511
|
"required": [
|
|
1420
1512
|
"type",
|
|
1513
|
+
"id",
|
|
1421
1514
|
"children"
|
|
1422
1515
|
]
|
|
1423
1516
|
}
|