@memoarchitect/tools 0.13.2 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -26
- package/corpus/README.md +20 -36
- package/package.json +9 -10
- package/packages/tools/lib/analysis/impact.d.ts +30 -0
- package/packages/tools/lib/analysis/impact.d.ts.map +1 -1
- package/packages/tools/lib/analysis/impact.js +47 -74
- package/packages/tools/lib/analysis/impact.js.map +1 -1
- package/packages/tools/lib/analysis/interfaces-between.d.ts +36 -0
- package/packages/tools/lib/analysis/interfaces-between.d.ts.map +1 -0
- package/packages/tools/lib/analysis/interfaces-between.js +66 -0
- package/packages/tools/lib/analysis/interfaces-between.js.map +1 -0
- package/packages/tools/lib/analysis/suspect-links.d.ts +45 -0
- package/packages/tools/lib/analysis/suspect-links.d.ts.map +1 -0
- package/packages/tools/lib/analysis/suspect-links.js +66 -0
- package/packages/tools/lib/analysis/suspect-links.js.map +1 -0
- package/packages/tools/lib/analysis-starters.d.ts +2 -0
- package/packages/tools/lib/analysis-starters.d.ts.map +1 -1
- package/packages/tools/lib/analysis-starters.js +73 -68
- package/packages/tools/lib/analysis-starters.js.map +1 -1
- package/packages/tools/lib/authoring/outline-identity.d.ts +34 -0
- package/packages/tools/lib/authoring/outline-identity.d.ts.map +1 -0
- package/packages/tools/lib/authoring/outline-identity.js +95 -0
- package/packages/tools/lib/authoring/outline-identity.js.map +1 -0
- package/packages/tools/lib/authoring/outline-source.d.ts +57 -0
- package/packages/tools/lib/authoring/outline-source.d.ts.map +1 -0
- package/packages/tools/lib/authoring/outline-source.js +203 -0
- package/packages/tools/lib/authoring/outline-source.js.map +1 -0
- package/packages/tools/lib/authoring/source-outline.d.ts +82 -0
- package/packages/tools/lib/authoring/source-outline.d.ts.map +1 -0
- package/packages/tools/lib/authoring/source-outline.js +267 -0
- package/packages/tools/lib/authoring/source-outline.js.map +1 -0
- package/packages/tools/lib/bin/memo.js +181 -632
- package/packages/tools/lib/bin/memo.js.map +1 -1
- package/packages/tools/lib/browser/index.d.ts +12 -0
- package/packages/tools/lib/browser/index.d.ts.map +1 -1
- package/packages/tools/lib/browser/index.js +8 -0
- package/packages/tools/lib/browser/index.js.map +1 -1
- package/packages/tools/lib/cli/project-commands.d.ts +3 -0
- package/packages/tools/lib/cli/project-commands.d.ts.map +1 -0
- package/packages/tools/lib/cli/project-commands.js +577 -0
- package/packages/tools/lib/cli/project-commands.js.map +1 -0
- package/packages/tools/lib/commands/ask.d.ts.map +1 -1
- package/packages/tools/lib/commands/ask.js +10 -18
- package/packages/tools/lib/commands/ask.js.map +1 -1
- package/packages/tools/lib/commands/compile.d.ts +18 -0
- package/packages/tools/lib/commands/compile.d.ts.map +1 -0
- package/packages/tools/lib/commands/compile.js +122 -0
- package/packages/tools/lib/commands/compile.js.map +1 -0
- package/packages/tools/lib/commands/convert.js +2 -2
- package/packages/tools/lib/commands/convert.js.map +1 -1
- package/packages/tools/lib/commands/create-package.js +4 -4
- package/packages/tools/lib/commands/create-package.js.map +1 -1
- package/packages/tools/lib/commands/dev.d.ts +20 -2
- package/packages/tools/lib/commands/dev.d.ts.map +1 -1
- package/packages/tools/lib/commands/dev.js +386 -97
- package/packages/tools/lib/commands/dev.js.map +1 -1
- package/packages/tools/lib/commands/dhf-draft.d.ts.map +1 -1
- package/packages/tools/lib/commands/dhf-draft.js +7 -16
- package/packages/tools/lib/commands/dhf-draft.js.map +1 -1
- package/packages/tools/lib/commands/dhf-init.js +3 -3
- package/packages/tools/lib/commands/dhf-init.js.map +1 -1
- package/packages/tools/lib/commands/dhf-lint.d.ts.map +1 -1
- package/packages/tools/lib/commands/dhf-lint.js +4 -3
- package/packages/tools/lib/commands/dhf-lint.js.map +1 -1
- package/packages/tools/lib/commands/dhf-preview.d.ts.map +1 -1
- package/packages/tools/lib/commands/dhf-preview.js +5 -26
- package/packages/tools/lib/commands/dhf-preview.js.map +1 -1
- package/packages/tools/lib/commands/dhf.d.ts +4 -0
- package/packages/tools/lib/commands/dhf.d.ts.map +1 -1
- package/packages/tools/lib/commands/dhf.js +77 -31
- package/packages/tools/lib/commands/dhf.js.map +1 -1
- package/packages/tools/lib/commands/element.d.ts.map +1 -1
- package/packages/tools/lib/commands/element.js +44 -6
- package/packages/tools/lib/commands/element.js.map +1 -1
- package/packages/tools/lib/commands/export.d.ts +1 -1
- package/packages/tools/lib/commands/export.d.ts.map +1 -1
- package/packages/tools/lib/commands/export.js +25 -18
- package/packages/tools/lib/commands/export.js.map +1 -1
- package/packages/tools/lib/commands/generate.d.ts.map +1 -1
- package/packages/tools/lib/commands/generate.js +10 -30
- package/packages/tools/lib/commands/generate.js.map +1 -1
- package/packages/tools/lib/commands/ids-rebase.d.ts +15 -0
- package/packages/tools/lib/commands/ids-rebase.d.ts.map +1 -0
- package/packages/tools/lib/commands/ids-rebase.js +133 -0
- package/packages/tools/lib/commands/ids-rebase.js.map +1 -0
- package/packages/tools/lib/commands/import-ea.d.ts +3 -3
- package/packages/tools/lib/commands/import-ea.d.ts.map +1 -1
- package/packages/tools/lib/commands/import-ea.js +12 -9
- package/packages/tools/lib/commands/import-ea.js.map +1 -1
- package/packages/tools/lib/commands/import-owl.d.ts +1 -1
- package/packages/tools/lib/commands/import-owl.js +2 -2
- package/packages/tools/lib/commands/import-owl.js.map +1 -1
- package/packages/tools/lib/commands/import-sysand.d.ts +1 -1
- package/packages/tools/lib/commands/import-sysand.d.ts.map +1 -1
- package/packages/tools/lib/commands/import-sysand.js +15 -6
- package/packages/tools/lib/commands/import-sysand.js.map +1 -1
- package/packages/tools/lib/commands/import.d.ts +13 -0
- package/packages/tools/lib/commands/import.d.ts.map +1 -1
- package/packages/tools/lib/commands/import.js +89 -29
- package/packages/tools/lib/commands/import.js.map +1 -1
- package/packages/tools/lib/commands/init.d.ts +0 -8
- package/packages/tools/lib/commands/init.d.ts.map +1 -1
- package/packages/tools/lib/commands/init.js +56 -51
- package/packages/tools/lib/commands/init.js.map +1 -1
- package/packages/tools/lib/commands/inspect.d.ts.map +1 -1
- package/packages/tools/lib/commands/inspect.js +22 -15
- package/packages/tools/lib/commands/inspect.js.map +1 -1
- package/packages/tools/lib/commands/install.d.ts.map +1 -1
- package/packages/tools/lib/commands/install.js +9 -6
- package/packages/tools/lib/commands/install.js.map +1 -1
- package/packages/tools/lib/commands/interfaces.d.ts +8 -0
- package/packages/tools/lib/commands/interfaces.d.ts.map +1 -0
- package/packages/tools/lib/commands/interfaces.js +71 -0
- package/packages/tools/lib/commands/interfaces.js.map +1 -0
- package/packages/tools/lib/commands/lock.d.ts.map +1 -1
- package/packages/tools/lib/commands/lock.js +13 -6
- package/packages/tools/lib/commands/lock.js.map +1 -1
- package/packages/tools/lib/commands/mcp.js +7 -7
- package/packages/tools/lib/commands/mcp.js.map +1 -1
- package/packages/tools/lib/commands/migrate-layout.d.ts +5 -0
- package/packages/tools/lib/commands/migrate-layout.d.ts.map +1 -0
- package/packages/tools/lib/commands/migrate-layout.js +90 -0
- package/packages/tools/lib/commands/migrate-layout.js.map +1 -0
- package/packages/tools/lib/commands/ontology.d.ts.map +1 -1
- package/packages/tools/lib/commands/ontology.js +26 -22
- package/packages/tools/lib/commands/ontology.js.map +1 -1
- package/packages/tools/lib/commands/pack.d.ts.map +1 -1
- package/packages/tools/lib/commands/pack.js +14 -9
- package/packages/tools/lib/commands/pack.js.map +1 -1
- package/packages/tools/lib/commands/pinned-target.d.ts +12 -0
- package/packages/tools/lib/commands/pinned-target.d.ts.map +1 -0
- package/packages/tools/lib/commands/pinned-target.js +74 -0
- package/packages/tools/lib/commands/pinned-target.js.map +1 -0
- package/packages/tools/lib/commands/plugin.d.ts.map +1 -1
- package/packages/tools/lib/commands/plugin.js +13 -22
- package/packages/tools/lib/commands/plugin.js.map +1 -1
- package/packages/tools/lib/commands/prune.d.ts +5 -0
- package/packages/tools/lib/commands/prune.d.ts.map +1 -0
- package/packages/tools/lib/commands/prune.js +27 -0
- package/packages/tools/lib/commands/prune.js.map +1 -0
- package/packages/tools/lib/commands/retired.d.ts +10 -0
- package/packages/tools/lib/commands/retired.d.ts.map +1 -0
- package/packages/tools/lib/commands/retired.js +35 -0
- package/packages/tools/lib/commands/retired.js.map +1 -0
- package/packages/tools/lib/commands/rules.d.ts +49 -5
- package/packages/tools/lib/commands/rules.d.ts.map +1 -1
- package/packages/tools/lib/commands/rules.js +340 -172
- package/packages/tools/lib/commands/rules.js.map +1 -1
- package/packages/tools/lib/commands/ship-library.d.ts +4 -0
- package/packages/tools/lib/commands/ship-library.d.ts.map +1 -0
- package/packages/tools/lib/commands/ship-library.js +45 -0
- package/packages/tools/lib/commands/ship-library.js.map +1 -0
- package/packages/tools/lib/commands/standards.d.ts +2 -2
- package/packages/tools/lib/commands/standards.d.ts.map +1 -1
- package/packages/tools/lib/commands/standards.js +78 -33
- package/packages/tools/lib/commands/standards.js.map +1 -1
- package/packages/tools/lib/commands/sysand-publish.d.ts +16 -1
- package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -1
- package/packages/tools/lib/commands/sysand-publish.js +75 -193
- package/packages/tools/lib/commands/sysand-publish.js.map +1 -1
- package/packages/tools/lib/commands/toolchain.d.ts +5 -0
- package/packages/tools/lib/commands/toolchain.d.ts.map +1 -1
- package/packages/tools/lib/commands/toolchain.js +50 -1
- package/packages/tools/lib/commands/toolchain.js.map +1 -1
- package/packages/tools/lib/commands/validate-client.d.ts +11 -0
- package/packages/tools/lib/commands/validate-client.d.ts.map +1 -0
- package/packages/tools/lib/commands/validate-client.js +54 -0
- package/packages/tools/lib/commands/validate-client.js.map +1 -0
- package/packages/tools/lib/commands/validate.d.ts +33 -2
- package/packages/tools/lib/commands/validate.d.ts.map +1 -1
- package/packages/tools/lib/commands/validate.js +432 -186
- package/packages/tools/lib/commands/validate.js.map +1 -1
- package/packages/tools/lib/dhf/device-dhf.d.ts +57 -0
- package/packages/tools/lib/dhf/device-dhf.d.ts.map +1 -0
- package/packages/tools/lib/dhf/device-dhf.js +152 -0
- package/packages/tools/lib/dhf/device-dhf.js.map +1 -0
- package/packages/tools/lib/dhf/dhf-config-v2.d.ts +1 -1
- package/packages/tools/lib/dhf/dhf-config-v2.d.ts.map +1 -1
- package/packages/tools/lib/dhf/query-engine.d.ts +9 -2
- package/packages/tools/lib/dhf/query-engine.d.ts.map +1 -1
- package/packages/tools/lib/dhf/query-engine.js +29 -25
- package/packages/tools/lib/dhf/query-engine.js.map +1 -1
- package/packages/tools/lib/dhf/query-executor.d.ts +1 -1
- package/packages/tools/lib/dhf/query-executor.js +1 -1
- package/packages/tools/lib/dhf/query-executor.js.map +1 -1
- package/packages/tools/lib/dhf/standards-block.js +1 -1
- package/packages/tools/lib/dhf/standards-block.js.map +1 -1
- package/packages/tools/lib/dhf/standards-library.d.ts.map +1 -1
- package/packages/tools/lib/dhf/standards-library.js +16 -9
- package/packages/tools/lib/dhf/standards-library.js.map +1 -1
- package/packages/tools/lib/dhf/standards-report.d.ts +11 -3
- package/packages/tools/lib/dhf/standards-report.d.ts.map +1 -1
- package/packages/tools/lib/dhf/standards-report.js +43 -13
- package/packages/tools/lib/dhf/standards-report.js.map +1 -1
- package/packages/tools/lib/dhf/template-engine.d.ts +2 -0
- package/packages/tools/lib/dhf/template-engine.d.ts.map +1 -1
- package/packages/tools/lib/dhf/template-engine.js +5 -5
- package/packages/tools/lib/dhf/template-engine.js.map +1 -1
- package/packages/tools/lib/import/import-diff.d.ts +31 -1
- package/packages/tools/lib/import/import-diff.d.ts.map +1 -1
- package/packages/tools/lib/import/import-diff.js +91 -19
- package/packages/tools/lib/import/import-diff.js.map +1 -1
- package/packages/tools/lib/import/import-sources.d.ts +21 -0
- package/packages/tools/lib/import/import-sources.d.ts.map +1 -0
- package/packages/tools/lib/import/import-sources.js +36 -0
- package/packages/tools/lib/import/import-sources.js.map +1 -0
- package/packages/tools/lib/import/reqif.d.ts +23 -0
- package/packages/tools/lib/import/reqif.d.ts.map +1 -0
- package/packages/tools/lib/import/reqif.js +151 -0
- package/packages/tools/lib/import/reqif.js.map +1 -0
- package/packages/tools/lib/import/source-import.d.ts +128 -0
- package/packages/tools/lib/import/source-import.d.ts.map +1 -0
- package/packages/tools/lib/import/source-import.js +305 -0
- package/packages/tools/lib/import/source-import.js.map +1 -0
- package/packages/tools/lib/importer/cameo-importer.d.ts.map +1 -1
- package/packages/tools/lib/importer/cameo-importer.js +4 -1
- package/packages/tools/lib/importer/cameo-importer.js.map +1 -1
- package/packages/tools/lib/importer/ea-importer.d.ts.map +1 -1
- package/packages/tools/lib/importer/ea-importer.js +4 -1
- package/packages/tools/lib/importer/ea-importer.js.map +1 -1
- package/packages/tools/lib/importer/sysand-importer.d.ts +2 -1
- package/packages/tools/lib/importer/sysand-importer.d.ts.map +1 -1
- package/packages/tools/lib/importer/sysand-importer.js +27 -10
- package/packages/tools/lib/importer/sysand-importer.js.map +1 -1
- package/packages/tools/lib/index.d.ts +20 -6
- package/packages/tools/lib/index.d.ts.map +1 -1
- package/packages/tools/lib/index.js +22 -8
- package/packages/tools/lib/index.js.map +1 -1
- package/packages/tools/lib/llm/draft-engine.js +1 -1
- package/packages/tools/lib/llm/draft-engine.js.map +1 -1
- package/packages/tools/lib/llm/model-context.js +1 -1
- package/packages/tools/lib/llm/model-context.js.map +1 -1
- package/packages/tools/lib/lock.d.ts +37 -2
- package/packages/tools/lib/lock.d.ts.map +1 -1
- package/packages/tools/lib/lock.js +93 -8
- package/packages/tools/lib/lock.js.map +1 -1
- package/packages/tools/lib/mcp/index.js +1 -1
- package/packages/tools/lib/mcp/index.js.map +1 -1
- package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -1
- package/packages/tools/lib/mcp/model-loader.js +6 -18
- package/packages/tools/lib/mcp/model-loader.js.map +1 -1
- package/packages/tools/lib/mcp/server.js +2 -2
- package/packages/tools/lib/mcp/server.js.map +1 -1
- package/packages/tools/lib/mcp/tools.d.ts.map +1 -1
- package/packages/tools/lib/mcp/tools.js +5 -4
- package/packages/tools/lib/mcp/tools.js.map +1 -1
- package/packages/tools/lib/methodology/guide-service.d.ts +28 -0
- package/packages/tools/lib/methodology/guide-service.d.ts.map +1 -0
- package/packages/tools/lib/methodology/guide-service.js +32 -0
- package/packages/tools/lib/methodology/guide-service.js.map +1 -0
- package/packages/tools/lib/methodology/guide.d.ts +56 -0
- package/packages/tools/lib/methodology/guide.d.ts.map +1 -0
- package/packages/tools/lib/methodology/guide.js +80 -0
- package/packages/tools/lib/methodology/guide.js.map +1 -0
- package/packages/tools/lib/model/census-projects.d.ts +26 -0
- package/packages/tools/lib/model/census-projects.d.ts.map +1 -0
- package/packages/tools/lib/model/census-projects.js +53 -0
- package/packages/tools/lib/model/census-projects.js.map +1 -0
- package/packages/tools/lib/model/census.d.ts +103 -0
- package/packages/tools/lib/model/census.d.ts.map +1 -0
- package/packages/tools/lib/model/census.js +229 -0
- package/packages/tools/lib/model/census.js.map +1 -0
- package/packages/tools/lib/model/complete-model.d.ts +52 -0
- package/packages/tools/lib/model/complete-model.d.ts.map +1 -0
- package/packages/tools/lib/model/complete-model.js +333 -0
- package/packages/tools/lib/model/complete-model.js.map +1 -0
- package/packages/tools/lib/model/config-loader.d.ts +8 -3
- package/packages/tools/lib/model/config-loader.d.ts.map +1 -1
- package/packages/tools/lib/model/config-loader.js +37 -6
- package/packages/tools/lib/model/config-loader.js.map +1 -1
- package/packages/tools/lib/model/config.d.ts +21 -7
- package/packages/tools/lib/model/config.d.ts.map +1 -1
- package/packages/tools/lib/model/effective-scope.d.ts +55 -28
- package/packages/tools/lib/model/effective-scope.d.ts.map +1 -1
- package/packages/tools/lib/model/effective-scope.js +96 -35
- package/packages/tools/lib/model/effective-scope.js.map +1 -1
- package/packages/tools/lib/model/element-index.d.ts +207 -0
- package/packages/tools/lib/model/element-index.d.ts.map +1 -0
- package/packages/tools/lib/model/element-index.js +316 -0
- package/packages/tools/lib/model/element-index.js.map +1 -0
- package/packages/tools/lib/model/id-rebase.d.ts +35 -0
- package/packages/tools/lib/model/id-rebase.d.ts.map +1 -0
- package/packages/tools/lib/model/id-rebase.js +199 -0
- package/packages/tools/lib/model/id-rebase.js.map +1 -0
- package/packages/tools/lib/model/identity-registry.d.ts +34 -3
- package/packages/tools/lib/model/identity-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/identity-registry.js +40 -7
- package/packages/tools/lib/model/identity-registry.js.map +1 -1
- package/packages/tools/lib/model/impact.d.ts +75 -0
- package/packages/tools/lib/model/impact.d.ts.map +1 -0
- package/packages/tools/lib/model/impact.js +167 -0
- package/packages/tools/lib/model/impact.js.map +1 -0
- package/packages/tools/lib/model/ir-identity.d.ts +3 -51
- package/packages/tools/lib/model/ir-identity.d.ts.map +1 -1
- package/packages/tools/lib/model/ir-identity.js +14 -121
- package/packages/tools/lib/model/ir-identity.js.map +1 -1
- package/packages/tools/lib/model/kind-registry.d.ts +66 -22
- package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/kind-registry.js +104 -145
- package/packages/tools/lib/model/kind-registry.js.map +1 -1
- package/packages/tools/lib/model/manifest.d.ts +2 -2
- package/packages/tools/lib/model/manifest.d.ts.map +1 -1
- package/packages/tools/lib/model/manifest.js +5 -4
- package/packages/tools/lib/model/manifest.js.map +1 -1
- package/packages/tools/lib/model/methodology-loader.d.ts +11 -2
- package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -1
- package/packages/tools/lib/model/methodology-loader.js +24 -130
- package/packages/tools/lib/model/methodology-loader.js.map +1 -1
- package/packages/tools/lib/model/methodology-resolver.d.ts +71 -6
- package/packages/tools/lib/model/methodology-resolver.d.ts.map +1 -1
- package/packages/tools/lib/model/methodology-resolver.js +210 -24
- package/packages/tools/lib/model/methodology-resolver.js.map +1 -1
- package/packages/tools/lib/model/model-diff.d.ts +73 -0
- package/packages/tools/lib/model/model-diff.d.ts.map +1 -0
- package/packages/tools/lib/model/model-diff.js +91 -0
- package/packages/tools/lib/model/model-diff.js.map +1 -0
- package/packages/tools/lib/model/narrow-model.d.ts +9 -0
- package/packages/tools/lib/model/narrow-model.d.ts.map +1 -0
- package/packages/tools/lib/model/narrow-model.js +54 -0
- package/packages/tools/lib/model/narrow-model.js.map +1 -0
- package/packages/tools/lib/model/native-project.d.ts +92 -11
- package/packages/tools/lib/model/native-project.d.ts.map +1 -1
- package/packages/tools/lib/model/native-project.js +163 -269
- package/packages/tools/lib/model/native-project.js.map +1 -1
- package/packages/tools/lib/model/ontology-loader.d.ts +10 -61
- package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
- package/packages/tools/lib/model/ontology-loader.js +11 -512
- package/packages/tools/lib/model/ontology-loader.js.map +1 -1
- package/packages/tools/lib/model/package-manifest.d.ts +8 -2
- package/packages/tools/lib/model/package-manifest.d.ts.map +1 -1
- package/packages/tools/lib/model/package-manifest.js +14 -2
- package/packages/tools/lib/model/package-manifest.js.map +1 -1
- package/packages/tools/lib/model/pinned.d.ts +216 -0
- package/packages/tools/lib/model/pinned.d.ts.map +1 -0
- package/packages/tools/lib/model/pinned.js +481 -0
- package/packages/tools/lib/model/pinned.js.map +1 -0
- package/packages/tools/lib/model/project-conversion.d.ts +3 -2
- package/packages/tools/lib/model/project-conversion.d.ts.map +1 -1
- package/packages/tools/lib/model/project-conversion.js +55 -10
- package/packages/tools/lib/model/project-conversion.js.map +1 -1
- package/packages/tools/lib/model/project-settings.d.ts +10 -0
- package/packages/tools/lib/model/project-settings.d.ts.map +1 -0
- package/packages/tools/lib/model/project-settings.js +48 -0
- package/packages/tools/lib/model/project-settings.js.map +1 -0
- package/packages/tools/lib/model/relation-selection.d.ts +25 -0
- package/packages/tools/lib/model/relation-selection.d.ts.map +1 -0
- package/packages/tools/lib/model/relation-selection.js +65 -0
- package/packages/tools/lib/model/relation-selection.js.map +1 -0
- package/packages/tools/lib/model/relationship-legality.d.ts +6 -0
- package/packages/tools/lib/model/relationship-legality.d.ts.map +1 -1
- package/packages/tools/lib/model/relationship-legality.js.map +1 -1
- package/packages/tools/lib/model/relationship-registry.d.ts +21 -8
- package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/relationship-registry.js +77 -129
- package/packages/tools/lib/model/relationship-registry.js.map +1 -1
- package/packages/tools/lib/model/relationship-subjects.d.ts +28 -0
- package/packages/tools/lib/model/relationship-subjects.d.ts.map +1 -0
- package/packages/tools/lib/model/relationship-subjects.js +126 -0
- package/packages/tools/lib/model/relationship-subjects.js.map +1 -0
- package/packages/tools/lib/model/release-target.d.ts +12 -0
- package/packages/tools/lib/model/release-target.d.ts.map +1 -0
- package/packages/tools/lib/model/release-target.js +35 -0
- package/packages/tools/lib/model/release-target.js.map +1 -0
- package/packages/tools/lib/model/selector-vocabulary.d.ts +47 -0
- package/packages/tools/lib/model/selector-vocabulary.d.ts.map +1 -0
- package/packages/tools/lib/model/selector-vocabulary.js +181 -0
- package/packages/tools/lib/model/selector-vocabulary.js.map +1 -0
- package/packages/tools/lib/model/semantic.d.ts +99 -7
- package/packages/tools/lib/model/semantic.d.ts.map +1 -1
- package/packages/tools/lib/model/semantic.js +13 -1
- package/packages/tools/lib/model/semantic.js.map +1 -1
- package/packages/tools/lib/model/settings-boundary.d.ts.map +1 -1
- package/packages/tools/lib/model/settings-boundary.js +9 -8
- package/packages/tools/lib/model/settings-boundary.js.map +1 -1
- package/packages/tools/lib/model/short-id.d.ts +2 -0
- package/packages/tools/lib/model/short-id.d.ts.map +1 -1
- package/packages/tools/lib/model/short-id.js +9 -0
- package/packages/tools/lib/model/short-id.js.map +1 -1
- package/packages/tools/lib/model/source-graph.d.ts +9 -7
- package/packages/tools/lib/model/source-graph.d.ts.map +1 -1
- package/packages/tools/lib/model/source-graph.js +19 -24
- package/packages/tools/lib/model/source-graph.js.map +1 -1
- package/packages/tools/lib/model/source-provenance.d.ts +5 -1
- package/packages/tools/lib/model/source-provenance.d.ts.map +1 -1
- package/packages/tools/lib/model/source-provenance.js.map +1 -1
- package/packages/tools/lib/model/sysml-files.js +1 -1
- package/packages/tools/lib/model/sysml-ir.d.ts +2 -5
- package/packages/tools/lib/model/sysml-ir.d.ts.map +1 -1
- package/packages/tools/lib/model/sysml-ir.js +1 -100
- package/packages/tools/lib/model/sysml-ir.js.map +1 -1
- package/packages/tools/lib/model/toolchain-merge.d.ts +4 -0
- package/packages/tools/lib/model/toolchain-merge.d.ts.map +1 -0
- package/packages/tools/lib/model/toolchain-merge.js +34 -0
- package/packages/tools/lib/model/toolchain-merge.js.map +1 -0
- package/packages/tools/lib/model/user-settings.d.ts +13 -0
- package/packages/tools/lib/model/user-settings.d.ts.map +1 -0
- package/packages/tools/lib/model/user-settings.js +83 -0
- package/packages/tools/lib/model/user-settings.js.map +1 -0
- package/packages/tools/lib/model/variability.d.ts +56 -0
- package/packages/tools/lib/model/variability.d.ts.map +1 -0
- package/packages/tools/lib/model/variability.js +116 -0
- package/packages/tools/lib/model/variability.js.map +1 -0
- package/packages/tools/lib/model/version-range.d.ts +2 -0
- package/packages/tools/lib/model/version-range.d.ts.map +1 -0
- package/packages/tools/lib/model/version-range.js +37 -0
- package/packages/tools/lib/model/version-range.js.map +1 -0
- package/packages/tools/lib/model/view-deriver.d.ts +16 -0
- package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
- package/packages/tools/lib/model/view-deriver.js +100 -26
- package/packages/tools/lib/model/view-deriver.js.map +1 -1
- package/packages/tools/lib/model/view-layout-block.d.ts +81 -0
- package/packages/tools/lib/model/view-layout-block.d.ts.map +1 -0
- package/packages/tools/lib/model/view-layout-block.js +525 -0
- package/packages/tools/lib/model/view-layout-block.js.map +1 -0
- package/packages/tools/lib/model/view-layout-migration.d.ts +54 -0
- package/packages/tools/lib/model/view-layout-migration.d.ts.map +1 -0
- package/packages/tools/lib/model/view-layout-migration.js +156 -0
- package/packages/tools/lib/model/view-layout-migration.js.map +1 -0
- package/packages/tools/lib/model/workspace-membership.d.ts +99 -0
- package/packages/tools/lib/model/workspace-membership.d.ts.map +1 -0
- package/packages/tools/lib/model/workspace-membership.js +281 -0
- package/packages/tools/lib/model/workspace-membership.js.map +1 -0
- package/packages/tools/lib/ontology/owl-exporter.d.ts +1 -1
- package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -1
- package/packages/tools/lib/ontology/owl-exporter.js +1 -1
- package/packages/tools/lib/ontology/owl-exporter.js.map +1 -1
- package/packages/tools/lib/operations/ai-authoring.d.ts.map +1 -1
- package/packages/tools/lib/operations/ai-authoring.js +7 -5
- package/packages/tools/lib/operations/ai-authoring.js.map +1 -1
- package/packages/tools/lib/operations/authoring.d.ts +10 -4
- package/packages/tools/lib/operations/authoring.d.ts.map +1 -1
- package/packages/tools/lib/operations/authoring.js +27 -11
- package/packages/tools/lib/operations/authoring.js.map +1 -1
- package/packages/tools/lib/operations/index.d.ts +2 -0
- package/packages/tools/lib/operations/index.d.ts.map +1 -1
- package/packages/tools/lib/operations/index.js +1 -0
- package/packages/tools/lib/operations/index.js.map +1 -1
- package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
- package/packages/tools/lib/operations/project-snapshot.js +7 -13
- package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
- package/packages/tools/lib/plugin/plugin-scaffold.js +2 -2
- package/packages/tools/lib/plugin/plugin-scaffold.js.map +1 -1
- package/packages/tools/lib/protocol/messages.d.ts +375 -7
- package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
- package/packages/tools/lib/serializer/csv-io.d.ts +37 -29
- package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -1
- package/packages/tools/lib/serializer/csv-io.js +64 -31
- package/packages/tools/lib/serializer/csv-io.js.map +1 -1
- package/packages/tools/lib/serializer/sysml-generator.d.ts +15 -2
- package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -1
- package/packages/tools/lib/serializer/sysml-generator.js +45 -17
- package/packages/tools/lib/serializer/sysml-generator.js.map +1 -1
- package/packages/tools/lib/server/conflict-policy.js +1 -1
- package/packages/tools/lib/server/conflict-policy.js.map +1 -1
- package/packages/tools/lib/server/dashboard-store.d.ts +1 -7
- package/packages/tools/lib/server/dashboard-store.d.ts.map +1 -1
- package/packages/tools/lib/server/dashboard-store.js +3 -14
- package/packages/tools/lib/server/dashboard-store.js.map +1 -1
- package/packages/tools/lib/server/dev-server.d.ts +48 -1
- package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
- package/packages/tools/lib/server/dev-server.js +529 -80
- package/packages/tools/lib/server/dev-server.js.map +1 -1
- package/packages/tools/lib/server/dev-validate.d.ts +30 -0
- package/packages/tools/lib/server/dev-validate.d.ts.map +1 -0
- package/packages/tools/lib/server/dev-validate.js +82 -0
- package/packages/tools/lib/server/dev-validate.js.map +1 -0
- package/packages/tools/lib/server/element-writer.d.ts +4 -1
- package/packages/tools/lib/server/element-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/element-writer.js +56 -35
- package/packages/tools/lib/server/element-writer.js.map +1 -1
- package/packages/tools/lib/server/mutation-domain.d.ts +10 -0
- package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -1
- package/packages/tools/lib/server/mutation-domain.js +45 -8
- package/packages/tools/lib/server/mutation-domain.js.map +1 -1
- package/packages/tools/lib/server/package-source.d.ts +13 -3
- package/packages/tools/lib/server/package-source.d.ts.map +1 -1
- package/packages/tools/lib/server/package-source.js +31 -39
- package/packages/tools/lib/server/package-source.js.map +1 -1
- package/packages/tools/lib/server/package-writer.d.ts +19 -6
- package/packages/tools/lib/server/package-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/package-writer.js +90 -39
- package/packages/tools/lib/server/package-writer.js.map +1 -1
- package/packages/tools/lib/server/persistor.d.ts +33 -7
- package/packages/tools/lib/server/persistor.d.ts.map +1 -1
- package/packages/tools/lib/server/persistor.js +63 -48
- package/packages/tools/lib/server/persistor.js.map +1 -1
- package/packages/tools/lib/server/project-gitignore.d.ts +9 -0
- package/packages/tools/lib/server/project-gitignore.d.ts.map +1 -0
- package/packages/tools/lib/server/project-gitignore.js +27 -0
- package/packages/tools/lib/server/project-gitignore.js.map +1 -0
- package/packages/tools/lib/server/relationship-writer.d.ts +31 -2
- package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/relationship-writer.js +255 -95
- package/packages/tools/lib/server/relationship-writer.js.map +1 -1
- package/packages/tools/lib/server/release-writer.d.ts +46 -0
- package/packages/tools/lib/server/release-writer.d.ts.map +1 -0
- package/packages/tools/lib/server/release-writer.js +133 -0
- package/packages/tools/lib/server/release-writer.js.map +1 -0
- package/packages/tools/lib/server/rule-policy-writer.d.ts +17 -4
- package/packages/tools/lib/server/rule-policy-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/rule-policy-writer.js +92 -7
- package/packages/tools/lib/server/rule-policy-writer.js.map +1 -1
- package/packages/tools/lib/server/rule-service.d.ts +50 -0
- package/packages/tools/lib/server/rule-service.d.ts.map +1 -0
- package/packages/tools/lib/server/rule-service.js +89 -0
- package/packages/tools/lib/server/rule-service.js.map +1 -0
- package/packages/tools/lib/server/rule-writer.d.ts +87 -0
- package/packages/tools/lib/server/rule-writer.d.ts.map +1 -0
- package/packages/tools/lib/server/rule-writer.js +165 -0
- package/packages/tools/lib/server/rule-writer.js.map +1 -0
- package/packages/tools/lib/server/suspect-review.d.ts +11 -0
- package/packages/tools/lib/server/suspect-review.d.ts.map +1 -0
- package/packages/tools/lib/server/suspect-review.js +28 -0
- package/packages/tools/lib/server/suspect-review.js.map +1 -0
- package/packages/tools/lib/server/sysml-notation.d.ts +1 -1
- package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -1
- package/packages/tools/lib/server/sysml-notation.js +5 -0
- package/packages/tools/lib/server/sysml-notation.js.map +1 -1
- package/packages/tools/lib/server/user-preferences.d.ts +8 -0
- package/packages/tools/lib/server/user-preferences.d.ts.map +1 -0
- package/packages/tools/lib/server/user-preferences.js +47 -0
- package/packages/tools/lib/server/user-preferences.js.map +1 -0
- package/packages/tools/lib/server/version-servers.d.ts +60 -0
- package/packages/tools/lib/server/version-servers.d.ts.map +1 -0
- package/packages/tools/lib/server/version-servers.js +106 -0
- package/packages/tools/lib/server/version-servers.js.map +1 -0
- package/packages/tools/lib/server/view-layout-store.d.ts +28 -13
- package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
- package/packages/tools/lib/server/view-layout-store.js +106 -106
- package/packages/tools/lib/server/view-layout-store.js.map +1 -1
- package/packages/tools/lib/server/view-writer.d.ts +22 -2
- package/packages/tools/lib/server/view-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/view-writer.js +99 -44
- package/packages/tools/lib/server/view-writer.js.map +1 -1
- package/packages/tools/lib/server/write-guard.d.ts +7 -0
- package/packages/tools/lib/server/write-guard.d.ts.map +1 -0
- package/packages/tools/lib/server/write-guard.js +77 -0
- package/packages/tools/lib/server/write-guard.js.map +1 -0
- package/packages/tools/lib/stage2/api-model.d.ts +160 -0
- package/packages/tools/lib/stage2/api-model.d.ts.map +1 -0
- package/packages/tools/lib/stage2/api-model.js +341 -0
- package/packages/tools/lib/stage2/api-model.js.map +1 -0
- package/packages/tools/lib/stage2/build-from-api.d.ts +47 -0
- package/packages/tools/lib/stage2/build-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/build-from-api.js +1462 -0
- package/packages/tools/lib/stage2/build-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/guide-from-api.d.ts +38 -0
- package/packages/tools/lib/stage2/guide-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/guide-from-api.js +97 -0
- package/packages/tools/lib/stage2/guide-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/handoff-files.d.ts +13 -0
- package/packages/tools/lib/stage2/handoff-files.d.ts.map +1 -0
- package/packages/tools/lib/stage2/handoff-files.js +32 -0
- package/packages/tools/lib/stage2/handoff-files.js.map +1 -0
- package/packages/tools/lib/stage2/methodology-from-api.d.ts +10 -0
- package/packages/tools/lib/stage2/methodology-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/methodology-from-api.js +109 -0
- package/packages/tools/lib/stage2/methodology-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/package-metadata-from-api.d.ts +15 -0
- package/packages/tools/lib/stage2/package-metadata-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/package-metadata-from-api.js +238 -0
- package/packages/tools/lib/stage2/package-metadata-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/project-from-api.d.ts +60 -0
- package/packages/tools/lib/stage2/project-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/project-from-api.js +328 -0
- package/packages/tools/lib/stage2/project-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/registries-from-api.d.ts +68 -0
- package/packages/tools/lib/stage2/registries-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/registries-from-api.js +313 -0
- package/packages/tools/lib/stage2/registries-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/stage2-from-handoff.d.ts +26 -0
- package/packages/tools/lib/stage2/stage2-from-handoff.d.ts.map +1 -0
- package/packages/tools/lib/stage2/stage2-from-handoff.js +34 -0
- package/packages/tools/lib/stage2/stage2-from-handoff.js.map +1 -0
- package/packages/tools/lib/stage2/sysml-names.d.ts +9 -0
- package/packages/tools/lib/stage2/sysml-names.d.ts.map +1 -0
- package/packages/tools/lib/stage2/sysml-names.js +39 -0
- package/packages/tools/lib/stage2/sysml-names.js.map +1 -0
- package/packages/tools/lib/toolchain/default-registry.d.ts +2 -2
- package/packages/tools/lib/toolchain/default-registry.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/default-registry.js +9 -5
- package/packages/tools/lib/toolchain/default-registry.js.map +1 -1
- package/packages/tools/lib/toolchain/diagnostic.d.ts +2 -2
- package/packages/tools/lib/toolchain/diagnostic.js +1 -1
- package/packages/tools/lib/toolchain/diagnostic.js.map +1 -1
- package/packages/tools/lib/toolchain/effective.d.ts +25 -17
- package/packages/tools/lib/toolchain/effective.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/effective.js +45 -40
- package/packages/tools/lib/toolchain/effective.js.map +1 -1
- package/packages/tools/lib/toolchain/exceptions.d.ts +27 -0
- package/packages/tools/lib/toolchain/exceptions.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/exceptions.js +77 -0
- package/packages/tools/lib/toolchain/exceptions.js.map +1 -0
- package/packages/tools/lib/toolchain/index.d.ts +2 -2
- package/packages/tools/lib/toolchain/index.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/index.js +2 -2
- package/packages/tools/lib/toolchain/index.js.map +1 -1
- package/packages/tools/lib/toolchain/operations.d.ts +45 -10
- package/packages/tools/lib/toolchain/operations.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/operations.js +107 -8
- package/packages/tools/lib/toolchain/operations.js.map +1 -1
- package/packages/tools/lib/toolchain/ownership.d.ts +13 -0
- package/packages/tools/lib/toolchain/ownership.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/ownership.js +57 -0
- package/packages/tools/lib/toolchain/ownership.js.map +1 -0
- package/packages/tools/lib/toolchain/process.d.ts +2 -2
- package/packages/tools/lib/toolchain/process.js +2 -2
- package/packages/tools/lib/toolchain/project-config.d.ts +4 -0
- package/packages/tools/lib/toolchain/project-config.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/project-config.js +13 -0
- package/packages/tools/lib/toolchain/project-config.js.map +1 -0
- package/packages/tools/lib/toolchain/project-model.d.ts +75 -0
- package/packages/tools/lib/toolchain/project-model.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/project-model.js +92 -0
- package/packages/tools/lib/toolchain/project-model.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/internal-package.d.ts +6 -0
- package/packages/tools/lib/toolchain/providers/internal-package.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/internal-package.js +47 -0
- package/packages/tools/lib/toolchain/providers/internal-package.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-check.d.ts +20 -0
- package/packages/tools/lib/toolchain/providers/opensysml-check.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-check.js +95 -0
- package/packages/tools/lib/toolchain/providers/opensysml-check.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-compact.d.ts +17 -0
- package/packages/tools/lib/toolchain/providers/opensysml-compact.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-compact.js +69 -0
- package/packages/tools/lib/toolchain/providers/opensysml-compact.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-lowering.d.ts +50 -0
- package/packages/tools/lib/toolchain/providers/opensysml-lowering.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-lowering.js +646 -0
- package/packages/tools/lib/toolchain/providers/opensysml-lowering.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-names.d.ts +16 -0
- package/packages/tools/lib/toolchain/providers/opensysml-names.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-names.js +37 -0
- package/packages/tools/lib/toolchain/providers/opensysml-names.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml.d.ts +88 -0
- package/packages/tools/lib/toolchain/providers/opensysml.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml.js +178 -0
- package/packages/tools/lib/toolchain/providers/opensysml.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/recommended.d.ts +2 -0
- package/packages/tools/lib/toolchain/providers/recommended.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/recommended.js +13 -0
- package/packages/tools/lib/toolchain/providers/recommended.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/sysand-project.d.ts +60 -0
- package/packages/tools/lib/toolchain/providers/sysand-project.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/sysand-project.js +160 -0
- package/packages/tools/lib/toolchain/providers/sysand-project.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/sysand.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/providers/sysand.js +26 -2
- package/packages/tools/lib/toolchain/providers/sysand.js.map +1 -1
- package/packages/tools/lib/toolchain/providers/syside-lowering.d.ts +29 -0
- package/packages/tools/lib/toolchain/providers/syside-lowering.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/syside-lowering.js +497 -0
- package/packages/tools/lib/toolchain/providers/syside-lowering.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/syside-python.d.ts +9 -0
- package/packages/tools/lib/toolchain/providers/syside-python.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/syside-python.js +69 -0
- package/packages/tools/lib/toolchain/providers/syside-python.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/providers/syside.js +2 -0
- package/packages/tools/lib/toolchain/providers/syside.js.map +1 -1
- package/packages/tools/lib/toolchain/registry.d.ts +118 -21
- package/packages/tools/lib/toolchain/registry.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/registry.js +18 -24
- package/packages/tools/lib/toolchain/registry.js.map +1 -1
- package/packages/tools/lib/toolchain/schema.d.ts +6 -5
- package/packages/tools/lib/toolchain/schema.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/schema.js +8 -13
- package/packages/tools/lib/toolchain/schema.js.map +1 -1
- package/packages/tools/lib/toolchain/shipped-library.d.ts +28 -0
- package/packages/tools/lib/toolchain/shipped-library.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/shipped-library.js +120 -0
- package/packages/tools/lib/toolchain/shipped-library.js.map +1 -0
- package/packages/tools/lib/toolchain/source-fingerprint.d.ts +2 -0
- package/packages/tools/lib/toolchain/source-fingerprint.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/source-fingerprint.js +30 -0
- package/packages/tools/lib/toolchain/source-fingerprint.js.map +1 -0
- package/packages/tools/lib/toolchain/user-settings-status.d.ts +51 -0
- package/packages/tools/lib/toolchain/user-settings-status.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/user-settings-status.js +104 -0
- package/packages/tools/lib/toolchain/user-settings-status.js.map +1 -0
- package/packages/tools/lib/validator/architecture-validator.d.ts.map +1 -1
- package/packages/tools/lib/validator/architecture-validator.js +2 -1
- package/packages/tools/lib/validator/architecture-validator.js.map +1 -1
- package/packages/tools/lib/validator/behavior-validator.js +1 -1
- package/packages/tools/lib/validator/behavior-validator.js.map +1 -1
- package/packages/tools/lib/validator/builtin-rules.js +1 -1
- package/packages/tools/lib/validator/builtin-rules.js.map +1 -1
- package/packages/tools/lib/validator/constraint-eval.d.ts +30 -4
- package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
- package/packages/tools/lib/validator/constraint-eval.js +101 -59
- package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
- package/packages/tools/lib/validator/constraint-loader-api.d.ts +22 -0
- package/packages/tools/lib/validator/constraint-loader-api.d.ts.map +1 -0
- package/packages/tools/lib/validator/constraint-loader-api.js +160 -0
- package/packages/tools/lib/validator/constraint-loader-api.js.map +1 -0
- package/packages/tools/lib/validator/constraint-loader.d.ts +22 -18
- package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -1
- package/packages/tools/lib/validator/constraint-loader.js +33 -141
- package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
- package/packages/tools/lib/validator/rule-clauses.d.ts +51 -0
- package/packages/tools/lib/validator/rule-clauses.d.ts.map +1 -0
- package/packages/tools/lib/validator/rule-clauses.js +87 -0
- package/packages/tools/lib/validator/rule-clauses.js.map +1 -0
- package/packages/tools/lib/validator/rule-engine.d.ts +9 -1
- package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
- package/packages/tools/lib/validator/rule-engine.js +50 -6
- package/packages/tools/lib/validator/rule-engine.js.map +1 -1
- package/packages/tools/lib/validator/rule-registry.d.ts +4 -8
- package/packages/tools/lib/validator/rule-registry.d.ts.map +1 -1
- package/packages/tools/lib/validator/rule-registry.js +42 -79
- package/packages/tools/lib/validator/rule-registry.js.map +1 -1
- package/packages/tools/lib/validator/rule-tailoring.d.ts +62 -0
- package/packages/tools/lib/validator/rule-tailoring.d.ts.map +1 -0
- package/packages/tools/lib/validator/rule-tailoring.js +85 -0
- package/packages/tools/lib/validator/rule-tailoring.js.map +1 -0
- package/packages/tools/lib/validator/types.d.ts +12 -1
- package/packages/tools/lib/validator/types.d.ts.map +1 -1
- package/packages/tools/lib/validator/workspace-boundary-validator.d.ts +9 -0
- package/packages/tools/lib/validator/workspace-boundary-validator.d.ts.map +1 -0
- package/packages/tools/lib/validator/workspace-boundary-validator.js +28 -0
- package/packages/tools/lib/validator/workspace-boundary-validator.js.map +1 -0
- package/packages/tools/python/memo_model.py +243 -0
- package/packages/tools/python/memo_stage1_syside.py +389 -0
- package/packages/tools/lib/commands/check.d.ts +0 -6
- package/packages/tools/lib/commands/check.d.ts.map +0 -1
- package/packages/tools/lib/commands/check.js +0 -191
- package/packages/tools/lib/commands/check.js.map +0 -1
- package/packages/tools/lib/commands/conformance.d.ts +0 -36
- package/packages/tools/lib/commands/conformance.d.ts.map +0 -1
- package/packages/tools/lib/commands/conformance.js +0 -212
- package/packages/tools/lib/commands/conformance.js.map +0 -1
- package/packages/tools/lib/commands/roundtrip.d.ts +0 -6
- package/packages/tools/lib/commands/roundtrip.d.ts.map +0 -1
- package/packages/tools/lib/commands/roundtrip.js +0 -145
- package/packages/tools/lib/commands/roundtrip.js.map +0 -1
- package/packages/tools/lib/conformance/baseline.d.ts +0 -26
- package/packages/tools/lib/conformance/baseline.d.ts.map +0 -1
- package/packages/tools/lib/conformance/baseline.js +0 -170
- package/packages/tools/lib/conformance/baseline.js.map +0 -1
- package/packages/tools/lib/conformance/bnf.d.ts +0 -84
- package/packages/tools/lib/conformance/bnf.d.ts.map +0 -1
- package/packages/tools/lib/conformance/bnf.js +0 -166
- package/packages/tools/lib/conformance/bnf.js.map +0 -1
- package/packages/tools/lib/conformance/corpus.d.ts +0 -125
- package/packages/tools/lib/conformance/corpus.d.ts.map +0 -1
- package/packages/tools/lib/conformance/corpus.js +0 -190
- package/packages/tools/lib/conformance/corpus.js.map +0 -1
- package/packages/tools/lib/conformance/diff-xmi.d.ts +0 -118
- package/packages/tools/lib/conformance/diff-xmi.d.ts.map +0 -1
- package/packages/tools/lib/conformance/diff-xmi.js +0 -276
- package/packages/tools/lib/conformance/diff-xmi.js.map +0 -1
- package/packages/tools/lib/conformance/generated/syside-rules.d.ts +0 -10
- package/packages/tools/lib/conformance/generated/syside-rules.d.ts.map +0 -1
- package/packages/tools/lib/conformance/generated/syside-rules.js +0 -1142
- package/packages/tools/lib/conformance/generated/syside-rules.js.map +0 -1
- package/packages/tools/lib/conformance/index.d.ts +0 -7
- package/packages/tools/lib/conformance/index.d.ts.map +0 -1
- package/packages/tools/lib/conformance/index.js +0 -19
- package/packages/tools/lib/conformance/index.js.map +0 -1
- package/packages/tools/lib/conformance/run.d.ts +0 -117
- package/packages/tools/lib/conformance/run.d.ts.map +0 -1
- package/packages/tools/lib/conformance/run.js +0 -0
- package/packages/tools/lib/conformance/run.js.map +0 -1
- package/packages/tools/lib/conformance/xmi.d.ts +0 -45
- package/packages/tools/lib/conformance/xmi.d.ts.map +0 -1
- package/packages/tools/lib/conformance/xmi.js +0 -148
- package/packages/tools/lib/conformance/xmi.js.map +0 -1
- package/packages/tools/lib/language/generated/ast.d.ts +0 -3571
- package/packages/tools/lib/language/generated/ast.d.ts.map +0 -1
- package/packages/tools/lib/language/generated/ast.js +0 -2980
- package/packages/tools/lib/language/generated/ast.js.map +0 -1
- package/packages/tools/lib/language/generated/grammar.d.ts +0 -7
- package/packages/tools/lib/language/generated/grammar.d.ts.map +0 -1
- package/packages/tools/lib/language/generated/grammar.js +0 -10687
- package/packages/tools/lib/language/generated/grammar.js.map +0 -1
- package/packages/tools/lib/language/generated/module.d.ts +0 -14
- package/packages/tools/lib/language/generated/module.d.ts.map +0 -1
- package/packages/tools/lib/language/generated/module.js +0 -21
- package/packages/tools/lib/language/generated/module.js.map +0 -1
- package/packages/tools/lib/language/memo-sysml-module.d.ts +0 -24
- package/packages/tools/lib/language/memo-sysml-module.d.ts.map +0 -1
- package/packages/tools/lib/language/memo-sysml-module.js +0 -20
- package/packages/tools/lib/language/memo-sysml-module.js.map +0 -1
- package/packages/tools/lib/model/builder.d.ts +0 -27
- package/packages/tools/lib/model/builder.d.ts.map +0 -1
- package/packages/tools/lib/model/builder.js +0 -2112
- package/packages/tools/lib/model/builder.js.map +0 -1
- package/packages/tools/lib/model/package-registry.d.ts +0 -64
- package/packages/tools/lib/model/package-registry.d.ts.map +0 -1
- package/packages/tools/lib/model/package-registry.js +0 -184
- package/packages/tools/lib/model/package-registry.js.map +0 -1
- package/packages/tools/lib/model/parser-utils.d.ts +0 -65
- package/packages/tools/lib/model/parser-utils.d.ts.map +0 -1
- package/packages/tools/lib/model/parser-utils.js +0 -201
- package/packages/tools/lib/model/parser-utils.js.map +0 -1
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts +0 -3
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts.map +0 -1
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js +0 -97
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js.map +0 -1
- package/packages/tools/lib/sysmlc/index.d.ts +0 -2
- package/packages/tools/lib/sysmlc/index.d.ts.map +0 -1
- package/packages/tools/lib/sysmlc/index.js +0 -7
- package/packages/tools/lib/sysmlc/index.js.map +0 -1
- package/packages/tools/lib/sysmlc/server.d.ts +0 -29
- package/packages/tools/lib/sysmlc/server.d.ts.map +0 -1
- package/packages/tools/lib/sysmlc/server.js +0 -168
- package/packages/tools/lib/sysmlc/server.js.map +0 -1
- package/packages/tools/lib/toolchain/lowering.d.ts +0 -63
- package/packages/tools/lib/toolchain/lowering.d.ts.map +0 -1
- package/packages/tools/lib/toolchain/lowering.js +0 -100
- package/packages/tools/lib/toolchain/lowering.js.map +0 -1
- package/packages/tools/lib/toolchain/providers/internal.d.ts +0 -33
- package/packages/tools/lib/toolchain/providers/internal.d.ts.map +0 -1
- package/packages/tools/lib/toolchain/providers/internal.js +0 -286
- package/packages/tools/lib/toolchain/providers/internal.js.map +0 -1
- package/packages/tools/lib/toolchain/sysmlc-client.d.ts +0 -77
- package/packages/tools/lib/toolchain/sysmlc-client.d.ts.map +0 -1
- package/packages/tools/lib/toolchain/sysmlc-client.js +0 -0
- package/packages/tools/lib/toolchain/sysmlc-client.js.map +0 -1
- package/packages/tools/lib/validator/sysml-constraints.d.ts +0 -64
- package/packages/tools/lib/validator/sysml-constraints.d.ts.map +0 -1
- package/packages/tools/lib/validator/sysml-constraints.js +0 -251
- package/packages/tools/lib/validator/sysml-constraints.js.map +0 -1
- package/packages/tools/src/grammar/memo-sysml.langium +0 -1064
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { MEMOConfig } from '../model/config.js';
|
|
2
|
+
import type { IrIdentityIndex } from '../model/ir-identity.js';
|
|
3
|
+
import type { ApiModel } from '../stage2/api-model.js';
|
|
4
|
+
import { type ProjectModel } from '../toolchain/project-model.js';
|
|
5
|
+
import { type SourceOutline } from './source-outline.js';
|
|
6
|
+
/** The outline of one project file, given its current text. */
|
|
7
|
+
export interface OutlineSource {
|
|
8
|
+
/**
|
|
9
|
+
* The outline of a file as it is on disk. `file` is project-relative.
|
|
10
|
+
* Rejects with a message when the text is not one the selected compiler
|
|
11
|
+
* accepts: there is no outline to edit then.
|
|
12
|
+
*/
|
|
13
|
+
outline(file: string, text: string): Promise<SourceOutline>;
|
|
14
|
+
/**
|
|
15
|
+
* Compile the project with `text` in place of the file, before it reaches
|
|
16
|
+
* disk. Rejects with the compiler's diagnostics when it does not accept
|
|
17
|
+
* the result: an edit that would make the project invalid SysML is not
|
|
18
|
+
* written. `also` is every other file the same edit changes, project-relative,
|
|
19
|
+
* since an edit that spans files is valid only as a whole: one file alone can
|
|
20
|
+
* leave a reference to what another file's edit removed. Gives the outline of
|
|
21
|
+
* the text when the compile states one;
|
|
22
|
+
* OpenSysML's verdict on a content document does not, since stating it
|
|
23
|
+
* would cost a conversion of the whole model.
|
|
24
|
+
*/
|
|
25
|
+
verify(file: string, text: string, also?: ReadonlyMap<string, string>): Promise<SourceOutline | undefined>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Outlines from a handoff, recompiling when a file changed since it was
|
|
29
|
+
* compiled. `texts` are the files' contents as that compile read them.
|
|
30
|
+
*/
|
|
31
|
+
export declare function handoffOutlineSource(options: {
|
|
32
|
+
projectRoot: string;
|
|
33
|
+
config: MEMOConfig;
|
|
34
|
+
api: ApiModel;
|
|
35
|
+
texts: ReadonlyMap<string, string>;
|
|
36
|
+
}): OutlineSource;
|
|
37
|
+
/**
|
|
38
|
+
* The outline source of the selected compiler, for a caller holding no loaded
|
|
39
|
+
* project: the project loads on first use, reusing `.memo/stage1/` when
|
|
40
|
+
* nothing changed.
|
|
41
|
+
*/
|
|
42
|
+
export declare function selectedOutlineSource(projectRoot: string, config: MEMOConfig): OutlineSource;
|
|
43
|
+
/** The outline source for a loaded project: its compiler's. */
|
|
44
|
+
export declare function outlineSourceFor(projectRoot: string, config: MEMOConfig, project: ProjectModel): OutlineSource;
|
|
45
|
+
/** The outlines of every project file of a loaded project. */
|
|
46
|
+
export declare function projectOutlines(projectRoot: string, project: ProjectModel): SourceOutline[];
|
|
47
|
+
/** The outlines of a handoff's project files, read against the files on disk. */
|
|
48
|
+
export declare function outlinesFromHandoff(projectRoot: string, api: ApiModel): SourceOutline[];
|
|
49
|
+
/**
|
|
50
|
+
* The identity index a write resolves against: every declaration with an
|
|
51
|
+
* identity, and each element's.
|
|
52
|
+
*/
|
|
53
|
+
export declare function outlineIdentityIndex(outlines: readonly SourceOutline[], elements: Iterable<{
|
|
54
|
+
id: string;
|
|
55
|
+
file?: string;
|
|
56
|
+
}>, projectRoot: string): IrIdentityIndex;
|
|
57
|
+
//# sourceMappingURL=outline-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outline-source.d.ts","sourceRoot":"","sources":["../../src/authoring/outline-source.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAyC,KAAK,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAMzG,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE3F,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CAC9G;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,GAAG,aAAa,CAoBhB;AA0ED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,CAY5F;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,aAAa,CAE9G;AAiCD,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,aAAa,EAAE,CAE3F;AASD,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,aAAa,EAAE,CAWvF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,QAAQ,EAAE,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACjD,WAAW,EAAE,MAAM,GACpB,eAAe,CAQjB"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// ─── Outlines of a project, from whichever compiler is selected ─────────────
|
|
2
|
+
//
|
|
3
|
+
// A write resolves its identity against the outline of the file as it is on
|
|
4
|
+
// disk now (plans/memo-write-back-from-handoff.md). That is the last handoff,
|
|
5
|
+
// when the file is unchanged since that compile, and otherwise a fresh compile:
|
|
6
|
+
// an outline read from a handoff of other bytes would put every range in the
|
|
7
|
+
// wrong place.
|
|
8
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
9
|
+
import { createHash } from 'node:crypto';
|
|
10
|
+
import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, realpathSync, rmSync, symlinkSync, writeFileSync } from 'node:fs';
|
|
11
|
+
import { tmpdir } from 'node:os';
|
|
12
|
+
import { basename, dirname, isAbsolute, join, relative, resolve } from 'node:path';
|
|
13
|
+
import { loadProjectModel, Stage1RejectedError } from '../toolchain/project-model.js';
|
|
14
|
+
import { resolveToolchain } from '../toolchain/effective.js';
|
|
15
|
+
import { defaultRegistry } from '../toolchain/default-registry.js';
|
|
16
|
+
import { OPENSYSML_PROVIDER_ID } from '../toolchain/providers/opensysml.js';
|
|
17
|
+
import { checkWithOpenSysML } from '../toolchain/providers/opensysml-check.js';
|
|
18
|
+
import { outlineIdentities, outlineIdentityTable } from './outline-identity.js';
|
|
19
|
+
import { emptyOutline, outlineFromHandoff } from './source-outline.js';
|
|
20
|
+
const sha = (text) => createHash('sha256').update(text).digest('hex');
|
|
21
|
+
/**
|
|
22
|
+
* Outlines from a handoff, recompiling when a file changed since it was
|
|
23
|
+
* compiled. `texts` are the files' contents as that compile read them.
|
|
24
|
+
*/
|
|
25
|
+
export function handoffOutlineSource(options) {
|
|
26
|
+
let { api } = options;
|
|
27
|
+
let hashes = new Map([...options.texts].map(([file, text]) => [file, sha(text)]));
|
|
28
|
+
return {
|
|
29
|
+
async outline(file, text) {
|
|
30
|
+
// An empty file declares nothing, whether or not it was compiled.
|
|
31
|
+
if (!text.trim())
|
|
32
|
+
return emptyOutline(file, text);
|
|
33
|
+
if (hashes.get(file) !== sha(text)) {
|
|
34
|
+
const project = await loadProjectModel({ projectRoot: options.projectRoot, config: options.config });
|
|
35
|
+
if (!project.api)
|
|
36
|
+
throw new Error(`${project.compiler} built no handoff to outline ${file} from`);
|
|
37
|
+
api = project.api;
|
|
38
|
+
hashes = new Map([...projectTexts(options.projectRoot, project)].map(([f, t]) => [f, sha(t)]));
|
|
39
|
+
if (hashes.get(file) !== sha(text)) {
|
|
40
|
+
throw new Error(`${file} changed while it was being compiled; repeat the edit`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return outlineFromHandoff(api, resolve(options.projectRoot, file), file, text);
|
|
44
|
+
},
|
|
45
|
+
verify: (file, text, also) => verifyWithSelected(options.projectRoot, options.config, file, text, also),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Verify an edit with the selected compiler: OpenSysML compiles the edited
|
|
50
|
+
* text as a content document, any other compiler a scratch copy of the
|
|
51
|
+
* project.
|
|
52
|
+
*/
|
|
53
|
+
function verifyWithSelected(projectRoot, config, file, text, also) {
|
|
54
|
+
return resolveToolchain(config, defaultRegistry).lowering === OPENSYSML_PROVIDER_ID
|
|
55
|
+
? verifyAsContent(projectRoot, config, file, text, also)
|
|
56
|
+
: verifyInScratchCopy(projectRoot, config, file, text, also);
|
|
57
|
+
}
|
|
58
|
+
/** OpenSysML's verdict on the project with the file's text replaced, read without writing it. */
|
|
59
|
+
async function verifyAsContent(projectRoot, config, file, text, also) {
|
|
60
|
+
const absolute = resolve(projectRoot, file);
|
|
61
|
+
const replaced = new Map([...(also ?? [])].map(([path, content]) => [resolve(projectRoot, path), content]));
|
|
62
|
+
replaced.set(absolute, text);
|
|
63
|
+
const errors = await checkWithOpenSysML(config, projectRoot, replaced);
|
|
64
|
+
if (errors.length > 0) {
|
|
65
|
+
const where = (d) => `${d.file ? relativeTo(projectRoot, resolve(projectRoot, d.file)) : file}:${d.range?.start.line ?? '?'}`;
|
|
66
|
+
throw new Error(`opensysml rejects the updated ${file}: ${errors.slice(0, 3).map(d => `${where(d)} ${d.message}`).join('; ')}`);
|
|
67
|
+
}
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
/** What a scratch copy of a project leaves out: tool state and dependencies, which are linked. */
|
|
71
|
+
const NOT_COPIED = new Set(['.memo', '.git', 'node_modules']);
|
|
72
|
+
/**
|
|
73
|
+
* Compile the project with one file's text replaced, in a scratch copy of the
|
|
74
|
+
* project: every stage 1 compiler reads its documents from disk, and the
|
|
75
|
+
* project's own file must not change until the edit is known to be valid.
|
|
76
|
+
* The libraries are not copied; the copy resolves them as the project does.
|
|
77
|
+
*/
|
|
78
|
+
async function verifyInScratchCopy(projectRoot, config, file, text, also) {
|
|
79
|
+
const scratch = realpathSync(mkdtempSync(join(tmpdir(), 'memo-verify-')));
|
|
80
|
+
try {
|
|
81
|
+
cpSync(projectRoot, scratch, {
|
|
82
|
+
recursive: true,
|
|
83
|
+
filter: source => !NOT_COPIED.has(basename(source)) || source === projectRoot,
|
|
84
|
+
});
|
|
85
|
+
const modules = join(projectRoot, 'node_modules');
|
|
86
|
+
if (existsSync(modules))
|
|
87
|
+
symlinkSync(modules, join(scratch, 'node_modules'), 'dir');
|
|
88
|
+
for (const [path, content] of [...(also ?? []), [file, text]]) {
|
|
89
|
+
const target = join(scratch, path);
|
|
90
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
91
|
+
writeFileSync(target, content, 'utf8');
|
|
92
|
+
}
|
|
93
|
+
const target = join(scratch, file);
|
|
94
|
+
let project;
|
|
95
|
+
try {
|
|
96
|
+
project = await loadProjectModel({ projectRoot: scratch, config, cache: false });
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
if (e instanceof Stage1RejectedError) {
|
|
100
|
+
const errors = e.diagnostics.filter(d => d.severity === 'error')
|
|
101
|
+
.map(d => `${d.file ? relative(scratch, resolve(scratch, d.file)) : file}:${d.range?.start.line ?? '?'} ${d.message}`);
|
|
102
|
+
throw new Error(`${e.compiler} rejects the updated ${file}: ${errors.slice(0, 3).join('; ')}`);
|
|
103
|
+
}
|
|
104
|
+
throw e;
|
|
105
|
+
}
|
|
106
|
+
if (!project.api)
|
|
107
|
+
throw new Error(`${project.compiler} built no handoff to verify ${file} with`);
|
|
108
|
+
return outlineFromHandoff(project.api, target, file, text);
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
rmSync(scratch, { recursive: true, force: true });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The outline source of the selected compiler, for a caller holding no loaded
|
|
116
|
+
* project: the project loads on first use, reusing `.memo/stage1/` when
|
|
117
|
+
* nothing changed.
|
|
118
|
+
*/
|
|
119
|
+
export function selectedOutlineSource(projectRoot, config) {
|
|
120
|
+
let loaded;
|
|
121
|
+
const source = () => (loaded ??= loadProjectModel({ projectRoot, config })
|
|
122
|
+
.then(project => outlineSourceFor(projectRoot, config, project)));
|
|
123
|
+
return {
|
|
124
|
+
async outline(file, text) {
|
|
125
|
+
return (await source()).outline(file, text);
|
|
126
|
+
},
|
|
127
|
+
async verify(file, text) {
|
|
128
|
+
return verifyWithSelected(projectRoot, config, file, text);
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/** The outline source for a loaded project: its compiler's. */
|
|
133
|
+
export function outlineSourceFor(projectRoot, config, project) {
|
|
134
|
+
return handoffOutlineSource({ projectRoot, config, api: project.api, texts: projectTexts(projectRoot, project) });
|
|
135
|
+
}
|
|
136
|
+
/** The project's own files and their text, by project-relative path. */
|
|
137
|
+
function projectTexts(projectRoot, project) {
|
|
138
|
+
const texts = new Map();
|
|
139
|
+
for (const file of projectFilesOf(project.api, projectRoot)) {
|
|
140
|
+
if (existsSync(file))
|
|
141
|
+
texts.set(relative(projectRoot, file), readFileSync(file, 'utf8'));
|
|
142
|
+
}
|
|
143
|
+
return texts;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* The absolute files of the project's own documents: the handoff's project
|
|
147
|
+
* documents, and those of a library root inside the project directory (a
|
|
148
|
+
* project's `methodology/`), which the handoff marks as library documents but
|
|
149
|
+
* which are the project's files to edit. A library outside it is not.
|
|
150
|
+
*/
|
|
151
|
+
function projectFilesOf(api, projectRoot) {
|
|
152
|
+
const root = resolve(projectRoot);
|
|
153
|
+
const inProject = (file) => !relative(root, file).startsWith('..') && !isAbsolute(relative(root, file));
|
|
154
|
+
const files = new Set();
|
|
155
|
+
for (const [file, namespaces] of api.rootNamespacesByFile()) {
|
|
156
|
+
for (const namespace of namespaces) {
|
|
157
|
+
const role = api.source(namespace['@id'])?.role;
|
|
158
|
+
if (role === 'project' || (role === 'library' && inProject(resolve(file))))
|
|
159
|
+
files.add(file);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return [...files];
|
|
163
|
+
}
|
|
164
|
+
const relativeTo = (projectRoot, file) => (isAbsolute(file) ? relative(projectRoot, file) : file).replaceAll('\\', '/');
|
|
165
|
+
/** The outlines of every project file of a loaded project. */
|
|
166
|
+
export function projectOutlines(projectRoot, project) {
|
|
167
|
+
return outlinesFromHandoff(projectRoot, project.api);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* An outline kept with the document it was read from: a document the last
|
|
171
|
+
* compile did not convert keeps its element objects, so the same root
|
|
172
|
+
* namespace and the same text give the same outline.
|
|
173
|
+
*/
|
|
174
|
+
const keptOutlines = new WeakMap();
|
|
175
|
+
/** The outlines of a handoff's project files, read against the files on disk. */
|
|
176
|
+
export function outlinesFromHandoff(projectRoot, api) {
|
|
177
|
+
return projectFilesOf(api, projectRoot).filter(file => existsSync(file)).map(file => {
|
|
178
|
+
const name = relativeTo(projectRoot, file);
|
|
179
|
+
const text = readFileSync(file, 'utf8');
|
|
180
|
+
const roots = api.rootNamespacesIn(file);
|
|
181
|
+
const kept = roots.length > 0 ? keptOutlines.get(roots[0]) : undefined;
|
|
182
|
+
if (kept && kept.name === name && kept.text === text && kept.roots === roots.length)
|
|
183
|
+
return kept.outline;
|
|
184
|
+
const outline = outlineFromHandoff(api, file, name, text);
|
|
185
|
+
if (roots.length > 0)
|
|
186
|
+
keptOutlines.set(roots[0], { name, text, roots: roots.length, outline });
|
|
187
|
+
return outline;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* The identity index a write resolves against: every declaration with an
|
|
192
|
+
* identity, and each element's.
|
|
193
|
+
*/
|
|
194
|
+
export function outlineIdentityIndex(outlines, elements, projectRoot) {
|
|
195
|
+
const byMemoElement = outlineIdentityTable(outlines, elements, projectRoot);
|
|
196
|
+
const elementOf = new Map(Object.entries(byMemoElement).map(([element, identity]) => [identity, element]));
|
|
197
|
+
const byIdentity = new Map();
|
|
198
|
+
for (const [identity, { node }] of outlineIdentities(outlines)) {
|
|
199
|
+
byIdentity.set(identity, { identity: { id: identity, metaclass: node.metaclass }, memoElementId: elementOf.get(identity) });
|
|
200
|
+
}
|
|
201
|
+
return { byMemoElement, byIdentity };
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=outline-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outline-source.js","sourceRoot":"","sources":["../../src/authoring/outline-source.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,gFAAgF;AAChF,6EAA6E;AAC7E,eAAe;AACf,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrI,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAInF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAqB,MAAM,+BAA+B,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAsB,MAAM,qBAAqB,CAAC;AAwB3F,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAE9E;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAKpC;IACG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACtB,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;YACpB,kEAAkE;YAClE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACrG,IAAI,CAAC,OAAO,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,gCAAgC,IAAI,OAAO,CAAC,CAAC;gBAClG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;gBAClB,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/F,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,uDAAuD,CAAC,CAAC;gBACpF,CAAC;YACL,CAAC;YACD,OAAO,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;KAC1G,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CACvB,WAAmB,EAAE,MAAkB,EAAE,IAAY,EAAE,IAAY,EAAE,IAAkC;IAEvG,OAAO,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,QAAQ,KAAK,qBAAqB;QAC/E,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACxD,CAAC,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,iGAAiG;AACjG,KAAK,UAAU,eAAe,CAC1B,WAAmB,EAAE,MAAkB,EAAE,IAAY,EAAE,IAAY,EAAE,IAAkC;IAEvG,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,CAAU,CAAC,CAAC,CAAC;IACrH,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACvE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,CAA0B,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACvJ,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpI,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,KAAK,UAAU,mBAAmB,CAC9B,WAAmB,EAAE,MAAkB,EAAE,IAAY,EAAE,IAAY,EAAE,IAAkC;IAEvG,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC;QACD,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE;YACzB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,KAAK,WAAW;SAChF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAClD,IAAI,UAAU,CAAC,OAAO,CAAC;YAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;QACpF,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACnC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,OAAqB,CAAC;QAC1B,IAAI,CAAC;YACD,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,YAAY,mBAAmB,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;qBAC3D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3H,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,wBAAwB,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnG,CAAC;YACD,MAAM,CAAC,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,+BAA+B,IAAI,OAAO,CAAC,CAAC;QACjG,OAAO,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;YAAS,CAAC;QACP,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,MAAkB;IACzE,IAAI,MAA0C,CAAC;IAC/C,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,gBAAgB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;SACrE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;YACpB,OAAO,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI;YACnB,OAAO,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;KACJ,CAAC;AACN,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,MAAkB,EAAE,OAAqB;IAC3F,OAAO,oBAAoB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AACtH,CAAC;AAED,wEAAwE;AACxE,SAAS,YAAY,CAAC,WAAmB,EAAE,OAAqB;IAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;QAC1D,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,GAAa,EAAE,WAAmB;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAChH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC1D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;YAChD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChG,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,WAAmB,EAAE,IAAY,EAAE,EAAE,CACrD,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAElF,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,OAAqB;IACtE,OAAO,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,YAAY,GAAG,IAAI,OAAO,EAAiF,CAAC;AAElH,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,GAAa;IAClE,OAAO,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAChF,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QACzG,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/F,OAAO,OAAO,CAAC;IACnB,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAChC,QAAkC,EAClC,QAAiD,EACjD,WAAmB;IAEnB,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3G,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmF,CAAC;IAC9G,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChI,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { ApiModel } from '../stage2/api-model.js';
|
|
2
|
+
/** What a writer does with a member: regenerate it, carry it, or address it. */
|
|
3
|
+
export type OutlineRole = 'package' | 'attribute' | 'doc' | 'metadata' | 'expose' | 'import' | 'connection' | 'declaration';
|
|
4
|
+
export interface OutlineNode {
|
|
5
|
+
/** The SysML metaclass, as the API names it: `PartUsage`, `AttributeUsage`, `Package`. */
|
|
6
|
+
metaclass: string;
|
|
7
|
+
role: OutlineRole;
|
|
8
|
+
/** The name the declaration declares, when it declares one. */
|
|
9
|
+
name?: string;
|
|
10
|
+
/**
|
|
11
|
+
* What addresses the declaration within its file: its owner's key and its
|
|
12
|
+
* name — its qualified name, for a declaration in named owners — or, when
|
|
13
|
+
* it declares no name, its place among the anonymous declarations of its
|
|
14
|
+
* metaclass there (`P::@ConnectionUsage[1]`). A redefinition
|
|
15
|
+
* (`attribute :>> x`) is named by the feature it redefines.
|
|
16
|
+
*/
|
|
17
|
+
key: string;
|
|
18
|
+
/** Offset of the declaration's first character. */
|
|
19
|
+
start: number;
|
|
20
|
+
/** Offset just past its last character. */
|
|
21
|
+
end: number;
|
|
22
|
+
/** Offset just past the body's `{`, and the offset of its `}`. */
|
|
23
|
+
body?: {
|
|
24
|
+
open: number;
|
|
25
|
+
close: number;
|
|
26
|
+
};
|
|
27
|
+
members: OutlineNode[];
|
|
28
|
+
/** The features a metadata annotation sets (`providedId`, `label`). */
|
|
29
|
+
fields: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface SourceOutline {
|
|
32
|
+
/** The file, as the caller named it. */
|
|
33
|
+
file: string;
|
|
34
|
+
text: string;
|
|
35
|
+
roots: OutlineNode[];
|
|
36
|
+
}
|
|
37
|
+
/** Every node of an outline, depth first in source order. */
|
|
38
|
+
export declare function outlineNodes(outline: SourceOutline | readonly OutlineNode[]): Generator<OutlineNode>;
|
|
39
|
+
/**
|
|
40
|
+
* The members written inside a declaration's body. A compiler also places
|
|
41
|
+
* features it reads from the declaration's head under it — the ends of
|
|
42
|
+
* `connect a to b`, a flow's payload — and a writer must never move those.
|
|
43
|
+
*/
|
|
44
|
+
export declare function bodyMembers(node: OutlineNode): OutlineNode[];
|
|
45
|
+
/**
|
|
46
|
+
* The braces of a declaration's body: the first `{` at the top level of its
|
|
47
|
+
* text and the `}` that closes it, skipping strings and comments. Undefined for
|
|
48
|
+
* a declaration that ends in `;`.
|
|
49
|
+
*/
|
|
50
|
+
export declare function findBody(text: string, start: number, end: number): {
|
|
51
|
+
open: number;
|
|
52
|
+
close: number;
|
|
53
|
+
} | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* The outline of one file from a handoff that compiled it.
|
|
56
|
+
*
|
|
57
|
+
* `absoluteFile` names the file as the handoff's index resolves it; `text` is
|
|
58
|
+
* the file's bytes at the time of that compile, which the caller checks.
|
|
59
|
+
* Elements the handoff gives no range — the ones a compiler implies rather than
|
|
60
|
+
* reads — are not declarations; their ranged members are kept under the
|
|
61
|
+
* nearest ranged owner.
|
|
62
|
+
*/
|
|
63
|
+
export declare function outlineFromHandoff(api: ApiModel, absoluteFile: string, file: string, text: string): SourceOutline;
|
|
64
|
+
/**
|
|
65
|
+
* The outline of one file from MEMO's parse of it: the same facts, read from
|
|
66
|
+
* the syntax tree, so the writers work alike under MEMO's compiler. `root` is
|
|
67
|
+
* the parsed document's model.
|
|
68
|
+
*/
|
|
69
|
+
export declare function outlineFromParse(root: {
|
|
70
|
+
members?: unknown[];
|
|
71
|
+
}, file: string, text: string): SourceOutline;
|
|
72
|
+
/**
|
|
73
|
+
* The outline of the text after replacing `[from, to)` with `inserted`, without
|
|
74
|
+
* compiling it: a declaration inside the replaced range is gone, one after it
|
|
75
|
+
* moves by the length difference, and one around it grows or shrinks. A writer
|
|
76
|
+
* that removes a declaration and then inserts elsewhere in the same text needs
|
|
77
|
+
* the outline of a text no compiler has seen.
|
|
78
|
+
*/
|
|
79
|
+
export declare function spliceOutline(outline: SourceOutline, from: number, to: number, inserted: string): SourceOutline;
|
|
80
|
+
/** An outline with nothing in it: the outline of an empty or new file. */
|
|
81
|
+
export declare function emptyOutline(file: string, text?: string): SourceOutline;
|
|
82
|
+
//# sourceMappingURL=source-outline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-outline.d.ts","sourceRoot":"","sources":["../../src/authoring/source-outline.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAc,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEnE,gFAAgF;AAChF,MAAM,MAAM,WAAW,GACjB,SAAS,GAAG,WAAW,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;AAExG,MAAM,WAAW,WAAW;IACxB,0FAA0F;IAC1F,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,uEAAuE;IACvE,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC1B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,6DAA6D;AAC7D,wBAAiB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC,WAAW,CAAC,CAOrG;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,CAI5D;AAqBD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CA6B9G;AAgDD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAgCjH;AAmCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAuBzG;AAID;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CAiB/G;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,aAAa,CAEnE"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
// ─── Source outline ──────────────────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// What a write-back needs to know about a file, and no more: where each
|
|
4
|
+
// declaration is, what it is called, where its body opens and closes, and its
|
|
5
|
+
// members (plans/memo-write-back-from-handoff.md). The writers used to read
|
|
6
|
+
// these from MEMO's syntax tree, which tied them to MEMO's grammar. An outline
|
|
7
|
+
// is built from a stage 1 handoff — every element states its byte range and
|
|
8
|
+
// qualified name — or, while MEMO's compiler exists, from MEMO's parse; the
|
|
9
|
+
// writers read the outline either way.
|
|
10
|
+
//
|
|
11
|
+
// Offsets are JavaScript string offsets into the file's text, the unit a splice
|
|
12
|
+
// is made in. A handoff states byte offsets; they are converted here.
|
|
13
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
14
|
+
/** Every node of an outline, depth first in source order. */
|
|
15
|
+
export function* outlineNodes(outline) {
|
|
16
|
+
const stack = [...('roots' in outline ? outline.roots : outline)].reverse();
|
|
17
|
+
while (stack.length > 0) {
|
|
18
|
+
const node = stack.pop();
|
|
19
|
+
yield node;
|
|
20
|
+
stack.push(...[...node.members].reverse());
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The members written inside a declaration's body. A compiler also places
|
|
25
|
+
* features it reads from the declaration's head under it — the ends of
|
|
26
|
+
* `connect a to b`, a flow's payload — and a writer must never move those.
|
|
27
|
+
*/
|
|
28
|
+
export function bodyMembers(node) {
|
|
29
|
+
const body = node.body;
|
|
30
|
+
if (!body)
|
|
31
|
+
return [];
|
|
32
|
+
return node.members.filter(member => member.start >= body.open && member.end <= body.close);
|
|
33
|
+
}
|
|
34
|
+
// ─── Roles ───────────────────────────────────────────────────────────────────
|
|
35
|
+
const CONNECTIONS = new Set([
|
|
36
|
+
'ConnectionUsage', 'InterfaceUsage', 'AllocationUsage', 'FlowUsage', 'SuccessionFlowUsage',
|
|
37
|
+
]);
|
|
38
|
+
function roleOf(metaclass) {
|
|
39
|
+
if (metaclass === 'Package' || metaclass === 'LibraryPackage')
|
|
40
|
+
return 'package';
|
|
41
|
+
if (metaclass === 'AttributeUsage')
|
|
42
|
+
return 'attribute';
|
|
43
|
+
if (metaclass === 'Documentation')
|
|
44
|
+
return 'doc';
|
|
45
|
+
if (metaclass === 'MetadataUsage')
|
|
46
|
+
return 'metadata';
|
|
47
|
+
if (metaclass.endsWith('Expose'))
|
|
48
|
+
return 'expose';
|
|
49
|
+
if (metaclass.endsWith('Import'))
|
|
50
|
+
return 'import';
|
|
51
|
+
if (CONNECTIONS.has(metaclass))
|
|
52
|
+
return 'connection';
|
|
53
|
+
return 'declaration';
|
|
54
|
+
}
|
|
55
|
+
// ─── Bodies ──────────────────────────────────────────────────────────────────
|
|
56
|
+
/**
|
|
57
|
+
* The braces of a declaration's body: the first `{` at the top level of its
|
|
58
|
+
* text and the `}` that closes it, skipping strings and comments. Undefined for
|
|
59
|
+
* a declaration that ends in `;`.
|
|
60
|
+
*/
|
|
61
|
+
export function findBody(text, start, end) {
|
|
62
|
+
let depth = 0;
|
|
63
|
+
let open = -1;
|
|
64
|
+
for (let i = start; i < end; i++) {
|
|
65
|
+
const c = text[i];
|
|
66
|
+
if (c === '"' || c === "'") {
|
|
67
|
+
for (i++; i < end && text[i] !== c; i++)
|
|
68
|
+
if (text[i] === '\\')
|
|
69
|
+
i++;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (c === '/' && text[i + 1] === '/') {
|
|
73
|
+
while (i < end && text[i] !== '\n')
|
|
74
|
+
i++;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (c === '/' && text[i + 1] === '*') {
|
|
78
|
+
const close = text.indexOf('*/', i + 2);
|
|
79
|
+
i = close < 0 ? end : close + 1;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (c === '{') {
|
|
83
|
+
if (depth === 0 && open < 0)
|
|
84
|
+
open = i;
|
|
85
|
+
depth++;
|
|
86
|
+
}
|
|
87
|
+
else if (c === '}') {
|
|
88
|
+
depth--;
|
|
89
|
+
if (depth === 0 && open >= 0)
|
|
90
|
+
return { open: open + 1, close: i };
|
|
91
|
+
}
|
|
92
|
+
else if (c === ';' && depth === 0 && open < 0) {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
/** Turn raw nodes into outline nodes, keying each under its owner. */
|
|
99
|
+
function finish(text, raws, ownerKey) {
|
|
100
|
+
const anonymous = new Map();
|
|
101
|
+
return raws.map(raw => {
|
|
102
|
+
let key;
|
|
103
|
+
if (raw.name)
|
|
104
|
+
key = ownerKey ? `${ownerKey}::${raw.name}` : raw.name;
|
|
105
|
+
else {
|
|
106
|
+
const n = anonymous.get(raw.metaclass) ?? 0;
|
|
107
|
+
anonymous.set(raw.metaclass, n + 1);
|
|
108
|
+
key = `${ownerKey ? `${ownerKey}::` : ''}@${raw.metaclass}[${n}]`;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
metaclass: raw.metaclass,
|
|
112
|
+
role: roleOf(raw.metaclass),
|
|
113
|
+
...(raw.name ? { name: raw.name } : {}),
|
|
114
|
+
key,
|
|
115
|
+
start: raw.start,
|
|
116
|
+
end: raw.end,
|
|
117
|
+
...(() => { const body = findBody(text, raw.start, raw.end); return body ? { body } : {}; })(),
|
|
118
|
+
members: finish(text, raw.members, key),
|
|
119
|
+
fields: raw.fields,
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
// ─── From a stage 1 handoff ──────────────────────────────────────────────────
|
|
124
|
+
/** Byte offset → string offset, for one file's text. */
|
|
125
|
+
function byteToChar(text) {
|
|
126
|
+
// eslint-disable-next-line no-control-regex
|
|
127
|
+
if (!/[^\u0000-\u007f]/.test(text))
|
|
128
|
+
return byte => byte;
|
|
129
|
+
const bytes = Buffer.from(text, 'utf8');
|
|
130
|
+
return byte => bytes.subarray(0, byte).toString('utf8').length;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* The outline of one file from a handoff that compiled it.
|
|
134
|
+
*
|
|
135
|
+
* `absoluteFile` names the file as the handoff's index resolves it; `text` is
|
|
136
|
+
* the file's bytes at the time of that compile, which the caller checks.
|
|
137
|
+
* Elements the handoff gives no range — the ones a compiler implies rather than
|
|
138
|
+
* reads — are not declarations; their ranged members are kept under the
|
|
139
|
+
* nearest ranged owner.
|
|
140
|
+
*/
|
|
141
|
+
export function outlineFromHandoff(api, absoluteFile, file, text) {
|
|
142
|
+
const toChar = byteToChar(text);
|
|
143
|
+
const ranged = (element) => {
|
|
144
|
+
const entry = api.source(element['@id']);
|
|
145
|
+
return entry?.startByte !== undefined && entry.endByte !== undefined ? entry : undefined;
|
|
146
|
+
};
|
|
147
|
+
const visit = (element) => {
|
|
148
|
+
const entry = ranged(element);
|
|
149
|
+
const metaclass = String(element['@type']);
|
|
150
|
+
// A metadata annotation's fields are `fields`, not declarations.
|
|
151
|
+
const children = metaclass === 'MetadataUsage' ? [] : api.ownedMembers(element['@id']).flatMap(visit);
|
|
152
|
+
if (!entry)
|
|
153
|
+
return children;
|
|
154
|
+
return [{
|
|
155
|
+
metaclass,
|
|
156
|
+
// `attribute :>> x = …` declares no name; the name it is written
|
|
157
|
+
// with is the feature it redefines. `variant x;` is written with
|
|
158
|
+
// the name of the feature it references.
|
|
159
|
+
name: api.name(element['@id']) ?? variantName(api, element),
|
|
160
|
+
start: toChar(entry.startByte),
|
|
161
|
+
end: toChar(entry.endByte),
|
|
162
|
+
members: children,
|
|
163
|
+
fields: metaclass === 'MetadataUsage'
|
|
164
|
+
? api.ownedMembers(element['@id']).map(m => api.name(m['@id'])).filter((n) => Boolean(n))
|
|
165
|
+
: [],
|
|
166
|
+
}];
|
|
167
|
+
};
|
|
168
|
+
const roots = [];
|
|
169
|
+
for (const namespace of api.rootNamespacesIn(absoluteFile)) {
|
|
170
|
+
for (const member of api.ownedMembers(namespace['@id']))
|
|
171
|
+
roots.push(...visit(member));
|
|
172
|
+
}
|
|
173
|
+
roots.sort((a, b) => a.start - b.start);
|
|
174
|
+
return { file, text, roots: finish(text, roots, '') };
|
|
175
|
+
}
|
|
176
|
+
/** The name of the feature `variant x;` references: a variant member declares none. */
|
|
177
|
+
function variantName(api, element) {
|
|
178
|
+
const owning = api.element(String(element.owningRelationship?.['@id'] ?? ''));
|
|
179
|
+
if (owning?.['@type'] !== 'VariantMembership')
|
|
180
|
+
return undefined;
|
|
181
|
+
const referenced = api.related(element['@id'], ['ReferenceSubsetting'], 'referencedFeature')[0];
|
|
182
|
+
return referenced ? api.name(referenced['@id']) : undefined;
|
|
183
|
+
}
|
|
184
|
+
// ─── From MEMO's parse ───────────────────────────────────────────────────────
|
|
185
|
+
/** MEMO's syntax-tree node types that do not carry the metaclass's own name. */
|
|
186
|
+
const PARSE_METACLASS = {
|
|
187
|
+
PackageDeclaration: 'Package',
|
|
188
|
+
PartMember: 'PartUsage',
|
|
189
|
+
AttributeMember: 'AttributeUsage',
|
|
190
|
+
RefMember: 'ReferenceUsage',
|
|
191
|
+
DocComment: 'Documentation',
|
|
192
|
+
MetadataApplication: 'MetadataUsage',
|
|
193
|
+
PrefixMetadataAnnotation: 'MetadataUsage',
|
|
194
|
+
ExposeMember: 'NamespaceExpose',
|
|
195
|
+
ImportDeclaration: 'NamespaceImport',
|
|
196
|
+
EnumDefinition: 'EnumerationDefinition',
|
|
197
|
+
EnumLiteral: 'EnumerationUsage',
|
|
198
|
+
FlowConnectionUsage: 'FlowUsage',
|
|
199
|
+
AllocateUsage: 'AllocationUsage',
|
|
200
|
+
MessageUsage: 'FlowUsage',
|
|
201
|
+
BindingUsage: 'BindingConnectorAsUsage',
|
|
202
|
+
SuccessionUsage: 'SuccessionAsUsage',
|
|
203
|
+
ActorMember: 'PartUsage',
|
|
204
|
+
StakeholderMember: 'PartUsage',
|
|
205
|
+
SubjectMember: 'ReferenceUsage',
|
|
206
|
+
};
|
|
207
|
+
/**
|
|
208
|
+
* The outline of one file from MEMO's parse of it: the same facts, read from
|
|
209
|
+
* the syntax tree, so the writers work alike under MEMO's compiler. `root` is
|
|
210
|
+
* the parsed document's model.
|
|
211
|
+
*/
|
|
212
|
+
export function outlineFromParse(root, file, text) {
|
|
213
|
+
// A key is the owner's key and the declared name, as `finish` makes it.
|
|
214
|
+
const visit = (node) => {
|
|
215
|
+
const cst = node?.$cstNode;
|
|
216
|
+
if (!node || typeof node !== 'object' || !node.$type || !cst)
|
|
217
|
+
return [];
|
|
218
|
+
const metaclass = PARSE_METACLASS[node.$type] ?? node.$type;
|
|
219
|
+
const name = typeof node.name === 'string' ? node.name : undefined;
|
|
220
|
+
// A metadata annotation's fields are `fields`, not declarations.
|
|
221
|
+
const children = metaclass === 'MetadataUsage' ? []
|
|
222
|
+
: [...(node.members ?? []), ...(node.body ?? []), ...(node.usageBody ?? [])].flatMap(visit);
|
|
223
|
+
return [{
|
|
224
|
+
metaclass,
|
|
225
|
+
name,
|
|
226
|
+
start: cst.offset,
|
|
227
|
+
end: cst.offset + cst.length,
|
|
228
|
+
members: children,
|
|
229
|
+
fields: metaclass === 'MetadataUsage'
|
|
230
|
+
? (node.body ?? []).map((field) => field.name).filter(Boolean)
|
|
231
|
+
: [],
|
|
232
|
+
}];
|
|
233
|
+
};
|
|
234
|
+
const roots = (root.members ?? []).flatMap(visit);
|
|
235
|
+
return { file, text, roots: finish(text, roots, '') };
|
|
236
|
+
}
|
|
237
|
+
// ─── Editing an outline with its text ────────────────────────────────────────
|
|
238
|
+
/**
|
|
239
|
+
* The outline of the text after replacing `[from, to)` with `inserted`, without
|
|
240
|
+
* compiling it: a declaration inside the replaced range is gone, one after it
|
|
241
|
+
* moves by the length difference, and one around it grows or shrinks. A writer
|
|
242
|
+
* that removes a declaration and then inserts elsewhere in the same text needs
|
|
243
|
+
* the outline of a text no compiler has seen.
|
|
244
|
+
*/
|
|
245
|
+
export function spliceOutline(outline, from, to, inserted) {
|
|
246
|
+
const delta = inserted.length - (to - from);
|
|
247
|
+
const moved = (offset) => (offset >= to ? offset + delta : offset);
|
|
248
|
+
const map = (nodes) => nodes
|
|
249
|
+
.filter(node => !(to > from && node.start >= from && node.end <= to))
|
|
250
|
+
.map(node => ({
|
|
251
|
+
...node,
|
|
252
|
+
start: moved(node.start),
|
|
253
|
+
end: moved(node.end),
|
|
254
|
+
...(node.body ? { body: { open: moved(node.body.open), close: moved(node.body.close) } } : {}),
|
|
255
|
+
members: map(node.members),
|
|
256
|
+
}));
|
|
257
|
+
return {
|
|
258
|
+
...outline,
|
|
259
|
+
text: outline.text.slice(0, from) + inserted + outline.text.slice(to),
|
|
260
|
+
roots: map(outline.roots),
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
/** An outline with nothing in it: the outline of an empty or new file. */
|
|
264
|
+
export function emptyOutline(file, text = '') {
|
|
265
|
+
return { file, text, roots: [] };
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=source-outline.js.map
|