@lzehrung/codegraph 2.3.30 → 2.4.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/README.md +30 -137
- package/codegraph-skill/codegraph/SKILL.md +5 -3
- package/dist/agent/artifact.d.ts +2 -0
- package/dist/agent/artifact.d.ts.map +1 -1
- package/dist/agent/artifact.js.map +1 -1
- package/dist/agent/search.d.ts.map +1 -1
- package/dist/agent/search.js +3 -0
- package/dist/agent/search.js.map +1 -1
- package/dist/agent/session.d.ts +3 -0
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/session.js +10 -2
- package/dist/agent/session.js.map +1 -1
- package/dist/bin/cli.js +42229 -28876
- package/dist/bin/query-index-worker.js +73 -11
- package/dist/cli/affected.d.ts.map +1 -1
- package/dist/cli/affected.js +4 -1
- package/dist/cli/affected.js.map +1 -1
- package/dist/cli/command-catalog.js +1 -1
- package/dist/cli/command-catalog.js.map +1 -1
- package/dist/cli/graph-queries.d.ts.map +1 -1
- package/dist/cli/graph-queries.js +27 -1
- package/dist/cli/graph-queries.js.map +1 -1
- package/dist/cli/help.d.ts +2 -2
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +4 -2
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/options.js +2 -2
- package/dist/cli/options.js.map +1 -1
- package/dist/drift/artifact.d.ts.map +1 -1
- package/dist/drift/artifact.js +15 -18
- package/dist/drift/artifact.js.map +1 -1
- package/dist/drift/compare.js +1 -1
- package/dist/drift/compare.js.map +1 -1
- package/dist/drift/snapshot.d.ts.map +1 -1
- package/dist/drift/snapshot.js +5 -6
- package/dist/drift/snapshot.js.map +1 -1
- package/dist/drift/types.d.ts +2 -0
- package/dist/drift/types.d.ts.map +1 -1
- package/dist/drift/types.js.map +1 -1
- package/dist/graph-builder.d.ts.map +1 -1
- package/dist/graph-builder.js +4 -6
- package/dist/graph-builder.js.map +1 -1
- package/dist/graph-edge-collector.d.ts +3 -0
- package/dist/graph-edge-collector.d.ts.map +1 -1
- package/dist/graph-edge-collector.js +8 -5
- package/dist/graph-edge-collector.js.map +1 -1
- package/dist/graphs/angularjs.d.ts.map +1 -1
- package/dist/graphs/angularjs.js +2 -1
- package/dist/graphs/angularjs.js.map +1 -1
- package/dist/graphs/edge-resolution.d.ts +4 -1
- package/dist/graphs/edge-resolution.d.ts.map +1 -1
- package/dist/graphs/edge-resolution.js +26 -2
- package/dist/graphs/edge-resolution.js.map +1 -1
- package/dist/graphs/specifiers.d.ts.map +1 -1
- package/dist/graphs/specifiers.js +6 -2
- package/dist/graphs/specifiers.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/ast.d.ts +20 -0
- package/dist/graphs/symbol-graph-detailed/ast.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/ast.js +154 -15
- package/dist/graphs/symbol-graph-detailed/ast.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts +51 -8
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.js +823 -132
- package/dist/graphs/symbol-graph-detailed/edge-passes.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts +2 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.js +139 -7
- package/dist/graphs/symbol-graph-detailed/import-aliases.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.d.ts +1 -0
- package/dist/graphs/symbol-graph-detailed/member-chains.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.js +3 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts +128 -22
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.js +872 -125
- package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed.js +434 -40
- package/dist/graphs/symbol-graph-detailed.js.map +1 -1
- package/dist/graphs/symbol-graph.d.ts +2 -0
- package/dist/graphs/symbol-graph.d.ts.map +1 -1
- package/dist/graphs/symbol-graph.js +34 -16
- package/dist/graphs/symbol-graph.js.map +1 -1
- package/dist/impact/call-compatibility/providers/index.d.ts +12 -0
- package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
- package/dist/impact/call-compatibility/providers/index.js +16 -22
- package/dist/impact/call-compatibility/providers/index.js.map +1 -1
- package/dist/impact/call-compatibility/providers/types.d.ts +2 -0
- package/dist/impact/call-compatibility/providers/types.d.ts.map +1 -1
- package/dist/impact/call-compatibility/types.d.ts +6 -0
- package/dist/impact/call-compatibility/types.d.ts.map +1 -1
- package/dist/impact/call-compatibility.d.ts.map +1 -1
- package/dist/impact/call-compatibility.js +316 -552
- package/dist/impact/call-compatibility.js.map +1 -1
- package/dist/impact/map.js +1 -0
- package/dist/impact/map.js.map +1 -1
- package/dist/impact/member-resolution-coverage.d.ts.map +1 -1
- package/dist/impact/member-resolution-coverage.js +1 -1
- package/dist/impact/member-resolution-coverage.js.map +1 -1
- package/dist/impact/reference-cache.d.ts.map +1 -1
- package/dist/impact/reference-cache.js +2 -2
- package/dist/impact/reference-cache.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer/ambiguous-resolution.d.ts +11 -0
- package/dist/indexer/ambiguous-resolution.d.ts.map +1 -0
- package/dist/indexer/ambiguous-resolution.js +19 -0
- package/dist/indexer/ambiguous-resolution.js.map +1 -0
- package/dist/indexer/build-cache/module-cache.d.ts +38 -0
- package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache/module-cache.js +151 -9
- package/dist/indexer/build-cache/module-cache.js.map +1 -1
- package/dist/indexer/build-cache/options.d.ts +16 -43
- package/dist/indexer/build-cache/options.d.ts.map +1 -1
- package/dist/indexer/build-cache/options.js +16 -43
- package/dist/indexer/build-cache/options.js.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.d.ts +1 -0
- package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.js +117 -24
- package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
- package/dist/indexer/build-cache/resolver-environment.d.ts.map +1 -1
- package/dist/indexer/build-cache/resolver-environment.js +32 -2
- package/dist/indexer/build-cache/resolver-environment.js.map +1 -1
- package/dist/indexer/build-cache.d.ts +1 -1
- package/dist/indexer/build-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache.js +1 -1
- package/dist/indexer/build-cache.js.map +1 -1
- package/dist/indexer/build-index.d.ts.map +1 -1
- package/dist/indexer/build-index.js +593 -22
- package/dist/indexer/build-index.js.map +1 -1
- package/dist/indexer/call-hierarchy.js +1 -1
- package/dist/indexer/call-hierarchy.js.map +1 -1
- package/dist/indexer/compilation-units.d.ts +101 -0
- package/dist/indexer/compilation-units.d.ts.map +1 -0
- package/dist/indexer/compilation-units.js +605 -0
- package/dist/indexer/compilation-units.js.map +1 -0
- package/dist/indexer/cpp-callables.d.ts +20 -0
- package/dist/indexer/cpp-callables.d.ts.map +1 -0
- package/dist/indexer/cpp-callables.js +554 -0
- package/dist/indexer/cpp-callables.js.map +1 -0
- package/dist/indexer/declaration-visibility.d.ts +36 -2
- package/dist/indexer/declaration-visibility.d.ts.map +1 -1
- package/dist/indexer/declaration-visibility.js +136 -2
- package/dist/indexer/declaration-visibility.js.map +1 -1
- package/dist/indexer/expand-star-imports.d.ts.map +1 -1
- package/dist/indexer/expand-star-imports.js +28 -6
- package/dist/indexer/expand-star-imports.js.map +1 -1
- package/dist/indexer/import-types.d.ts +37 -0
- package/dist/indexer/import-types.d.ts.map +1 -1
- package/dist/indexer/import-types.js +24 -1
- package/dist/indexer/import-types.js.map +1 -1
- package/dist/indexer/imports/binding-ranges.d.ts +1 -1
- package/dist/indexer/imports/binding-ranges.d.ts.map +1 -1
- package/dist/indexer/imports/context.d.ts +11 -1
- package/dist/indexer/imports/context.d.ts.map +1 -1
- package/dist/indexer/imports/import-binding-tables.d.ts +75 -0
- package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -0
- package/dist/indexer/imports/import-binding-tables.js +544 -0
- package/dist/indexer/imports/import-binding-tables.js.map +1 -0
- package/dist/indexer/imports/js-text-imports.js +4 -4
- package/dist/indexer/imports/js-text-imports.js.map +1 -1
- package/dist/indexer/imports/language-specific.d.ts +3 -22
- package/dist/indexer/imports/language-specific.d.ts.map +1 -1
- package/dist/indexer/imports/language-specific.js +29 -362
- package/dist/indexer/imports/language-specific.js.map +1 -1
- package/dist/indexer/imports/native-captures.d.ts.map +1 -1
- package/dist/indexer/imports/native-captures.js +18 -6
- package/dist/indexer/imports/native-captures.js.map +1 -1
- package/dist/indexer/imports/python.d.ts +10 -2
- package/dist/indexer/imports/python.d.ts.map +1 -1
- package/dist/indexer/imports/python.js +91 -40
- package/dist/indexer/imports/python.js.map +1 -1
- package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -1
- package/dist/indexer/imports/text-import-extractors.js +51 -12
- package/dist/indexer/imports/text-import-extractors.js.map +1 -1
- package/dist/indexer/imports.d.ts.map +1 -1
- package/dist/indexer/imports.js +25 -5
- package/dist/indexer/imports.js.map +1 -1
- package/dist/indexer/incremental-plan.d.ts +33 -0
- package/dist/indexer/incremental-plan.d.ts.map +1 -1
- package/dist/indexer/incremental-plan.js +187 -1
- package/dist/indexer/incremental-plan.js.map +1 -1
- package/dist/indexer/locals-and-exports.d.ts +2 -0
- package/dist/indexer/locals-and-exports.d.ts.map +1 -1
- package/dist/indexer/locals-and-exports.js +565 -54
- package/dist/indexer/locals-and-exports.js.map +1 -1
- package/dist/indexer/name-lookup-policies/c-family.d.ts +7 -0
- package/dist/indexer/name-lookup-policies/c-family.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/c-family.js +117 -0
- package/dist/indexer/name-lookup-policies/c-family.js.map +1 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts +11 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.js +136 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.js.map +1 -0
- package/dist/indexer/name-lookup-policies/implicit-self.d.ts +10 -0
- package/dist/indexer/name-lookup-policies/implicit-self.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/implicit-self.js +113 -0
- package/dist/indexer/name-lookup-policies/implicit-self.js.map +1 -0
- package/dist/indexer/name-lookup-policies/index.d.ts +3 -0
- package/dist/indexer/name-lookup-policies/index.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/index.js +106 -0
- package/dist/indexer/name-lookup-policies/index.js.map +1 -0
- package/dist/indexer/name-lookup-policies/php.d.ts +3 -0
- package/dist/indexer/name-lookup-policies/php.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/php.js +75 -0
- package/dist/indexer/name-lookup-policies/php.js.map +1 -0
- package/dist/indexer/name-resolution-types.d.ts +99 -0
- package/dist/indexer/name-resolution-types.d.ts.map +1 -0
- package/dist/indexer/name-resolution-types.js +2 -0
- package/dist/indexer/name-resolution-types.js.map +1 -0
- package/dist/indexer/name-resolution.d.ts +52 -0
- package/dist/indexer/name-resolution.d.ts.map +1 -0
- package/dist/indexer/name-resolution.js +189 -0
- package/dist/indexer/name-resolution.js.map +1 -0
- package/dist/indexer/navigation-cpp.d.ts +50 -0
- package/dist/indexer/navigation-cpp.d.ts.map +1 -0
- package/dist/indexer/navigation-cpp.js +654 -0
- package/dist/indexer/navigation-cpp.js.map +1 -0
- package/dist/indexer/navigation-goto.d.ts +107 -4
- package/dist/indexer/navigation-goto.d.ts.map +1 -1
- package/dist/indexer/navigation-goto.js +2075 -137
- package/dist/indexer/navigation-goto.js.map +1 -1
- package/dist/indexer/navigation-local.d.ts +18 -2
- package/dist/indexer/navigation-local.d.ts.map +1 -1
- package/dist/indexer/navigation-local.js +498 -61
- package/dist/indexer/navigation-local.js.map +1 -1
- package/dist/indexer/navigation-php.d.ts +66 -0
- package/dist/indexer/navigation-php.d.ts.map +1 -1
- package/dist/indexer/navigation-php.js +287 -4
- package/dist/indexer/navigation-php.js.map +1 -1
- package/dist/indexer/navigation-references.d.ts +72 -5
- package/dist/indexer/navigation-references.d.ts.map +1 -1
- package/dist/indexer/navigation-references.js +620 -54
- package/dist/indexer/navigation-references.js.map +1 -1
- package/dist/indexer/navigation-resolve.d.ts +33 -2
- package/dist/indexer/navigation-resolve.d.ts.map +1 -1
- package/dist/indexer/navigation-resolve.js +446 -193
- package/dist/indexer/navigation-resolve.js.map +1 -1
- package/dist/indexer/navigation.d.ts +28 -2
- package/dist/indexer/navigation.d.ts.map +1 -1
- package/dist/indexer/navigation.js +1082 -151
- package/dist/indexer/navigation.js.map +1 -1
- package/dist/indexer/php-namespace-symbols.d.ts +66 -0
- package/dist/indexer/php-namespace-symbols.d.ts.map +1 -0
- package/dist/indexer/php-namespace-symbols.js +342 -0
- package/dist/indexer/php-namespace-symbols.js.map +1 -0
- package/dist/indexer/reference-context.d.ts +2 -0
- package/dist/indexer/reference-context.d.ts.map +1 -1
- package/dist/indexer/reference-context.js +4 -0
- package/dist/indexer/reference-context.js.map +1 -1
- package/dist/indexer/scope-nodes.d.ts +92 -13
- package/dist/indexer/scope-nodes.d.ts.map +1 -1
- package/dist/indexer/scope-nodes.js +212 -20
- package/dist/indexer/scope-nodes.js.map +1 -1
- package/dist/indexer/scope-types.d.ts +25 -1
- package/dist/indexer/scope-types.d.ts.map +1 -1
- package/dist/indexer/scope.d.ts.map +1 -1
- package/dist/indexer/scope.js +894 -45
- package/dist/indexer/scope.js.map +1 -1
- package/dist/indexer/shared-owner-identity.d.ts +53 -0
- package/dist/indexer/shared-owner-identity.d.ts.map +1 -0
- package/dist/indexer/shared-owner-identity.js +460 -0
- package/dist/indexer/shared-owner-identity.js.map +1 -0
- package/dist/indexer/shared.d.ts +1 -1
- package/dist/indexer/shared.d.ts.map +1 -1
- package/dist/indexer/shared.js +1 -1
- package/dist/indexer/shared.js.map +1 -1
- package/dist/indexer/star-import-precedence.d.ts +114 -0
- package/dist/indexer/star-import-precedence.d.ts.map +1 -0
- package/dist/indexer/star-import-precedence.js +396 -0
- package/dist/indexer/star-import-precedence.js.map +1 -0
- package/dist/indexer/symbols.d.ts +3 -1
- package/dist/indexer/symbols.d.ts.map +1 -1
- package/dist/indexer/symbols.js +58 -18
- package/dist/indexer/symbols.js.map +1 -1
- package/dist/indexer/ts-callables.d.ts +51 -0
- package/dist/indexer/ts-callables.d.ts.map +1 -0
- package/dist/indexer/ts-callables.js +264 -0
- package/dist/indexer/ts-callables.js.map +1 -0
- package/dist/indexer/types.d.ts +23 -1
- package/dist/indexer/types.d.ts.map +1 -1
- package/dist/indexer/unused-exports.d.ts +13 -0
- package/dist/indexer/unused-exports.d.ts.map +1 -0
- package/dist/indexer/unused-exports.js +159 -0
- package/dist/indexer/unused-exports.js.map +1 -0
- package/dist/indexer/workspace-symbols.d.ts.map +1 -1
- package/dist/indexer/workspace-symbols.js +3 -2
- package/dist/indexer/workspace-symbols.js.map +1 -1
- package/dist/indexer.d.ts +2 -2
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +1 -1
- package/dist/indexer.js.map +1 -1
- package/dist/languages/callable-arity.d.ts +202 -0
- package/dist/languages/callable-arity.d.ts.map +1 -0
- package/dist/languages/callable-arity.js +1182 -0
- package/dist/languages/callable-arity.js.map +1 -0
- package/dist/languages/definitions/c-family.d.ts.map +1 -1
- package/dist/languages/definitions/c-family.js +30 -1
- package/dist/languages/definitions/c-family.js.map +1 -1
- package/dist/languages/definitions/c.d.ts +4 -0
- package/dist/languages/definitions/c.d.ts.map +1 -1
- package/dist/languages/definitions/c.js +19 -0
- package/dist/languages/definitions/c.js.map +1 -1
- package/dist/languages/definitions/cpp.d.ts.map +1 -1
- package/dist/languages/definitions/cpp.js +12 -0
- package/dist/languages/definitions/cpp.js.map +1 -1
- package/dist/languages/definitions/csharp.d.ts.map +1 -1
- package/dist/languages/definitions/csharp.js +2 -8
- package/dist/languages/definitions/csharp.js.map +1 -1
- package/dist/languages/definitions/go.d.ts.map +1 -1
- package/dist/languages/definitions/go.js +3 -0
- package/dist/languages/definitions/go.js.map +1 -1
- package/dist/languages/definitions/javascript.d.ts.map +1 -1
- package/dist/languages/definitions/javascript.js +10 -1
- package/dist/languages/definitions/javascript.js.map +1 -1
- package/dist/languages/definitions/js-family.d.ts +1 -1
- package/dist/languages/definitions/js-family.d.ts.map +1 -1
- package/dist/languages/definitions/js-family.js +7 -1
- package/dist/languages/definitions/js-family.js.map +1 -1
- package/dist/languages/definitions/php.d.ts.map +1 -1
- package/dist/languages/definitions/php.js +5 -1
- package/dist/languages/definitions/php.js.map +1 -1
- package/dist/languages/definitions/typescript.d.ts.map +1 -1
- package/dist/languages/definitions/typescript.js +8 -1
- package/dist/languages/definitions/typescript.js.map +1 -1
- package/dist/languages/definitions/zig.d.ts.map +1 -1
- package/dist/languages/definitions/zig.js +2 -0
- package/dist/languages/definitions/zig.js.map +1 -1
- package/dist/mcp/handlers.js +14 -7
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/review/candidates.d.ts.map +1 -1
- package/dist/review/candidates.js +1 -1
- package/dist/review/candidates.js.map +1 -1
- package/dist/review/deleted.d.ts +3 -3
- package/dist/review/deleted.d.ts.map +1 -1
- package/dist/review/deleted.js +82 -32
- package/dist/review/deleted.js.map +1 -1
- package/dist/review/report.d.ts +1 -0
- package/dist/review/report.d.ts.map +1 -1
- package/dist/review/report.js +1 -1
- package/dist/review/report.js.map +1 -1
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +1 -0
- package/dist/review.js.map +1 -1
- package/dist/sql/navigation.d.ts.map +1 -1
- package/dist/sql/navigation.js +1 -0
- package/dist/sql/navigation.js.map +1 -1
- package/dist/sql/source-graph.d.ts.map +1 -1
- package/dist/sql/source-graph.js +2 -2
- package/dist/sql/source-graph.js.map +1 -1
- package/dist/sqlite/schema.d.ts +1 -1
- package/dist/sqlite/schema.d.ts.map +1 -1
- package/dist/sqlite/schema.js +8 -2
- package/dist/sqlite/schema.js.map +1 -1
- package/dist/sqlite/write.js +2 -2
- package/dist/sqlite/write.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/util/bloom-filter.d.ts +7 -1
- package/dist/util/bloom-filter.d.ts.map +1 -1
- package/dist/util/bloom-filter.js +12 -2
- package/dist/util/bloom-filter.js.map +1 -1
- package/dist/util/dynamic-import-tables.d.ts +88 -0
- package/dist/util/dynamic-import-tables.d.ts.map +1 -0
- package/dist/util/dynamic-import-tables.js +100 -0
- package/dist/util/dynamic-import-tables.js.map +1 -0
- package/dist/util/graph-edges.d.ts +19 -1
- package/dist/util/graph-edges.d.ts.map +1 -1
- package/dist/util/graph-edges.js +30 -4
- package/dist/util/graph-edges.js.map +1 -1
- package/dist/util/identifiers.d.ts +15 -0
- package/dist/util/identifiers.d.ts.map +1 -1
- package/dist/util/identifiers.js +35 -0
- package/dist/util/identifiers.js.map +1 -1
- package/dist/util/member-access-tables.d.ts +129 -0
- package/dist/util/member-access-tables.d.ts.map +1 -0
- package/dist/util/member-access-tables.js +285 -0
- package/dist/util/member-access-tables.js.map +1 -0
- package/dist/util/member-access.d.ts +17 -0
- package/dist/util/member-access.d.ts.map +1 -1
- package/dist/util/member-access.js +138 -93
- package/dist/util/member-access.js.map +1 -1
- package/dist/util/resolution/cargo-targets.d.ts +11 -0
- package/dist/util/resolution/cargo-targets.d.ts.map +1 -1
- package/dist/util/resolution/cargo-targets.js +174 -13
- package/dist/util/resolution/cargo-targets.js.map +1 -1
- package/dist/util/resolution/csharp.d.ts +33 -1
- package/dist/util/resolution/csharp.d.ts.map +1 -1
- package/dist/util/resolution/csharp.js +145 -30
- package/dist/util/resolution/csharp.js.map +1 -1
- package/dist/util/resolution/php.d.ts.map +1 -1
- package/dist/util/resolution/php.js +35 -8
- package/dist/util/resolution/php.js.map +1 -1
- package/dist/util/resolution/python.d.ts +9 -0
- package/dist/util/resolution/python.d.ts.map +1 -1
- package/dist/util/resolution/python.js +46 -0
- package/dist/util/resolution/python.js.map +1 -1
- package/dist/util/resolution/rust.d.ts.map +1 -1
- package/dist/util/resolution/rust.js +95 -26
- package/dist/util/resolution/rust.js.map +1 -1
- package/dist/util/resolution-candidates.d.ts +5 -0
- package/dist/util/resolution-candidates.d.ts.map +1 -1
- package/dist/util/resolution-candidates.js +16 -3
- package/dist/util/resolution-candidates.js.map +1 -1
- package/dist/util/resolution.d.ts +2 -1
- package/dist/util/resolution.d.ts.map +1 -1
- package/dist/util/resolution.js +96 -5
- package/dist/util/resolution.js.map +1 -1
- package/dist/util/specifiers.d.ts +20 -0
- package/dist/util/specifiers.d.ts.map +1 -1
- package/dist/util/specifiers.js +39 -93
- package/dist/util/specifiers.js.map +1 -1
- package/docs/mcp.md +3 -2
- package/package.json +3 -3
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-language dynamic-import adapters for the runner in `./specifiers.js`.
|
|
3
|
+
*
|
|
4
|
+
* The runner and the shared constant-path fold stay in `./specifiers.js`; this module owns
|
|
5
|
+
* only the per-language call shapes and the path-fold profiles they name. The runner builds
|
|
6
|
+
* the table once and injects its fold implementations (`DynamicImportFoldHelpers`), so the
|
|
7
|
+
* two modules never import each other at runtime and no cycle forms.
|
|
8
|
+
*/
|
|
9
|
+
/** Root a folded constant path is resolved against: the file's directory, the file itself,
|
|
10
|
+
* or the project root. */
|
|
11
|
+
export type DynamicBase = "fileDir" | "filePath" | "project";
|
|
12
|
+
/** A folded constant path: one rooted base plus its literal segments. */
|
|
13
|
+
export type FoldedPath = {
|
|
14
|
+
base: DynamicBase;
|
|
15
|
+
segments: string[];
|
|
16
|
+
};
|
|
17
|
+
/** Resolves a folded path against the root its base names. */
|
|
18
|
+
export type FoldedPathResolver = (folded: FoldedPath, fromFile: string, projectRoot: string) => string | null;
|
|
19
|
+
/**
|
|
20
|
+
* Per-language inputs to the shared constant-path fold: the base tokens that root a computed
|
|
21
|
+
* path and the join-style helper calls that combine a base with literal segments. Tokens are
|
|
22
|
+
* compared after whitespace removal, so `dirname(__FILE__)` and `process.cwd()` fold like
|
|
23
|
+
* identifiers. Languages without a concatenation operator only fold join-helper arguments.
|
|
24
|
+
*/
|
|
25
|
+
export type PathFoldProfile = {
|
|
26
|
+
bases: Readonly<Record<string, DynamicBase>>;
|
|
27
|
+
joinHelpers: readonly string[];
|
|
28
|
+
/** Top-level concatenation operator between constant parts (PHP `.`). */
|
|
29
|
+
concat?: string;
|
|
30
|
+
};
|
|
31
|
+
export type DynamicImportPreparation = {
|
|
32
|
+
/** Python importlib alias tables collected once per file. */
|
|
33
|
+
pythonImportlibAliases?: Set<string>;
|
|
34
|
+
pythonImportModuleAliases?: Set<string>;
|
|
35
|
+
};
|
|
36
|
+
export type DynamicImportShapeContext = {
|
|
37
|
+
/** The text the shape's pattern ran over (comment-blanked for the JS family). */
|
|
38
|
+
text: string;
|
|
39
|
+
match: RegExpMatchArray;
|
|
40
|
+
fromFile: string;
|
|
41
|
+
projectRoot: string;
|
|
42
|
+
preparation: DynamicImportPreparation;
|
|
43
|
+
};
|
|
44
|
+
export type DynamicImportCallShape = {
|
|
45
|
+
/** Pattern over the entry's matching text; capture 1 holds the foldable argument, or the
|
|
46
|
+
* fold reads the argument from the match end (Python's escape-aware literal reader). */
|
|
47
|
+
pattern: RegExp;
|
|
48
|
+
fold: (context: DynamicImportShapeContext) => string | null;
|
|
49
|
+
};
|
|
50
|
+
export type DynamicImportEntry = {
|
|
51
|
+
/** Matching text, blanking comments through the shared trivia lexer where needed; string
|
|
52
|
+
* literals stay intact so folds can read their contents. */
|
|
53
|
+
text: (source: string) => string;
|
|
54
|
+
/** Non-code guard over the matching text; matches starting inside trivia are skipped. */
|
|
55
|
+
guard: (text: string) => Uint8Array | undefined;
|
|
56
|
+
/** Per-file preparation, evaluated once per extraction. */
|
|
57
|
+
prepare?: (source: string) => DynamicImportPreparation;
|
|
58
|
+
shapes: readonly DynamicImportCallShape[];
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* The shared fold implementation `./specifiers.js` injects. Keeping these as parameters rather
|
|
62
|
+
* than importing them is what keeps the entries here independent of the runner module.
|
|
63
|
+
*/
|
|
64
|
+
export type DynamicImportFoldHelpers = {
|
|
65
|
+
/** Builds a shape fold that reads capture 1 as a constant path and resolves the fold. */
|
|
66
|
+
foldCapturedPath: (profile: PathFoldProfile, resolve: FoldedPathResolver) => (context: DynamicImportShapeContext) => string | null;
|
|
67
|
+
/** Folds a `new URL("...", import.meta.url)` argument list. */
|
|
68
|
+
foldNewUrlArgument: (argText: string, profile: PathFoldProfile) => FoldedPath | null;
|
|
69
|
+
resolveFoldedPathAgainstBase: FoldedPathResolver;
|
|
70
|
+
/** Resolves against the containing file's directory regardless of the named base. */
|
|
71
|
+
resolveFoldedPathAgainstFileDir: (folded: FoldedPath, fromFile: string) => string | null;
|
|
72
|
+
/** Resolves by concatenation onto the containing file's directory. */
|
|
73
|
+
resolveFoldedPathByConcatenation: (folded: FoldedPath, fromFile: string) => string | null;
|
|
74
|
+
/** Folds a Python dynamic-import call into a static module string. */
|
|
75
|
+
foldPythonDynamicModuleArgument: (source: string, match: RegExpMatchArray, preparation: DynamicImportPreparation) => string | null;
|
|
76
|
+
/** Collects the importlib alias tables a Python file's dynamic-import calls may use. */
|
|
77
|
+
collectPythonDynamicImportAliases: (source: string) => {
|
|
78
|
+
importlibAliases: Set<string>;
|
|
79
|
+
importModuleAliases: Set<string>;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Builds the dynamic-import adapter table keyed by registered language id. Callers supply the
|
|
84
|
+
* shared fold implementation; the per-file preparation and matching rules stay here with the
|
|
85
|
+
* language that needs them.
|
|
86
|
+
*/
|
|
87
|
+
export declare function createDynamicImportEntries(folds: DynamicImportFoldHelpers): Readonly<Partial<Record<string, DynamicImportEntry>>>;
|
|
88
|
+
//# sourceMappingURL=dynamic-import-tables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-import-tables.d.ts","sourceRoot":"","sources":["../../src/util/dynamic-import-tables.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { buildJsLikeLiteralMask, stripJsLikeComments } from "./comments.js";
|
|
2
|
+
import { PYTHON_IDENTIFIER_SOURCE } from "./identifiers.js";
|
|
3
|
+
import { buildTriviaMask } from "./trivia.js";
|
|
4
|
+
const JS_PATH_FOLD_PROFILE = {
|
|
5
|
+
bases: {
|
|
6
|
+
__dirname: "fileDir",
|
|
7
|
+
__filename: "filePath",
|
|
8
|
+
"import.meta.url": "filePath",
|
|
9
|
+
"process.cwd()": "project",
|
|
10
|
+
},
|
|
11
|
+
joinHelpers: ["path.join", "path.resolve"],
|
|
12
|
+
};
|
|
13
|
+
const RUBY_PATH_FOLD_PROFILE = {
|
|
14
|
+
bases: { __dir__: "fileDir" },
|
|
15
|
+
joinHelpers: ["File.join"],
|
|
16
|
+
};
|
|
17
|
+
const PHP_PATH_FOLD_PROFILE = {
|
|
18
|
+
bases: { __DIR__: "fileDir", "dirname(__FILE__)": "fileDir" },
|
|
19
|
+
joinHelpers: [],
|
|
20
|
+
concat: ".",
|
|
21
|
+
};
|
|
22
|
+
const JS_DYNAMIC_PATH_CALL_PATTERN = /(?<!["'`])\b(?:require|import)\s*\(\s*(path\.(?:join|resolve)\s*\((?:[^()]|\([^()]*\))*\))\s*\)/g;
|
|
23
|
+
const JS_DYNAMIC_URL_CALL_PATTERN = /(?<!["'`])\b(?:require|import)\s*\(\s*(new\s+URL\s*\([^)]*\))\s*\)/g;
|
|
24
|
+
const RUBY_REQUIRE_FILE_JOIN_PATTERN = /(?<![\p{XID_Continue}])require\s*\(?\s*(File\.join\s*\((?:[^()]|\([^()]*\))*\))/gu;
|
|
25
|
+
const PHP_COMPUTED_INCLUDE_PATTERN = /(?<![\p{XID_Continue}$])(?:include_once|include|require_once|require)\b\s*\(?\s*([^;\r\n]*?)\s*\)?\s*;/gu;
|
|
26
|
+
const PYTHON_DYNAMIC_CALL_PREFIX_PATTERN = new RegExp(String.raw `(?<![._\p{XID_Continue}])(${PYTHON_IDENTIFIER_SOURCE})(?:\s*\.\s*(${PYTHON_IDENTIFIER_SOURCE}))?\s*\(\s*(?:name\s*=\s*)?`, "gmu");
|
|
27
|
+
/**
|
|
28
|
+
* Builds the dynamic-import adapter table keyed by registered language id. Callers supply the
|
|
29
|
+
* shared fold implementation; the per-file preparation and matching rules stay here with the
|
|
30
|
+
* language that needs them.
|
|
31
|
+
*/
|
|
32
|
+
export function createDynamicImportEntries(folds) {
|
|
33
|
+
const JS_TS_DYNAMIC_IMPORT_ENTRY = {
|
|
34
|
+
// Comments are blanked before matching so a `require(...)` inside a comment cannot match;
|
|
35
|
+
// string literals stay intact because the fold reads their contents.
|
|
36
|
+
text: stripJsLikeComments,
|
|
37
|
+
guard: buildJsLikeLiteralMask,
|
|
38
|
+
shapes: [
|
|
39
|
+
{
|
|
40
|
+
pattern: JS_DYNAMIC_PATH_CALL_PATTERN,
|
|
41
|
+
fold: folds.foldCapturedPath(JS_PATH_FOLD_PROFILE, folds.resolveFoldedPathAgainstBase),
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
pattern: JS_DYNAMIC_URL_CALL_PATTERN,
|
|
45
|
+
fold: ({ match, fromFile }) => {
|
|
46
|
+
const folded = folds.foldNewUrlArgument(match[1] ?? "", JS_PATH_FOLD_PROFILE);
|
|
47
|
+
return folded ? folds.resolveFoldedPathAgainstFileDir(folded, fromFile) : null;
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
};
|
|
52
|
+
const RUBY_DYNAMIC_IMPORT_ENTRY = {
|
|
53
|
+
text: (source) => source,
|
|
54
|
+
guard: (text) => buildTriviaMask(text, "ruby"),
|
|
55
|
+
shapes: [
|
|
56
|
+
{
|
|
57
|
+
// Only the computed `require File.join(__dir__, ...)` form is folded here; bare-string
|
|
58
|
+
// requires flow through the static pipeline and `$LOAD_PATH` lookups stay external.
|
|
59
|
+
pattern: RUBY_REQUIRE_FILE_JOIN_PATTERN,
|
|
60
|
+
fold: folds.foldCapturedPath(RUBY_PATH_FOLD_PROFILE, folds.resolveFoldedPathByConcatenation),
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
};
|
|
64
|
+
const PHP_DYNAMIC_IMPORT_ENTRY = {
|
|
65
|
+
text: (source) => source,
|
|
66
|
+
guard: (text) => buildTriviaMask(text, "php"),
|
|
67
|
+
shapes: [
|
|
68
|
+
{
|
|
69
|
+
// Computed `include`/`require` whose path is a constant chain rooted at `__DIR__` (or
|
|
70
|
+
// the legacy `dirname(__FILE__)`); plain string operands stay with the static pipeline
|
|
71
|
+
// and the include-path search stays external.
|
|
72
|
+
pattern: PHP_COMPUTED_INCLUDE_PATTERN,
|
|
73
|
+
fold: folds.foldCapturedPath(PHP_PATH_FOLD_PROFILE, folds.resolveFoldedPathByConcatenation),
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
};
|
|
77
|
+
const PYTHON_DYNAMIC_IMPORT_ENTRY = {
|
|
78
|
+
text: (source) => source,
|
|
79
|
+
guard: (text) => buildTriviaMask(text, "python"),
|
|
80
|
+
prepare: (source) => {
|
|
81
|
+
const { importlibAliases, importModuleAliases } = folds.collectPythonDynamicImportAliases(source);
|
|
82
|
+
return { pythonImportlibAliases: importlibAliases, pythonImportModuleAliases: importModuleAliases };
|
|
83
|
+
},
|
|
84
|
+
shapes: [
|
|
85
|
+
{
|
|
86
|
+
pattern: PYTHON_DYNAMIC_CALL_PREFIX_PATTERN,
|
|
87
|
+
fold: ({ text, match, preparation }) => folds.foldPythonDynamicModuleArgument(text, match, preparation),
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
};
|
|
91
|
+
const entries = {
|
|
92
|
+
js: JS_TS_DYNAMIC_IMPORT_ENTRY,
|
|
93
|
+
ts: JS_TS_DYNAMIC_IMPORT_ENTRY,
|
|
94
|
+
python: PYTHON_DYNAMIC_IMPORT_ENTRY,
|
|
95
|
+
ruby: RUBY_DYNAMIC_IMPORT_ENTRY,
|
|
96
|
+
php: PHP_DYNAMIC_IMPORT_ENTRY,
|
|
97
|
+
};
|
|
98
|
+
return entries;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=dynamic-import-tables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-import-tables.js","sourceRoot":"","sources":["../../src/util/dynamic-import-tables.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import type { Edge } from "../types.js";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Specifier fields that identify a file-dependency edge.
|
|
4
|
+
* `from` is the specifier text stored as `raw` when `raw` is omitted.
|
|
5
|
+
*/
|
|
6
|
+
export type EdgeImportSource = {
|
|
7
|
+
from: string;
|
|
8
|
+
raw?: string;
|
|
9
|
+
typeOnly?: boolean;
|
|
10
|
+
includeForm?: Edge["includeForm"];
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Rebuilds a file-dependency edge from an {@link EdgeImportSource}.
|
|
14
|
+
* Import bindings and deleted-file snapshots both use this so `raw`, type-only,
|
|
15
|
+
* and C/C++ `includeForm` stay on the edge. Angle and quoted includes of one
|
|
16
|
+
* header must not collapse.
|
|
17
|
+
*/
|
|
18
|
+
export declare function edgeFromImportBinding(from: string, to: Edge["to"], source: EdgeImportSource): Edge;
|
|
19
|
+
/** Shared identity for collection, project assembly, delta, and drift comparison. */
|
|
20
|
+
export declare function edgeKey(edge: Edge, rawIsIdentity?: boolean, filePath?: (file: string) => string): string;
|
|
3
21
|
export declare function compareEdges(left: Edge, right: Edge): number;
|
|
4
22
|
export declare function toRelativeEdge(projectRoot: string, edge: Edge): Edge;
|
|
5
23
|
//# sourceMappingURL=graph-edges.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-edges.d.ts","sourceRoot":"","sources":["../../src/util/graph-edges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"graph-edges.d.ts","sourceRoot":"","sources":["../../src/util/graph-edges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CASlG;AAMD,qFAAqF;AACrF,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,UAAO,EAAE,QAAQ,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAuB,GAAG,MAAM,CAMrH;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,CAiB5D;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAgBpE"}
|
package/dist/util/graph-edges.js
CHANGED
|
@@ -1,8 +1,30 @@
|
|
|
1
1
|
import { toProjectDisplayPath } from "./paths.js";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Rebuilds a file-dependency edge from an {@link EdgeImportSource}.
|
|
4
|
+
* Import bindings and deleted-file snapshots both use this so `raw`, type-only,
|
|
5
|
+
* and C/C++ `includeForm` stay on the edge. Angle and quoted includes of one
|
|
6
|
+
* header must not collapse.
|
|
7
|
+
*/
|
|
8
|
+
export function edgeFromImportBinding(from, to, source) {
|
|
9
|
+
const { includeForm } = source;
|
|
10
|
+
return {
|
|
11
|
+
from,
|
|
12
|
+
to,
|
|
13
|
+
raw: source.raw ?? source.from,
|
|
14
|
+
...(source.typeOnly ? { typeOnly: source.typeOnly } : {}),
|
|
15
|
+
...(includeForm ? { includeForm } : {}),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function storedFilePath(file) {
|
|
19
|
+
return file;
|
|
20
|
+
}
|
|
21
|
+
/** Shared identity for collection, project assembly, delta, and drift comparison. */
|
|
22
|
+
export function edgeKey(edge, rawIsIdentity = true, filePath = storedFilePath) {
|
|
23
|
+
const from = filePath(edge.from);
|
|
24
|
+
const target = edge.to.type === "file" ? filePath(edge.to.path) : edge.to.name;
|
|
25
|
+
const raw = rawIsIdentity ? edge.raw : "";
|
|
4
26
|
const typeOnly = edge.typeOnly ? "1" : "0";
|
|
5
|
-
return `${edge.
|
|
27
|
+
return `${from}\0${edge.to.type}\0${target}\0${raw}\0${typeOnly}\0${edge.includeForm ?? ""}`;
|
|
6
28
|
}
|
|
7
29
|
export function compareEdges(left, right) {
|
|
8
30
|
const fromCompare = left.from.localeCompare(right.from);
|
|
@@ -21,7 +43,10 @@ export function compareEdges(left, right) {
|
|
|
21
43
|
return rawCompare;
|
|
22
44
|
const leftTypeOnly = left.typeOnly ? 1 : 0;
|
|
23
45
|
const rightTypeOnly = right.typeOnly ? 1 : 0;
|
|
24
|
-
|
|
46
|
+
const typeCompare = leftTypeOnly - rightTypeOnly;
|
|
47
|
+
if (typeCompare)
|
|
48
|
+
return typeCompare;
|
|
49
|
+
return (left.includeForm ?? "").localeCompare(right.includeForm ?? "");
|
|
25
50
|
}
|
|
26
51
|
export function toRelativeEdge(projectRoot, edge) {
|
|
27
52
|
const from = toProjectDisplayPath(projectRoot, edge.from);
|
|
@@ -37,6 +62,7 @@ export function toRelativeEdge(projectRoot, edge) {
|
|
|
37
62
|
to,
|
|
38
63
|
raw: edge.raw,
|
|
39
64
|
...(edge.typeOnly ? { typeOnly: edge.typeOnly } : {}),
|
|
65
|
+
...(edge.includeForm ? { includeForm: edge.includeForm } : {}),
|
|
40
66
|
};
|
|
41
67
|
}
|
|
42
68
|
//# sourceMappingURL=graph-edges.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-edges.js","sourceRoot":"","sources":["../../src/util/graph-edges.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"graph-edges.js","sourceRoot":"","sources":["../../src/util/graph-edges.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,13 @@ export declare const PHP_IDENTIFIER_SOURCE: string;
|
|
|
35
35
|
export declare const JAVA_IDENTIFIER_IGNORABLE_SOURCE: string;
|
|
36
36
|
/** C# formatting characters permitted in identifier-part-character. */
|
|
37
37
|
export declare const CSHARP_IDENTIFIER_FORMAT_SOURCE: string;
|
|
38
|
+
/**
|
|
39
|
+
* C# identifier equality: a verbatim `@` prefix and formatting characters (Cf) do not change
|
|
40
|
+
* the identifier, so `@P` and `P` name the same namespace, type, or member.
|
|
41
|
+
*/
|
|
42
|
+
export declare function normalizeCsharpIdentifier(name: string): string;
|
|
43
|
+
/** Normalizes each dotted segment of a C# namespace or type path; a `global::` prefix is kept. */
|
|
44
|
+
export declare function normalizeCsharpQualifiedName(text: string): string;
|
|
38
45
|
/**
|
|
39
46
|
* Java identifiers (`Character.isJavaIdentifierStart`/`isJavaIdentifierPart`) permit a
|
|
40
47
|
* Unicode letter (Lu/Ll/Lt/Lm/Lo), a letter-number (Nl, e.g. Roman numerals), a currency
|
|
@@ -66,4 +73,12 @@ export declare const GO_IDENTIFIER_SOURCE: string;
|
|
|
66
73
|
* (No), and combining marks are not part of the Kotlin grammar.
|
|
67
74
|
*/
|
|
68
75
|
export declare const KOTLIN_IDENTIFIER_SOURCE: string;
|
|
76
|
+
/**
|
|
77
|
+
* ASCII-only case fold for a PHP identifier. PHP resolves class, interface, trait, and
|
|
78
|
+
* function names case-insensitively but only across the ASCII range; non-ASCII bytes in a
|
|
79
|
+
* PHP identifier are passed through unchanged. Shared by PHP name comparison and by the
|
|
80
|
+
* bloom filter, which stores both a PHP file's raw identifier spellings and their folded
|
|
81
|
+
* form so a case-variant reference can still be probed with a single folded lookup.
|
|
82
|
+
*/
|
|
83
|
+
export declare function foldPhpIdentifierCase(value: string): string;
|
|
69
84
|
//# sourceMappingURL=identifiers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/util/identifiers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,UAAQ,GAAG,OAAO,CAMtF;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAAqE,CAAC;AAE/G;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,QAAiG,CAAC;AAE7I,6EAA6E;AAC7E,eAAO,MAAM,qBAAqB,QAAmD,CAAC;AAEtF,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,QAAwB,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAuE,CAAC;AAE1G;;;GAGG;AACH,eAAO,MAAM,gCAAgC,QAA4D,CAAC;AAE1G,uEAAuE;AACvE,eAAO,MAAM,+BAA+B,QAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/util/identifiers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,UAAQ,GAAG,OAAO,CAMtF;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAAqE,CAAC;AAE/G;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,QAAiG,CAAC;AAE7I,6EAA6E;AAC7E,eAAO,MAAM,qBAAqB,QAAmD,CAAC;AAEtF,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,QAAwB,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAuE,CAAC;AAE1G;;;GAGG;AACH,eAAO,MAAM,gCAAgC,QAA4D,CAAC;AAE1G,uEAAuE;AACvE,eAAO,MAAM,+BAA+B,QAAqB,CAAC;AAIlE;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,kGAAkG;AAClG,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,QAAuH,CAAC;AAE3J;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,QAAwG,CAAC;AAE9I;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,QAAsC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAsC,CAAC;AAE5E;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO3D"}
|
package/dist/util/identifiers.js
CHANGED
|
@@ -42,6 +42,26 @@ export const PHP_IDENTIFIER_SOURCE = String.raw `[A-Za-z_\u{80}-\u{10FFFF}][A-Za
|
|
|
42
42
|
export const JAVA_IDENTIFIER_IGNORABLE_SOURCE = String.raw `\p{Cf}\u0000-\u0008\u000E-\u001B\u007F-\u009F`;
|
|
43
43
|
/** C# formatting characters permitted in identifier-part-character. */
|
|
44
44
|
export const CSHARP_IDENTIFIER_FORMAT_SOURCE = String.raw `\p{Cf}`;
|
|
45
|
+
const CSHARP_IDENTIFIER_FORMAT_PATTERN = new RegExp(`[${CSHARP_IDENTIFIER_FORMAT_SOURCE}]`, "gu");
|
|
46
|
+
/**
|
|
47
|
+
* C# identifier equality: a verbatim `@` prefix and formatting characters (Cf) do not change
|
|
48
|
+
* the identifier, so `@P` and `P` name the same namespace, type, or member.
|
|
49
|
+
*/
|
|
50
|
+
export function normalizeCsharpIdentifier(name) {
|
|
51
|
+
const withoutVerbatimPrefix = name.startsWith("@") ? name.slice(1) : name;
|
|
52
|
+
return hasNonAsciiCodePoint(withoutVerbatimPrefix)
|
|
53
|
+
? withoutVerbatimPrefix.replace(CSHARP_IDENTIFIER_FORMAT_PATTERN, "")
|
|
54
|
+
: withoutVerbatimPrefix;
|
|
55
|
+
}
|
|
56
|
+
/** Normalizes each dotted segment of a C# namespace or type path; a `global::` prefix is kept. */
|
|
57
|
+
export function normalizeCsharpQualifiedName(text) {
|
|
58
|
+
const compact = text.replace(/\s+/gu, "");
|
|
59
|
+
const globalPrefix = compact.startsWith("global::") ? "global::" : "";
|
|
60
|
+
const body = compact.slice(globalPrefix.length);
|
|
61
|
+
if (!body)
|
|
62
|
+
return globalPrefix;
|
|
63
|
+
return globalPrefix + body.split(".").map(normalizeCsharpIdentifier).join(".");
|
|
64
|
+
}
|
|
45
65
|
/**
|
|
46
66
|
* Java identifiers (`Character.isJavaIdentifierStart`/`isJavaIdentifierPart`) permit a
|
|
47
67
|
* Unicode letter (Lu/Ll/Lt/Lm/Lo), a letter-number (Nl, e.g. Roman numerals), a currency
|
|
@@ -73,4 +93,19 @@ export const GO_IDENTIFIER_SOURCE = String.raw `[\p{L}_][\p{L}\p{Nd}_]*`;
|
|
|
73
93
|
* (No), and combining marks are not part of the Kotlin grammar.
|
|
74
94
|
*/
|
|
75
95
|
export const KOTLIN_IDENTIFIER_SOURCE = String.raw `[\p{L}_][\p{L}\p{Nd}_]*`;
|
|
96
|
+
/**
|
|
97
|
+
* ASCII-only case fold for a PHP identifier. PHP resolves class, interface, trait, and
|
|
98
|
+
* function names case-insensitively but only across the ASCII range; non-ASCII bytes in a
|
|
99
|
+
* PHP identifier are passed through unchanged. Shared by PHP name comparison and by the
|
|
100
|
+
* bloom filter, which stores both a PHP file's raw identifier spellings and their folded
|
|
101
|
+
* form so a case-variant reference can still be probed with a single folded lookup.
|
|
102
|
+
*/
|
|
103
|
+
export function foldPhpIdentifierCase(value) {
|
|
104
|
+
let folded = "";
|
|
105
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
106
|
+
const code = value.charCodeAt(index);
|
|
107
|
+
folded += code >= 65 && code <= 90 ? String.fromCharCode(code + 32) : value[index];
|
|
108
|
+
}
|
|
109
|
+
return folded;
|
|
110
|
+
}
|
|
76
111
|
//# sourceMappingURL=identifiers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../src/util/identifiers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,iBAAiB,GAAG,KAAK;IAC3E,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QAC5C,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,iBAAiB,IAAI,SAAS,IAAI,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,GAAG,CAAA,wDAAwD,CAAC;AAE/G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,GAAG,CAAA,oFAAoF,CAAC;AAE7I,6EAA6E;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA,sCAAsC,CAAC;AAEtF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA,0DAA0D,CAAC;AAE1G;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC,GAAG,CAAA,+CAA+C,CAAC;AAE1G,uEAAuE;AACvE,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC,GAAG,CAAA,QAAQ,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAA,sEAAsE,gCAAgC,IAAI,CAAC;AAE3J;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAAA,wDAAwD,+BAA+B,IAAI,CAAC;AAE9I;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAA,yBAAyB,CAAC;AAExE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAAA,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../src/util/identifiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-language member-access, receiver, and ancestry tables for `./member-access.ts`, keyword
|
|
3
|
+
* navigation, and the detailed graph passes. Rows are keyed by language id, following the
|
|
4
|
+
* trivia-table precedent in `./trivia-tables.ts`: walkers keep the algorithms; this table keeps
|
|
5
|
+
* the per-language node types, extraction shapes, receiver keywords, and ancestry forms.
|
|
6
|
+
*
|
|
7
|
+
* Every registered language has a row. A document, style, or data format row carries only
|
|
8
|
+
* `omittedReason`; a source-language row declares each capability it has and names a one-line
|
|
9
|
+
* reason for each capability it omits, so an omission cannot flip silently.
|
|
10
|
+
* `tests/member-access-tables.test.ts` asserts both halves and re-derives every declared node
|
|
11
|
+
* type from that language's pinned grammar.
|
|
12
|
+
*/
|
|
13
|
+
/** Receiver spellings that denote the type declaring the calling member, per language. */
|
|
14
|
+
export type ReceiverKeywords = {
|
|
15
|
+
/** Keywords naming the type that declares the calling member. */
|
|
16
|
+
own: readonly string[];
|
|
17
|
+
/** Own-type keywords that name an instance rather than the type itself. */
|
|
18
|
+
instanceOwn: readonly string[];
|
|
19
|
+
/** Keywords naming a supertype of the declaring type. */
|
|
20
|
+
supertype: readonly string[];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* How one child of a member-access node is extracted: by field name with a positional fallback,
|
|
24
|
+
* by plain child index, or by named-child index with a plain-child fallback.
|
|
25
|
+
*/
|
|
26
|
+
export type MemberAccessChild = {
|
|
27
|
+
field: string;
|
|
28
|
+
fallbackIndex: number;
|
|
29
|
+
} | {
|
|
30
|
+
index: number;
|
|
31
|
+
} | {
|
|
32
|
+
namedIndex: number;
|
|
33
|
+
};
|
|
34
|
+
export type MemberAccessShape = {
|
|
35
|
+
/**
|
|
36
|
+
* Member-access node types the shape applies to. A shape without `nodeTypes` is the language's
|
|
37
|
+
* fallback for every other member-access node and must be the last shape in its row.
|
|
38
|
+
*/
|
|
39
|
+
nodeTypes?: readonly string[];
|
|
40
|
+
object: MemberAccessChild;
|
|
41
|
+
/** `{ navigation: true }` defers to `getNavigationExpressionProperty`'s navigation-suffix walk. */
|
|
42
|
+
property: MemberAccessChild | {
|
|
43
|
+
navigation: true;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
export type ReceiverAncestryRelation = "extends" | "implements" | "trait" | "mixin";
|
|
47
|
+
export type ReceiverAncestorClause = {
|
|
48
|
+
/** Syntax node that contains one or more declared ancestors. */
|
|
49
|
+
nodeType: string;
|
|
50
|
+
/** Detailed-graph edge label, or superclass-first classification for mixed base lists. */
|
|
51
|
+
relation: ReceiverAncestryRelation | "superclass-first";
|
|
52
|
+
/** Descend into this field before collecting ancestors. */
|
|
53
|
+
field?: string;
|
|
54
|
+
/** Treat every matching clause separately. */
|
|
55
|
+
each?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Which ancestors a `super`/`parent`/`base` receiver may address. Own-type receivers use every
|
|
58
|
+
* declaration in the clause.
|
|
59
|
+
*/
|
|
60
|
+
supertype?: "all" | "first-child" | "first-match";
|
|
61
|
+
};
|
|
62
|
+
export type ReceiverAncestorEmbed = {
|
|
63
|
+
body: string;
|
|
64
|
+
memberList?: string;
|
|
65
|
+
member: string;
|
|
66
|
+
typeField?: string;
|
|
67
|
+
nameless?: boolean;
|
|
68
|
+
};
|
|
69
|
+
export type ReceiverAncestry = {
|
|
70
|
+
clauses: readonly ReceiverAncestorClause[];
|
|
71
|
+
embeds?: readonly ReceiverAncestorEmbed[];
|
|
72
|
+
/** Call names that add mixins to the declaring type, such as Ruby `include` and `prepend`. */
|
|
73
|
+
mixinCalls?: readonly string[];
|
|
74
|
+
};
|
|
75
|
+
export type MemberAccessRow = {
|
|
76
|
+
/** Why the language has no member-access capability at all; only document, style, and data formats set it. */
|
|
77
|
+
omittedReason?: string;
|
|
78
|
+
/** Member-expression node type for a support whose `nodeTypes.memberExpression` capability is absent. */
|
|
79
|
+
memberExpressionType?: string;
|
|
80
|
+
/** Node types added to the shared traversal base set in `memberAccessTraversalTypes`. */
|
|
81
|
+
extraTraversalTypes?: readonly string[];
|
|
82
|
+
/** Node types added to the shared generic member-access list in `isMemberAccessNode`. */
|
|
83
|
+
extraMemberAccessTypes?: readonly string[];
|
|
84
|
+
/** Extraction shapes for `getMemberAccessParts`, tried in order before the shared generic default. */
|
|
85
|
+
memberAccessShapes?: readonly MemberAccessShape[];
|
|
86
|
+
/** Why the language declares no shapes of its own: the shared generic default is its extraction. */
|
|
87
|
+
memberAccessOmittedReason?: string;
|
|
88
|
+
/** Kotlin fallback: a degraded `navigation_suffix` leaves the property as the expression's last named child. */
|
|
89
|
+
navigationFallbackLastChild?: true;
|
|
90
|
+
/** Identifiers that name the type declaring the calling member. */
|
|
91
|
+
receiverKeywords?: ReceiverKeywords;
|
|
92
|
+
/**
|
|
93
|
+
* A receiver keyword may also be spelled as a zero-argument call to that keyword identifier
|
|
94
|
+
* (Python's `super()`, which has no bare-name form unlike `self`/`cls`). Absent for every
|
|
95
|
+
* language whose receiver keywords are always bare names.
|
|
96
|
+
*/
|
|
97
|
+
receiverKeywordCallShape?: true;
|
|
98
|
+
/** Why the language declares no receiver keywords. */
|
|
99
|
+
receiverKeywordsOmittedReason?: string;
|
|
100
|
+
/** Language syntax that declares ancestors visible to own-type and supertype receivers. */
|
|
101
|
+
receiverAncestry?: ReceiverAncestry;
|
|
102
|
+
/**
|
|
103
|
+
* Member syntax can name a free function (`!isMember`): Kotlin extensions
|
|
104
|
+
* (`fun Widget.describe()`) and Go methods, which are indexed as free functions.
|
|
105
|
+
* Swift extensions, Rust methods, and C# extension methods are `isMember`, so they
|
|
106
|
+
* stay on the member path and do not set this flag.
|
|
107
|
+
*/
|
|
108
|
+
memberCallNamesFreeFunction?: true;
|
|
109
|
+
/** Why a member call cannot name a free function in this language. */
|
|
110
|
+
memberCallNamesFreeFunctionOmittedReason?: string;
|
|
111
|
+
};
|
|
112
|
+
export declare const MEMBER_ACCESS_ROWS: Record<string, MemberAccessRow>;
|
|
113
|
+
/** Every language that declares receiver keywords, guarded by the registry-consistency test. */
|
|
114
|
+
export declare const receiverKeywordLanguageIds: readonly string[];
|
|
115
|
+
/** Languages that emit proven receiver `calls` edges from the shared keyword table. */
|
|
116
|
+
export declare function supportsReceiverCallEdges(languageId: string): boolean;
|
|
117
|
+
/** Languages where goto and references require proven receivers and do not fall back to a bare name. */
|
|
118
|
+
export declare function supportsReceiverMemberNavigation(languageId: string): boolean;
|
|
119
|
+
export declare function keywordReceiverKind(languageId: string, receiverName: string): "own" | "supertype" | null;
|
|
120
|
+
/**
|
|
121
|
+
* Instance-own keywords (`this`, `$this`) require instance members.
|
|
122
|
+
* Other own keywords name the declaring type and may still bind instance members
|
|
123
|
+
* (PHP `self::` / `static::` late static binding), so they do not force a static-only filter.
|
|
124
|
+
*/
|
|
125
|
+
export declare function ownReceiverMemberScope(languageId: string, receiverName: string): "instance" | "any" | null;
|
|
126
|
+
export declare function isKeywordReceiver(languageId: string, receiverName: string): boolean;
|
|
127
|
+
/** Whether `receiver.name()` can refer to a free function rather than only a member. */
|
|
128
|
+
export declare function memberSyntaxNamesFreeFunction(languageId: string): boolean;
|
|
129
|
+
//# sourceMappingURL=member-access-tables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"member-access-tables.d.ts","sourceRoot":"","sources":["../../src/util/member-access-tables.ts"],"names":[],"mappings":"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"}
|