@opensip-cli/graph-typescript 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE +8 -0
- package/README.md +31 -0
- package/dist/__tests__/_pipeline.d.ts +40 -0
- package/dist/__tests__/_pipeline.d.ts.map +1 -0
- package/dist/__tests__/_pipeline.js +67 -0
- package/dist/__tests__/_pipeline.js.map +1 -0
- package/dist/__tests__/acceptance/_fixture-runner.d.ts +13 -0
- package/dist/__tests__/acceptance/_fixture-runner.d.ts.map +1 -0
- package/dist/__tests__/acceptance/_fixture-runner.js +55 -0
- package/dist/__tests__/acceptance/_fixture-runner.js.map +1 -0
- package/dist/__tests__/acceptance/alias-resolution.test.d.ts +8 -0
- package/dist/__tests__/acceptance/alias-resolution.test.d.ts.map +1 -0
- package/dist/__tests__/acceptance/alias-resolution.test.js +39 -0
- package/dist/__tests__/acceptance/alias-resolution.test.js.map +1 -0
- package/dist/__tests__/acceptance/arrow-callback-resolution.test.d.ts +8 -0
- package/dist/__tests__/acceptance/arrow-callback-resolution.test.d.ts.map +1 -0
- package/dist/__tests__/acceptance/arrow-callback-resolution.test.js +33 -0
- package/dist/__tests__/acceptance/arrow-callback-resolution.test.js.map +1 -0
- package/dist/__tests__/acceptance/constructor-calls.test.d.ts +7 -0
- package/dist/__tests__/acceptance/constructor-calls.test.d.ts.map +1 -0
- package/dist/__tests__/acceptance/constructor-calls.test.js +36 -0
- package/dist/__tests__/acceptance/constructor-calls.test.js.map +1 -0
- package/dist/__tests__/acceptance/interface-dispatch.test.d.ts +8 -0
- package/dist/__tests__/acceptance/interface-dispatch.test.d.ts.map +1 -0
- package/dist/__tests__/acceptance/interface-dispatch.test.js +44 -0
- package/dist/__tests__/acceptance/interface-dispatch.test.js.map +1 -0
- package/dist/__tests__/acceptance/inventory-completeness.test.d.ts +9 -0
- package/dist/__tests__/acceptance/inventory-completeness.test.d.ts.map +1 -0
- package/dist/__tests__/acceptance/inventory-completeness.test.js +72 -0
- package/dist/__tests__/acceptance/inventory-completeness.test.js.map +1 -0
- package/dist/__tests__/acceptance/jsx-resolution.test.d.ts +7 -0
- package/dist/__tests__/acceptance/jsx-resolution.test.d.ts.map +1 -0
- package/dist/__tests__/acceptance/jsx-resolution.test.js +46 -0
- package/dist/__tests__/acceptance/jsx-resolution.test.js.map +1 -0
- package/dist/__tests__/acceptance/module-init.test.d.ts +10 -0
- package/dist/__tests__/acceptance/module-init.test.d.ts.map +1 -0
- package/dist/__tests__/acceptance/module-init.test.js +40 -0
- package/dist/__tests__/acceptance/module-init.test.js.map +1 -0
- package/dist/__tests__/acceptance/projectdir-normalization.test.d.ts +7 -0
- package/dist/__tests__/acceptance/projectdir-normalization.test.d.ts.map +1 -0
- package/dist/__tests__/acceptance/projectdir-normalization.test.js +51 -0
- package/dist/__tests__/acceptance/projectdir-normalization.test.js.map +1 -0
- package/dist/__tests__/body-twin-edges.test.d.ts +12 -0
- package/dist/__tests__/body-twin-edges.test.d.ts.map +1 -0
- package/dist/__tests__/body-twin-edges.test.js +85 -0
- package/dist/__tests__/body-twin-edges.test.js.map +1 -0
- package/dist/__tests__/cache-key.test.d.ts +8 -0
- package/dist/__tests__/cache-key.test.d.ts.map +1 -0
- package/dist/__tests__/cache-key.test.js +86 -0
- package/dist/__tests__/cache-key.test.js.map +1 -0
- package/dist/__tests__/depends-on-emission.test.d.ts +19 -0
- package/dist/__tests__/depends-on-emission.test.d.ts.map +1 -0
- package/dist/__tests__/depends-on-emission.test.js +165 -0
- package/dist/__tests__/depends-on-emission.test.js.map +1 -0
- package/dist/__tests__/discover.test.d.ts +9 -0
- package/dist/__tests__/discover.test.d.ts.map +1 -0
- package/dist/__tests__/discover.test.js +72 -0
- package/dist/__tests__/discover.test.js.map +1 -0
- package/dist/__tests__/edge-helpers/method-target.test.d.ts +8 -0
- package/dist/__tests__/edge-helpers/method-target.test.d.ts.map +1 -0
- package/dist/__tests__/edge-helpers/method-target.test.js +96 -0
- package/dist/__tests__/edge-helpers/method-target.test.js.map +1 -0
- package/dist/__tests__/edge-helpers/resolve-decl.test.d.ts +13 -0
- package/dist/__tests__/edge-helpers/resolve-decl.test.d.ts.map +1 -0
- package/dist/__tests__/edge-helpers/resolve-decl.test.js +176 -0
- package/dist/__tests__/edge-helpers/resolve-decl.test.js.map +1 -0
- package/dist/__tests__/edge-resolvers/branches.test.d.ts +11 -0
- package/dist/__tests__/edge-resolvers/branches.test.d.ts.map +1 -0
- package/dist/__tests__/edge-resolvers/branches.test.js +305 -0
- package/dist/__tests__/edge-resolvers/branches.test.js.map +1 -0
- package/dist/__tests__/edge-resolvers/contract.test.d.ts +8 -0
- package/dist/__tests__/edge-resolvers/contract.test.d.ts.map +1 -0
- package/dist/__tests__/edge-resolvers/contract.test.js +30 -0
- package/dist/__tests__/edge-resolvers/contract.test.js.map +1 -0
- package/dist/__tests__/edge-resolvers/resolver-units.test.d.ts +17 -0
- package/dist/__tests__/edge-resolvers/resolver-units.test.d.ts.map +1 -0
- package/dist/__tests__/edge-resolvers/resolver-units.test.js +286 -0
- package/dist/__tests__/edge-resolvers/resolver-units.test.js.map +1 -0
- package/dist/__tests__/fast-vs-exact.test.d.ts +16 -0
- package/dist/__tests__/fast-vs-exact.test.d.ts.map +1 -0
- package/dist/__tests__/fast-vs-exact.test.js +116 -0
- package/dist/__tests__/fast-vs-exact.test.js.map +1 -0
- package/dist/__tests__/graph-cli.test.d.ts +9 -0
- package/dist/__tests__/graph-cli.test.d.ts.map +1 -0
- package/dist/__tests__/graph-cli.test.js +417 -0
- package/dist/__tests__/graph-cli.test.js.map +1 -0
- package/dist/__tests__/heap-preflight.test.d.ts +10 -0
- package/dist/__tests__/heap-preflight.test.d.ts.map +1 -0
- package/dist/__tests__/heap-preflight.test.js +166 -0
- package/dist/__tests__/heap-preflight.test.js.map +1 -0
- package/dist/__tests__/inventory-differential.test.d.ts +15 -0
- package/dist/__tests__/inventory-differential.test.d.ts.map +1 -0
- package/dist/__tests__/inventory-differential.test.js +319 -0
- package/dist/__tests__/inventory-differential.test.js.map +1 -0
- package/dist/__tests__/inventory-helpers/hash-body.test.d.ts +11 -0
- package/dist/__tests__/inventory-helpers/hash-body.test.d.ts.map +1 -0
- package/dist/__tests__/inventory-helpers/hash-body.test.js +34 -0
- package/dist/__tests__/inventory-helpers/hash-body.test.js.map +1 -0
- package/dist/__tests__/inventory-helpers/synthesize-name.test.d.ts +9 -0
- package/dist/__tests__/inventory-helpers/synthesize-name.test.d.ts.map +1 -0
- package/dist/__tests__/inventory-helpers/synthesize-name.test.js +30 -0
- package/dist/__tests__/inventory-helpers/synthesize-name.test.js.map +1 -0
- package/dist/__tests__/inventory-property-tests.test.d.ts +24 -0
- package/dist/__tests__/inventory-property-tests.test.d.ts.map +1 -0
- package/dist/__tests__/inventory-property-tests.test.js +521 -0
- package/dist/__tests__/inventory-property-tests.test.js.map +1 -0
- package/dist/__tests__/inventory-shape-coverage.test.d.ts +16 -0
- package/dist/__tests__/inventory-shape-coverage.test.d.ts.map +1 -0
- package/dist/__tests__/inventory-shape-coverage.test.js +586 -0
- package/dist/__tests__/inventory-shape-coverage.test.js.map +1 -0
- package/dist/__tests__/inventory-visitors/contract.test.d.ts +9 -0
- package/dist/__tests__/inventory-visitors/contract.test.d.ts.map +1 -0
- package/dist/__tests__/inventory-visitors/contract.test.js +33 -0
- package/dist/__tests__/inventory-visitors/contract.test.js.map +1 -0
- package/dist/__tests__/lang-adapter-contract.test.d.ts +19 -0
- package/dist/__tests__/lang-adapter-contract.test.d.ts.map +1 -0
- package/dist/__tests__/lang-adapter-contract.test.js +880 -0
- package/dist/__tests__/lang-adapter-contract.test.js.map +1 -0
- package/dist/__tests__/lang-adapter-registry.test.d.ts +10 -0
- package/dist/__tests__/lang-adapter-registry.test.d.ts.map +1 -0
- package/dist/__tests__/lang-adapter-registry.test.js +151 -0
- package/dist/__tests__/lang-adapter-registry.test.js.map +1 -0
- package/dist/__tests__/normalize-project-dir.test.d.ts +5 -0
- package/dist/__tests__/normalize-project-dir.test.d.ts.map +1 -0
- package/dist/__tests__/normalize-project-dir.test.js +47 -0
- package/dist/__tests__/normalize-project-dir.test.js.map +1 -0
- package/dist/__tests__/orchestrate.test.d.ts +8 -0
- package/dist/__tests__/orchestrate.test.d.ts.map +1 -0
- package/dist/__tests__/orchestrate.test.js +213 -0
- package/dist/__tests__/orchestrate.test.js.map +1 -0
- package/dist/__tests__/parse-fast.test.d.ts +9 -0
- package/dist/__tests__/parse-fast.test.d.ts.map +1 -0
- package/dist/__tests__/parse-fast.test.js +114 -0
- package/dist/__tests__/parse-fast.test.js.map +1 -0
- package/dist/__tests__/rules/_helpers.d.ts +18 -0
- package/dist/__tests__/rules/_helpers.d.ts.map +1 -0
- package/dist/__tests__/rules/_helpers.js +62 -0
- package/dist/__tests__/rules/_helpers.js.map +1 -0
- package/dist/__tests__/rules/duplicated-function-body.test.d.ts +5 -0
- package/dist/__tests__/rules/duplicated-function-body.test.d.ts.map +1 -0
- package/dist/__tests__/rules/duplicated-function-body.test.js +39 -0
- package/dist/__tests__/rules/duplicated-function-body.test.js.map +1 -0
- package/dist/__tests__/rules/orphan-subtree.test.d.ts +5 -0
- package/dist/__tests__/rules/orphan-subtree.test.d.ts.map +1 -0
- package/dist/__tests__/rules/orphan-subtree.test.js +75 -0
- package/dist/__tests__/rules/orphan-subtree.test.js.map +1 -0
- package/dist/__tests__/rules/rule-hints-integration.test.d.ts +20 -0
- package/dist/__tests__/rules/rule-hints-integration.test.d.ts.map +1 -0
- package/dist/__tests__/rules/rule-hints-integration.test.js +279 -0
- package/dist/__tests__/rules/rule-hints-integration.test.js.map +1 -0
- package/dist/__tests__/tool-register.test.d.ts +16 -0
- package/dist/__tests__/tool-register.test.d.ts.map +1 -0
- package/dist/__tests__/tool-register.test.js +210 -0
- package/dist/__tests__/tool-register.test.js.map +1 -0
- package/dist/__tests__/value-reference-unit.test.d.ts +13 -0
- package/dist/__tests__/value-reference-unit.test.d.ts.map +1 -0
- package/dist/__tests__/value-reference-unit.test.js +226 -0
- package/dist/__tests__/value-reference-unit.test.js.map +1 -0
- package/dist/__tests__/value-reference.test.d.ts +15 -0
- package/dist/__tests__/value-reference.test.d.ts.map +1 -0
- package/dist/__tests__/value-reference.test.js +115 -0
- package/dist/__tests__/value-reference.test.js.map +1 -0
- package/dist/__tests__/walk-fast.test.d.ts +8 -0
- package/dist/__tests__/walk-fast.test.d.ts.map +1 -0
- package/dist/__tests__/walk-fast.test.js +51 -0
- package/dist/__tests__/walk-fast.test.js.map +1 -0
- package/dist/__tests__/walk-reexports.test.d.ts +7 -0
- package/dist/__tests__/walk-reexports.test.d.ts.map +1 -0
- package/dist/__tests__/walk-reexports.test.js +79 -0
- package/dist/__tests__/walk-reexports.test.js.map +1 -0
- package/dist/cache-key.d.ts +41 -0
- package/dist/cache-key.d.ts.map +1 -0
- package/dist/cache-key.js +94 -0
- package/dist/cache-key.js.map +1 -0
- package/dist/discover.d.ts +25 -0
- package/dist/discover.d.ts.map +1 -0
- package/dist/discover.js +124 -0
- package/dist/discover.js.map +1 -0
- package/dist/edge-helpers/cross-package-context.d.ts +34 -0
- package/dist/edge-helpers/cross-package-context.d.ts.map +1 -0
- package/dist/edge-helpers/cross-package-context.js +97 -0
- package/dist/edge-helpers/cross-package-context.js.map +1 -0
- package/dist/edge-helpers/declaration-to-node.d.ts +58 -0
- package/dist/edge-helpers/declaration-to-node.d.ts.map +1 -0
- package/dist/edge-helpers/declaration-to-node.js +93 -0
- package/dist/edge-helpers/declaration-to-node.js.map +1 -0
- package/dist/edge-helpers/find-catalog-entry.d.ts +24 -0
- package/dist/edge-helpers/find-catalog-entry.d.ts.map +1 -0
- package/dist/edge-helpers/find-catalog-entry.js +45 -0
- package/dist/edge-helpers/find-catalog-entry.js.map +1 -0
- package/dist/edge-helpers/method-target.d.ts +22 -0
- package/dist/edge-helpers/method-target.d.ts.map +1 -0
- package/dist/edge-helpers/method-target.js +46 -0
- package/dist/edge-helpers/method-target.js.map +1 -0
- package/dist/edge-helpers/resolution-trace.d.ts +24 -0
- package/dist/edge-helpers/resolution-trace.d.ts.map +1 -0
- package/dist/edge-helpers/resolution-trace.js +38 -0
- package/dist/edge-helpers/resolution-trace.js.map +1 -0
- package/dist/edge-helpers/resolve-decl.d.ts +44 -0
- package/dist/edge-helpers/resolve-decl.d.ts.map +1 -0
- package/dist/edge-helpers/resolve-decl.js +170 -0
- package/dist/edge-helpers/resolve-decl.js.map +1 -0
- package/dist/edge-helpers/unalias-symbol.d.ts +10 -0
- package/dist/edge-helpers/unalias-symbol.d.ts.map +1 -0
- package/dist/edge-helpers/unalias-symbol.js +29 -0
- package/dist/edge-helpers/unalias-symbol.js.map +1 -0
- package/dist/edge-resolvers/__tests__/boundary.test.d.ts +15 -0
- package/dist/edge-resolvers/__tests__/boundary.test.d.ts.map +1 -0
- package/dist/edge-resolvers/__tests__/boundary.test.js +227 -0
- package/dist/edge-resolvers/__tests__/boundary.test.js.map +1 -0
- package/dist/edge-resolvers/__tests__/callee-anchor.test.d.ts +10 -0
- package/dist/edge-resolvers/__tests__/callee-anchor.test.d.ts.map +1 -0
- package/dist/edge-resolvers/__tests__/callee-anchor.test.js +63 -0
- package/dist/edge-resolvers/__tests__/callee-anchor.test.js.map +1 -0
- package/dist/edge-resolvers/__tests__/syntactic.test.d.ts +12 -0
- package/dist/edge-resolvers/__tests__/syntactic.test.d.ts.map +1 -0
- package/dist/edge-resolvers/__tests__/syntactic.test.js +215 -0
- package/dist/edge-resolvers/__tests__/syntactic.test.js.map +1 -0
- package/dist/edge-resolvers/boundary.d.ts +41 -0
- package/dist/edge-resolvers/boundary.d.ts.map +1 -0
- package/dist/edge-resolvers/boundary.js +130 -0
- package/dist/edge-resolvers/boundary.js.map +1 -0
- package/dist/edge-resolvers/catalog-fallback.d.ts +13 -0
- package/dist/edge-resolvers/catalog-fallback.d.ts.map +1 -0
- package/dist/edge-resolvers/catalog-fallback.js +30 -0
- package/dist/edge-resolvers/catalog-fallback.js.map +1 -0
- package/dist/edge-resolvers/direct-call.d.ts +10 -0
- package/dist/edge-resolvers/direct-call.d.ts.map +1 -0
- package/dist/edge-resolvers/direct-call.js +45 -0
- package/dist/edge-resolvers/direct-call.js.map +1 -0
- package/dist/edge-resolvers/jsx-element.d.ts +16 -0
- package/dist/edge-resolvers/jsx-element.d.ts.map +1 -0
- package/dist/edge-resolvers/jsx-element.js +67 -0
- package/dist/edge-resolvers/jsx-element.js.map +1 -0
- package/dist/edge-resolvers/new-expression.d.ts +11 -0
- package/dist/edge-resolvers/new-expression.d.ts.map +1 -0
- package/dist/edge-resolvers/new-expression.js +56 -0
- package/dist/edge-resolvers/new-expression.js.map +1 -0
- package/dist/edge-resolvers/polymorphic.d.ts +8 -0
- package/dist/edge-resolvers/polymorphic.d.ts.map +1 -0
- package/dist/edge-resolvers/polymorphic.js +57 -0
- package/dist/edge-resolvers/polymorphic.js.map +1 -0
- package/dist/edge-resolvers/property-access.d.ts +10 -0
- package/dist/edge-resolvers/property-access.d.ts.map +1 -0
- package/dist/edge-resolvers/property-access.js +56 -0
- package/dist/edge-resolvers/property-access.js.map +1 -0
- package/dist/edge-resolvers/syntactic.d.ts +105 -0
- package/dist/edge-resolvers/syntactic.d.ts.map +1 -0
- package/dist/edge-resolvers/syntactic.js +294 -0
- package/dist/edge-resolvers/syntactic.js.map +1 -0
- package/dist/edge-resolvers/types.d.ts +37 -0
- package/dist/edge-resolvers/types.d.ts.map +1 -0
- package/dist/edge-resolvers/types.js +10 -0
- package/dist/edge-resolvers/types.js.map +1 -0
- package/dist/edges-value-reference.d.ts +26 -0
- package/dist/edges-value-reference.d.ts.map +1 -0
- package/dist/edges-value-reference.js +138 -0
- package/dist/edges-value-reference.js.map +1 -0
- package/dist/edges.d.ts +65 -0
- package/dist/edges.d.ts.map +1 -0
- package/dist/edges.js +392 -0
- package/dist/edges.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +346 -0
- package/dist/index.js.map +1 -0
- package/dist/inventory-helpers/classify-visibility.d.ts +13 -0
- package/dist/inventory-helpers/classify-visibility.d.ts.map +1 -0
- package/dist/inventory-helpers/classify-visibility.js +56 -0
- package/dist/inventory-helpers/classify-visibility.js.map +1 -0
- package/dist/inventory-helpers/extract-decorators.d.ts +6 -0
- package/dist/inventory-helpers/extract-decorators.d.ts.map +1 -0
- package/dist/inventory-helpers/extract-decorators.js +33 -0
- package/dist/inventory-helpers/extract-decorators.js.map +1 -0
- package/dist/inventory-helpers/extract-params.d.ts +7 -0
- package/dist/inventory-helpers/extract-params.d.ts.map +1 -0
- package/dist/inventory-helpers/extract-params.js +28 -0
- package/dist/inventory-helpers/extract-params.js.map +1 -0
- package/dist/inventory-helpers/hash-body.d.ts +43 -0
- package/dist/inventory-helpers/hash-body.d.ts.map +1 -0
- package/dist/inventory-helpers/hash-body.js +52 -0
- package/dist/inventory-helpers/hash-body.js.map +1 -0
- package/dist/inventory-helpers/synthesize-name.d.ts +16 -0
- package/dist/inventory-helpers/synthesize-name.d.ts.map +1 -0
- package/dist/inventory-helpers/synthesize-name.js +17 -0
- package/dist/inventory-helpers/synthesize-name.js.map +1 -0
- package/dist/inventory-visitors/arrow-function.d.ts +8 -0
- package/dist/inventory-visitors/arrow-function.d.ts.map +1 -0
- package/dist/inventory-visitors/arrow-function.js +55 -0
- package/dist/inventory-visitors/arrow-function.js.map +1 -0
- package/dist/inventory-visitors/class-static-init.d.ts +17 -0
- package/dist/inventory-visitors/class-static-init.d.ts.map +1 -0
- package/dist/inventory-visitors/class-static-init.js +45 -0
- package/dist/inventory-visitors/class-static-init.js.map +1 -0
- package/dist/inventory-visitors/constructor-declaration.d.ts +7 -0
- package/dist/inventory-visitors/constructor-declaration.d.ts.map +1 -0
- package/dist/inventory-visitors/constructor-declaration.js +47 -0
- package/dist/inventory-visitors/constructor-declaration.js.map +1 -0
- package/dist/inventory-visitors/function-declaration.d.ts +7 -0
- package/dist/inventory-visitors/function-declaration.d.ts.map +1 -0
- package/dist/inventory-visitors/function-declaration.js +59 -0
- package/dist/inventory-visitors/function-declaration.js.map +1 -0
- package/dist/inventory-visitors/function-expression.d.ts +7 -0
- package/dist/inventory-visitors/function-expression.d.ts.map +1 -0
- package/dist/inventory-visitors/function-expression.js +56 -0
- package/dist/inventory-visitors/function-expression.js.map +1 -0
- package/dist/inventory-visitors/getter-setter.d.ts +7 -0
- package/dist/inventory-visitors/getter-setter.d.ts.map +1 -0
- package/dist/inventory-visitors/getter-setter.js +63 -0
- package/dist/inventory-visitors/getter-setter.js.map +1 -0
- package/dist/inventory-visitors/method-declaration.d.ts +7 -0
- package/dist/inventory-visitors/method-declaration.d.ts.map +1 -0
- package/dist/inventory-visitors/method-declaration.js +75 -0
- package/dist/inventory-visitors/method-declaration.js.map +1 -0
- package/dist/inventory-visitors/module-init.d.ts +15 -0
- package/dist/inventory-visitors/module-init.d.ts.map +1 -0
- package/dist/inventory-visitors/module-init.js +40 -0
- package/dist/inventory-visitors/module-init.js.map +1 -0
- package/dist/inventory-visitors/types.d.ts +26 -0
- package/dist/inventory-visitors/types.d.ts.map +1 -0
- package/dist/inventory-visitors/types.js +14 -0
- package/dist/inventory-visitors/types.js.map +1 -0
- package/dist/normalize-project-dir.d.ts +14 -0
- package/dist/normalize-project-dir.d.ts.map +1 -0
- package/dist/normalize-project-dir.js +36 -0
- package/dist/normalize-project-dir.js.map +1 -0
- package/dist/parse-fast.d.ts +41 -0
- package/dist/parse-fast.d.ts.map +1 -0
- package/dist/parse-fast.js +91 -0
- package/dist/parse-fast.js.map +1 -0
- package/dist/parse.d.ts +42 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +75 -0
- package/dist/parse.js.map +1 -0
- package/dist/test-file.d.ts +7 -0
- package/dist/test-file.d.ts.map +1 -0
- package/dist/test-file.js +42 -0
- package/dist/test-file.js.map +1 -0
- package/dist/walk.d.ts +125 -0
- package/dist/walk.d.ts.map +1 -0
- package/dist/walk.js +393 -0
- package/dist/walk.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule-hints integration tests — covers the F-1 audit fix.
|
|
3
|
+
*
|
|
4
|
+
* The `no-side-effect-path` and `always-throws-branch` rules consult
|
|
5
|
+
* the active adapter's `ruleHints.sideEffectPrimitives` and
|
|
6
|
+
* `ruleHints.throwSyntaxRegex` so per-language fidelity matches the
|
|
7
|
+
* promise in docs/public/40-graph/02-rules-and-gating.md.
|
|
8
|
+
*
|
|
9
|
+
* What these tests cover:
|
|
10
|
+
* - Python `print(...)` is detected as a side-effect when the Python
|
|
11
|
+
* hints are passed; without hints, the TS-shaped fallback would NOT
|
|
12
|
+
* detect it (regression preview of the audit's headline finding).
|
|
13
|
+
* - Rust `panic!(...)` matches the `always-throws-branch` regex when
|
|
14
|
+
* the Rust hints are passed; without hints, the TS-shaped fallback
|
|
15
|
+
* does NOT match it.
|
|
16
|
+
* - TypeScript adapter hints continue to work identically to the
|
|
17
|
+
* previous hardcoded regex (regression check).
|
|
18
|
+
*/
|
|
19
|
+
import { alwaysThrowsBranchRule, buildIndexes, noSideEffectPathRule, } from '@opensip-cli/graph/internal';
|
|
20
|
+
import { pythonRuleHints } from '@opensip-cli/graph-python';
|
|
21
|
+
import { rustRuleHints } from '@opensip-cli/graph-rust';
|
|
22
|
+
import { describe, expect, it } from 'vitest';
|
|
23
|
+
import { typescriptGraphAdapter } from '../../index.js';
|
|
24
|
+
import { edge, makeCatalog, occ } from './_helpers.js';
|
|
25
|
+
const exportedDefaults = {
|
|
26
|
+
visibility: 'exported',
|
|
27
|
+
endLine: 20,
|
|
28
|
+
};
|
|
29
|
+
function ed(text, to, discarded) {
|
|
30
|
+
return { ...edge(text, to, discarded), resolution: 'static', confidence: 'high' };
|
|
31
|
+
}
|
|
32
|
+
describe('rule hints — no-side-effect-path', () => {
|
|
33
|
+
it('Python hints: detects print(...) as a side-effect, suppressing the signal', () => {
|
|
34
|
+
// helper transitively reaches print(...) — that is a side-effect
|
|
35
|
+
// with the Python hints, so the candidate is NOT pure-only.
|
|
36
|
+
const sink = occ({
|
|
37
|
+
bodyHash: 'sink',
|
|
38
|
+
simpleName: 'sink',
|
|
39
|
+
...exportedDefaults,
|
|
40
|
+
calls: [ed('print("hello")', [])],
|
|
41
|
+
});
|
|
42
|
+
const candidate = occ({
|
|
43
|
+
bodyHash: 'cand',
|
|
44
|
+
simpleName: 'maybePure',
|
|
45
|
+
...exportedDefaults,
|
|
46
|
+
calls: [ed('sink()', ['sink']), ed('sink()', ['sink'])],
|
|
47
|
+
});
|
|
48
|
+
const caller = occ({
|
|
49
|
+
bodyHash: 'caller',
|
|
50
|
+
simpleName: 'caller',
|
|
51
|
+
...exportedDefaults,
|
|
52
|
+
calls: [ed('maybePure()', ['cand'], true)],
|
|
53
|
+
});
|
|
54
|
+
const catalog = makeCatalog([sink, candidate, caller]);
|
|
55
|
+
const indexes = buildIndexes(catalog);
|
|
56
|
+
// With Python hints — print is recognized as side-effecting.
|
|
57
|
+
const withHints = noSideEffectPathRule.evaluate(catalog, indexes, {}, pythonRuleHints);
|
|
58
|
+
expect(withHints.some((s) => s.message.includes('maybePure'))).toBe(false);
|
|
59
|
+
// Without hints — the TS-shaped fallback regex does NOT match
|
|
60
|
+
// `print(...)`, so the rule (incorrectly) flags maybePure as pure.
|
|
61
|
+
// This is the F-1 finding in miniature.
|
|
62
|
+
const withoutHints = noSideEffectPathRule.evaluate(catalog, indexes, {});
|
|
63
|
+
expect(withoutHints.some((s) => s.message.includes('maybePure'))).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
it('Python hints: detects subprocess.run(...) as a side-effect', () => {
|
|
66
|
+
const sink = occ({
|
|
67
|
+
bodyHash: 'sink',
|
|
68
|
+
simpleName: 'runIt',
|
|
69
|
+
...exportedDefaults,
|
|
70
|
+
calls: [ed('subprocess.run(["ls"])', [])],
|
|
71
|
+
});
|
|
72
|
+
const candidate = occ({
|
|
73
|
+
bodyHash: 'cand',
|
|
74
|
+
simpleName: 'callsRun',
|
|
75
|
+
...exportedDefaults,
|
|
76
|
+
calls: [ed('runIt()', ['sink']), ed('runIt()', ['sink'])],
|
|
77
|
+
});
|
|
78
|
+
const caller = occ({
|
|
79
|
+
bodyHash: 'caller',
|
|
80
|
+
simpleName: 'caller',
|
|
81
|
+
...exportedDefaults,
|
|
82
|
+
calls: [ed('callsRun()', ['cand'], true)],
|
|
83
|
+
});
|
|
84
|
+
const catalog = makeCatalog([sink, candidate, caller]);
|
|
85
|
+
const indexes = buildIndexes(catalog);
|
|
86
|
+
const signals = noSideEffectPathRule.evaluate(catalog, indexes, {}, pythonRuleHints);
|
|
87
|
+
expect(signals.some((s) => s.message.includes('callsRun'))).toBe(false);
|
|
88
|
+
});
|
|
89
|
+
it('Rust hints: detects println!(...) as a side-effect', () => {
|
|
90
|
+
const sink = occ({
|
|
91
|
+
bodyHash: 'sink',
|
|
92
|
+
simpleName: 'logIt',
|
|
93
|
+
...exportedDefaults,
|
|
94
|
+
calls: [ed('println!("hi")', [])],
|
|
95
|
+
});
|
|
96
|
+
const candidate = occ({
|
|
97
|
+
bodyHash: 'cand',
|
|
98
|
+
simpleName: 'shoutsHello',
|
|
99
|
+
...exportedDefaults,
|
|
100
|
+
calls: [ed('logIt()', ['sink']), ed('logIt()', ['sink'])],
|
|
101
|
+
});
|
|
102
|
+
const caller = occ({
|
|
103
|
+
bodyHash: 'caller',
|
|
104
|
+
simpleName: 'caller',
|
|
105
|
+
...exportedDefaults,
|
|
106
|
+
calls: [ed('shoutsHello()', ['cand'], true)],
|
|
107
|
+
});
|
|
108
|
+
const catalog = makeCatalog([sink, candidate, caller]);
|
|
109
|
+
const indexes = buildIndexes(catalog);
|
|
110
|
+
const signals = noSideEffectPathRule.evaluate(catalog, indexes, {}, rustRuleHints);
|
|
111
|
+
expect(signals.some((s) => s.message.includes('shoutsHello'))).toBe(false);
|
|
112
|
+
});
|
|
113
|
+
it('TypeScript hints: console.log still detected (regression check)', () => {
|
|
114
|
+
const sink = occ({
|
|
115
|
+
bodyHash: 'sink',
|
|
116
|
+
simpleName: 'sink',
|
|
117
|
+
...exportedDefaults,
|
|
118
|
+
calls: [ed('console.log("hi")', [])],
|
|
119
|
+
});
|
|
120
|
+
const candidate = occ({
|
|
121
|
+
bodyHash: 'cand',
|
|
122
|
+
simpleName: 'tsSink',
|
|
123
|
+
...exportedDefaults,
|
|
124
|
+
calls: [ed('sink()', ['sink']), ed('sink()', ['sink'])],
|
|
125
|
+
});
|
|
126
|
+
const caller = occ({
|
|
127
|
+
bodyHash: 'caller',
|
|
128
|
+
simpleName: 'caller',
|
|
129
|
+
...exportedDefaults,
|
|
130
|
+
calls: [ed('tsSink()', ['cand'], true)],
|
|
131
|
+
});
|
|
132
|
+
const catalog = makeCatalog([sink, candidate, caller]);
|
|
133
|
+
const indexes = buildIndexes(catalog);
|
|
134
|
+
const signals = noSideEffectPathRule.evaluate(catalog, indexes, {}, typescriptGraphAdapter.ruleHints);
|
|
135
|
+
// console.log is a TS side-effect primitive — so tsSink isn't
|
|
136
|
+
// flagged as pure.
|
|
137
|
+
expect(signals.some((s) => s.message.includes('tsSink'))).toBe(false);
|
|
138
|
+
});
|
|
139
|
+
it('No hints: TS-shaped fallback still detects console.log (regression check)', () => {
|
|
140
|
+
const sink = occ({
|
|
141
|
+
bodyHash: 'sink',
|
|
142
|
+
simpleName: 'sink',
|
|
143
|
+
...exportedDefaults,
|
|
144
|
+
calls: [ed('console.log("hi")', [])],
|
|
145
|
+
});
|
|
146
|
+
const candidate = occ({
|
|
147
|
+
bodyHash: 'cand',
|
|
148
|
+
simpleName: 'tsSink',
|
|
149
|
+
...exportedDefaults,
|
|
150
|
+
calls: [ed('sink()', ['sink']), ed('sink()', ['sink'])],
|
|
151
|
+
});
|
|
152
|
+
const caller = occ({
|
|
153
|
+
bodyHash: 'caller',
|
|
154
|
+
simpleName: 'caller',
|
|
155
|
+
...exportedDefaults,
|
|
156
|
+
calls: [ed('tsSink()', ['cand'], true)],
|
|
157
|
+
});
|
|
158
|
+
const catalog = makeCatalog([sink, candidate, caller]);
|
|
159
|
+
const indexes = buildIndexes(catalog);
|
|
160
|
+
const signals = noSideEffectPathRule.evaluate(catalog, indexes, {});
|
|
161
|
+
expect(signals.some((s) => s.message.includes('tsSink'))).toBe(false);
|
|
162
|
+
});
|
|
163
|
+
it('Empty sideEffectPrimitives array falls through to TS fallback regex', () => {
|
|
164
|
+
// Adapter that supplies an empty list — treat as "no hint" so the
|
|
165
|
+
// TS-shaped fallback runs.
|
|
166
|
+
const sink = occ({
|
|
167
|
+
bodyHash: 'sink',
|
|
168
|
+
simpleName: 'sink',
|
|
169
|
+
...exportedDefaults,
|
|
170
|
+
calls: [ed('console.log("x")', [])],
|
|
171
|
+
});
|
|
172
|
+
const candidate = occ({
|
|
173
|
+
bodyHash: 'cand',
|
|
174
|
+
simpleName: 'fallback',
|
|
175
|
+
...exportedDefaults,
|
|
176
|
+
calls: [ed('sink()', ['sink']), ed('sink()', ['sink'])],
|
|
177
|
+
});
|
|
178
|
+
const caller = occ({
|
|
179
|
+
bodyHash: 'caller',
|
|
180
|
+
simpleName: 'caller',
|
|
181
|
+
...exportedDefaults,
|
|
182
|
+
calls: [ed('fallback()', ['cand'], true)],
|
|
183
|
+
});
|
|
184
|
+
const catalog = makeCatalog([sink, candidate, caller]);
|
|
185
|
+
const indexes = buildIndexes(catalog);
|
|
186
|
+
const signals = noSideEffectPathRule.evaluate(catalog, indexes, {}, { sideEffectPrimitives: [] });
|
|
187
|
+
// TS fallback applied — console.log detected — fallback NOT flagged.
|
|
188
|
+
expect(signals.some((s) => s.message.includes('fallback'))).toBe(false);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
describe('rule hints — always-throws-branch', () => {
|
|
192
|
+
it('Python hints: matches `raise SomeError(...)` shape', () => {
|
|
193
|
+
const a = occ({
|
|
194
|
+
bodyHash: 'a',
|
|
195
|
+
simpleName: 'pyFail',
|
|
196
|
+
calls: [edge('raise ValueError("nope")'), edge('raise RuntimeError("nope")')],
|
|
197
|
+
});
|
|
198
|
+
const catalog = makeCatalog([a]);
|
|
199
|
+
const indexes = buildIndexes(catalog);
|
|
200
|
+
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {}, pythonRuleHints);
|
|
201
|
+
expect(signals).toHaveLength(1);
|
|
202
|
+
expect(signals[0]?.message).toContain('pyFail');
|
|
203
|
+
});
|
|
204
|
+
it('Python hints: bare `raise` (no identifier) matches the regex', () => {
|
|
205
|
+
const a = occ({
|
|
206
|
+
bodyHash: 'a',
|
|
207
|
+
simpleName: 'rethrow',
|
|
208
|
+
calls: [edge('raise')],
|
|
209
|
+
});
|
|
210
|
+
const catalog = makeCatalog([a]);
|
|
211
|
+
const indexes = buildIndexes(catalog);
|
|
212
|
+
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {}, pythonRuleHints);
|
|
213
|
+
expect(signals).toHaveLength(1);
|
|
214
|
+
});
|
|
215
|
+
it('Rust hints: matches `panic!(...)` shape', () => {
|
|
216
|
+
const a = occ({
|
|
217
|
+
bodyHash: 'a',
|
|
218
|
+
simpleName: 'rsFail',
|
|
219
|
+
calls: [edge('panic!("boom")'), edge('panic!("nope")')],
|
|
220
|
+
});
|
|
221
|
+
const catalog = makeCatalog([a]);
|
|
222
|
+
const indexes = buildIndexes(catalog);
|
|
223
|
+
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {}, rustRuleHints);
|
|
224
|
+
expect(signals).toHaveLength(1);
|
|
225
|
+
expect(signals[0]?.message).toContain('rsFail');
|
|
226
|
+
});
|
|
227
|
+
it('Rust hints: TS `throw new Error(...)` does NOT match Rust regex', () => {
|
|
228
|
+
const a = occ({
|
|
229
|
+
bodyHash: 'a',
|
|
230
|
+
simpleName: 'tsShape',
|
|
231
|
+
calls: [edge('throw new Error("hi")')],
|
|
232
|
+
});
|
|
233
|
+
const catalog = makeCatalog([a]);
|
|
234
|
+
const indexes = buildIndexes(catalog);
|
|
235
|
+
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {}, rustRuleHints);
|
|
236
|
+
// Rust regex doesn't match the TS shape — no signal.
|
|
237
|
+
expect(signals).toHaveLength(0);
|
|
238
|
+
});
|
|
239
|
+
it('Without hints: TS-shaped fallback regex still matches `throw new Error(...)`', () => {
|
|
240
|
+
const a = occ({
|
|
241
|
+
bodyHash: 'a',
|
|
242
|
+
simpleName: 'fail',
|
|
243
|
+
calls: [edge('throw new Error("boom")'), edge('throw new TypeError("nope")')],
|
|
244
|
+
});
|
|
245
|
+
const catalog = makeCatalog([a]);
|
|
246
|
+
const indexes = buildIndexes(catalog);
|
|
247
|
+
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {});
|
|
248
|
+
expect(signals).toHaveLength(1);
|
|
249
|
+
expect(signals[0]?.message).toContain('fail');
|
|
250
|
+
});
|
|
251
|
+
it('Without hints: Python `raise ...` does NOT match TS fallback regex (illustrates F-1)', () => {
|
|
252
|
+
// This is the F-1 finding: a Python project running through the
|
|
253
|
+
// engine without hints would never flag `raise SomeError(...)` as
|
|
254
|
+
// an always-throws helper, because the TS-shaped fallback expects
|
|
255
|
+
// `throw`. The Python hint above closes that gap.
|
|
256
|
+
const a = occ({
|
|
257
|
+
bodyHash: 'a',
|
|
258
|
+
simpleName: 'pyHelper',
|
|
259
|
+
calls: [edge('raise ValueError("x")')],
|
|
260
|
+
});
|
|
261
|
+
const catalog = makeCatalog([a]);
|
|
262
|
+
const indexes = buildIndexes(catalog);
|
|
263
|
+
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {});
|
|
264
|
+
expect(signals).toHaveLength(0);
|
|
265
|
+
});
|
|
266
|
+
it('TypeScript hints: regression check — `throw new Error(...)` still flagged', () => {
|
|
267
|
+
const a = occ({
|
|
268
|
+
bodyHash: 'a',
|
|
269
|
+
simpleName: 'tsFail',
|
|
270
|
+
calls: [edge('throw new Error("boom")'), edge('throw new TypeError("x")')],
|
|
271
|
+
});
|
|
272
|
+
const catalog = makeCatalog([a]);
|
|
273
|
+
const indexes = buildIndexes(catalog);
|
|
274
|
+
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {}, typescriptGraphAdapter.ruleHints);
|
|
275
|
+
expect(signals).toHaveLength(1);
|
|
276
|
+
expect(signals[0]?.message).toContain('tsFail');
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
//# sourceMappingURL=rule-hints-integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-hints-integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/rules/rule-hints-integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for graph's command surface against the real TypeScript
|
|
3
|
+
* adapter.
|
|
4
|
+
*
|
|
5
|
+
* Since release 2.11.0 Phase 5 graph mounts via declarative `commandSpecs`, not
|
|
6
|
+
* the deprecated `register()` hook. The Commander parsing layer (flag wiring,
|
|
7
|
+
* `_args` positionals, choices/required enforcement) is unit-covered in
|
|
8
|
+
* `cli/src/__tests__/mount-command-spec.test.ts`; here we drive the primary
|
|
9
|
+
* `graph` spec's handler directly (exactly what the host invokes post-parse)
|
|
10
|
+
* with the real typescript adapter registered, so the executeGraph / renderLive
|
|
11
|
+
* pipeline runs end-to-end. Positionals ride on the parsed-opts object under the
|
|
12
|
+
* `_args` key (the host convention); graph's sole variadic `[paths...]` is
|
|
13
|
+
* `_args[0]`.
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=tool-register.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-register.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tool-register.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for graph's command surface against the real TypeScript
|
|
3
|
+
* adapter.
|
|
4
|
+
*
|
|
5
|
+
* Since release 2.11.0 Phase 5 graph mounts via declarative `commandSpecs`, not
|
|
6
|
+
* the deprecated `register()` hook. The Commander parsing layer (flag wiring,
|
|
7
|
+
* `_args` positionals, choices/required enforcement) is unit-covered in
|
|
8
|
+
* `cli/src/__tests__/mount-command-spec.test.ts`; here we drive the primary
|
|
9
|
+
* `graph` spec's handler directly (exactly what the host invokes post-parse)
|
|
10
|
+
* with the real typescript adapter registered, so the executeGraph / renderLive
|
|
11
|
+
* pipeline runs end-to-end. Positionals ride on the parsed-opts object under the
|
|
12
|
+
* `_args` key (the host convention); graph's sole variadic `[paths...]` is
|
|
13
|
+
* `_args[0]`.
|
|
14
|
+
*/
|
|
15
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
16
|
+
import { tmpdir } from 'node:os';
|
|
17
|
+
import { join } from 'node:path';
|
|
18
|
+
import { enterScope, RunScope } from '@opensip-cli/core';
|
|
19
|
+
import { currentAdapterRegistry, graphTool } from '@opensip-cli/graph';
|
|
20
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
21
|
+
import { typescriptGraphAdapter } from '../index.js';
|
|
22
|
+
/** Resolve a graph command-spec by name (the host mounts these). */
|
|
23
|
+
function graphSpec(name) {
|
|
24
|
+
const spec = (graphTool.commandSpecs ?? []).find((s) => s.name === name);
|
|
25
|
+
if (spec === undefined)
|
|
26
|
+
throw new Error(`graphTool exposes no command spec '${name}'`);
|
|
27
|
+
return spec;
|
|
28
|
+
}
|
|
29
|
+
/** The primary `graph` command handler (host invokes `handler(opts, ctx)`). */
|
|
30
|
+
function graphHandler() {
|
|
31
|
+
return graphSpec('graph').handler;
|
|
32
|
+
}
|
|
33
|
+
beforeEach(() => {
|
|
34
|
+
// Item 1: graph registries are per-RunScope. Construct a scope with the graph
|
|
35
|
+
// subscope and register the typescript adapter into it so the handler reaches
|
|
36
|
+
// pickAdapter() through a live scope.
|
|
37
|
+
const scope = new RunScope();
|
|
38
|
+
Object.assign(scope, graphTool.contributeScope?.() ?? {});
|
|
39
|
+
enterScope(scope);
|
|
40
|
+
currentAdapterRegistry().register(typescriptGraphAdapter);
|
|
41
|
+
});
|
|
42
|
+
function makeCli(overrides = {}) {
|
|
43
|
+
const project = {
|
|
44
|
+
cwd: '/test',
|
|
45
|
+
cwdExplicit: false,
|
|
46
|
+
projectRoot: '/test',
|
|
47
|
+
configPath: undefined,
|
|
48
|
+
walkedUp: 0,
|
|
49
|
+
scope: 'none',
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
scope: new RunScope({ projectContext: project }),
|
|
53
|
+
render: vi.fn(() => Promise.resolve()),
|
|
54
|
+
registerLiveView: vi.fn(),
|
|
55
|
+
renderLive: vi.fn(() => Promise.resolve()),
|
|
56
|
+
maybeOpenReport: vi.fn(() => Promise.resolve()),
|
|
57
|
+
logger: { info: vi.fn(), warn: vi.fn(), error: vi.fn(), debug: vi.fn() },
|
|
58
|
+
setExitCode: vi.fn(),
|
|
59
|
+
emitJson: vi.fn(),
|
|
60
|
+
emitRaw: vi.fn(),
|
|
61
|
+
emitEnvelope: vi.fn(),
|
|
62
|
+
emitError: vi.fn(),
|
|
63
|
+
deliverSignals: vi.fn(() => Promise.resolve({ cloudAccepted: 0 })),
|
|
64
|
+
writeSarif: vi.fn(() => Promise.resolve()),
|
|
65
|
+
saveBaseline: vi.fn(() => Promise.resolve()),
|
|
66
|
+
compareBaseline: vi.fn(() => Promise.resolve({ added: [], resolved: [], unchanged: [], degraded: false })),
|
|
67
|
+
exportBaselineSarif: vi.fn(() => Promise.resolve()),
|
|
68
|
+
exportBaselineFingerprints: vi.fn(() => Promise.resolve()),
|
|
69
|
+
toolState: {
|
|
70
|
+
get: () => Promise.resolve(undefined),
|
|
71
|
+
put: () => Promise.resolve(),
|
|
72
|
+
delete: () => Promise.resolve(),
|
|
73
|
+
list: () => Promise.resolve([]),
|
|
74
|
+
},
|
|
75
|
+
runSession: {
|
|
76
|
+
timing: {
|
|
77
|
+
startedAt: new Date().toISOString(),
|
|
78
|
+
startedAtEpochMs: Date.now(),
|
|
79
|
+
elapsedMs: () => 0,
|
|
80
|
+
snapshot: () => ({
|
|
81
|
+
startedAt: new Date().toISOString(),
|
|
82
|
+
completedAt: new Date().toISOString(),
|
|
83
|
+
durationMs: 0,
|
|
84
|
+
}),
|
|
85
|
+
complete: () => ({
|
|
86
|
+
startedAt: new Date().toISOString(),
|
|
87
|
+
completedAt: new Date().toISOString(),
|
|
88
|
+
durationMs: 0,
|
|
89
|
+
}),
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
...overrides,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
describe('graph command spec', () => {
|
|
96
|
+
it('declares a `graph` command described as static call-graph analysis', () => {
|
|
97
|
+
const spec = graphSpec('graph');
|
|
98
|
+
expect(spec.name).toBe('graph');
|
|
99
|
+
expect(spec.description).toContain('static call-graph');
|
|
100
|
+
// The handler owns its full output surface (TTY-vs-static + egress).
|
|
101
|
+
expect(spec.output).toBe('raw-stream');
|
|
102
|
+
});
|
|
103
|
+
it('declares the documented option set on the graph command', () => {
|
|
104
|
+
const spec = graphSpec('graph');
|
|
105
|
+
// Common flags from the ADR-0021 registry (the CommonFlagKey form).
|
|
106
|
+
expect([...spec.commonFlags]).toEqual(expect.arrayContaining(['cwd', 'json', 'reportTo', 'debug']));
|
|
107
|
+
// Tool-specific options.
|
|
108
|
+
const optionFlags = (spec.options ?? []).map((o) => o.flag);
|
|
109
|
+
expect(optionFlags).toContain('--no-cache');
|
|
110
|
+
expect(optionFlags).toContain('--gate-save');
|
|
111
|
+
expect(optionFlags).toContain('--gate-compare');
|
|
112
|
+
// --baseline was removed (audit P1.2): it was mounted + documented but had
|
|
113
|
+
// zero readers. Guard against re-adding a vestigial no-op flag.
|
|
114
|
+
expect(optionFlags).not.toContain('--baseline');
|
|
115
|
+
});
|
|
116
|
+
it('--concurrency parses as a number via the declared parse reducer', () => {
|
|
117
|
+
const spec = graphSpec('graph');
|
|
118
|
+
const concurrency = (spec.options ?? []).find((o) => o.flag === '--concurrency');
|
|
119
|
+
expect(concurrency?.parse).toBeTypeOf('function');
|
|
120
|
+
expect(concurrency?.parse?.('4', undefined)).toBe(4);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
describe('graph handler — end-to-end via the real typescript adapter', () => {
|
|
124
|
+
it('runs --json against a real fixture and exits with code 0', async () => {
|
|
125
|
+
const dir = mkdtempSync(join(tmpdir(), 'graph-tool-action-'));
|
|
126
|
+
try {
|
|
127
|
+
mkdirSync(dir, { recursive: true });
|
|
128
|
+
writeFileSync(join(dir, 'tsconfig.json'), JSON.stringify({
|
|
129
|
+
compilerOptions: {
|
|
130
|
+
target: 'ES2022',
|
|
131
|
+
module: 'Node16',
|
|
132
|
+
moduleResolution: 'Node16',
|
|
133
|
+
strict: true,
|
|
134
|
+
esModuleInterop: true,
|
|
135
|
+
skipLibCheck: true,
|
|
136
|
+
rootDir: '.',
|
|
137
|
+
},
|
|
138
|
+
include: ['**/*.ts'],
|
|
139
|
+
}), 'utf8');
|
|
140
|
+
writeFileSync(join(dir, 'index.ts'), `export function x(): number { return 1; }\n`, 'utf8');
|
|
141
|
+
// Capture stdout so we don't pollute test output.
|
|
142
|
+
let stdout = '';
|
|
143
|
+
const stdoutSpy = vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
|
|
144
|
+
stdout += typeof chunk === 'string' ? chunk : String(chunk);
|
|
145
|
+
return true;
|
|
146
|
+
});
|
|
147
|
+
const setExitCode = vi.fn();
|
|
148
|
+
const cli = makeCli({
|
|
149
|
+
setExitCode,
|
|
150
|
+
// Mirror the composition root's `emitEnvelope` seam (JSON to stdout).
|
|
151
|
+
emitError: vi.fn(),
|
|
152
|
+
emitEnvelope: vi.fn((envelope) => {
|
|
153
|
+
process.stdout.write(`${JSON.stringify(envelope)}\n`);
|
|
154
|
+
}),
|
|
155
|
+
});
|
|
156
|
+
try {
|
|
157
|
+
// With a positional path, the heap preflight is skipped — important
|
|
158
|
+
// because preflight could re-exec the test process. The variadic
|
|
159
|
+
// positional rides on `_args[0]`.
|
|
160
|
+
await graphHandler()({ cwd: dir, json: true, _args: [[dir]] }, cli);
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
stdoutSpy.mockRestore();
|
|
164
|
+
}
|
|
165
|
+
const parsed = JSON.parse(stdout);
|
|
166
|
+
expect(parsed.tool).toBe('graph');
|
|
167
|
+
expect(parsed.schemaVersion).toBe(2);
|
|
168
|
+
expect(setExitCode).toHaveBeenCalledWith(0);
|
|
169
|
+
}
|
|
170
|
+
finally {
|
|
171
|
+
rmSync(dir, { recursive: true, force: true });
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
it('interactive --exact path delegates to cli.renderLive', async () => {
|
|
175
|
+
// The Ink live view drives the EXACT engine, so it is eligible only under
|
|
176
|
+
// `--exact` on a TTY (ADR-0032: sharded is the default and routes to the
|
|
177
|
+
// static path). The fixture is tiny so heap preflight no-ops (file count
|
|
178
|
+
// < 1000).
|
|
179
|
+
const dir = mkdtempSync(join(tmpdir(), 'graph-tool-action-live-'));
|
|
180
|
+
try {
|
|
181
|
+
mkdirSync(dir, { recursive: true });
|
|
182
|
+
writeFileSync(join(dir, 'tsconfig.json'), JSON.stringify({
|
|
183
|
+
compilerOptions: { target: 'ES2022', module: 'Node16' },
|
|
184
|
+
include: ['**/*.ts'],
|
|
185
|
+
}), 'utf8');
|
|
186
|
+
writeFileSync(join(dir, 'index.ts'), 'export function x(): number { return 1; }\n', 'utf8');
|
|
187
|
+
const renderLive = vi.fn(() => Promise.resolve());
|
|
188
|
+
const cli = makeCli({ renderLive });
|
|
189
|
+
// --exact (the live view drives the exact engine), no
|
|
190
|
+
// --json/--gate-*/--report-to/positional: this is the interactive live
|
|
191
|
+
// path, which delegates to renderLive — but only on a TTY (a non-TTY run
|
|
192
|
+
// falls back to the static render seam). vitest's stdout is not a TTY, so
|
|
193
|
+
// force it for this assertion.
|
|
194
|
+
const prevTTY = process.stdout.isTTY;
|
|
195
|
+
Object.defineProperty(process.stdout, 'isTTY', { value: true, configurable: true });
|
|
196
|
+
try {
|
|
197
|
+
await graphHandler()({ cwd: dir, exact: true, _args: [[]] }, cli);
|
|
198
|
+
}
|
|
199
|
+
finally {
|
|
200
|
+
Object.defineProperty(process.stdout, 'isTTY', { value: prevTTY, configurable: true });
|
|
201
|
+
}
|
|
202
|
+
expect(renderLive).toHaveBeenCalledOnce();
|
|
203
|
+
expect(renderLive).toHaveBeenCalledWith('graph', expect.objectContaining({ cwd: dir }));
|
|
204
|
+
}
|
|
205
|
+
finally {
|
|
206
|
+
rmSync(dir, { recursive: true, force: true });
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
//# sourceMappingURL=tool-register.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-register.test.js","sourceRoot":"","sources":["../../src/__tests__/tool-register.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAIrD,oEAAoE;AACpE,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACzE,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,GAAG,CAAC,CAAC;IACvF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,SAAS,YAAY;IACnB,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACpC,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,8EAA8E;IAC9E,8EAA8E;IAC9E,sCAAsC;IACtC,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,sBAAsB,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,SAAS,OAAO,CAAC,YAAqC,EAAE;IACtD,MAAM,OAAO,GAAG;QACd,GAAG,EAAE,OAAO;QACZ,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,OAAO;QACpB,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,CAAC;QACX,KAAK,EAAE,MAAe;KACvB,CAAC;IACF,OAAO;QACL,KAAK,EAAE,IAAI,QAAQ,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;QAChD,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;QACzB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1C,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/C,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACxE,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;QACpB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;QACjB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;QACrB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1C,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5C,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAC1B,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAC7E;QACD,mBAAmB,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACnD,0BAA0B,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1D,SAAS,EAAE;YACT,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YACrC,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;YAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;YAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;SAChC;QACD,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE;gBAC5B,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;gBAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACrC,UAAU,EAAE,CAAC;iBACd,CAAC;gBACF,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACrC,UAAU,EAAE,CAAC;iBACd,CAAC;aACH;SACF;QACD,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACxD,qEAAqE;QACrE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,oEAAoE;QACpE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CACnC,MAAM,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAC7D,CAAC;QACF,yBAAyB;QACzB,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAChD,2EAA2E;QAC3E,gEAAgE;QAChE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;QACjF,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,aAAa,CACX,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAC1B,IAAI,CAAC,SAAS,CAAC;gBACb,eAAe,EAAE;oBACf,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,QAAQ;oBAChB,gBAAgB,EAAE,QAAQ;oBAC1B,MAAM,EAAE,IAAI;oBACZ,eAAe,EAAE,IAAI;oBACrB,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,GAAG;iBACb;gBACD,OAAO,EAAE,CAAC,SAAS,CAAC;aACrB,CAAC,EACF,MAAM,CACP,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,6CAA6C,EAAE,MAAM,CAAC,CAAC;YAE5F,kDAAkD;YAClD,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxF,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,OAAO,CAAC;gBAClB,WAAW;gBACX,sEAAsE;gBACtE,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;gBAClB,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,QAAiB,EAAE,EAAE;oBACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxD,CAAC,CAAC;aACH,CAAC,CAAC;YACH,IAAI,CAAC;gBACH,oEAAoE;gBACpE,iEAAiE;gBACjE,kCAAkC;gBAClC,MAAM,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACtE,CAAC;oBAAS,CAAC;gBACT,SAAS,CAAC,WAAW,EAAE,CAAC;YAC1B,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA4C,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,WAAW;QACX,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC;YACH,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,aAAa,CACX,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAC1B,IAAI,CAAC,SAAS,CAAC;gBACb,eAAe,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACvD,OAAO,EAAE,CAAC,SAAS,CAAC;aACrB,CAAC,EACF,MAAM,CACP,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,6CAA6C,EAAE,MAAM,CAAC,CAAC;YAE5F,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YACpC,sDAAsD;YACtD,uEAAuE;YACvE,yEAAyE;YACzE,0EAA0E;YAC1E,+BAA+B;YAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACrC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YACpF,IAAI,CAAC;gBACH,MAAM,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACpE,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YACzF,CAAC;YACD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1F,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for the value-reference predicates + resolvers
|
|
3
|
+
* (edges-value-reference.ts).
|
|
4
|
+
*
|
|
5
|
+
* `isValueReference` is a pure AST predicate: an Identifier is a value
|
|
6
|
+
* reference unless it is a structural name (declaration/property/type/
|
|
7
|
+
* import/export name) or a call/new/JSX target. These tests craft each
|
|
8
|
+
* structural and call-target shape so every short-circuit branch is
|
|
9
|
+
* exercised. `resolveValueReference` is then driven against a real
|
|
10
|
+
* program for the no-symbol and class-constructor declaration branches.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=value-reference-unit.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-reference-unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/value-reference-unit.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|