@openuji/speculator 0.3.1 → 0.4.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/README.md +111 -50
- package/dist/file-provider/__tests__/compliance.test.d.ts +5 -0
- package/dist/file-provider/__tests__/compliance.test.d.ts.map +1 -0
- package/dist/file-provider/__tests__/compliance.test.js +52 -0
- package/dist/file-provider/__tests__/compliance.test.js.map +1 -0
- package/dist/file-provider/index.d.ts +8 -0
- package/dist/file-provider/index.d.ts.map +1 -0
- package/dist/file-provider/index.js +10 -0
- package/dist/file-provider/index.js.map +1 -0
- package/dist/file-provider/memory.d.ts +46 -0
- package/dist/file-provider/memory.d.ts.map +1 -0
- package/dist/file-provider/memory.js +99 -0
- package/dist/file-provider/memory.js.map +1 -0
- package/dist/file-provider/node.d.ts +32 -0
- package/dist/file-provider/node.d.ts.map +1 -0
- package/dist/file-provider/node.js +65 -0
- package/dist/file-provider/node.js.map +1 -0
- package/dist/file-provider/types.d.ts +69 -0
- package/dist/file-provider/types.d.ts.map +1 -0
- package/dist/file-provider/types.js +47 -0
- package/dist/file-provider/types.js.map +1 -0
- package/dist/file-provider/web.d.ts +32 -0
- package/dist/file-provider/web.d.ts.map +1 -0
- package/dist/file-provider/web.js +77 -0
- package/dist/file-provider/web.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/parse/AsideHtmlParser.d.ts +12 -0
- package/dist/parse/AsideHtmlParser.d.ts.map +1 -0
- package/dist/parse/AsideHtmlParser.js +74 -0
- package/dist/parse/AsideHtmlParser.js.map +1 -0
- package/dist/parse/BlockquoteHtmlParser.d.ts +11 -0
- package/dist/parse/BlockquoteHtmlParser.d.ts.map +1 -0
- package/dist/parse/BlockquoteHtmlParser.js +28 -0
- package/dist/parse/BlockquoteHtmlParser.js.map +1 -0
- package/dist/parse/BlockquoteMarkdownParser.d.ts +11 -0
- package/dist/parse/BlockquoteMarkdownParser.d.ts.map +1 -0
- package/dist/parse/BlockquoteMarkdownParser.js +26 -0
- package/dist/parse/BlockquoteMarkdownParser.js.map +1 -0
- package/dist/parse/CodeHtmlParser.d.ts +11 -0
- package/dist/parse/CodeHtmlParser.d.ts.map +1 -0
- package/dist/parse/CodeHtmlParser.js +38 -0
- package/dist/parse/CodeHtmlParser.js.map +1 -0
- package/dist/parse/CodeMarkdownParser.d.ts +11 -0
- package/dist/parse/CodeMarkdownParser.d.ts.map +1 -0
- package/dist/parse/CodeMarkdownParser.js +29 -0
- package/dist/parse/CodeMarkdownParser.js.map +1 -0
- package/dist/parse/DfnHtmlParser.d.ts +12 -0
- package/dist/parse/DfnHtmlParser.d.ts.map +1 -0
- package/dist/parse/DfnHtmlParser.js +53 -0
- package/dist/parse/DfnHtmlParser.js.map +1 -0
- package/dist/parse/HeadingsHtmlParser.d.ts +11 -0
- package/dist/parse/HeadingsHtmlParser.d.ts.map +1 -0
- package/dist/parse/HeadingsHtmlParser.js +30 -0
- package/dist/parse/HeadingsHtmlParser.js.map +1 -0
- package/dist/parse/HeadingsMarkdownParser.d.ts +11 -0
- package/dist/parse/HeadingsMarkdownParser.d.ts.map +1 -0
- package/dist/parse/HeadingsMarkdownParser.js +26 -0
- package/dist/parse/HeadingsMarkdownParser.js.map +1 -0
- package/dist/parse/InlinesHtmlParser.d.ts +12 -0
- package/dist/parse/InlinesHtmlParser.d.ts.map +1 -0
- package/dist/parse/InlinesHtmlParser.js +150 -0
- package/dist/parse/InlinesHtmlParser.js.map +1 -0
- package/dist/parse/InlinesMarkdownParser.d.ts +11 -0
- package/dist/parse/InlinesMarkdownParser.d.ts.map +1 -0
- package/dist/parse/InlinesMarkdownParser.js +91 -0
- package/dist/parse/InlinesMarkdownParser.js.map +1 -0
- package/dist/parse/ListsHtmlParser.d.ts +11 -0
- package/dist/parse/ListsHtmlParser.d.ts.map +1 -0
- package/dist/parse/ListsHtmlParser.js +71 -0
- package/dist/parse/ListsHtmlParser.js.map +1 -0
- package/dist/parse/ListsMarkdownParser.d.ts +11 -0
- package/dist/parse/ListsMarkdownParser.d.ts.map +1 -0
- package/dist/parse/ListsMarkdownParser.js +46 -0
- package/dist/parse/ListsMarkdownParser.js.map +1 -0
- package/dist/parse/MiscHtmlParser.d.ts +12 -0
- package/dist/parse/MiscHtmlParser.d.ts.map +1 -0
- package/dist/parse/MiscHtmlParser.js +85 -0
- package/dist/parse/MiscHtmlParser.js.map +1 -0
- package/dist/parse/MiscMarkdownParser.d.ts +11 -0
- package/dist/parse/MiscMarkdownParser.d.ts.map +1 -0
- package/dist/parse/MiscMarkdownParser.js +38 -0
- package/dist/parse/MiscMarkdownParser.js.map +1 -0
- package/dist/parse/ParagraphsHtmlParser.d.ts +11 -0
- package/dist/parse/ParagraphsHtmlParser.d.ts.map +1 -0
- package/dist/parse/ParagraphsHtmlParser.js +30 -0
- package/dist/parse/ParagraphsHtmlParser.js.map +1 -0
- package/dist/parse/ParagraphsMarkdownParser.d.ts +11 -0
- package/dist/parse/ParagraphsMarkdownParser.d.ts.map +1 -0
- package/dist/parse/ParagraphsMarkdownParser.js +25 -0
- package/dist/parse/ParagraphsMarkdownParser.js.map +1 -0
- package/dist/parse/SectionsHtmlParser.d.ts +12 -0
- package/dist/parse/SectionsHtmlParser.d.ts.map +1 -0
- package/dist/parse/SectionsHtmlParser.js +58 -0
- package/dist/parse/SectionsHtmlParser.js.map +1 -0
- package/dist/parse/TablesHtmlParser.d.ts +11 -0
- package/dist/parse/TablesHtmlParser.d.ts.map +1 -0
- package/dist/parse/TablesHtmlParser.js +81 -0
- package/dist/parse/TablesHtmlParser.js.map +1 -0
- package/dist/parse/TablesMarkdownParser.d.ts +11 -0
- package/dist/parse/TablesMarkdownParser.d.ts.map +1 -0
- package/dist/parse/TablesMarkdownParser.js +56 -0
- package/dist/parse/TablesMarkdownParser.js.map +1 -0
- package/dist/parse/XrefHtmlParser.d.ts +12 -0
- package/dist/parse/XrefHtmlParser.d.ts.map +1 -0
- package/dist/parse/XrefHtmlParser.js +124 -0
- package/dist/parse/XrefHtmlParser.js.map +1 -0
- package/dist/parse/__tests__/assembler.test.d.ts +5 -0
- package/dist/parse/__tests__/assembler.test.d.ts.map +1 -0
- package/dist/parse/__tests__/assembler.test.js +135 -0
- package/dist/parse/__tests__/assembler.test.js.map +1 -0
- package/dist/parse/__tests__/html.test.d.ts +5 -0
- package/dist/parse/__tests__/html.test.d.ts.map +1 -0
- package/dist/parse/__tests__/html.test.js +149 -0
- package/dist/parse/__tests__/html.test.js.map +1 -0
- package/dist/parse/__tests__/markdown.test.d.ts +5 -0
- package/dist/parse/__tests__/markdown.test.d.ts.map +1 -0
- package/dist/parse/__tests__/markdown.test.js +133 -0
- package/dist/parse/__tests__/markdown.test.js.map +1 -0
- package/dist/parse/__tests__/pipeline.test.d.ts +5 -0
- package/dist/parse/__tests__/pipeline.test.d.ts.map +1 -0
- package/dist/parse/__tests__/pipeline.test.js +215 -0
- package/dist/parse/__tests__/pipeline.test.js.map +1 -0
- package/dist/parse/__tests__/respec.test.d.ts +7 -0
- package/dist/parse/__tests__/respec.test.d.ts.map +1 -0
- package/dist/parse/__tests__/respec.test.js +151 -0
- package/dist/parse/__tests__/respec.test.js.map +1 -0
- package/dist/parse/assembler.d.ts +20 -0
- package/dist/parse/assembler.d.ts.map +1 -0
- package/dist/parse/assembler.js +175 -0
- package/dist/parse/assembler.js.map +1 -0
- package/dist/parse/html/AsideHtmlParser.d.ts +12 -0
- package/dist/parse/html/AsideHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/AsideHtmlParser.js +74 -0
- package/dist/parse/html/AsideHtmlParser.js.map +1 -0
- package/dist/parse/html/BlockquoteHtmlParser.d.ts +11 -0
- package/dist/parse/html/BlockquoteHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/BlockquoteHtmlParser.js +28 -0
- package/dist/parse/html/BlockquoteHtmlParser.js.map +1 -0
- package/dist/parse/html/CodeHtmlParser.d.ts +11 -0
- package/dist/parse/html/CodeHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/CodeHtmlParser.js +38 -0
- package/dist/parse/html/CodeHtmlParser.js.map +1 -0
- package/dist/parse/html/DfnHtmlParser.d.ts +12 -0
- package/dist/parse/html/DfnHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/DfnHtmlParser.js +53 -0
- package/dist/parse/html/DfnHtmlParser.js.map +1 -0
- package/dist/parse/html/HeadingsHtmlParser.d.ts +11 -0
- package/dist/parse/html/HeadingsHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/HeadingsHtmlParser.js +30 -0
- package/dist/parse/html/HeadingsHtmlParser.js.map +1 -0
- package/dist/parse/html/InlinesHtmlParser.d.ts +12 -0
- package/dist/parse/html/InlinesHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/InlinesHtmlParser.js +150 -0
- package/dist/parse/html/InlinesHtmlParser.js.map +1 -0
- package/dist/parse/html/ListsHtmlParser.d.ts +11 -0
- package/dist/parse/html/ListsHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/ListsHtmlParser.js +71 -0
- package/dist/parse/html/ListsHtmlParser.js.map +1 -0
- package/dist/parse/html/MiscHtmlParser.d.ts +12 -0
- package/dist/parse/html/MiscHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/MiscHtmlParser.js +85 -0
- package/dist/parse/html/MiscHtmlParser.js.map +1 -0
- package/dist/parse/html/ParagraphsHtmlParser.d.ts +11 -0
- package/dist/parse/html/ParagraphsHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/ParagraphsHtmlParser.js +30 -0
- package/dist/parse/html/ParagraphsHtmlParser.js.map +1 -0
- package/dist/parse/html/SectionsHtmlParser.d.ts +12 -0
- package/dist/parse/html/SectionsHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/SectionsHtmlParser.js +58 -0
- package/dist/parse/html/SectionsHtmlParser.js.map +1 -0
- package/dist/parse/html/TablesHtmlParser.d.ts +11 -0
- package/dist/parse/html/TablesHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/TablesHtmlParser.js +81 -0
- package/dist/parse/html/TablesHtmlParser.js.map +1 -0
- package/dist/parse/html/XrefHtmlParser.d.ts +12 -0
- package/dist/parse/html/XrefHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/XrefHtmlParser.js +125 -0
- package/dist/parse/html/XrefHtmlParser.js.map +1 -0
- package/dist/parse/html/handlers/blockquote.d.ts +9 -0
- package/dist/parse/html/handlers/blockquote.d.ts.map +1 -0
- package/dist/parse/html/handlers/blockquote.js +21 -0
- package/dist/parse/html/handlers/blockquote.js.map +1 -0
- package/dist/parse/html/handlers/code.d.ts +9 -0
- package/dist/parse/html/handlers/code.d.ts.map +1 -0
- package/dist/parse/html/handlers/code.js +31 -0
- package/dist/parse/html/handlers/code.js.map +1 -0
- package/dist/parse/html/handlers/containers.d.ts +16 -0
- package/dist/parse/html/handlers/containers.d.ts.map +1 -0
- package/dist/parse/html/handlers/containers.js +25 -0
- package/dist/parse/html/handlers/containers.js.map +1 -0
- package/dist/parse/html/handlers/heading.d.ts +9 -0
- package/dist/parse/html/handlers/heading.d.ts.map +1 -0
- package/dist/parse/html/handlers/heading.js +26 -0
- package/dist/parse/html/handlers/heading.js.map +1 -0
- package/dist/parse/html/handlers/index.d.ts +23 -0
- package/dist/parse/html/handlers/index.d.ts.map +1 -0
- package/dist/parse/html/handlers/index.js +47 -0
- package/dist/parse/html/handlers/index.js.map +1 -0
- package/dist/parse/html/handlers/inline.d.ts +35 -0
- package/dist/parse/html/handlers/inline.d.ts.map +1 -0
- package/dist/parse/html/handlers/inline.js +119 -0
- package/dist/parse/html/handlers/inline.js.map +1 -0
- package/dist/parse/html/handlers/list.d.ts +9 -0
- package/dist/parse/html/handlers/list.d.ts.map +1 -0
- package/dist/parse/html/handlers/list.js +63 -0
- package/dist/parse/html/handlers/list.js.map +1 -0
- package/dist/parse/html/handlers/paragraph.d.ts +9 -0
- package/dist/parse/html/handlers/paragraph.d.ts.map +1 -0
- package/dist/parse/html/handlers/paragraph.js +20 -0
- package/dist/parse/html/handlers/paragraph.js.map +1 -0
- package/dist/parse/html/handlers/section.d.ts +9 -0
- package/dist/parse/html/handlers/section.d.ts.map +1 -0
- package/dist/parse/html/handlers/section.js +53 -0
- package/dist/parse/html/handlers/section.js.map +1 -0
- package/dist/parse/html/index.d.ts +5 -0
- package/dist/parse/html/index.d.ts.map +1 -0
- package/dist/parse/html/index.js +12 -0
- package/dist/parse/html/index.js.map +1 -0
- package/dist/parse/html/parser.d.ts +51 -0
- package/dist/parse/html/parser.d.ts.map +1 -0
- package/dist/parse/html/parser.js +228 -0
- package/dist/parse/html/parser.js.map +1 -0
- package/dist/parse/index.d.ts +16 -0
- package/dist/parse/index.d.ts.map +1 -0
- package/dist/parse/index.js +19 -0
- package/dist/parse/index.js.map +1 -0
- package/dist/parse/markdown/BlockquoteMarkdownParser.d.ts +11 -0
- package/dist/parse/markdown/BlockquoteMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/BlockquoteMarkdownParser.js +26 -0
- package/dist/parse/markdown/BlockquoteMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/CodeMarkdownParser.d.ts +11 -0
- package/dist/parse/markdown/CodeMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/CodeMarkdownParser.js +29 -0
- package/dist/parse/markdown/CodeMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/HeadingsMarkdownParser.d.ts +11 -0
- package/dist/parse/markdown/HeadingsMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/HeadingsMarkdownParser.js +26 -0
- package/dist/parse/markdown/HeadingsMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/InlinesMarkdownParser.d.ts +11 -0
- package/dist/parse/markdown/InlinesMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/InlinesMarkdownParser.js +91 -0
- package/dist/parse/markdown/InlinesMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/ListsMarkdownParser.d.ts +11 -0
- package/dist/parse/markdown/ListsMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/ListsMarkdownParser.js +46 -0
- package/dist/parse/markdown/ListsMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/MiscMarkdownParser.d.ts +11 -0
- package/dist/parse/markdown/MiscMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/MiscMarkdownParser.js +38 -0
- package/dist/parse/markdown/MiscMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/ParagraphsMarkdownParser.d.ts +11 -0
- package/dist/parse/markdown/ParagraphsMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/ParagraphsMarkdownParser.js +25 -0
- package/dist/parse/markdown/ParagraphsMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/TablesMarkdownParser.d.ts +11 -0
- package/dist/parse/markdown/TablesMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/TablesMarkdownParser.js +56 -0
- package/dist/parse/markdown/TablesMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/handlers/blockquote.d.ts +9 -0
- package/dist/parse/markdown/handlers/blockquote.d.ts.map +1 -0
- package/dist/parse/markdown/handlers/blockquote.js +22 -0
- package/dist/parse/markdown/handlers/blockquote.js.map +1 -0
- package/dist/parse/markdown/handlers/code.d.ts +9 -0
- package/dist/parse/markdown/handlers/code.d.ts.map +1 -0
- package/dist/parse/markdown/handlers/code.js +25 -0
- package/dist/parse/markdown/handlers/code.js.map +1 -0
- package/dist/parse/markdown/handlers/heading.d.ts +9 -0
- package/dist/parse/markdown/handlers/heading.d.ts.map +1 -0
- package/dist/parse/markdown/handlers/heading.js +22 -0
- package/dist/parse/markdown/handlers/heading.js.map +1 -0
- package/dist/parse/markdown/handlers/index.d.ts +23 -0
- package/dist/parse/markdown/handlers/index.d.ts.map +1 -0
- package/dist/parse/markdown/handlers/index.js +47 -0
- package/dist/parse/markdown/handlers/index.js.map +1 -0
- package/dist/parse/markdown/handlers/inline.d.ts +35 -0
- package/dist/parse/markdown/handlers/inline.d.ts.map +1 -0
- package/dist/parse/markdown/handlers/inline.js +126 -0
- package/dist/parse/markdown/handlers/inline.js.map +1 -0
- package/dist/parse/markdown/handlers/list.d.ts +9 -0
- package/dist/parse/markdown/handlers/list.d.ts.map +1 -0
- package/dist/parse/markdown/handlers/list.js +42 -0
- package/dist/parse/markdown/handlers/list.js.map +1 -0
- package/dist/parse/markdown/handlers/misc.d.ts +15 -0
- package/dist/parse/markdown/handlers/misc.d.ts.map +1 -0
- package/dist/parse/markdown/handlers/misc.js +38 -0
- package/dist/parse/markdown/handlers/misc.js.map +1 -0
- package/dist/parse/markdown/handlers/paragraph.d.ts +9 -0
- package/dist/parse/markdown/handlers/paragraph.d.ts.map +1 -0
- package/dist/parse/markdown/handlers/paragraph.js +21 -0
- package/dist/parse/markdown/handlers/paragraph.js.map +1 -0
- package/dist/parse/markdown/handlers/table.d.ts +9 -0
- package/dist/parse/markdown/handlers/table.d.ts.map +1 -0
- package/dist/parse/markdown/handlers/table.js +52 -0
- package/dist/parse/markdown/handlers/table.js.map +1 -0
- package/dist/parse/markdown/index.d.ts +5 -0
- package/dist/parse/markdown/index.d.ts.map +1 -0
- package/dist/parse/markdown/index.js +12 -0
- package/dist/parse/markdown/index.js.map +1 -0
- package/dist/parse/markdown/parser.d.ts +51 -0
- package/dist/parse/markdown/parser.d.ts.map +1 -0
- package/dist/parse/markdown/parser.js +134 -0
- package/dist/parse/markdown/parser.js.map +1 -0
- package/dist/parse/normalize.d.ts +51 -0
- package/dist/parse/normalize.d.ts.map +1 -0
- package/dist/parse/normalize.js +78 -0
- package/dist/parse/normalize.js.map +1 -0
- package/dist/parse/parsers.d.ts +37 -0
- package/dist/parse/parsers.d.ts.map +1 -0
- package/dist/parse/parsers.js +86 -0
- package/dist/parse/parsers.js.map +1 -0
- package/dist/parse/pipeline.d.ts +41 -0
- package/dist/parse/pipeline.d.ts.map +1 -0
- package/dist/parse/pipeline.js +120 -0
- package/dist/parse/pipeline.js.map +1 -0
- package/dist/parse/registry.d.ts +156 -0
- package/dist/parse/registry.d.ts.map +1 -0
- package/dist/parse/registry.js +104 -0
- package/dist/parse/registry.js.map +1 -0
- package/dist/parse/types.d.ts +67 -0
- package/dist/parse/types.d.ts.map +1 -0
- package/dist/parse/types.js +19 -0
- package/dist/parse/types.js.map +1 -0
- package/dist/pipeline/__tests__/pipeline.test.d.ts +5 -0
- package/dist/pipeline/__tests__/pipeline.test.d.ts.map +1 -0
- package/dist/pipeline/__tests__/pipeline.test.js +69 -0
- package/dist/pipeline/__tests__/pipeline.test.js.map +1 -0
- package/dist/pipeline/__tests__/single-as-workspace.test.d.ts +2 -0
- package/dist/pipeline/__tests__/single-as-workspace.test.d.ts.map +1 -0
- package/dist/pipeline/__tests__/single-as-workspace.test.js +19 -0
- package/dist/pipeline/__tests__/single-as-workspace.test.js.map +1 -0
- package/dist/pipeline/__tests__/workspace-rules.test.d.ts +11 -0
- package/dist/pipeline/__tests__/workspace-rules.test.d.ts.map +1 -0
- package/dist/pipeline/__tests__/workspace-rules.test.js +54 -0
- package/dist/pipeline/__tests__/workspace-rules.test.js.map +1 -0
- package/dist/pipeline/__tests__/workspace.test.d.ts +2 -0
- package/dist/pipeline/__tests__/workspace.test.d.ts.map +1 -0
- package/dist/pipeline/__tests__/workspace.test.js +61 -0
- package/dist/pipeline/__tests__/workspace.test.js.map +1 -0
- package/dist/pipeline/index.d.ts +34 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +45 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/runner.d.ts +38 -0
- package/dist/pipeline/runner.d.ts.map +1 -0
- package/dist/pipeline/runner.js +128 -0
- package/dist/pipeline/runner.js.map +1 -0
- package/dist/pipeline/types.d.ts +106 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +9 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/pipeline/workspace-index.d.ts +11 -0
- package/dist/pipeline/workspace-index.d.ts.map +1 -0
- package/dist/pipeline/workspace-index.js +57 -0
- package/dist/pipeline/workspace-index.js.map +1 -0
- package/dist/plugins/__tests__/citation-transform.test.d.ts +7 -0
- package/dist/plugins/__tests__/citation-transform.test.d.ts.map +1 -0
- package/dist/plugins/__tests__/citation-transform.test.js +89 -0
- package/dist/plugins/__tests__/citation-transform.test.js.map +1 -0
- package/dist/plugins/__tests__/dfn-parsing.test.d.ts +2 -0
- package/dist/plugins/__tests__/dfn-parsing.test.d.ts.map +1 -0
- package/dist/plugins/__tests__/dfn-parsing.test.js +65 -0
- package/dist/plugins/__tests__/dfn-parsing.test.js.map +1 -0
- package/dist/plugins/__tests__/dfn-resolve.test.d.ts +5 -0
- package/dist/plugins/__tests__/dfn-resolve.test.d.ts.map +1 -0
- package/dist/plugins/__tests__/dfn-resolve.test.js +152 -0
- package/dist/plugins/__tests__/dfn-resolve.test.js.map +1 -0
- package/dist/plugins/__tests__/xref-parsing.test.d.ts +2 -0
- package/dist/plugins/__tests__/xref-parsing.test.d.ts.map +1 -0
- package/dist/plugins/__tests__/xref-parsing.test.js +66 -0
- package/dist/plugins/__tests__/xref-parsing.test.js.map +1 -0
- package/dist/plugins/aside.d.ts +12 -0
- package/dist/plugins/aside.d.ts.map +1 -0
- package/dist/plugins/aside.js +78 -0
- package/dist/plugins/aside.js.map +1 -0
- package/dist/plugins/blockquote.d.ts +11 -0
- package/dist/plugins/blockquote.d.ts.map +1 -0
- package/dist/plugins/blockquote.js +47 -0
- package/dist/plugins/blockquote.js.map +1 -0
- package/dist/plugins/citation-transform.d.ts +19 -0
- package/dist/plugins/citation-transform.d.ts.map +1 -0
- package/dist/plugins/citation-transform.js +176 -0
- package/dist/plugins/citation-transform.js.map +1 -0
- package/dist/plugins/citation.d.ts +21 -0
- package/dist/plugins/citation.d.ts.map +1 -0
- package/dist/plugins/citation.js +131 -0
- package/dist/plugins/citation.js.map +1 -0
- package/dist/plugins/code.d.ts +11 -0
- package/dist/plugins/code.d.ts.map +1 -0
- package/dist/plugins/code.js +60 -0
- package/dist/plugins/code.js.map +1 -0
- package/dist/plugins/core-html.d.ts +27 -0
- package/dist/plugins/core-html.d.ts.map +1 -0
- package/dist/plugins/core-html.js +53 -0
- package/dist/plugins/core-html.js.map +1 -0
- package/dist/plugins/core-markdown.d.ts +26 -0
- package/dist/plugins/core-markdown.d.ts.map +1 -0
- package/dist/plugins/core-markdown.js +55 -0
- package/dist/plugins/core-markdown.js.map +1 -0
- package/dist/plugins/data-cite.d.ts +12 -0
- package/dist/plugins/data-cite.d.ts.map +1 -0
- package/dist/plugins/data-cite.js +50 -0
- package/dist/plugins/data-cite.js.map +1 -0
- package/dist/plugins/dfn-resolve.d.ts +15 -0
- package/dist/plugins/dfn-resolve.d.ts.map +1 -0
- package/dist/plugins/dfn-resolve.js +257 -0
- package/dist/plugins/dfn-resolve.js.map +1 -0
- package/dist/plugins/dfn.d.ts +12 -0
- package/dist/plugins/dfn.d.ts.map +1 -0
- package/dist/plugins/dfn.js +57 -0
- package/dist/plugins/dfn.js.map +1 -0
- package/dist/plugins/directives.d.ts +8 -0
- package/dist/plugins/directives.d.ts.map +1 -0
- package/dist/plugins/directives.js +34 -0
- package/dist/plugins/directives.js.map +1 -0
- package/dist/plugins/heading.d.ts +11 -0
- package/dist/plugins/heading.d.ts.map +1 -0
- package/dist/plugins/heading.js +49 -0
- package/dist/plugins/heading.js.map +1 -0
- package/dist/plugins/index.d.ts +12 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +26 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/inline.d.ts +12 -0
- package/dist/plugins/inline.d.ts.map +1 -0
- package/dist/plugins/inline.js +234 -0
- package/dist/plugins/inline.js.map +1 -0
- package/dist/plugins/list.d.ts +11 -0
- package/dist/plugins/list.d.ts.map +1 -0
- package/dist/plugins/list.js +110 -0
- package/dist/plugins/list.js.map +1 -0
- package/dist/plugins/misc.d.ts +12 -0
- package/dist/plugins/misc.d.ts.map +1 -0
- package/dist/plugins/misc.js +116 -0
- package/dist/plugins/misc.js.map +1 -0
- package/dist/plugins/paragraph.d.ts +11 -0
- package/dist/plugins/paragraph.d.ts.map +1 -0
- package/dist/plugins/paragraph.js +48 -0
- package/dist/plugins/paragraph.js.map +1 -0
- package/dist/plugins/section.d.ts +12 -0
- package/dist/plugins/section.d.ts.map +1 -0
- package/dist/plugins/section.js +62 -0
- package/dist/plugins/section.js.map +1 -0
- package/dist/plugins/table.d.ts +11 -0
- package/dist/plugins/table.d.ts.map +1 -0
- package/dist/plugins/table.js +130 -0
- package/dist/plugins/table.js.map +1 -0
- package/dist/plugins/xref.d.ts +12 -0
- package/dist/plugins/xref.d.ts.map +1 -0
- package/dist/plugins/xref.js +92 -0
- package/dist/plugins/xref.js.map +1 -0
- package/dist/postprocess/__tests__/citation-transform.test.d.ts +7 -0
- package/dist/postprocess/__tests__/citation-transform.test.d.ts.map +1 -0
- package/dist/postprocess/__tests__/citation-transform.test.js +89 -0
- package/dist/postprocess/__tests__/citation-transform.test.js.map +1 -0
- package/dist/postprocess/__tests__/dfn-resolve.test.d.ts +5 -0
- package/dist/postprocess/__tests__/dfn-resolve.test.d.ts.map +1 -0
- package/dist/postprocess/__tests__/dfn-resolve.test.js +160 -0
- package/dist/postprocess/__tests__/dfn-resolve.test.js.map +1 -0
- package/dist/postprocess/__tests__/section-id.test.d.ts +5 -0
- package/dist/postprocess/__tests__/section-id.test.d.ts.map +1 -0
- package/dist/postprocess/__tests__/section-id.test.js +222 -0
- package/dist/postprocess/__tests__/section-id.test.js.map +1 -0
- package/dist/postprocess/citation-transform.d.ts +19 -0
- package/dist/postprocess/citation-transform.d.ts.map +1 -0
- package/dist/postprocess/citation-transform.js +176 -0
- package/dist/postprocess/citation-transform.js.map +1 -0
- package/dist/postprocess/dfn-index.d.ts +16 -0
- package/dist/postprocess/dfn-index.d.ts.map +1 -0
- package/dist/postprocess/dfn-index.js +72 -0
- package/dist/postprocess/dfn-index.js.map +1 -0
- package/dist/postprocess/dfn-resolve.d.ts +15 -0
- package/dist/postprocess/dfn-resolve.d.ts.map +1 -0
- package/dist/postprocess/dfn-resolve.js +257 -0
- package/dist/postprocess/dfn-resolve.js.map +1 -0
- package/dist/postprocess/index.d.ts +15 -0
- package/dist/postprocess/index.d.ts.map +1 -0
- package/dist/postprocess/index.js +36 -0
- package/dist/postprocess/index.js.map +1 -0
- package/dist/postprocess/plugins/citation-transform.d.ts +19 -0
- package/dist/postprocess/plugins/citation-transform.d.ts.map +1 -0
- package/dist/postprocess/plugins/citation-transform.js +179 -0
- package/dist/postprocess/plugins/citation-transform.js.map +1 -0
- package/dist/postprocess/plugins/dfn-index.d.ts +16 -0
- package/dist/postprocess/plugins/dfn-index.d.ts.map +1 -0
- package/dist/postprocess/plugins/dfn-index.js +76 -0
- package/dist/postprocess/plugins/dfn-index.js.map +1 -0
- package/dist/postprocess/plugins/reference-resolve.d.ts +19 -0
- package/dist/postprocess/plugins/reference-resolve.d.ts.map +1 -0
- package/dist/postprocess/plugins/reference-resolve.js +103 -0
- package/dist/postprocess/plugins/reference-resolve.js.map +1 -0
- package/dist/postprocess/plugins/section-id.d.ts +16 -0
- package/dist/postprocess/plugins/section-id.d.ts.map +1 -0
- package/dist/postprocess/plugins/section-id.js +116 -0
- package/dist/postprocess/plugins/section-id.js.map +1 -0
- package/dist/postprocess/plugins/walk-ast.d.ts +38 -0
- package/dist/postprocess/plugins/walk-ast.d.ts.map +1 -0
- package/dist/postprocess/plugins/walk-ast.js +92 -0
- package/dist/postprocess/plugins/walk-ast.js.map +1 -0
- package/dist/postprocess/reference-resolve.d.ts +19 -0
- package/dist/postprocess/reference-resolve.d.ts.map +1 -0
- package/dist/postprocess/reference-resolve.js +105 -0
- package/dist/postprocess/reference-resolve.js.map +1 -0
- package/dist/postprocess/walk-ast.d.ts +38 -0
- package/dist/postprocess/walk-ast.d.ts.map +1 -0
- package/dist/postprocess/walk-ast.js +94 -0
- package/dist/postprocess/walk-ast.js.map +1 -0
- package/dist/preprocess/__tests__/pipeline.test.d.ts +5 -0
- package/dist/preprocess/__tests__/pipeline.test.d.ts.map +1 -0
- package/dist/preprocess/__tests__/pipeline.test.js +188 -0
- package/dist/preprocess/__tests__/pipeline.test.js.map +1 -0
- package/dist/preprocess/__tests__/resolver.test.d.ts +5 -0
- package/dist/preprocess/__tests__/resolver.test.d.ts.map +1 -0
- package/dist/preprocess/__tests__/resolver.test.js +165 -0
- package/dist/preprocess/__tests__/resolver.test.js.map +1 -0
- package/dist/preprocess/__tests__/scan-html.test.d.ts +5 -0
- package/dist/preprocess/__tests__/scan-html.test.d.ts.map +1 -0
- package/dist/preprocess/__tests__/scan-html.test.js +99 -0
- package/dist/preprocess/__tests__/scan-html.test.js.map +1 -0
- package/dist/preprocess/__tests__/scan-markdown.test.d.ts +5 -0
- package/dist/preprocess/__tests__/scan-markdown.test.d.ts.map +1 -0
- package/dist/preprocess/__tests__/scan-markdown.test.js +92 -0
- package/dist/preprocess/__tests__/scan-markdown.test.js.map +1 -0
- package/dist/preprocess/config/doc-config.d.ts +30 -0
- package/dist/preprocess/config/doc-config.d.ts.map +1 -0
- package/dist/preprocess/config/doc-config.js +85 -0
- package/dist/preprocess/config/doc-config.js.map +1 -0
- package/dist/preprocess/config/index.d.ts +9 -0
- package/dist/preprocess/config/index.d.ts.map +1 -0
- package/dist/preprocess/config/index.js +7 -0
- package/dist/preprocess/config/index.js.map +1 -0
- package/dist/preprocess/config/loader.d.ts +61 -0
- package/dist/preprocess/config/loader.d.ts.map +1 -0
- package/dist/preprocess/config/loader.js +40 -0
- package/dist/preprocess/config/loader.js.map +1 -0
- package/dist/preprocess/config/normalize.d.ts +19 -0
- package/dist/preprocess/config/normalize.d.ts.map +1 -0
- package/dist/preprocess/config/normalize.js +106 -0
- package/dist/preprocess/config/normalize.js.map +1 -0
- package/dist/preprocess/config/types.d.ts +40 -0
- package/dist/preprocess/config/types.d.ts.map +1 -0
- package/dist/preprocess/config/types.js +8 -0
- package/dist/preprocess/config/types.js.map +1 -0
- package/dist/preprocess/include/index.d.ts +7 -0
- package/dist/preprocess/include/index.d.ts.map +1 -0
- package/dist/preprocess/include/index.js +7 -0
- package/dist/preprocess/include/index.js.map +1 -0
- package/dist/preprocess/include/resolver.d.ts +40 -0
- package/dist/preprocess/include/resolver.d.ts.map +1 -0
- package/dist/preprocess/include/resolver.js +187 -0
- package/dist/preprocess/include/resolver.js.map +1 -0
- package/dist/preprocess/include/scan-html.d.ts +31 -0
- package/dist/preprocess/include/scan-html.d.ts.map +1 -0
- package/dist/preprocess/include/scan-html.js +100 -0
- package/dist/preprocess/include/scan-html.js.map +1 -0
- package/dist/preprocess/include/scan-markdown.d.ts +31 -0
- package/dist/preprocess/include/scan-markdown.d.ts.map +1 -0
- package/dist/preprocess/include/scan-markdown.js +83 -0
- package/dist/preprocess/include/scan-markdown.js.map +1 -0
- package/dist/preprocess/index.d.ts +16 -0
- package/dist/preprocess/index.d.ts.map +1 -0
- package/dist/preprocess/index.js +16 -0
- package/dist/preprocess/index.js.map +1 -0
- package/dist/preprocess/pipeline.d.ts +57 -0
- package/dist/preprocess/pipeline.d.ts.map +1 -0
- package/dist/preprocess/pipeline.js +100 -0
- package/dist/preprocess/pipeline.js.map +1 -0
- package/dist/preprocess/types.d.ts +197 -0
- package/dist/preprocess/types.d.ts.map +1 -0
- package/dist/preprocess/types.js +22 -0
- package/dist/preprocess/types.js.map +1 -0
- package/dist/types/ast.generated.d.ts +517 -0
- package/dist/types/ast.generated.d.ts.map +1 -0
- package/dist/types/ast.generated.js +66 -0
- package/dist/types/ast.generated.js.map +1 -0
- package/dist/validation/validate.d.ts +86 -0
- package/dist/validation/validate.d.ts.map +1 -0
- package/dist/validation/validate.js +162 -0
- package/dist/validation/validate.js.map +1 -0
- package/dist/workspace/__tests__/sort.test.d.ts +2 -0
- package/dist/workspace/__tests__/sort.test.d.ts.map +1 -0
- package/dist/workspace/__tests__/sort.test.js +122 -0
- package/dist/workspace/__tests__/sort.test.js.map +1 -0
- package/dist/workspace/index.d.ts +8 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +7 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/sort.d.ts +49 -0
- package/dist/workspace/sort.d.ts.map +1 -0
- package/dist/workspace/sort.js +114 -0
- package/dist/workspace/sort.js.map +1 -0
- package/package.json +46 -81
- package/schema/spec-ast.schema.json +1440 -0
- package/bin/speculator.mjs +0 -76
- package/dist/browser.cjs +0 -1690
- package/dist/browser.d.cts +0 -418
- package/dist/browser.d.ts +0 -418
- package/dist/browser.js +0 -36
- package/dist/chunk-H7C7MOU6.js +0 -28
- package/dist/chunk-V4GSFQE7.js +0 -1646
- package/dist/cli/export-assertions.cjs +0 -1710
- package/dist/cli/export-assertions.d.cts +0 -25
- package/dist/cli/export-assertions.d.ts +0 -25
- package/dist/cli/export-assertions.js +0 -107
- package/dist/node.cjs +0 -1712
- package/dist/node.d.cts +0 -17
- package/dist/node.d.ts +0 -17
- package/dist/node.js +0 -40
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-as-workspace.test.js","sourceRoot":"","sources":["../../../src/pipeline/__tests__/single-as-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;AAE/D,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC9C,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;QAE1D,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;YAC9B,KAAK,EAAE,UAAU;YACjB,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;QACnD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Hierarchical Rules Tests
|
|
3
|
+
*
|
|
4
|
+
* NOTE: These tests are now obsolete as workspace validation has been moved
|
|
5
|
+
* to the standalone @openuji/speculator-lint package.
|
|
6
|
+
*
|
|
7
|
+
* The core pipeline no longer performs validation - it only parses, indexes, and resolves.
|
|
8
|
+
* See @openuji/speculator-lint package for workspace rule validation tests.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=workspace-rules.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-rules.test.d.ts","sourceRoot":"","sources":["../../../src/pipeline/__tests__/workspace-rules.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Hierarchical Rules Tests
|
|
3
|
+
*
|
|
4
|
+
* NOTE: These tests are now obsolete as workspace validation has been moved
|
|
5
|
+
* to the standalone @openuji/speculator-lint package.
|
|
6
|
+
*
|
|
7
|
+
* The core pipeline no longer performs validation - it only parses, indexes, and resolves.
|
|
8
|
+
* See @openuji/speculator-lint package for workspace rule validation tests.
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, expect } from 'vitest';
|
|
11
|
+
import { SpeculatorPipeline } from '../runner.js';
|
|
12
|
+
import { corePlugins } from '../../postprocess/index.js';
|
|
13
|
+
import { MemoryFileProvider } from '#src/file-provider/memory';
|
|
14
|
+
describe('Workspace Basic Functionality', () => {
|
|
15
|
+
it('should process workspace with multiple documents', async () => {
|
|
16
|
+
const fileProvider = new MemoryFileProvider();
|
|
17
|
+
fileProvider.setFile('/spec/high.html', `
|
|
18
|
+
<dfn id="dfn-concept">Concept A</dfn>
|
|
19
|
+
`);
|
|
20
|
+
fileProvider.setFile('/spec/low.html', `
|
|
21
|
+
<p>Some content</p>
|
|
22
|
+
`);
|
|
23
|
+
const pipeline = new SpeculatorPipeline(corePlugins);
|
|
24
|
+
const result = await pipeline.runWorkspace({
|
|
25
|
+
entries: [
|
|
26
|
+
{ entry: '/spec/high.html' },
|
|
27
|
+
{ entry: '/spec/low.html' }
|
|
28
|
+
],
|
|
29
|
+
fileProvider
|
|
30
|
+
});
|
|
31
|
+
expect(result.workspace).toBeDefined();
|
|
32
|
+
expect(result.workspace?.documents.length).toBe(2);
|
|
33
|
+
});
|
|
34
|
+
it('should allow cross-document references', async () => {
|
|
35
|
+
const fileProvider = new MemoryFileProvider();
|
|
36
|
+
fileProvider.setFile('/spec/high.html', `
|
|
37
|
+
<dfn id="dfn-concept-a">Concept A</dfn>
|
|
38
|
+
`);
|
|
39
|
+
fileProvider.setFile('/spec/low.html', `
|
|
40
|
+
<p>Reference to <a data-link-type="dfn">Concept A</a></p>
|
|
41
|
+
`);
|
|
42
|
+
const pipeline = new SpeculatorPipeline(corePlugins);
|
|
43
|
+
const result = await pipeline.runWorkspace({
|
|
44
|
+
entries: [
|
|
45
|
+
{ entry: '/spec/high.html' },
|
|
46
|
+
{ entry: '/spec/low.html' }
|
|
47
|
+
],
|
|
48
|
+
fileProvider
|
|
49
|
+
});
|
|
50
|
+
expect(result.workspace).toBeDefined();
|
|
51
|
+
expect(result.workspace?.documents.length).toBe(2);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=workspace-rules.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-rules.test.js","sourceRoot":"","sources":["../../../src/pipeline/__tests__/workspace-rules.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC9C,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE;;SAEvC,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE;;SAEtC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;YACvC,OAAO,EAAE;gBACL,EAAE,KAAK,EAAE,iBAAiB,EAAE;gBAC5B,EAAE,KAAK,EAAE,gBAAgB,EAAE;aAC9B;YACD,YAAY;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC9C,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE;;SAEvC,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE;;SAEtC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;YACvC,OAAO,EAAE;gBACL,EAAE,KAAK,EAAE,iBAAiB,EAAE;gBAC5B,EAAE,KAAK,EAAE,gBAAgB,EAAE;aAC9B;YACD,YAAY;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.test.d.ts","sourceRoot":"","sources":["../../../src/pipeline/__tests__/workspace.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { SpeculatorPipeline } from '../runner.js';
|
|
3
|
+
import { MemoryFileProvider } from '#src/file-provider/memory';
|
|
4
|
+
import { corePlugins } from '#src/postprocess/index.js';
|
|
5
|
+
describe('Workspace processing', () => {
|
|
6
|
+
it('should resolve cross-document references between HTML documents', async () => {
|
|
7
|
+
const fileProvider = new MemoryFileProvider();
|
|
8
|
+
// Spec A defines a term
|
|
9
|
+
fileProvider.setFile('/spec-a.html', `
|
|
10
|
+
<section>
|
|
11
|
+
<h1>Spec A</h1>
|
|
12
|
+
<p>This defines <dfn id="term-a">Term A</dfn>.</p>
|
|
13
|
+
</section>
|
|
14
|
+
`);
|
|
15
|
+
// Spec B references that term
|
|
16
|
+
fileProvider.setFile('/spec-b.html', `
|
|
17
|
+
<section>
|
|
18
|
+
<h1>Spec B</h1>
|
|
19
|
+
<p>This references <a data-link-type="dfn">Term A</a>.</p>
|
|
20
|
+
</section>
|
|
21
|
+
`);
|
|
22
|
+
const pipeline = new SpeculatorPipeline(corePlugins);
|
|
23
|
+
const result = await pipeline.runWorkspace({
|
|
24
|
+
entries: [
|
|
25
|
+
{ entry: '/spec-a.html' },
|
|
26
|
+
{ entry: '/spec-b.html' }
|
|
27
|
+
],
|
|
28
|
+
fileProvider
|
|
29
|
+
});
|
|
30
|
+
expect(result.workspace).toBeDefined();
|
|
31
|
+
expect(result.workspace?.type).toBe('workspace');
|
|
32
|
+
expect(result.workspace?.documents.length).toBe(2);
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
|
|
34
|
+
const docA = result.workspace?.documents.find(d => d.sourcePos?.file === '/spec-a.html');
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
|
|
36
|
+
const docB = result.workspace?.documents.find(d => d.sourcePos?.file === '/spec-b.html');
|
|
37
|
+
// Check if Term A was indexed in docA
|
|
38
|
+
expect(docA.indexes?.definitions?.length).toBeGreaterThan(0);
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
|
|
40
|
+
const termA = docA.indexes?.definitions?.find(d => d.term === 'term a'); // normalized
|
|
41
|
+
expect(termA).toBeDefined();
|
|
42
|
+
expect(termA.id).toBe('term-a');
|
|
43
|
+
// Check if Term A was resolved in docB
|
|
44
|
+
let resolved = false;
|
|
45
|
+
// Deep walk docB to find the reference
|
|
46
|
+
const findRef = (node) => {
|
|
47
|
+
if (typeof node === 'object' && node !== null && 'type' in node) {
|
|
48
|
+
if (node.type === 'reference' && 'targetTerm' in node && node.targetTerm === 'term a') {
|
|
49
|
+
expect('targetId' in node ? node.targetId : undefined).toBe('term-a');
|
|
50
|
+
resolved = true;
|
|
51
|
+
}
|
|
52
|
+
if ('children' in node && Array.isArray(node.children)) {
|
|
53
|
+
node.children.forEach(findRef);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
docB.children.forEach(findRef);
|
|
58
|
+
expect(resolved).toBe(true);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=workspace.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.test.js","sourceRoot":"","sources":["../../../src/pipeline/__tests__/workspace.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline Entrypoint
|
|
3
|
+
*
|
|
4
|
+
* Single entrypoint for processing specifications with plugins.
|
|
5
|
+
*/
|
|
6
|
+
import type { SpeculateOptions, SpeculateResult } from './types.js';
|
|
7
|
+
export type { Plugin, Phase, PostprocessPhase, SpeculateOptions, SpeculateResult, Workspace } from './types.js';
|
|
8
|
+
export { SpeculatorPipeline } from './runner.js';
|
|
9
|
+
export { PHASES, POSTPROCESS_PHASES } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Process a specification with the given plugins.
|
|
12
|
+
*
|
|
13
|
+
* This is the main entrypoint for the speculator pipeline.
|
|
14
|
+
*
|
|
15
|
+
* @param options - Pipeline options including entry, config, and plugins
|
|
16
|
+
* @returns Result with document and diagnostics
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { speculate, coreMarkdownPlugin, coreHtmlPlugin } from 'speculator';
|
|
21
|
+
*
|
|
22
|
+
* const result = await speculate({
|
|
23
|
+
* entry: './spec/index.md',
|
|
24
|
+
* configPath: './spec/config.respec.json',
|
|
25
|
+
* plugins: [coreMarkdownPlugin, coreHtmlPlugin],
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* if (!result.hasErrors) {
|
|
29
|
+
* console.log(result.document);
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function speculate(options: SpeculateOptions): Promise<SpeculateResult>;
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGpE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAcnF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline Entrypoint
|
|
3
|
+
*
|
|
4
|
+
* Single entrypoint for processing specifications with plugins.
|
|
5
|
+
*/
|
|
6
|
+
import { NodeFileProvider } from '#src/file-provider/node';
|
|
7
|
+
import { SpeculatorPipeline } from './runner.js';
|
|
8
|
+
export { SpeculatorPipeline } from './runner.js';
|
|
9
|
+
export { PHASES, POSTPROCESS_PHASES } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Process a specification with the given plugins.
|
|
12
|
+
*
|
|
13
|
+
* This is the main entrypoint for the speculator pipeline.
|
|
14
|
+
*
|
|
15
|
+
* @param options - Pipeline options including entry, config, and plugins
|
|
16
|
+
* @returns Result with document and diagnostics
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { speculate, coreMarkdownPlugin, coreHtmlPlugin } from 'speculator';
|
|
21
|
+
*
|
|
22
|
+
* const result = await speculate({
|
|
23
|
+
* entry: './spec/index.md',
|
|
24
|
+
* configPath: './spec/config.respec.json',
|
|
25
|
+
* plugins: [coreMarkdownPlugin, coreHtmlPlugin],
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* if (!result.hasErrors) {
|
|
29
|
+
* console.log(result.document);
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export async function speculate(options) {
|
|
34
|
+
// Use provided file provider or default to Node
|
|
35
|
+
const fileProvider = options.fileProvider ?? new NodeFileProvider();
|
|
36
|
+
// Create pipeline with plugins
|
|
37
|
+
const pipeline = new SpeculatorPipeline(options.plugins);
|
|
38
|
+
// Run the pipeline
|
|
39
|
+
return pipeline.run({
|
|
40
|
+
entry: options.entry,
|
|
41
|
+
configPath: options.configPath,
|
|
42
|
+
fileProvider,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAMjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAyB;IACrD,gDAAgD;IAChD,MAAM,YAAY,GAAiB,OAAO,CAAC,YAAY,IAAI,IAAI,gBAAgB,EAAE,CAAC;IAElF,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAGzD,mBAAmB;IACnB,OAAO,QAAQ,CAAC,GAAG,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY;KACf,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline Runner
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates plugin execution across postprocess phases.
|
|
5
|
+
* Parsing is handled by parser modules registered via html/index and markdown/index.
|
|
6
|
+
*/
|
|
7
|
+
import type { FileProvider } from '#src/file-provider/types';
|
|
8
|
+
import type { Plugin, SpeculateResult } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Speculator Pipeline Runner
|
|
11
|
+
*
|
|
12
|
+
* Coordinates execution of plugins across pipeline phases.
|
|
13
|
+
* In a workspace-first architecture, all runs produce a Workspace AST.
|
|
14
|
+
*/
|
|
15
|
+
export declare class SpeculatorPipeline {
|
|
16
|
+
private plugins;
|
|
17
|
+
constructor(plugins?: Plugin[]);
|
|
18
|
+
/**
|
|
19
|
+
* Run the pipeline for a single document.
|
|
20
|
+
* Consolidates to runWorkspace internally.
|
|
21
|
+
*/
|
|
22
|
+
run(options: {
|
|
23
|
+
entry: string;
|
|
24
|
+
configPath?: string;
|
|
25
|
+
fileProvider: FileProvider;
|
|
26
|
+
}): Promise<SpeculateResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Run the complete pipeline for a workspace (one or more documents)
|
|
29
|
+
*/
|
|
30
|
+
runWorkspace(options: {
|
|
31
|
+
entries: {
|
|
32
|
+
entry: string;
|
|
33
|
+
configPath?: string;
|
|
34
|
+
}[];
|
|
35
|
+
fileProvider: FileProvider;
|
|
36
|
+
}): Promise<SpeculateResult>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAK7D,OAAO,KAAK,EACR,MAAM,EAEN,eAAe,EAElB,MAAM,YAAY,CAAC;AAiCpB;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,OAAO,CAAW;gBAEd,OAAO,GAAE,MAAM,EAAO;IAIlC;;;OAGG;IACG,GAAG,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,YAAY,CAAC;KAC9B,GAAG,OAAO,CAAC,eAAe,CAAC;IAO5B;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE;QACxB,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAClD,YAAY,EAAE,YAAY,CAAC;KAC9B,GAAG,OAAO,CAAC,eAAe,CAAC;CAmF/B"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline Runner
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates plugin execution across postprocess phases.
|
|
5
|
+
* Parsing is handled by parser modules registered via html/index and markdown/index.
|
|
6
|
+
*/
|
|
7
|
+
import { preprocess } from '#src/preprocess/pipeline';
|
|
8
|
+
import { parseWithRegistry } from '#src/parse/pipeline';
|
|
9
|
+
import { ParseHandlerRegistry } from '#src/parse/registry';
|
|
10
|
+
import { coreHtmlParsers, coreMarkdownParsers } from '#src/parse/parsers';
|
|
11
|
+
import { buildGlobalIndex, finalizeWorkspace } from './workspace-index.js';
|
|
12
|
+
// Default order for plugins that don't specify
|
|
13
|
+
const DEFAULT_ORDER = 100;
|
|
14
|
+
/**
|
|
15
|
+
* Get plugin order for a specific phase
|
|
16
|
+
*/
|
|
17
|
+
function getPluginOrder(plugin, phase) {
|
|
18
|
+
return plugin.order?.[phase] ?? DEFAULT_ORDER;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Sort plugins by order for a given phase
|
|
22
|
+
*/
|
|
23
|
+
function sortPluginsForPhase(plugins, phase) {
|
|
24
|
+
return [...plugins].sort((a, b) => getPluginOrder(a, phase) - getPluginOrder(b, phase));
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Register core parser modules to a registry
|
|
28
|
+
*/
|
|
29
|
+
function registerCoreParsers(registry) {
|
|
30
|
+
for (const parser of coreHtmlParsers) {
|
|
31
|
+
registry.registerHtmlParser(parser);
|
|
32
|
+
}
|
|
33
|
+
for (const parser of coreMarkdownParsers) {
|
|
34
|
+
registry.registerMarkdownParser(parser);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Speculator Pipeline Runner
|
|
39
|
+
*
|
|
40
|
+
* Coordinates execution of plugins across pipeline phases.
|
|
41
|
+
* In a workspace-first architecture, all runs produce a Workspace AST.
|
|
42
|
+
*/
|
|
43
|
+
export class SpeculatorPipeline {
|
|
44
|
+
plugins;
|
|
45
|
+
constructor(plugins = []) {
|
|
46
|
+
this.plugins = plugins;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Run the pipeline for a single document.
|
|
50
|
+
* Consolidates to runWorkspace internally.
|
|
51
|
+
*/
|
|
52
|
+
async run(options) {
|
|
53
|
+
return this.runWorkspace({
|
|
54
|
+
entries: [{ entry: options.entry, configPath: options.configPath }],
|
|
55
|
+
fileProvider: options.fileProvider
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Run the complete pipeline for a workspace (one or more documents)
|
|
60
|
+
*/
|
|
61
|
+
async runWorkspace(options) {
|
|
62
|
+
const results = [];
|
|
63
|
+
// 1. Initial run: Preprocess + Parse
|
|
64
|
+
for (const entryConfig of options.entries) {
|
|
65
|
+
const preprocessResult = await preprocess({
|
|
66
|
+
entry: entryConfig.entry,
|
|
67
|
+
configPath: entryConfig.configPath,
|
|
68
|
+
fileProvider: options.fileProvider,
|
|
69
|
+
});
|
|
70
|
+
if (!preprocessResult.result)
|
|
71
|
+
continue;
|
|
72
|
+
const registry = new ParseHandlerRegistry();
|
|
73
|
+
registerCoreParsers(registry);
|
|
74
|
+
const parseResult = parseWithRegistry(preprocessResult.result, registry);
|
|
75
|
+
if (!parseResult.result)
|
|
76
|
+
continue;
|
|
77
|
+
results.push({ doc: parseResult.result.document, entry: entryConfig.entry });
|
|
78
|
+
}
|
|
79
|
+
if (results.length === 0) {
|
|
80
|
+
return {};
|
|
81
|
+
}
|
|
82
|
+
const runtimeWorkspace = {
|
|
83
|
+
documents: new Map(results.map(r => [r.entry, r.doc])),
|
|
84
|
+
documentLevels: new Map(results.map((r, i) => [r.entry, i])),
|
|
85
|
+
globalIndex: { definitions: new Map(), bibliography: new Map() }
|
|
86
|
+
};
|
|
87
|
+
// 2. TRANSFORM phase
|
|
88
|
+
const transformPlugins = sortPluginsForPhase(this.plugins.filter(p => p.transform), 'transform');
|
|
89
|
+
for (const res of results) {
|
|
90
|
+
const level = runtimeWorkspace.documentLevels.get(res.entry) ?? 0;
|
|
91
|
+
for (const plugin of transformPlugins) {
|
|
92
|
+
await plugin.transform({ document: res.doc, level, workspace: runtimeWorkspace });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// 3. INDEX phase
|
|
96
|
+
const indexPlugins = sortPluginsForPhase(this.plugins.filter(p => p.index), 'index');
|
|
97
|
+
for (const res of results) {
|
|
98
|
+
const level = runtimeWorkspace.documentLevels.get(res.entry) ?? 0;
|
|
99
|
+
for (const plugin of indexPlugins) {
|
|
100
|
+
await plugin.index({ document: res.doc, level, workspace: runtimeWorkspace });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// 4. AGGREGATE Global Index
|
|
104
|
+
runtimeWorkspace.globalIndex = buildGlobalIndex(runtimeWorkspace.documents, runtimeWorkspace.documentLevels);
|
|
105
|
+
// 5. RESOLVE phase
|
|
106
|
+
const resolvePlugins = sortPluginsForPhase(this.plugins.filter(p => p.resolve), 'resolve');
|
|
107
|
+
for (const res of results) {
|
|
108
|
+
const level = runtimeWorkspace.documentLevels.get(res.entry) ?? 0;
|
|
109
|
+
for (const plugin of resolvePlugins) {
|
|
110
|
+
await plugin.resolve({ document: res.doc, level, workspace: runtimeWorkspace });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// 6. COMPUTE phase
|
|
114
|
+
const computePlugins = sortPluginsForPhase(this.plugins.filter(p => p.compute), 'compute');
|
|
115
|
+
for (const res of results) {
|
|
116
|
+
const level = runtimeWorkspace.documentLevels.get(res.entry) ?? 0;
|
|
117
|
+
for (const plugin of computePlugins) {
|
|
118
|
+
await plugin.compute({ document: res.doc, level, workspace: runtimeWorkspace });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Finalize: Convert runtime workspace to AST
|
|
122
|
+
const workspaceAST = finalizeWorkspace(runtimeWorkspace);
|
|
123
|
+
return {
|
|
124
|
+
workspace: workspaceAST
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { Workspace, Document, IndexDefinitionEntry, IndexBiblioEntry, Indexes1 as GlobalIndexAST } from '#src/types/ast.generated';
|
|
2
|
+
export type { Workspace, Document, IndexDefinitionEntry, IndexBiblioEntry, GlobalIndexAST };
|
|
3
|
+
/**
|
|
4
|
+
* Aggregated index for runtime lookups during postprocess phases.
|
|
5
|
+
|
|
6
|
+
* Uses Maps for O(1) term resolution.
|
|
7
|
+
*/
|
|
8
|
+
export interface RuntimeGlobalIndex {
|
|
9
|
+
/** Map of normalized term -> definitions */
|
|
10
|
+
definitions: Map<string, IndexDefinitionEntry[]>;
|
|
11
|
+
/** Map of key -> bibliography entry */
|
|
12
|
+
bibliography: Map<string, IndexBiblioEntry>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Runtime workspace container used during pipeline execution.
|
|
16
|
+
*/
|
|
17
|
+
export interface RuntimeWorkspace {
|
|
18
|
+
/** Documents in the workspace, keyed by their canonical entry path */
|
|
19
|
+
documents: Map<string, Document>;
|
|
20
|
+
/** Map of document entry path -> level (0 is highest) */
|
|
21
|
+
documentLevels: Map<string, number>;
|
|
22
|
+
/** Aggregated index for cross-document resolution */
|
|
23
|
+
globalIndex: RuntimeGlobalIndex;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Postprocess pipeline phases in execution order.
|
|
27
|
+
*
|
|
28
|
+
* Note: Parsing is a separate stage before postprocess, not a plugin phase.
|
|
29
|
+
*/
|
|
30
|
+
export type PostprocessPhase = 'transform' | 'resolve' | 'index' | 'compute';
|
|
31
|
+
/**
|
|
32
|
+
* Ordered list of postprocess phases for iteration
|
|
33
|
+
*/
|
|
34
|
+
export declare const POSTPROCESS_PHASES: PostprocessPhase[];
|
|
35
|
+
/**
|
|
36
|
+
* @deprecated Use PostprocessPhase instead
|
|
37
|
+
*/
|
|
38
|
+
export type Phase = PostprocessPhase;
|
|
39
|
+
/**
|
|
40
|
+
* @deprecated Use POSTPROCESS_PHASES instead
|
|
41
|
+
*/
|
|
42
|
+
export declare const PHASES: Phase[];
|
|
43
|
+
export interface TransformContext {
|
|
44
|
+
readonly document: Document;
|
|
45
|
+
readonly level: number;
|
|
46
|
+
readonly workspace?: RuntimeWorkspace;
|
|
47
|
+
}
|
|
48
|
+
export interface IndexContext {
|
|
49
|
+
readonly document: Document;
|
|
50
|
+
readonly level: number;
|
|
51
|
+
readonly workspace?: RuntimeWorkspace;
|
|
52
|
+
}
|
|
53
|
+
export interface ResolveContext {
|
|
54
|
+
readonly document: Document;
|
|
55
|
+
readonly level: number;
|
|
56
|
+
readonly workspace?: RuntimeWorkspace;
|
|
57
|
+
}
|
|
58
|
+
export interface ComputeContext {
|
|
59
|
+
readonly document: Document;
|
|
60
|
+
readonly level: number;
|
|
61
|
+
readonly workspace?: RuntimeWorkspace;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Postprocess plugin interface.
|
|
65
|
+
*
|
|
66
|
+
* Plugins register hooks for postprocess phases only.
|
|
67
|
+
* Parsing is handled separately by parser modules in src/parse/.
|
|
68
|
+
*/
|
|
69
|
+
export interface Plugin {
|
|
70
|
+
/** Unique plugin name */
|
|
71
|
+
name: string;
|
|
72
|
+
/**
|
|
73
|
+
* Optional ordering per phase.
|
|
74
|
+
* Lower numbers run first. Default is 100.
|
|
75
|
+
*/
|
|
76
|
+
order?: Partial<Record<PostprocessPhase, number>>;
|
|
77
|
+
/** Transform phase hook */
|
|
78
|
+
transform?(ctx: TransformContext): Promise<void>;
|
|
79
|
+
/** Index phase hook (runs before resolve to build indexes) */
|
|
80
|
+
index?(ctx: IndexContext): Promise<void>;
|
|
81
|
+
/** Resolve phase hook (uses indexes) */
|
|
82
|
+
resolve?(ctx: ResolveContext): Promise<void>;
|
|
83
|
+
/** Compute phase hook */
|
|
84
|
+
compute?(ctx: ComputeContext): Promise<void>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Options for the speculate() entrypoint
|
|
88
|
+
*/
|
|
89
|
+
export interface SpeculateOptions {
|
|
90
|
+
/** Path to entry file (format.md or format.html) */
|
|
91
|
+
entry: string;
|
|
92
|
+
/** Optional path to config file (e.g., config.respec.json) */
|
|
93
|
+
configPath?: string;
|
|
94
|
+
/** Plugins to execute during postprocess phases */
|
|
95
|
+
plugins: Plugin[];
|
|
96
|
+
/** File provider for reading files (defaults to NodeFileProvider) */
|
|
97
|
+
fileProvider?: import('#src/file-provider/types').FileProvider;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Result from speculate()
|
|
101
|
+
*/
|
|
102
|
+
export interface SpeculateResult {
|
|
103
|
+
/** The root Workspace AST */
|
|
104
|
+
workspace?: Workspace;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pipeline/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordered list of postprocess phases for iteration
|
|
3
|
+
*/
|
|
4
|
+
export const POSTPROCESS_PHASES = ['transform', 'index', 'resolve', 'compute'];
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated Use POSTPROCESS_PHASES instead
|
|
7
|
+
*/
|
|
8
|
+
export const PHASES = POSTPROCESS_PHASES;
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pipeline/types.ts"],"names":[],"mappings":"AAkDA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAuB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAOnG;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAY,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Document, RuntimeGlobalIndex, RuntimeWorkspace, Workspace } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Build a global index from a collection of documents.
|
|
4
|
+
*/
|
|
5
|
+
export declare function buildGlobalIndex(documents: Map<string, Document>, _documentLevels: Map<string, number>): RuntimeGlobalIndex;
|
|
6
|
+
/**
|
|
7
|
+
* Convert a RuntimeWorkspace into a Workspace AST.
|
|
8
|
+
* This flattens the maps into arrays as defined by the schema.
|
|
9
|
+
*/
|
|
10
|
+
export declare function finalizeWorkspace(runtime: RuntimeWorkspace): Workspace;
|
|
11
|
+
//# sourceMappingURL=workspace-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-index.d.ts","sourceRoot":"","sources":["../../src/pipeline/workspace-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,QAAQ,EAGR,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EAEZ,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAChC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,kBAAkB,CAqCpB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAiBtE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { normalizeTerm } from '#src/parse/normalize';
|
|
2
|
+
/**
|
|
3
|
+
* Build a global index from a collection of documents.
|
|
4
|
+
*/
|
|
5
|
+
export function buildGlobalIndex(documents, _documentLevels) {
|
|
6
|
+
const definitions = new Map();
|
|
7
|
+
const bibliography = new Map();
|
|
8
|
+
for (const [, doc] of documents) {
|
|
9
|
+
// Aggregate definitions
|
|
10
|
+
if (doc.indexes?.definitions) {
|
|
11
|
+
for (const entry of doc.indexes.definitions) {
|
|
12
|
+
const linkTexts = entry.linkTexts || [entry.term];
|
|
13
|
+
// Add primary term and all aliases to definitions lookup
|
|
14
|
+
const termsToProcess = new Set([entry.term, ...linkTexts]);
|
|
15
|
+
for (const term of termsToProcess) {
|
|
16
|
+
const key = normalizeTerm(term);
|
|
17
|
+
const existing = definitions.get(key) || [];
|
|
18
|
+
// Add entry to definitions
|
|
19
|
+
existing.push(entry);
|
|
20
|
+
definitions.set(key, existing);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Aggregate bibliography
|
|
25
|
+
if (doc.indexes?.bibliography) {
|
|
26
|
+
for (const entry of doc.indexes.bibliography) {
|
|
27
|
+
if (!bibliography.has(entry.key)) {
|
|
28
|
+
bibliography.set(entry.key, entry);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
definitions,
|
|
35
|
+
bibliography,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Convert a RuntimeWorkspace into a Workspace AST.
|
|
40
|
+
* This flattens the maps into arrays as defined by the schema.
|
|
41
|
+
*/
|
|
42
|
+
export function finalizeWorkspace(runtime) {
|
|
43
|
+
const globalIndex = {
|
|
44
|
+
// Flat array of all unique definition entries
|
|
45
|
+
// Note: Multiple terms might point to the same entry object.
|
|
46
|
+
// We collect the unique objects.
|
|
47
|
+
definitions: Array.from(new Set(Array.from(runtime.globalIndex.definitions.values()).flat())),
|
|
48
|
+
bibliography: Array.from(runtime.globalIndex.bibliography.values())
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
type: 'workspace',
|
|
52
|
+
schemaVersion: '1.1.0',
|
|
53
|
+
documents: Array.from(runtime.documents.values()),
|
|
54
|
+
globalIndex
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=workspace-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-index.js","sourceRoot":"","sources":["../../src/pipeline/workspace-index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC5B,SAAgC,EAChC,eAAoC;IAEpC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEzD,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;QAC9B,wBAAwB;QACxB,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAElD,yDAAyD;gBACzD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;gBAC3D,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;oBAChC,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;oBAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBAE5C,2BAA2B;oBAC3B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC;QACL,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,WAAW;QACX,YAAY;KACf,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAyB;IACvD,MAAM,WAAW,GAAmB;QAChC,8CAA8C;QAC9C,8DAA8D;QAC9D,iCAAiC;QACjC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAC9D,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KACtE,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACjD,WAAW;KACd,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citation-transform.test.d.ts","sourceRoot":"","sources":["../../../src/plugins/__tests__/citation-transform.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|