@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,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-attested cross-package METHOD target resolution (ADR-0033 follow-up).
|
|
3
|
+
*
|
|
4
|
+
* For a method call `recv.m()` the boundary extractor needs the TYPE-resolved
|
|
5
|
+
* target file (not a syntactic name) to emit a cross-package boundary call. This
|
|
6
|
+
* mirrors the symbol resolution `resolvePropertyAccessCall` does, but returns the
|
|
7
|
+
* `m` decl's SOURCE file (the package's `dist/*.d.ts` mapped to source) rather
|
|
8
|
+
* than a catalog hash — so the cross-shard linker can pin it post-merge against
|
|
9
|
+
* the merged catalog, identically in both engines.
|
|
10
|
+
*/
|
|
11
|
+
import ts from 'typescript';
|
|
12
|
+
/**
|
|
13
|
+
* The project-relative SOURCE file a method call's callee resolves to, when that
|
|
14
|
+
* callee's declaration is a workspace package's built `dist/*.d.ts` — `null`
|
|
15
|
+
* otherwise. `null` when: not a property-access call; the checker has no symbol;
|
|
16
|
+
* the decl is SOURCE (the in-shard/inline pass handles it) or a non-workspace
|
|
17
|
+
* `.d.ts` (`node_modules`, `lib.dom`, a non-`dist` ambient). The dist→src mapping
|
|
18
|
+
* follows the tsc `outDir:dist` / `rootDir:src` convention; a wrong mapping just
|
|
19
|
+
* fails to match an occurrence at the linker and declines (never fabricates).
|
|
20
|
+
*/
|
|
21
|
+
export declare function methodTargetFile(node: ts.Node, checker: ts.TypeChecker, projectDirAbs: string): string | null;
|
|
22
|
+
//# sourceMappingURL=method-target.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"method-target.d.ts","sourceRoot":"","sources":["../../src/edge-helpers/method-target.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAIH,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAkBf"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// @fitness-ignore-file batch-operation-limits -- iterates a bounded collection (one symbol's declarations for a single method-call resolution), mirroring the property-access resolver.
|
|
2
|
+
/**
|
|
3
|
+
* Type-attested cross-package METHOD target resolution (ADR-0033 follow-up).
|
|
4
|
+
*
|
|
5
|
+
* For a method call `recv.m()` the boundary extractor needs the TYPE-resolved
|
|
6
|
+
* target file (not a syntactic name) to emit a cross-package boundary call. This
|
|
7
|
+
* mirrors the symbol resolution `resolvePropertyAccessCall` does, but returns the
|
|
8
|
+
* `m` decl's SOURCE file (the package's `dist/*.d.ts` mapped to source) rather
|
|
9
|
+
* than a catalog hash — so the cross-shard linker can pin it post-merge against
|
|
10
|
+
* the merged catalog, identically in both engines.
|
|
11
|
+
*/
|
|
12
|
+
import { relative, sep } from 'node:path';
|
|
13
|
+
import ts from 'typescript';
|
|
14
|
+
import { unaliasSymbol } from './unalias-symbol.js';
|
|
15
|
+
/**
|
|
16
|
+
* The project-relative SOURCE file a method call's callee resolves to, when that
|
|
17
|
+
* callee's declaration is a workspace package's built `dist/*.d.ts` — `null`
|
|
18
|
+
* otherwise. `null` when: not a property-access call; the checker has no symbol;
|
|
19
|
+
* the decl is SOURCE (the in-shard/inline pass handles it) or a non-workspace
|
|
20
|
+
* `.d.ts` (`node_modules`, `lib.dom`, a non-`dist` ambient). The dist→src mapping
|
|
21
|
+
* follows the tsc `outDir:dist` / `rootDir:src` convention; a wrong mapping just
|
|
22
|
+
* fails to match an occurrence at the linker and declines (never fabricates).
|
|
23
|
+
*/
|
|
24
|
+
export function methodTargetFile(node, checker, projectDirAbs) {
|
|
25
|
+
if (!ts.isCallExpression(node) || !ts.isPropertyAccessExpression(node.expression))
|
|
26
|
+
return null;
|
|
27
|
+
const symbol = checker.getSymbolAtLocation(node.expression);
|
|
28
|
+
if (!symbol)
|
|
29
|
+
return null;
|
|
30
|
+
const real = unaliasSymbol(symbol, checker);
|
|
31
|
+
for (const d of real.getDeclarations() ?? []) {
|
|
32
|
+
const sf = d.getSourceFile();
|
|
33
|
+
// A SOURCE decl means the method lives in a file the in-shard/inline pass can
|
|
34
|
+
// hash directly — not a cross-package boundary. Stop (don't keep scanning
|
|
35
|
+
// other decls): the first declaration is the canonical one.
|
|
36
|
+
if (!sf.isDeclarationFile)
|
|
37
|
+
return null;
|
|
38
|
+
const rel = relative(projectDirAbs, sf.fileName).split(sep).join('/');
|
|
39
|
+
if (rel.includes('/node_modules/') || !rel.endsWith('.d.ts') || !rel.includes('/dist/')) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return rel.replace('/dist/', '/src/').replace(/\.d\.ts$/, '.ts');
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=method-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"method-target.js","sourceRoot":"","sources":["../../src/edge-helpers/method-target.ts"],"names":[],"mappings":"AAAA,wLAAwL;AACxL;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAa,EACb,OAAuB,EACvB,aAAqB;IAErB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/F,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC7B,8EAA8E;QAC9E,0EAA0E;QAC1E,4DAA4D;QAC5D,IAAI,CAAC,EAAE,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-site resolution trace (debug-only). When `GRAPH_SITE_LOG` points at a
|
|
3
|
+
* file, every `resolveDeclToHash` decision appends one TSV row:
|
|
4
|
+
* engine \t ownerFile \t callee \t decl=<file> \t dts=<bool> \t spec=<...> \t out=<hash|DECLINE-*>
|
|
5
|
+
*
|
|
6
|
+
* This is the harness that root-caused the exact↔sharded divergence classes
|
|
7
|
+
* (the decl-file discriminator + the matching-strictness asymmetry). It is OFF
|
|
8
|
+
* with zero production cost when the env var is unset; kept so the next
|
|
9
|
+
* divergence investigation starts from measurement, not a rebuilt harness.
|
|
10
|
+
*/
|
|
11
|
+
import type { ResolverContext } from '../edge-resolvers/types.js';
|
|
12
|
+
import type ts from 'typescript';
|
|
13
|
+
/** The inputs of one `resolveDeclToHash` decision, as traced by {@link traceResolveDecl}. */
|
|
14
|
+
export interface ResolveDeclDecision {
|
|
15
|
+
readonly ctx: ResolverContext;
|
|
16
|
+
readonly candidateNames: readonly string[];
|
|
17
|
+
readonly bindingNames: readonly string[];
|
|
18
|
+
readonly declSourceFile: ts.SourceFile;
|
|
19
|
+
readonly dts: boolean;
|
|
20
|
+
readonly out: string | null;
|
|
21
|
+
}
|
|
22
|
+
/** Append one resolveDeclToHash decision row when GRAPH_SITE_LOG is set; else a no-op. */
|
|
23
|
+
export declare function traceResolveDecl(decision: ResolveDeclDecision): void;
|
|
24
|
+
//# sourceMappingURL=resolution-trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolution-trace.d.ts","sourceRoot":"","sources":["../../src/edge-helpers/resolution-trace.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,6FAA6F;AAC7F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,UAAU,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAoBpE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// @fitness-ignore-file env-via-registry -- debug-only diagnostic harness, opt-in via the GRAPH_SITE_LOG / GRAPH_ENGINE env vars; NOT production configuration. Reading process.env directly is intentional and isolated to this one module so the production resolvers stay registry-clean. See docs/internal/graph-resolution-trace.md.
|
|
2
|
+
/**
|
|
3
|
+
* Per-site resolution trace (debug-only). When `GRAPH_SITE_LOG` points at a
|
|
4
|
+
* file, every `resolveDeclToHash` decision appends one TSV row:
|
|
5
|
+
* engine \t ownerFile \t callee \t decl=<file> \t dts=<bool> \t spec=<...> \t out=<hash|DECLINE-*>
|
|
6
|
+
*
|
|
7
|
+
* This is the harness that root-caused the exact↔sharded divergence classes
|
|
8
|
+
* (the decl-file discriminator + the matching-strictness asymmetry). It is OFF
|
|
9
|
+
* with zero production cost when the env var is unset; kept so the next
|
|
10
|
+
* divergence investigation starts from measurement, not a rebuilt harness.
|
|
11
|
+
*/
|
|
12
|
+
/* v8 ignore start -- debug-only; exercised manually via GRAPH_SITE_LOG, never in the test suite */
|
|
13
|
+
import { appendFileSync } from 'node:fs';
|
|
14
|
+
import { relative, sep } from 'node:path';
|
|
15
|
+
/** Append one resolveDeclToHash decision row when GRAPH_SITE_LOG is set; else a no-op. */
|
|
16
|
+
export function traceResolveDecl(decision) {
|
|
17
|
+
const logPath = process.env.GRAPH_SITE_LOG;
|
|
18
|
+
if (logPath === undefined)
|
|
19
|
+
return;
|
|
20
|
+
const { ctx, candidateNames, bindingNames, declSourceFile, dts, out } = decision;
|
|
21
|
+
const owner = relative(ctx.projectDirAbs, ctx.sourceFile.fileName).split(sep).join('/');
|
|
22
|
+
const declRel = relative(ctx.projectDirAbs, declSourceFile.fileName).split(sep).join('/');
|
|
23
|
+
const specifiers = bindingNames.map((b) => ctx.importSpecifiers.get(b) ?? '-').join(',');
|
|
24
|
+
const declineStr = dts ? 'DECLINE-dts-hop' : 'DECLINE-source';
|
|
25
|
+
const outStr = out === null ? declineStr : out.slice(0, 10);
|
|
26
|
+
const line = [
|
|
27
|
+
process.env.GRAPH_ENGINE ?? '?',
|
|
28
|
+
owner,
|
|
29
|
+
candidateNames.join('|'),
|
|
30
|
+
`decl=${declRel}`,
|
|
31
|
+
`dts=${String(dts)}`,
|
|
32
|
+
`spec=${specifiers}`,
|
|
33
|
+
`out=${outStr}`,
|
|
34
|
+
].join('\t') + '\n';
|
|
35
|
+
appendFileSync(logPath, line);
|
|
36
|
+
}
|
|
37
|
+
/* v8 ignore stop */
|
|
38
|
+
//# sourceMappingURL=resolution-trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolution-trace.js","sourceRoot":"","sources":["../../src/edge-helpers/resolution-trace.ts"],"names":[],"mappings":"AAAA,yUAAyU;AACzU;;;;;;;;;GASG;AAEH,mGAAmG;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAe1C,0FAA0F;AAC1F,MAAM,UAAU,gBAAgB,CAAC,QAA6B;IAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC3C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IAClC,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;IACjF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1F,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC9D,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,IAAI,GACR;QACE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG;QAC/B,KAAK;QACL,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;QACxB,QAAQ,OAAO,EAAE;QACjB,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE;QACpB,QAAQ,UAAU,EAAE;QACpB,OAAO,MAAM,EAAE;KAChB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AACD,oBAAoB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolveDeclToHash — map a type-checker-resolved declaration to the catalog
|
|
3
|
+
* bodyHash of its SOURCE occurrence.
|
|
4
|
+
*
|
|
5
|
+
* The single seam every exact-engine resolver (direct-call, property-access,
|
|
6
|
+
* jsx-element, new-expression, polymorphic) routes a resolved declaration
|
|
7
|
+
* through. It unifies the two ways a declaration's source body is reached:
|
|
8
|
+
*
|
|
9
|
+
* 1. IN-PROJECT SOURCE — the declaration lives in a `.ts(x)` file the program
|
|
10
|
+
* compiled from source. Hash the declaration body and match it in the
|
|
11
|
+
* catalog (the original {@link findCatalogEntry} behavior).
|
|
12
|
+
*
|
|
13
|
+
* 2. WORKSPACE-PACKAGE BOUNDARY — Node16 resolves a `@scope/pkg` import to the
|
|
14
|
+
* package's BUILT `dist/*.d.ts`, so the type checker hands back a BODILESS
|
|
15
|
+
* declaration. Hashing it never matches the SOURCE body the catalog holds
|
|
16
|
+
* → the real cross-package edge was dropped. Instead, re-resolve through
|
|
17
|
+
* the SAME export-index model the sharded linker uses: (the call site's
|
|
18
|
+
* import specifier for this name) + (callee name) → the UNIQUE exported
|
|
19
|
+
* source occurrence. Binding-required, so a bare name with no import never
|
|
20
|
+
* resolves (no phantom). Decline-beats-guess on ambiguity.
|
|
21
|
+
*
|
|
22
|
+
* A declaration in a `.d.ts` that is NOT a workspace package the importer bound
|
|
23
|
+
* to (e.g. a `@types/*` ambient global like Vitest's `describe`, or `lib.dom`)
|
|
24
|
+
* resolves to nothing — exactly right: those are not project functions.
|
|
25
|
+
*/
|
|
26
|
+
import type { ResolverContext } from '../edge-resolvers/types.js';
|
|
27
|
+
import type ts from 'typescript';
|
|
28
|
+
/**
|
|
29
|
+
* Resolve `declNode` (a function-shaped node returned by
|
|
30
|
+
* `functionLikeFromDeclaration`) to a catalog bodyHash, or `null` to decline.
|
|
31
|
+
*
|
|
32
|
+
* `candidateNames` is the simple name(s) the call site addressed — the EXPORTED
|
|
33
|
+
* callee name (e.g. `getSharedSourceFile`, `walkNodes`). Used both for the
|
|
34
|
+
* in-project hash lookup and the cross-package export lookup.
|
|
35
|
+
*
|
|
36
|
+
* `bindingNames` is the local binding name(s) that were IMPORTED in the call
|
|
37
|
+
* site's file (the namespace receiver for `ns.fn()`, or the callee name itself
|
|
38
|
+
* for a direct `fn()` / `<Fn/>` / `new Fn()`). The cross-package path requires
|
|
39
|
+
* one of these to carry a workspace import specifier — a binding-required check
|
|
40
|
+
* that rules out phantom same-name matches. When `bindingNames` is omitted it
|
|
41
|
+
* defaults to `candidateNames` (direct calls bind by the callee name).
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveDeclToHash(declNode: ts.Node, declSourceFile: ts.SourceFile, candidateNames: readonly string[], ctx: ResolverContext, bindingNames?: readonly string[]): string | null;
|
|
44
|
+
//# sourceMappingURL=resolve-decl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-decl.d.ts","sourceRoot":"","sources":["../../src/edge-helpers/resolve-decl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AASH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,EAAE,CAAC,IAAI,EACjB,cAAc,EAAE,EAAE,CAAC,UAAU,EAC7B,cAAc,EAAE,SAAS,MAAM,EAAE,EACjC,GAAG,EAAE,eAAe,EACpB,YAAY,GAAE,SAAS,MAAM,EAAmB,GAC/C,MAAM,GAAG,IAAI,CA0Bf"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolveDeclToHash — map a type-checker-resolved declaration to the catalog
|
|
3
|
+
* bodyHash of its SOURCE occurrence.
|
|
4
|
+
*
|
|
5
|
+
* The single seam every exact-engine resolver (direct-call, property-access,
|
|
6
|
+
* jsx-element, new-expression, polymorphic) routes a resolved declaration
|
|
7
|
+
* through. It unifies the two ways a declaration's source body is reached:
|
|
8
|
+
*
|
|
9
|
+
* 1. IN-PROJECT SOURCE — the declaration lives in a `.ts(x)` file the program
|
|
10
|
+
* compiled from source. Hash the declaration body and match it in the
|
|
11
|
+
* catalog (the original {@link findCatalogEntry} behavior).
|
|
12
|
+
*
|
|
13
|
+
* 2. WORKSPACE-PACKAGE BOUNDARY — Node16 resolves a `@scope/pkg` import to the
|
|
14
|
+
* package's BUILT `dist/*.d.ts`, so the type checker hands back a BODILESS
|
|
15
|
+
* declaration. Hashing it never matches the SOURCE body the catalog holds
|
|
16
|
+
* → the real cross-package edge was dropped. Instead, re-resolve through
|
|
17
|
+
* the SAME export-index model the sharded linker uses: (the call site's
|
|
18
|
+
* import specifier for this name) + (callee name) → the UNIQUE exported
|
|
19
|
+
* source occurrence. Binding-required, so a bare name with no import never
|
|
20
|
+
* resolves (no phantom). Decline-beats-guess on ambiguity.
|
|
21
|
+
*
|
|
22
|
+
* A declaration in a `.d.ts` that is NOT a workspace package the importer bound
|
|
23
|
+
* to (e.g. a `@types/*` ambient global like Vitest's `describe`, or `lib.dom`)
|
|
24
|
+
* resolves to nothing — exactly right: those are not project functions.
|
|
25
|
+
*/
|
|
26
|
+
import { relative, sep } from 'node:path';
|
|
27
|
+
import { resolveCrossPackageCall } from '@opensip-cli/graph';
|
|
28
|
+
import { findCatalogEntry } from './find-catalog-entry.js';
|
|
29
|
+
import { traceResolveDecl } from './resolution-trace.js';
|
|
30
|
+
/**
|
|
31
|
+
* Resolve `declNode` (a function-shaped node returned by
|
|
32
|
+
* `functionLikeFromDeclaration`) to a catalog bodyHash, or `null` to decline.
|
|
33
|
+
*
|
|
34
|
+
* `candidateNames` is the simple name(s) the call site addressed — the EXPORTED
|
|
35
|
+
* callee name (e.g. `getSharedSourceFile`, `walkNodes`). Used both for the
|
|
36
|
+
* in-project hash lookup and the cross-package export lookup.
|
|
37
|
+
*
|
|
38
|
+
* `bindingNames` is the local binding name(s) that were IMPORTED in the call
|
|
39
|
+
* site's file (the namespace receiver for `ns.fn()`, or the callee name itself
|
|
40
|
+
* for a direct `fn()` / `<Fn/>` / `new Fn()`). The cross-package path requires
|
|
41
|
+
* one of these to carry a workspace import specifier — a binding-required check
|
|
42
|
+
* that rules out phantom same-name matches. When `bindingNames` is omitted it
|
|
43
|
+
* defaults to `candidateNames` (direct calls bind by the callee name).
|
|
44
|
+
*/
|
|
45
|
+
export function resolveDeclToHash(declNode, declSourceFile, candidateNames, ctx, bindingNames = candidateNames) {
|
|
46
|
+
const dts = declSourceFile.isDeclarationFile;
|
|
47
|
+
const out = dts
|
|
48
|
+
? // Boundary case: the alias led into a built `.d.ts`. Don't hash the bodiless
|
|
49
|
+
// signature. First try the export index (binding-required — for imported
|
|
50
|
+
// FUNCTIONS). If that declines (e.g. a METHOD call `recv.m()` carries no
|
|
51
|
+
// import binding for `m`), fall back to mapping the checker-attested
|
|
52
|
+
// `dist/*.d.ts` decl to its SOURCE file and pinning by (source file +
|
|
53
|
+
// name). The checker already disambiguated WHICH declaration (this class's
|
|
54
|
+
// method in this file), so the pin is type-anchored, not a name guess — and
|
|
55
|
+
// catalog-SCOPE-independent, so the exact (whole-repo) and sharded (per-
|
|
56
|
+
// shard) passes resolve it identically instead of one declining while the
|
|
57
|
+
// other resolves by an unsound unique-name-in-shard catalog fallback.
|
|
58
|
+
(resolveAcrossPackageBoundary(candidateNames, bindingNames, ctx) ??
|
|
59
|
+
pinByDtsDeclSource(declSourceFile, candidateNames, ctx))
|
|
60
|
+
: // In-project source: hash the body and match it in the catalog; if the
|
|
61
|
+
// body-hash match misses (e.g. arrow-property methods whose cataloged
|
|
62
|
+
// occurrence the hasher can't reproduce from this decl node), fall back to
|
|
63
|
+
// a file+name pin — the SAME unique-or-decline semantics sharded's
|
|
64
|
+
// pinBySpecifier uses, so the two engines converge (Phase 3, Option A).
|
|
65
|
+
(findCatalogEntry(declNode, declSourceFile, ctx.catalog, candidateNames) ??
|
|
66
|
+
pinByFileAndName(declSourceFile, candidateNames, ctx));
|
|
67
|
+
// Per-site decl-file discriminator trace — no-op unless GRAPH_SITE_LOG is set
|
|
68
|
+
// (debug-only; isolated in resolution-trace.ts so this resolver stays env-clean).
|
|
69
|
+
traceResolveDecl({ ctx, candidateNames, bindingNames, declSourceFile, dts, out });
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* File+name pin: the catalog occurrence in `declSourceFile` (the file the type
|
|
74
|
+
* checker attested the declaration lives in) whose simpleName matches one of
|
|
75
|
+
* `candidateNames`. UNIQUE match → its bodyHash; zero or >1 DISTINCT → null
|
|
76
|
+
* (decline). The lenient match sharded's `pinBySpecifier` uses, applied to the
|
|
77
|
+
* checker-attested file: it never guesses the file (only the matching step) and
|
|
78
|
+
* declines on same-name ambiguity — decline-beats-guess, identical semantics to
|
|
79
|
+
* the sharded engine.
|
|
80
|
+
*/
|
|
81
|
+
function pinByFileAndName(declSourceFile, candidateNames, ctx) {
|
|
82
|
+
const relPath = relative(ctx.projectDirAbs, declSourceFile.fileName).split(sep).join('/');
|
|
83
|
+
return pinBySourceRel(relPath, candidateNames, ctx);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The catalog occurrence in `relPath` (a project-relative SOURCE path) whose
|
|
87
|
+
* simpleName matches one of `candidateNames`. UNIQUE match → its bodyHash; zero
|
|
88
|
+
* or >1 DISTINCT → null (decline). The shared unique-or-decline core of the
|
|
89
|
+
* file+name pins.
|
|
90
|
+
*/
|
|
91
|
+
function pinBySourceRel(relPath, candidateNames, ctx) {
|
|
92
|
+
let found = null;
|
|
93
|
+
for (const name of candidateNames) {
|
|
94
|
+
const occs = ctx.catalog.functions[name];
|
|
95
|
+
if (!occs)
|
|
96
|
+
continue;
|
|
97
|
+
for (const o of occs) {
|
|
98
|
+
if (o.filePath !== relPath)
|
|
99
|
+
continue;
|
|
100
|
+
if (found !== null && found !== o.bodyHash)
|
|
101
|
+
return null; // >1 distinct → ambiguous → decline
|
|
102
|
+
found = o.bodyHash;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return found;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* `.d.ts`→source pin: map the checker-attested `dist/*.d.ts` declaration file to
|
|
109
|
+
* its SOURCE counterpart (tsc `outDir:dist` / `rootDir:src` convention) and pin
|
|
110
|
+
* by (source file + name). Returns null when the path is not a `dist/*.d.ts`, or
|
|
111
|
+
* when the mapped source has no unique matching occurrence (decline). Guarded by
|
|
112
|
+
* the catalog match: a wrong mapping simply finds nothing and declines, so the
|
|
113
|
+
* heuristic never fabricates an edge.
|
|
114
|
+
*
|
|
115
|
+
* RESTRICTED TO INTRA-PACKAGE targets (owner's package === target's package). A
|
|
116
|
+
* method call whose receiver type flows through the OWNER package's OWN published
|
|
117
|
+
* `.d.ts` (e.g. `scope.graph?.rules.getAll()` where `scope`'s type references the
|
|
118
|
+
* graph package) resolves to a SOURCE occurrence in the same package — which is
|
|
119
|
+
* in-shard for the sharded engine too, so BOTH engines resolve it identically. A
|
|
120
|
+
* CROSS-package method target lives in another SHARD, which the sharded in-shard
|
|
121
|
+
* pass cannot reach (method calls carry no import binding, so they don't ride the
|
|
122
|
+
* cross-shard boundary linker); resolving those in exact alone would diverge.
|
|
123
|
+
* Cross-package method resolution is the separate, larger completeness item
|
|
124
|
+
* (guarded by the resolution-completeness floor), deliberately left declined in
|
|
125
|
+
* BOTH engines here.
|
|
126
|
+
*/
|
|
127
|
+
function pinByDtsDeclSource(declSourceFile, candidateNames, ctx) {
|
|
128
|
+
const rel = relative(ctx.projectDirAbs, declSourceFile.fileName).split(sep).join('/');
|
|
129
|
+
if (!rel.endsWith('.d.ts') || !rel.includes('/dist/'))
|
|
130
|
+
return null;
|
|
131
|
+
const srcRel = rel.replace('/dist/', '/src/').replace(/\.d\.ts$/, '.ts');
|
|
132
|
+
const ownerRel = relative(ctx.projectDirAbs, ctx.sourceFile.fileName).split(sep).join('/');
|
|
133
|
+
if (packageOf(srcRel) !== packageOf(ownerRel))
|
|
134
|
+
return null; // cross-package → decline (symmetry)
|
|
135
|
+
return pinBySourceRel(srcRel, candidateNames, ctx);
|
|
136
|
+
}
|
|
137
|
+
/** The package-root prefix of a project-relative source path — everything before
|
|
138
|
+
* `/src/` (e.g. `packages/graph/engine/src/rules/registry.ts` → `packages/graph/engine`).
|
|
139
|
+
* Used to gate the `.d.ts`→source pin to intra-package targets. */
|
|
140
|
+
function packageOf(rel) {
|
|
141
|
+
const i = rel.indexOf('/src/');
|
|
142
|
+
return i === -1 ? rel : rel.slice(0, i);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Cross-package boundary resolution: find the workspace import specifier one of
|
|
146
|
+
* `bindingNames` was bound to IN THE CALL SITE'S FILE, then link (specifier +
|
|
147
|
+
* exported callee name) to the unique exported source occurrence via the shared
|
|
148
|
+
* resolver. Returns the first combination that resolves, or `null` (decline).
|
|
149
|
+
* An import binding is REQUIRED — a name with no import in this file is not a
|
|
150
|
+
* cross-package call (this is what eliminates the name-collision phantoms).
|
|
151
|
+
*/
|
|
152
|
+
function resolveAcrossPackageBoundary(candidateNames, bindingNames, ctx) {
|
|
153
|
+
for (const bindingName of bindingNames) {
|
|
154
|
+
const importSpecifier = ctx.importSpecifiers.get(bindingName);
|
|
155
|
+
if (importSpecifier === undefined)
|
|
156
|
+
continue; // not imported here → no binding
|
|
157
|
+
for (const calleeName of candidateNames) {
|
|
158
|
+
const linked = resolveCrossPackageCall({
|
|
159
|
+
importSpecifier,
|
|
160
|
+
calleeName,
|
|
161
|
+
exportIndex: ctx.crossPackage.exportIndex,
|
|
162
|
+
manifestIndex: ctx.crossPackage.manifestIndex,
|
|
163
|
+
});
|
|
164
|
+
if (linked !== undefined)
|
|
165
|
+
return linked.bodyHash;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=resolve-decl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-decl.js","sourceRoot":"","sources":["../../src/edge-helpers/resolve-decl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walk the alias chain to the original ts.Symbol.
|
|
3
|
+
*
|
|
4
|
+
* `import { foo } from './x'` produces an alias symbol whose
|
|
5
|
+
* declarations are the import specifier itself; getAliasedSymbol
|
|
6
|
+
* follows the chain to the actual declaration.
|
|
7
|
+
*/
|
|
8
|
+
import ts from 'typescript';
|
|
9
|
+
export declare function unaliasSymbol(symbol: ts.Symbol, checker: ts.TypeChecker): ts.Symbol;
|
|
10
|
+
//# sourceMappingURL=unalias-symbol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unalias-symbol.d.ts","sourceRoot":"","sources":["../../src/edge-helpers/unalias-symbol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,wBAAgB,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,MAAM,CAgBnF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walk the alias chain to the original ts.Symbol.
|
|
3
|
+
*
|
|
4
|
+
* `import { foo } from './x'` produces an alias symbol whose
|
|
5
|
+
* declarations are the import specifier itself; getAliasedSymbol
|
|
6
|
+
* follows the chain to the actual declaration.
|
|
7
|
+
*/
|
|
8
|
+
import ts from 'typescript';
|
|
9
|
+
export function unaliasSymbol(symbol, checker) {
|
|
10
|
+
let current = symbol;
|
|
11
|
+
// Cap iterations defensively; realistic chains are 1–2 hops.
|
|
12
|
+
/* v8 ignore start */
|
|
13
|
+
for (let i = 0; i < 8; i++) {
|
|
14
|
+
if ((current.flags & ts.SymbolFlags.Alias) === 0)
|
|
15
|
+
return current;
|
|
16
|
+
try {
|
|
17
|
+
const next = checker.getAliasedSymbol(current);
|
|
18
|
+
if (next === current)
|
|
19
|
+
return current;
|
|
20
|
+
current = next;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return current;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return current;
|
|
27
|
+
/* v8 ignore stop */
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=unalias-symbol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unalias-symbol.js","sourceRoot":"","sources":["../../src/edge-helpers/unalias-symbol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,OAAuB;IACtE,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,6DAA6D;IAC7D,qBAAqB;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,OAAO,CAAC;YACrC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;IACf,oBAAoB;AACtB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-shard boundary-call extraction (boundary.ts).
|
|
3
|
+
*
|
|
4
|
+
* A boundary call is a call site whose callee name is IMPORTED but the in-shard
|
|
5
|
+
* resolver did NOT resolve THIS site to a target — by construction the target
|
|
6
|
+
* lives in another shard. Detection is keyed on the per-site RESOLUTION OUTCOME
|
|
7
|
+
* (`resolvedEdgesByOwner`), NOT on whether the callee name exists among the
|
|
8
|
+
* shard's occurrences — so a different local function sharing the name does not
|
|
9
|
+
* suppress an imported call (the name-collision fix), and a site already
|
|
10
|
+
* resolved in-shard is skipped (no double edge). These tests drive
|
|
11
|
+
* `extractBoundaryCalls` over real `CallSiteRecord`s and assert the emitted
|
|
12
|
+
* `CrossBoundaryCall` descriptors (and the cases it skips).
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=boundary.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundary.test.d.ts","sourceRoot":"","sources":["../../../src/edge-resolvers/__tests__/boundary.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|