@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,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branch-coverage tests for edge resolvers.
|
|
3
|
+
*
|
|
4
|
+
* Exercises the many `if (!narrowingX) return UNRESOLVED;` short-
|
|
5
|
+
* circuit branches in each resolver by running the full pipeline
|
|
6
|
+
* over targeted source-code fixtures. The acceptance tests cover the
|
|
7
|
+
* happy paths; this file covers the unresolvable / fallback paths
|
|
8
|
+
* that the contract test alone can't hit.
|
|
9
|
+
*/
|
|
10
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
11
|
+
import { tmpdir } from 'node:os';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
14
|
+
import { resolveByCatalogFallback } from '../../edge-resolvers/catalog-fallback.js';
|
|
15
|
+
import { findOccurrence, runFixture, writeFixture } from '../acceptance/_fixture-runner.js';
|
|
16
|
+
describe('edge-resolvers — defensive / unresolved branches', () => {
|
|
17
|
+
const fixtureDir = mkdtempSync(join(tmpdir(), 'graph-resolver-branches-'));
|
|
18
|
+
afterAll(() => {
|
|
19
|
+
rmSync(fixtureDir, { recursive: true, force: true });
|
|
20
|
+
});
|
|
21
|
+
writeFixture(fixtureDir, {
|
|
22
|
+
// Direct call where the LHS is a parenthesized expression — not an
|
|
23
|
+
// identifier, so resolveDirectCall returns UNRESOLVED and the
|
|
24
|
+
// catalog-fallback takes over (or nothing resolves).
|
|
25
|
+
'paren-call.ts': `
|
|
26
|
+
function inner(): number { return 1; }
|
|
27
|
+
export function paren(): number {
|
|
28
|
+
return (inner)();
|
|
29
|
+
}
|
|
30
|
+
`,
|
|
31
|
+
// Direct call to a method on a class instance via property access.
|
|
32
|
+
// This exercises resolvePropertyAccessCall's positive path with a
|
|
33
|
+
// method declaration (covers the ts.isMethodDeclaration branch in
|
|
34
|
+
// functionLikeFromDeclaration).
|
|
35
|
+
'method-call.ts': `
|
|
36
|
+
export class C {
|
|
37
|
+
m(): number { return 1; }
|
|
38
|
+
}
|
|
39
|
+
export function callMethod(c: C): number {
|
|
40
|
+
return c.m();
|
|
41
|
+
}
|
|
42
|
+
`,
|
|
43
|
+
// Direct call to a function assigned to a variable as an arrow.
|
|
44
|
+
// Exercises the VariableDeclaration + initializer = ArrowFunction
|
|
45
|
+
// branch in direct-call.ts's functionLikeFromDeclaration.
|
|
46
|
+
'arrow-decl.ts': `
|
|
47
|
+
const fn = (): number => 7;
|
|
48
|
+
export function arrowDecl(): number {
|
|
49
|
+
return fn();
|
|
50
|
+
}
|
|
51
|
+
`,
|
|
52
|
+
// Direct call to a function-expression assigned to a const.
|
|
53
|
+
'fn-expr-decl.ts': `
|
|
54
|
+
const fnExpr = function (): number { return 8; };
|
|
55
|
+
export function fnExprDecl(): number {
|
|
56
|
+
return fnExpr();
|
|
57
|
+
}
|
|
58
|
+
`,
|
|
59
|
+
// Calling a non-function value (a number) — symbol-less call expression
|
|
60
|
+
// that hits the !symbol short-circuit.
|
|
61
|
+
'no-symbol.ts': `
|
|
62
|
+
export function noSymbol(): number {
|
|
63
|
+
// Non-callable parenthesized non-identifier
|
|
64
|
+
return ((): number => 1)();
|
|
65
|
+
}
|
|
66
|
+
`,
|
|
67
|
+
// Property-access call against an unknown receiver. Covers the
|
|
68
|
+
// negative branch in resolvePropertyAccessCall when the receiver
|
|
69
|
+
// type has no matching method.
|
|
70
|
+
'prop-no-method.ts': `
|
|
71
|
+
export function propNoMethod(x: { a: number }): number {
|
|
72
|
+
// x.a is not a function — call expression below is invalid TS,
|
|
73
|
+
// so we use a type assertion to coax it past the typechecker.
|
|
74
|
+
return (x as unknown as { a: () => number }).a();
|
|
75
|
+
}
|
|
76
|
+
`,
|
|
77
|
+
// new-expression on a non-class symbol — covers the
|
|
78
|
+
// !isClassDeclaration && !isClassExpression continue.
|
|
79
|
+
'new-on-fn.ts': `
|
|
80
|
+
function Factory(): { x: number } { return { x: 1 }; }
|
|
81
|
+
export function newOnFn(): unknown {
|
|
82
|
+
// Calling new on a function — TS treats Factory as a constructor
|
|
83
|
+
// signature. The resolver looks up the symbol's declarations;
|
|
84
|
+
// since it's a FunctionDeclaration (not a ClassDeclaration),
|
|
85
|
+
// the inner loop's continue branch fires.
|
|
86
|
+
return new (Factory as unknown as new () => { x: number })();
|
|
87
|
+
}
|
|
88
|
+
`,
|
|
89
|
+
// jsx intrinsic element <div /> — covers the lower-case identifier
|
|
90
|
+
// short-circuit.
|
|
91
|
+
'jsx-intrinsic.tsx': `
|
|
92
|
+
export function intrinsic(): JSX.Element {
|
|
93
|
+
return (<div className="x" />);
|
|
94
|
+
}
|
|
95
|
+
`,
|
|
96
|
+
// jsx component without a matching catalog entry (defined inline as
|
|
97
|
+
// a constant returning a JSX expression). Covers the symbol-found
|
|
98
|
+
// path with no findCatalogEntry hit when the body hash mismatches.
|
|
99
|
+
'jsx-self-closing.tsx': `
|
|
100
|
+
const Wrapper = (): JSX.Element => (<span />);
|
|
101
|
+
export function jsxConsumer(): JSX.Element {
|
|
102
|
+
return (<Wrapper />);
|
|
103
|
+
}
|
|
104
|
+
`,
|
|
105
|
+
// polymorphic dispatch with multiple implementations — covers the
|
|
106
|
+
// confidence='medium' branch when more than one hash candidate is
|
|
107
|
+
// returned from collectMethodHashes.
|
|
108
|
+
'polymorphic-multi.ts': `
|
|
109
|
+
interface Pingable {
|
|
110
|
+
ping(): void;
|
|
111
|
+
}
|
|
112
|
+
class A implements Pingable {
|
|
113
|
+
ping(): void { return; }
|
|
114
|
+
}
|
|
115
|
+
class B implements Pingable {
|
|
116
|
+
ping(): void { return; }
|
|
117
|
+
}
|
|
118
|
+
export function pingAll(targets: readonly Pingable[]): void {
|
|
119
|
+
for (const t of targets) t.ping();
|
|
120
|
+
}
|
|
121
|
+
// keep references so the classes aren't pruned
|
|
122
|
+
const _refs: Pingable[] = [new A(), new B()];
|
|
123
|
+
void _refs;
|
|
124
|
+
`,
|
|
125
|
+
});
|
|
126
|
+
let catalog;
|
|
127
|
+
beforeAll(async () => {
|
|
128
|
+
catalog = await runFixture(fixtureDir);
|
|
129
|
+
});
|
|
130
|
+
it('produces a catalog (sanity)', () => {
|
|
131
|
+
expect(Object.keys(catalog.functions).length).toBeGreaterThan(0);
|
|
132
|
+
});
|
|
133
|
+
it('parenthesized direct-call: still resolves the inner identifier where possible', () => {
|
|
134
|
+
const occ = findOccurrence(catalog, (o) => o.simpleName === 'paren');
|
|
135
|
+
expect(occ).toBeDefined();
|
|
136
|
+
// The resolver may return UNRESOLVED for the parenthesized call,
|
|
137
|
+
// but the call site is still recorded. Just assert the catalog
|
|
138
|
+
// entry exists with at least one call edge.
|
|
139
|
+
expect(occ.calls.length).toBeGreaterThanOrEqual(0);
|
|
140
|
+
});
|
|
141
|
+
it('arrow-function variable declaration is resolved via direct-call', () => {
|
|
142
|
+
const occ = findOccurrence(catalog, (o) => o.simpleName === 'arrowDecl');
|
|
143
|
+
expect(occ).toBeDefined();
|
|
144
|
+
expect(occ.calls.length).toBeGreaterThan(0);
|
|
145
|
+
});
|
|
146
|
+
it('function-expression variable declaration is resolved via direct-call', () => {
|
|
147
|
+
const occ = findOccurrence(catalog, (o) => o.simpleName === 'fnExprDecl');
|
|
148
|
+
expect(occ).toBeDefined();
|
|
149
|
+
expect(occ.calls.length).toBeGreaterThan(0);
|
|
150
|
+
});
|
|
151
|
+
it('property-access call to a class method resolves via the method declaration', () => {
|
|
152
|
+
const occ = findOccurrence(catalog, (o) => o.simpleName === 'callMethod');
|
|
153
|
+
expect(occ).toBeDefined();
|
|
154
|
+
const methodEdge = occ.calls.find((e) => e.text.includes('m'));
|
|
155
|
+
expect(methodEdge).toBeDefined();
|
|
156
|
+
});
|
|
157
|
+
it('intrinsic JSX <div /> is silently ignored — no edge', () => {
|
|
158
|
+
const occ = findOccurrence(catalog, (o) => o.simpleName === 'intrinsic');
|
|
159
|
+
expect(occ).toBeDefined();
|
|
160
|
+
// Lower-cased identifier short-circuits jsx-element.ts to UNRESOLVED.
|
|
161
|
+
// The component call never reaches the catalog.
|
|
162
|
+
for (const edge of occ.calls) {
|
|
163
|
+
expect(edge.text).not.toBe('div');
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
it('jsx component with matching catalog entry resolves', () => {
|
|
167
|
+
const occ = findOccurrence(catalog, (o) => o.simpleName === 'jsxConsumer');
|
|
168
|
+
expect(occ).toBeDefined();
|
|
169
|
+
const wrapperEdge = occ.calls.find((e) => e.text.includes('Wrapper'));
|
|
170
|
+
expect(wrapperEdge).toBeDefined();
|
|
171
|
+
});
|
|
172
|
+
it('polymorphic dispatch with multiple implementations returns multi-hash edges', () => {
|
|
173
|
+
const occ = findOccurrence(catalog, (o) => o.simpleName === 'pingAll');
|
|
174
|
+
expect(occ).toBeDefined();
|
|
175
|
+
// The .ping() call should resolve to both A.ping and B.ping.
|
|
176
|
+
const edge = occ.calls.find((e) => e.text.includes('ping'));
|
|
177
|
+
if (edge) {
|
|
178
|
+
// confidence is 'medium' when there are 2+ candidates per the
|
|
179
|
+
// resolver's logic.
|
|
180
|
+
if (edge.to.length > 1) {
|
|
181
|
+
expect(edge.confidence).toBe('medium');
|
|
182
|
+
}
|
|
183
|
+
else if (edge.to.length === 1) {
|
|
184
|
+
expect(['high', 'medium']).toContain(edge.confidence);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
describe('catalog-fallback resolver — direct unit tests', () => {
|
|
190
|
+
it('returns UNRESOLVED when the simpleName is not present in the catalog', () => {
|
|
191
|
+
const empty = {
|
|
192
|
+
version: '3.0',
|
|
193
|
+
tool: 'graph',
|
|
194
|
+
language: 'typescript',
|
|
195
|
+
builtAt: new Date().toISOString(),
|
|
196
|
+
cacheKey: 'test',
|
|
197
|
+
functions: {},
|
|
198
|
+
};
|
|
199
|
+
const out = resolveByCatalogFallback('not-a-name', empty);
|
|
200
|
+
expect(out.to).toEqual([]);
|
|
201
|
+
expect(out.resolution).toBe('unknown');
|
|
202
|
+
expect(out.confidence).toBe('low');
|
|
203
|
+
});
|
|
204
|
+
it('returns UNRESOLVED when the candidate list is empty', () => {
|
|
205
|
+
const empty = {
|
|
206
|
+
version: '3.0',
|
|
207
|
+
tool: 'graph',
|
|
208
|
+
language: 'typescript',
|
|
209
|
+
builtAt: new Date().toISOString(),
|
|
210
|
+
cacheKey: 'test',
|
|
211
|
+
functions: { foo: [] },
|
|
212
|
+
};
|
|
213
|
+
const out = resolveByCatalogFallback('foo', empty);
|
|
214
|
+
expect(out.to).toEqual([]);
|
|
215
|
+
expect(out.confidence).toBe('low');
|
|
216
|
+
});
|
|
217
|
+
it('returns the unique hash with medium confidence on a single-candidate match', () => {
|
|
218
|
+
const cat = {
|
|
219
|
+
version: '3.0',
|
|
220
|
+
tool: 'graph',
|
|
221
|
+
language: 'typescript',
|
|
222
|
+
builtAt: new Date().toISOString(),
|
|
223
|
+
cacheKey: 'test',
|
|
224
|
+
functions: {
|
|
225
|
+
foo: [
|
|
226
|
+
{
|
|
227
|
+
simpleName: 'foo',
|
|
228
|
+
qualifiedName: 'foo',
|
|
229
|
+
bodyHash: 'h1',
|
|
230
|
+
filePath: 'a.ts',
|
|
231
|
+
line: 1,
|
|
232
|
+
column: 0,
|
|
233
|
+
kind: 'function-declaration',
|
|
234
|
+
params: [],
|
|
235
|
+
visibility: 'exported',
|
|
236
|
+
inTestFile: false,
|
|
237
|
+
decorators: [],
|
|
238
|
+
endLine: 1,
|
|
239
|
+
returnType: null,
|
|
240
|
+
enclosingClass: null,
|
|
241
|
+
definedInGenerated: false,
|
|
242
|
+
calls: [],
|
|
243
|
+
},
|
|
244
|
+
],
|
|
245
|
+
},
|
|
246
|
+
};
|
|
247
|
+
const out = resolveByCatalogFallback('foo', cat);
|
|
248
|
+
expect(out.to).toEqual(['h1']);
|
|
249
|
+
expect(out.confidence).toBe('medium');
|
|
250
|
+
expect(out.resolution).toBe('unknown');
|
|
251
|
+
});
|
|
252
|
+
it('returns UNRESOLVED on multiple-candidate (ambiguous) match', () => {
|
|
253
|
+
const cat = {
|
|
254
|
+
version: '3.0',
|
|
255
|
+
tool: 'graph',
|
|
256
|
+
language: 'typescript',
|
|
257
|
+
builtAt: new Date().toISOString(),
|
|
258
|
+
cacheKey: 'test',
|
|
259
|
+
functions: {
|
|
260
|
+
foo: [
|
|
261
|
+
{
|
|
262
|
+
simpleName: 'foo',
|
|
263
|
+
qualifiedName: 'a.foo',
|
|
264
|
+
bodyHash: 'h1',
|
|
265
|
+
filePath: 'a.ts',
|
|
266
|
+
line: 1,
|
|
267
|
+
column: 0,
|
|
268
|
+
kind: 'function-declaration',
|
|
269
|
+
params: [],
|
|
270
|
+
visibility: 'exported',
|
|
271
|
+
inTestFile: false,
|
|
272
|
+
decorators: [],
|
|
273
|
+
endLine: 1,
|
|
274
|
+
returnType: null,
|
|
275
|
+
enclosingClass: null,
|
|
276
|
+
definedInGenerated: false,
|
|
277
|
+
calls: [],
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
simpleName: 'foo',
|
|
281
|
+
qualifiedName: 'b.foo',
|
|
282
|
+
bodyHash: 'h2',
|
|
283
|
+
filePath: 'b.ts',
|
|
284
|
+
line: 1,
|
|
285
|
+
column: 0,
|
|
286
|
+
kind: 'function-declaration',
|
|
287
|
+
params: [],
|
|
288
|
+
visibility: 'exported',
|
|
289
|
+
inTestFile: false,
|
|
290
|
+
decorators: [],
|
|
291
|
+
endLine: 1,
|
|
292
|
+
returnType: null,
|
|
293
|
+
enclosingClass: null,
|
|
294
|
+
definedInGenerated: false,
|
|
295
|
+
calls: [],
|
|
296
|
+
},
|
|
297
|
+
],
|
|
298
|
+
},
|
|
299
|
+
};
|
|
300
|
+
const out = resolveByCatalogFallback('foo', cat);
|
|
301
|
+
expect(out.to).toEqual([]);
|
|
302
|
+
expect(out.confidence).toBe('low');
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
//# sourceMappingURL=branches.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branches.test.js","sourceRoot":"","sources":["../../../src/__tests__/edge-resolvers/branches.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/edge-resolvers/contract.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EdgeResolver contract conformance (PR-4).
|
|
3
|
+
*
|
|
4
|
+
* Compile-time test seam: if any edge resolver drifts from the
|
|
5
|
+
* EdgeResolver signature alias, this file fails to typecheck.
|
|
6
|
+
*/
|
|
7
|
+
import { describe, expect, it } from 'vitest';
|
|
8
|
+
import { resolveDirectCall } from '../../edge-resolvers/direct-call.js';
|
|
9
|
+
import { resolveJsxElement } from '../../edge-resolvers/jsx-element.js';
|
|
10
|
+
import { resolveNewExpression } from '../../edge-resolvers/new-expression.js';
|
|
11
|
+
import { resolvePolymorphicCall } from '../../edge-resolvers/polymorphic.js';
|
|
12
|
+
import { resolvePropertyAccessCall } from '../../edge-resolvers/property-access.js';
|
|
13
|
+
const _direct = resolveDirectCall;
|
|
14
|
+
const _propAccess = resolvePropertyAccessCall;
|
|
15
|
+
const _polymorphic = resolvePolymorphicCall;
|
|
16
|
+
const _new = resolveNewExpression;
|
|
17
|
+
const _jsx = resolveJsxElement;
|
|
18
|
+
// catalog-fallback intentionally has a different shape (works on
|
|
19
|
+
// (simpleName, catalog) → ResolverVerdict) and therefore does not
|
|
20
|
+
// conform to EdgeResolver.
|
|
21
|
+
describe('EdgeResolver contract conformance (PR-4)', () => {
|
|
22
|
+
it('all resolvers implement the EdgeResolver alias at compile time', () => {
|
|
23
|
+
expect(typeof _direct).toBe('function');
|
|
24
|
+
expect(typeof _propAccess).toBe('function');
|
|
25
|
+
expect(typeof _polymorphic).toBe('function');
|
|
26
|
+
expect(typeof _new).toBe('function');
|
|
27
|
+
expect(typeof _jsx).toBe('function');
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=contract.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.test.js","sourceRoot":"","sources":["../../../src/__tests__/edge-resolvers/contract.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAKpF,MAAM,OAAO,GAAoC,iBAAiB,CAAC;AACnE,MAAM,WAAW,GAAoC,yBAAyB,CAAC;AAC/E,MAAM,YAAY,GAAoC,sBAAsB,CAAC;AAC7E,MAAM,IAAI,GAAmC,oBAAoB,CAAC;AAClE,MAAM,IAAI,GAAkE,iBAAiB,CAAC;AAE9F,iEAAiE;AACjE,kEAAkE;AAClE,2BAA2B;AAE3B,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Direct unit tests for the individual edge resolvers, driven against a
|
|
3
|
+
* real `ts.Program` built from in-memory fixtures.
|
|
4
|
+
*
|
|
5
|
+
* The acceptance + branches fixtures exercise the happy paths via the
|
|
6
|
+
* full pipeline; this file targets the per-resolver SHORT-CIRCUIT
|
|
7
|
+
* branches that are hard to hit end-to-end: the `!isIdentifier`,
|
|
8
|
+
* `!symbol`, `!declNode`, and `hash === null` returns, plus the
|
|
9
|
+
* single-vs-multi confidence split in the polymorphic resolver and the
|
|
10
|
+
* `findCatalogEntry`-miss fall-through.
|
|
11
|
+
*
|
|
12
|
+
* Each test parses a tiny program, walks it to build the SAME catalog
|
|
13
|
+
* the production pipeline would, finds the target node, assembles a
|
|
14
|
+
* ResolverContext, and asserts the resolver's verdict.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=resolver-units.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver-units.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/edge-resolvers/resolver-units.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|