@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,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic name synthesis for unnamed function-shaped nodes.
|
|
3
|
+
*
|
|
4
|
+
* Per spec §2.2: angle-bracketed names cannot collide with valid TS
|
|
5
|
+
* identifiers, so the catalog can mix "real" simpleNames with
|
|
6
|
+
* synthesized ones in the same map.
|
|
7
|
+
*/
|
|
8
|
+
export interface NameLocation {
|
|
9
|
+
readonly filePath: string;
|
|
10
|
+
readonly line: number;
|
|
11
|
+
readonly column: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function synthesizeArrowName(loc: NameLocation): string;
|
|
14
|
+
export declare function synthesizeFunctionExpressionName(loc: NameLocation): string;
|
|
15
|
+
export declare function synthesizeModuleInitName(filePath: string): string;
|
|
16
|
+
//# sourceMappingURL=synthesize-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesize-name.d.ts","sourceRoot":"","sources":["../../src/inventory-helpers/synthesize-name.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAE7D;AAED,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAE1E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic name synthesis for unnamed function-shaped nodes.
|
|
3
|
+
*
|
|
4
|
+
* Per spec §2.2: angle-bracketed names cannot collide with valid TS
|
|
5
|
+
* identifiers, so the catalog can mix "real" simpleNames with
|
|
6
|
+
* synthesized ones in the same map.
|
|
7
|
+
*/
|
|
8
|
+
export function synthesizeArrowName(loc) {
|
|
9
|
+
return `<arrow:${loc.filePath}:${String(loc.line)}:${String(loc.column)}>`;
|
|
10
|
+
}
|
|
11
|
+
export function synthesizeFunctionExpressionName(loc) {
|
|
12
|
+
return `<fn-expr:${loc.filePath}:${String(loc.line)}:${String(loc.column)}>`;
|
|
13
|
+
}
|
|
14
|
+
export function synthesizeModuleInitName(filePath) {
|
|
15
|
+
return `<module-init:${filePath}>`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=synthesize-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesize-name.js","sourceRoot":"","sources":["../../src/inventory-helpers/synthesize-name.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,UAAU,mBAAmB,CAAC,GAAiB;IACnD,OAAO,UAAU,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,GAAiB;IAChE,OAAO,YAAY,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,OAAO,gBAAgB,QAAQ,GAAG,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for arrow functions: `() => ...` (named via parent variable
|
|
3
|
+
* declaration when possible; otherwise synthesized).
|
|
4
|
+
*/
|
|
5
|
+
import ts from 'typescript';
|
|
6
|
+
import type { InventoryVisitor } from './types.js';
|
|
7
|
+
export declare const visitArrowFunction: InventoryVisitor<ts.ArrowFunction>;
|
|
8
|
+
//# sourceMappingURL=arrow-function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow-function.d.ts","sourceRoot":"","sources":["../../src/inventory-visitors/arrow-function.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAO5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,EAAE,CAAC,aAAa,CAiCjE,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for arrow functions: `() => ...` (named via parent variable
|
|
3
|
+
* declaration when possible; otherwise synthesized).
|
|
4
|
+
*/
|
|
5
|
+
import ts from 'typescript';
|
|
6
|
+
import { classifyVisibility } from '../inventory-helpers/classify-visibility.js';
|
|
7
|
+
import { extractParams } from '../inventory-helpers/extract-params.js';
|
|
8
|
+
import { digestFunctionBody } from '../inventory-helpers/hash-body.js';
|
|
9
|
+
import { synthesizeArrowName } from '../inventory-helpers/synthesize-name.js';
|
|
10
|
+
export const visitArrowFunction = (node, ctx) => {
|
|
11
|
+
const start = node.getStart(ctx.sourceFile);
|
|
12
|
+
const startLC = ctx.sourceFile.getLineAndCharacterOfPosition(start);
|
|
13
|
+
const end = ctx.sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
14
|
+
const name = inferNameFromParent(node) ??
|
|
15
|
+
synthesizeArrowName({
|
|
16
|
+
filePath: ctx.filePathProjectRel,
|
|
17
|
+
line: startLC.line + 1,
|
|
18
|
+
column: startLC.character,
|
|
19
|
+
});
|
|
20
|
+
const digest = digestFunctionBody(node, ctx.sourceFile);
|
|
21
|
+
return {
|
|
22
|
+
bodyHash: digest.hash,
|
|
23
|
+
bodySize: digest.size,
|
|
24
|
+
simpleName: name,
|
|
25
|
+
qualifiedName: `${ctx.filePathProjectRel.replace(/\.tsx?$/, '')}.${name}`,
|
|
26
|
+
filePath: ctx.filePathProjectRel,
|
|
27
|
+
line: startLC.line + 1,
|
|
28
|
+
column: startLC.character,
|
|
29
|
+
endLine: end.line + 1,
|
|
30
|
+
kind: 'arrow',
|
|
31
|
+
params: extractParams(node),
|
|
32
|
+
returnType: node.type ? node.type.getText(ctx.sourceFile) : null,
|
|
33
|
+
enclosingClass: ctx.enclosingClass,
|
|
34
|
+
decorators: [],
|
|
35
|
+
visibility: classifyVisibility(node),
|
|
36
|
+
inTestFile: ctx.inTestFile,
|
|
37
|
+
definedInGenerated: ctx.definedInGenerated,
|
|
38
|
+
calls: [],
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
function inferNameFromParent(node) {
|
|
42
|
+
// const foo = () => ...
|
|
43
|
+
const p = node.parent;
|
|
44
|
+
if (ts.isVariableDeclaration(p) && ts.isIdentifier(p.name))
|
|
45
|
+
return p.name.text;
|
|
46
|
+
// class X { foo = () => ... } — both public and #private fields.
|
|
47
|
+
if (ts.isPropertyDeclaration(p) && (ts.isIdentifier(p.name) || ts.isPrivateIdentifier(p.name))) {
|
|
48
|
+
return p.name.text;
|
|
49
|
+
}
|
|
50
|
+
// { foo: () => ... }
|
|
51
|
+
if (ts.isPropertyAssignment(p) && ts.isIdentifier(p.name))
|
|
52
|
+
return p.name.text;
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=arrow-function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow-function.js","sourceRoot":"","sources":["../../src/inventory-visitors/arrow-function.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for class static initialization blocks: `class C { static {} }`.
|
|
3
|
+
*
|
|
4
|
+
* Static blocks carry executable code that runs at class-evaluation
|
|
5
|
+
* time. They are real callables in the call graph: any references they
|
|
6
|
+
* make (constructors, methods, helpers) belong to the static block, not
|
|
7
|
+
* to the surrounding class. Per the "module-init" pattern, we
|
|
8
|
+
* synthesize one occurrence per block, named '<static-init>', parented
|
|
9
|
+
* to the enclosing class.
|
|
10
|
+
*
|
|
11
|
+
* Multiple static blocks on a single class are allowed by the language
|
|
12
|
+
* and produce one occurrence per block (line/column disambiguates).
|
|
13
|
+
*/
|
|
14
|
+
import type { InventoryVisitor } from './types.js';
|
|
15
|
+
import type ts from 'typescript';
|
|
16
|
+
export declare const visitClassStaticBlock: InventoryVisitor<ts.ClassStaticBlockDeclaration>;
|
|
17
|
+
//# sourceMappingURL=class-static-init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class-static-init.d.ts","sourceRoot":"","sources":["../../src/inventory-visitors/class-static-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,CAAC,EAAE,CAAC,2BAA2B,CAgClF,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for class static initialization blocks: `class C { static {} }`.
|
|
3
|
+
*
|
|
4
|
+
* Static blocks carry executable code that runs at class-evaluation
|
|
5
|
+
* time. They are real callables in the call graph: any references they
|
|
6
|
+
* make (constructors, methods, helpers) belong to the static block, not
|
|
7
|
+
* to the surrounding class. Per the "module-init" pattern, we
|
|
8
|
+
* synthesize one occurrence per block, named '<static-init>', parented
|
|
9
|
+
* to the enclosing class.
|
|
10
|
+
*
|
|
11
|
+
* Multiple static blocks on a single class are allowed by the language
|
|
12
|
+
* and produce one occurrence per block (line/column disambiguates).
|
|
13
|
+
*/
|
|
14
|
+
import { digestFunctionBody } from '../inventory-helpers/hash-body.js';
|
|
15
|
+
export const visitClassStaticBlock = (node, ctx) => {
|
|
16
|
+
const start = node.getStart(ctx.sourceFile);
|
|
17
|
+
const startLC = ctx.sourceFile.getLineAndCharacterOfPosition(start);
|
|
18
|
+
const end = ctx.sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
19
|
+
const enclosingClass = ctx.enclosingClass;
|
|
20
|
+
const qualified = enclosingClass
|
|
21
|
+
? `${ctx.filePathProjectRel.replace(/\.tsx?$/, '')}.${enclosingClass}.<static-init>`
|
|
22
|
+
: /* v8 ignore next */
|
|
23
|
+
`${ctx.filePathProjectRel.replace(/\.tsx?$/, '')}.<static-init>`;
|
|
24
|
+
const digest = digestFunctionBody(node, ctx.sourceFile);
|
|
25
|
+
return {
|
|
26
|
+
bodyHash: digest.hash,
|
|
27
|
+
bodySize: digest.size,
|
|
28
|
+
simpleName: '<static-init>',
|
|
29
|
+
qualifiedName: qualified,
|
|
30
|
+
filePath: ctx.filePathProjectRel,
|
|
31
|
+
line: startLC.line + 1,
|
|
32
|
+
column: startLC.character,
|
|
33
|
+
endLine: end.line + 1,
|
|
34
|
+
kind: 'function-declaration',
|
|
35
|
+
params: [],
|
|
36
|
+
returnType: null,
|
|
37
|
+
enclosingClass,
|
|
38
|
+
decorators: [],
|
|
39
|
+
visibility: 'private',
|
|
40
|
+
inTestFile: ctx.inTestFile,
|
|
41
|
+
definedInGenerated: ctx.definedInGenerated,
|
|
42
|
+
calls: [],
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=class-static-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class-static-init.js","sourceRoot":"","sources":["../../src/inventory-visitors/class-static-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAKvE,MAAM,CAAC,MAAM,qBAAqB,GAAqD,CACrF,IAAI,EACJ,GAAG,EACH,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;IAC1C,MAAM,SAAS,GAAG,cAAc;QAC9B,CAAC,CAAC,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,cAAc,gBAAgB;QACpF,CAAC,CAAC,oBAAoB;YACpB,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC;IACrE,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,kBAAkB;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC;QACtB,MAAM,EAAE,OAAO,CAAC,SAAS;QACzB,OAAO,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;QACrB,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,IAAI;QAChB,cAAc;QACd,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;QAC1C,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for class constructors: `class X { constructor() {} }`.
|
|
3
|
+
*/
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
import type { InventoryVisitor } from './types.js';
|
|
6
|
+
export declare const visitConstructorDeclaration: InventoryVisitor<ts.ConstructorDeclaration>;
|
|
7
|
+
//# sourceMappingURL=constructor-declaration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constructor-declaration.d.ts","sourceRoot":"","sources":["../../src/inventory-visitors/constructor-declaration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAM5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,2BAA2B,EAAE,gBAAgB,CAAC,EAAE,CAAC,sBAAsB,CA6BnF,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for class constructors: `class X { constructor() {} }`.
|
|
3
|
+
*/
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
import { classifyVisibility } from '../inventory-helpers/classify-visibility.js';
|
|
6
|
+
import { extractParams } from '../inventory-helpers/extract-params.js';
|
|
7
|
+
import { digestFunctionBody } from '../inventory-helpers/hash-body.js';
|
|
8
|
+
export const visitConstructorDeclaration = (node, ctx) => {
|
|
9
|
+
const start = node.getStart(ctx.sourceFile);
|
|
10
|
+
const startLC = ctx.sourceFile.getLineAndCharacterOfPosition(start);
|
|
11
|
+
const end = ctx.sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
12
|
+
/* v8 ignore next */
|
|
13
|
+
const className = ctx.enclosingClass ?? findClassName(node) ?? '<anon-class>';
|
|
14
|
+
const digest = digestFunctionBody(node, ctx.sourceFile);
|
|
15
|
+
return {
|
|
16
|
+
bodyHash: digest.hash,
|
|
17
|
+
bodySize: digest.size,
|
|
18
|
+
simpleName: className,
|
|
19
|
+
qualifiedName: `${ctx.filePathProjectRel.replace(/\.tsx?$/, '')}.${className}.constructor`,
|
|
20
|
+
filePath: ctx.filePathProjectRel,
|
|
21
|
+
line: startLC.line + 1,
|
|
22
|
+
column: startLC.character,
|
|
23
|
+
endLine: end.line + 1,
|
|
24
|
+
kind: 'constructor',
|
|
25
|
+
params: extractParams(node),
|
|
26
|
+
returnType: null,
|
|
27
|
+
enclosingClass: className,
|
|
28
|
+
decorators: [],
|
|
29
|
+
visibility: classifyVisibility(node),
|
|
30
|
+
inTestFile: ctx.inTestFile,
|
|
31
|
+
definedInGenerated: ctx.definedInGenerated,
|
|
32
|
+
calls: [],
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
/* v8 ignore start */
|
|
36
|
+
function findClassName(node) {
|
|
37
|
+
let p = node.parent;
|
|
38
|
+
while (p) {
|
|
39
|
+
if (ts.isClassDeclaration(p) || ts.isClassExpression(p)) {
|
|
40
|
+
return p.name?.text ?? null;
|
|
41
|
+
}
|
|
42
|
+
p = p.parent;
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/* v8 ignore stop */
|
|
47
|
+
//# sourceMappingURL=constructor-declaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constructor-declaration.js","sourceRoot":"","sources":["../../src/inventory-visitors/constructor-declaration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAIvE,MAAM,CAAC,MAAM,2BAA2B,GAAgD,CACtF,IAAI,EACJ,GAAG,EACH,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,oBAAoB;IACpB,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC;IAC9E,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,SAAS,cAAc;QAC1F,QAAQ,EAAE,GAAG,CAAC,kBAAkB;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC;QACtB,MAAM,EAAE,OAAO,CAAC,SAAS;QACzB,OAAO,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;QACrB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;QAC3B,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC;QACpC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;QAC1C,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC,CAAC;AAEF,qBAAqB;AACrB,SAAS,aAAa,CAAC,IAA+B;IACpD,IAAI,CAAC,GAAwB,IAAI,CAAC,MAAM,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC;QACT,IAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;QAC9B,CAAC;QACD,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,oBAAoB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for `function foo() {}` declarations.
|
|
3
|
+
*/
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
import type { InventoryVisitor } from './types.js';
|
|
6
|
+
export declare const visitFunctionDeclaration: InventoryVisitor<ts.FunctionDeclaration>;
|
|
7
|
+
//# sourceMappingURL=function-declaration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-declaration.d.ts","sourceRoot":"","sources":["../../src/inventory-visitors/function-declaration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAO5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,CAAC,EAAE,CAAC,mBAAmB,CAgC7E,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for `function foo() {}` declarations.
|
|
3
|
+
*/
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
import { classifyVisibility } from '../inventory-helpers/classify-visibility.js';
|
|
6
|
+
import { extractDecorators } from '../inventory-helpers/extract-decorators.js';
|
|
7
|
+
import { extractParams } from '../inventory-helpers/extract-params.js';
|
|
8
|
+
import { digestFunctionBody } from '../inventory-helpers/hash-body.js';
|
|
9
|
+
export const visitFunctionDeclaration = (node, ctx) => {
|
|
10
|
+
// Body-less function declarations (overload signatures, ambient
|
|
11
|
+
// `declare function` forms) are not callables — they have no
|
|
12
|
+
// implementation to enter the call graph.
|
|
13
|
+
/* v8 ignore next */
|
|
14
|
+
if (!node.body)
|
|
15
|
+
return null;
|
|
16
|
+
const name = resolveFunctionName(node);
|
|
17
|
+
/* v8 ignore next */
|
|
18
|
+
if (name === null)
|
|
19
|
+
return null;
|
|
20
|
+
const start = node.getStart(ctx.sourceFile);
|
|
21
|
+
const startLC = ctx.sourceFile.getLineAndCharacterOfPosition(start);
|
|
22
|
+
const end = ctx.sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
23
|
+
const digest = digestFunctionBody(node, ctx.sourceFile);
|
|
24
|
+
return {
|
|
25
|
+
bodyHash: digest.hash,
|
|
26
|
+
bodySize: digest.size,
|
|
27
|
+
simpleName: name,
|
|
28
|
+
qualifiedName: `${ctx.filePathProjectRel.replace(/\.tsx?$/, '')}.${name}`,
|
|
29
|
+
filePath: ctx.filePathProjectRel,
|
|
30
|
+
line: startLC.line + 1,
|
|
31
|
+
column: startLC.character,
|
|
32
|
+
endLine: end.line + 1,
|
|
33
|
+
kind: 'function-declaration',
|
|
34
|
+
params: extractParams(node),
|
|
35
|
+
returnType: node.type ? node.type.getText(ctx.sourceFile) : null,
|
|
36
|
+
enclosingClass: ctx.enclosingClass,
|
|
37
|
+
decorators: extractDecorators(node),
|
|
38
|
+
visibility: classifyVisibility(node),
|
|
39
|
+
inTestFile: ctx.inTestFile,
|
|
40
|
+
definedInGenerated: ctx.definedInGenerated,
|
|
41
|
+
calls: [],
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* `export default function() {}` is the special case where a
|
|
46
|
+
* FunctionDeclaration is allowed to be anonymous. We synthesize a
|
|
47
|
+
* stable simpleName so the catalog records the callable. Anywhere else,
|
|
48
|
+
* an unnamed FunctionDeclaration is a parser-level error and we drop
|
|
49
|
+
* it safely.
|
|
50
|
+
*/
|
|
51
|
+
function resolveFunctionName(node) {
|
|
52
|
+
if (node.name)
|
|
53
|
+
return node.name.text;
|
|
54
|
+
const isDefaultExport = node.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword) === true;
|
|
55
|
+
if (isDefaultExport)
|
|
56
|
+
return '<default>';
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=function-declaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-declaration.js","sourceRoot":"","sources":["../../src/inventory-visitors/function-declaration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAIvE,MAAM,CAAC,MAAM,wBAAwB,GAA6C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAC9F,gEAAgE;IAChE,6DAA6D;IAC7D,0CAA0C;IAC1C,oBAAoB;IACpB,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,oBAAoB;IACpB,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE;QACzE,QAAQ,EAAE,GAAG,CAAC,kBAAkB;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC;QACtB,MAAM,EAAE,OAAO,CAAC,SAAS;QACzB,OAAO,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;QACrB,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;QAC3B,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;QAChE,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC;QACnC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC;QACpC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;QAC1C,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,IAA4B;IACvD,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACrC,MAAM,eAAe,GACnB,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAChF,IAAI,eAAe;QAAE,OAAO,WAAW,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for function expressions: `const x = function() {}`, IIFEs.
|
|
3
|
+
*/
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
import type { InventoryVisitor } from './types.js';
|
|
6
|
+
export declare const visitFunctionExpression: InventoryVisitor<ts.FunctionExpression>;
|
|
7
|
+
//# sourceMappingURL=function-expression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-expression.d.ts","sourceRoot":"","sources":["../../src/inventory-visitors/function-expression.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAO5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,uBAAuB,EAAE,gBAAgB,CAAC,EAAE,CAAC,kBAAkB,CAkC3E,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for function expressions: `const x = function() {}`, IIFEs.
|
|
3
|
+
*/
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
import { classifyVisibility } from '../inventory-helpers/classify-visibility.js';
|
|
6
|
+
import { extractParams } from '../inventory-helpers/extract-params.js';
|
|
7
|
+
import { digestFunctionBody } from '../inventory-helpers/hash-body.js';
|
|
8
|
+
import { synthesizeFunctionExpressionName } from '../inventory-helpers/synthesize-name.js';
|
|
9
|
+
export const visitFunctionExpression = (node, ctx) => {
|
|
10
|
+
const start = node.getStart(ctx.sourceFile);
|
|
11
|
+
const startLC = ctx.sourceFile.getLineAndCharacterOfPosition(start);
|
|
12
|
+
const end = ctx.sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
13
|
+
const name = node.name?.text ??
|
|
14
|
+
inferNameFromParent(node) ??
|
|
15
|
+
synthesizeFunctionExpressionName({
|
|
16
|
+
filePath: ctx.filePathProjectRel,
|
|
17
|
+
line: startLC.line + 1,
|
|
18
|
+
column: startLC.character,
|
|
19
|
+
});
|
|
20
|
+
const digest = digestFunctionBody(node, ctx.sourceFile);
|
|
21
|
+
return {
|
|
22
|
+
bodyHash: digest.hash,
|
|
23
|
+
bodySize: digest.size,
|
|
24
|
+
simpleName: name,
|
|
25
|
+
qualifiedName: `${ctx.filePathProjectRel.replace(/\.tsx?$/, '')}.${name}`,
|
|
26
|
+
filePath: ctx.filePathProjectRel,
|
|
27
|
+
line: startLC.line + 1,
|
|
28
|
+
column: startLC.character,
|
|
29
|
+
endLine: end.line + 1,
|
|
30
|
+
kind: 'function-expression',
|
|
31
|
+
params: extractParams(node),
|
|
32
|
+
returnType: node.type ? node.type.getText(ctx.sourceFile) : null,
|
|
33
|
+
enclosingClass: ctx.enclosingClass,
|
|
34
|
+
decorators: [],
|
|
35
|
+
visibility: classifyVisibility(node),
|
|
36
|
+
inTestFile: ctx.inTestFile,
|
|
37
|
+
definedInGenerated: ctx.definedInGenerated,
|
|
38
|
+
calls: [],
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
function inferNameFromParent(node) {
|
|
42
|
+
const p = node.parent;
|
|
43
|
+
if (ts.isVariableDeclaration(p) && ts.isIdentifier(p.name))
|
|
44
|
+
return p.name.text;
|
|
45
|
+
/* v8 ignore next */
|
|
46
|
+
if (ts.isPropertyAssignment(p) && ts.isIdentifier(p.name))
|
|
47
|
+
return p.name.text;
|
|
48
|
+
// class X { foo = function() {} } — both public and #private fields.
|
|
49
|
+
/* v8 ignore start */
|
|
50
|
+
if (ts.isPropertyDeclaration(p) && (ts.isIdentifier(p.name) || ts.isPrivateIdentifier(p.name))) {
|
|
51
|
+
return p.name.text;
|
|
52
|
+
}
|
|
53
|
+
/* v8 ignore stop */
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=function-expression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-expression.js","sourceRoot":"","sources":["../../src/inventory-visitors/function-expression.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for class getters/setters: `get x()` / `set x()`.
|
|
3
|
+
*/
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
import type { InventoryVisitor } from './types.js';
|
|
6
|
+
export declare const visitGetterSetter: InventoryVisitor<ts.AccessorDeclaration>;
|
|
7
|
+
//# sourceMappingURL=getter-setter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getter-setter.d.ts","sourceRoot":"","sources":["../../src/inventory-visitors/getter-setter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAO5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,EAAE,CAAC,mBAAmB,CA+BtE,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for class getters/setters: `get x()` / `set x()`.
|
|
3
|
+
*/
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
import { classifyVisibility } from '../inventory-helpers/classify-visibility.js';
|
|
6
|
+
import { extractDecorators } from '../inventory-helpers/extract-decorators.js';
|
|
7
|
+
import { extractParams } from '../inventory-helpers/extract-params.js';
|
|
8
|
+
import { digestFunctionBody } from '../inventory-helpers/hash-body.js';
|
|
9
|
+
export const visitGetterSetter = (node, ctx) => {
|
|
10
|
+
const name = accessorName(node);
|
|
11
|
+
if (name === null)
|
|
12
|
+
return null;
|
|
13
|
+
const start = node.getStart(ctx.sourceFile);
|
|
14
|
+
const startLC = ctx.sourceFile.getLineAndCharacterOfPosition(start);
|
|
15
|
+
const end = ctx.sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
16
|
+
const enclosingClass = ctx.enclosingClass ?? findClassName(node);
|
|
17
|
+
const kind = node.kind === ts.SyntaxKind.GetAccessor ? 'getter' : 'setter';
|
|
18
|
+
const qualified = enclosingClass
|
|
19
|
+
? `${ctx.filePathProjectRel.replace(/\.tsx?$/, '')}.${enclosingClass}.${name}`
|
|
20
|
+
: `${ctx.filePathProjectRel.replace(/\.tsx?$/, '')}.${name}`;
|
|
21
|
+
const digest = digestFunctionBody(node, ctx.sourceFile);
|
|
22
|
+
return {
|
|
23
|
+
bodyHash: digest.hash,
|
|
24
|
+
bodySize: digest.size,
|
|
25
|
+
simpleName: name,
|
|
26
|
+
qualifiedName: qualified,
|
|
27
|
+
filePath: ctx.filePathProjectRel,
|
|
28
|
+
line: startLC.line + 1,
|
|
29
|
+
column: startLC.character,
|
|
30
|
+
endLine: end.line + 1,
|
|
31
|
+
kind,
|
|
32
|
+
params: extractParams(node),
|
|
33
|
+
returnType: node.type ? node.type.getText(ctx.sourceFile) : null,
|
|
34
|
+
enclosingClass,
|
|
35
|
+
decorators: extractDecorators(node),
|
|
36
|
+
visibility: classifyVisibility(node),
|
|
37
|
+
inTestFile: ctx.inTestFile,
|
|
38
|
+
definedInGenerated: ctx.definedInGenerated,
|
|
39
|
+
calls: [],
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
function accessorName(node) {
|
|
43
|
+
const n = node.name;
|
|
44
|
+
if (ts.isIdentifier(n))
|
|
45
|
+
return n.text;
|
|
46
|
+
/* v8 ignore next 2 */
|
|
47
|
+
if (ts.isStringLiteral(n))
|
|
48
|
+
return n.text;
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
/* v8 ignore start */
|
|
52
|
+
function findClassName(node) {
|
|
53
|
+
let p = node.parent;
|
|
54
|
+
while (p) {
|
|
55
|
+
if (ts.isClassDeclaration(p) || ts.isClassExpression(p)) {
|
|
56
|
+
return p.name?.text ?? null;
|
|
57
|
+
}
|
|
58
|
+
p = p.parent;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
/* v8 ignore stop */
|
|
63
|
+
//# sourceMappingURL=getter-setter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getter-setter.js","sourceRoot":"","sources":["../../src/inventory-visitors/getter-setter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for class methods: `class X { foo() {} }`.
|
|
3
|
+
*/
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
import type { InventoryVisitor } from './types.js';
|
|
6
|
+
export declare const visitMethodDeclaration: InventoryVisitor<ts.MethodDeclaration>;
|
|
7
|
+
//# sourceMappingURL=method-declaration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"method-declaration.d.ts","sourceRoot":"","sources":["../../src/inventory-visitors/method-declaration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAO5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,sBAAsB,EAAE,gBAAgB,CAAC,EAAE,CAAC,iBAAiB,CAmCzE,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for class methods: `class X { foo() {} }`.
|
|
3
|
+
*/
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
import { classifyVisibility } from '../inventory-helpers/classify-visibility.js';
|
|
6
|
+
import { extractDecorators } from '../inventory-helpers/extract-decorators.js';
|
|
7
|
+
import { extractParams } from '../inventory-helpers/extract-params.js';
|
|
8
|
+
import { digestFunctionBody } from '../inventory-helpers/hash-body.js';
|
|
9
|
+
export const visitMethodDeclaration = (node, ctx) => {
|
|
10
|
+
// Body-less method declarations (overload signatures, abstract methods,
|
|
11
|
+
// method signatures inside ambient declarations) are not callables —
|
|
12
|
+
// they have no implementation to enter the call graph. Per the
|
|
13
|
+
// "real callable iff has body" rule.
|
|
14
|
+
if (!node.body)
|
|
15
|
+
return null;
|
|
16
|
+
const name = methodName(node);
|
|
17
|
+
if (name === null)
|
|
18
|
+
return null;
|
|
19
|
+
const start = node.getStart(ctx.sourceFile);
|
|
20
|
+
const startLC = ctx.sourceFile.getLineAndCharacterOfPosition(start);
|
|
21
|
+
const end = ctx.sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
22
|
+
const enclosingClass = ctx.enclosingClass ?? findClassName(node);
|
|
23
|
+
const qualified = enclosingClass
|
|
24
|
+
? `${ctx.filePathProjectRel.replace(/\.tsx?$/, '')}.${enclosingClass}.${name}`
|
|
25
|
+
: `${ctx.filePathProjectRel.replace(/\.tsx?$/, '')}.${name}`;
|
|
26
|
+
const digest = digestFunctionBody(node, ctx.sourceFile);
|
|
27
|
+
return {
|
|
28
|
+
bodyHash: digest.hash,
|
|
29
|
+
bodySize: digest.size,
|
|
30
|
+
simpleName: name,
|
|
31
|
+
qualifiedName: qualified,
|
|
32
|
+
filePath: ctx.filePathProjectRel,
|
|
33
|
+
line: startLC.line + 1,
|
|
34
|
+
column: startLC.character,
|
|
35
|
+
endLine: end.line + 1,
|
|
36
|
+
kind: 'method',
|
|
37
|
+
params: extractParams(node),
|
|
38
|
+
returnType: node.type ? node.type.getText(ctx.sourceFile) : null,
|
|
39
|
+
enclosingClass,
|
|
40
|
+
decorators: extractDecorators(node),
|
|
41
|
+
visibility: classifyVisibility(node),
|
|
42
|
+
inTestFile: ctx.inTestFile,
|
|
43
|
+
definedInGenerated: ctx.definedInGenerated,
|
|
44
|
+
calls: [],
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
function methodName(node) {
|
|
48
|
+
const n = node.name;
|
|
49
|
+
if (ts.isIdentifier(n))
|
|
50
|
+
return n.text;
|
|
51
|
+
/* v8 ignore start */
|
|
52
|
+
if (ts.isStringLiteral(n))
|
|
53
|
+
return n.text;
|
|
54
|
+
if (ts.isComputedPropertyName(n))
|
|
55
|
+
return n.expression.getText();
|
|
56
|
+
// PrivateIdentifier carries the leading '#' in its text already
|
|
57
|
+
// (e.g. '#priv'), which matches how TypeScript's own AST exposes it.
|
|
58
|
+
if (ts.isPrivateIdentifier(n))
|
|
59
|
+
return n.text;
|
|
60
|
+
return null;
|
|
61
|
+
/* v8 ignore stop */
|
|
62
|
+
}
|
|
63
|
+
/* v8 ignore start */
|
|
64
|
+
function findClassName(node) {
|
|
65
|
+
let p = node.parent;
|
|
66
|
+
while (p) {
|
|
67
|
+
if (ts.isClassDeclaration(p) || ts.isClassExpression(p)) {
|
|
68
|
+
return p.name?.text ?? null;
|
|
69
|
+
}
|
|
70
|
+
p = p.parent;
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
/* v8 ignore stop */
|
|
75
|
+
//# sourceMappingURL=method-declaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"method-declaration.js","sourceRoot":"","sources":["../../src/inventory-visitors/method-declaration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synthesizes one `<module-init>` occurrence per file.
|
|
3
|
+
*
|
|
4
|
+
* Per spec §2.2: "produces ONE module-init occurrence per file, owning
|
|
5
|
+
* all top-level call sites discovered in stage 2."
|
|
6
|
+
*
|
|
7
|
+
* PR-5 documents that this visitor is the deliberate outlier — it does
|
|
8
|
+
* not implement the InventoryVisitor signature because it walks all
|
|
9
|
+
* top-level statements rather than dispatching on a single node.
|
|
10
|
+
*/
|
|
11
|
+
import type { VisitorContext } from './types.js';
|
|
12
|
+
import type { FunctionOccurrence } from '@opensip-cli/graph';
|
|
13
|
+
import type ts from 'typescript';
|
|
14
|
+
export declare function synthesizeModuleInit(sourceFile: ts.SourceFile, ctx: VisitorContext): FunctionOccurrence;
|
|
15
|
+
//# sourceMappingURL=module-init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-init.d.ts","sourceRoot":"","sources":["../../src/inventory-visitors/module-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,GAAG,EAAE,cAAc,GAClB,kBAAkB,CA0BpB"}
|