cgraphx 2.0.1 β 2.0.3
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/dist/.claude-template/FLOW-MAP.md +7 -5
- package/dist/.claude-template/commands/end.md +1 -1
- package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +2 -1
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +4 -2
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +5 -2
- package/dist/.claude-template/skills/iboc-check/SKILL.md +116 -0
- package/dist/.claude-template/skills/iboc-check/filler-prompt.md +75 -0
- package/dist/.claude-template/skills/implementation/SKILL.md +7 -0
- package/dist/.claude-template/skills/init-project-guides/SKILL.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
- package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
- package/dist/.claude-template/skills/write-api/assets/template-request.bru +3 -3
- package/dist/.claude-template/skills/write-api/references/bru-format.md +6 -6
- package/dist/.claude-template/skills/write-delivery-guide/SKILL.md +97 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-change-type.md +120 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-multi-role-flow.md +148 -0
- package/dist/.claude-template/skills/write-unit-test-code/SKILL.md +23 -6
- package/dist/core/code/engine/cli/analyze-config.js +320 -0
- package/dist/core/code/engine/cli/analyze.js +1086 -0
- package/dist/core/code/engine/cli/cli-message.js +83 -0
- package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
- package/dist/core/code/engine/cli/embedding-dims.js +43 -0
- package/dist/core/code/engine/cli/format-elapsed.js +12 -0
- package/dist/core/code/engine/cli/help-i18n.js +144 -0
- package/dist/core/code/engine/cli/i18n/en.js +110 -0
- package/dist/core/code/engine/cli/i18n/index.js +47 -0
- package/dist/core/code/engine/cli/i18n/resources.js +9 -0
- package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
- package/dist/core/code/engine/cli/lazy-action.js +67 -0
- package/dist/core/code/engine/cli/optional-grammars.js +136 -0
- package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
- package/dist/core/code/engine/cli/status.js +156 -0
- package/dist/core/code/engine/cli/tool.js +384 -0
- package/dist/core/code/engine/config/ignore-service.js +511 -0
- package/dist/core/code/engine/config/supported-languages.js +17 -0
- package/dist/core/code/engine/core/analysis-features.js +64 -0
- package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
- package/dist/core/code/engine/core/git-staleness.js +180 -0
- package/dist/core/code/engine/core/graph/graph.js +180 -0
- package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
- package/dist/core/code/engine/core/graph/types.js +2 -0
- package/dist/core/code/engine/core/index-freshness.js +12 -0
- package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
- package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
- package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
- package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
- package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
- package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
- package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
- package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
- package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
- package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
- package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
- package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
- package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
- package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
- package/dist/core/code/engine/core/ingestion/constants.js +26 -0
- package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
- package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
- package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
- package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
- package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
- package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
- package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
- package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
- package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
- package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
- package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
- package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
- package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
- package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
- package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
- package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
- package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
- package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
- package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
- package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
- package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
- package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
- package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
- package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
- package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
- package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
- package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
- package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
- package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
- package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
- package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
- package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
- package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
- package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
- package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
- package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
- package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
- package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
- package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
- package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
- package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
- package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
- package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
- package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
- package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
- package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
- package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
- package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
- package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
- package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
- package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
- package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
- package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
- package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
- package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
- package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
- package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
- package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
- package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
- package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
- package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
- package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
- package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
- package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
- package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
- package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
- package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
- package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
- package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
- package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
- package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
- package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
- package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
- package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
- package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
- package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
- package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
- package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
- package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
- package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
- package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
- package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
- package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
- package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
- package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
- package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
- package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
- package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
- package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
- package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
- package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
- package/dist/core/code/engine/core/lbug/native-check.js +435 -0
- package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
- package/dist/core/code/engine/core/lbug/query-params.js +25 -0
- package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
- package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
- package/dist/core/code/engine/core/lbug/schema.js +771 -0
- package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
- package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
- package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
- package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
- package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
- package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
- package/dist/core/code/engine/core/logger.js +339 -0
- package/dist/core/code/engine/core/platform/capabilities.js +91 -0
- package/dist/core/code/engine/core/run-analyze.js +1098 -0
- package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
- package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
- package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
- package/dist/core/code/engine/lib/utils.js +121 -0
- package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
- package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
- package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
- package/dist/core/code/engine/mcp/local/limits.js +15 -0
- package/dist/core/code/engine/mcp/local/line-display.js +6 -0
- package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
- package/dist/core/code/engine/storage/branch-index.js +72 -0
- package/dist/core/code/engine/storage/file-hash.js +95 -0
- package/dist/core/code/engine/storage/fs-atomic.js +34 -0
- package/dist/core/code/engine/storage/git.js +555 -0
- package/dist/core/code/engine/storage/index-lock.js +664 -0
- package/dist/core/code/engine/storage/parse-cache.js +650 -0
- package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
- package/dist/core/code/engine/storage/repo-manager.js +1061 -0
- package/dist/core/code/engine/storage/scope-index-store.js +247 -0
- package/dist/core/code/engine/types/pipeline.js +2 -0
- package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
- package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
- package/dist/core/code/shared/graph/types.js +8 -0
- package/dist/core/code/shared/index.js +105 -0
- package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
- package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
- package/dist/core/code/shared/integrations/retry.js +70 -0
- package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
- package/dist/core/code/shared/language-detection.js +162 -0
- package/dist/core/code/shared/languages.js +27 -0
- package/dist/core/code/shared/lbug/schema-constants.js +98 -0
- package/dist/core/code/shared/mro-strategy.js +2 -0
- package/dist/core/code/shared/pipeline.js +5 -0
- package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
- package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
- package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
- package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
- package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
- package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
- package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
- package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
- package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
- package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
- package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
- package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
- package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
- package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
- package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
- package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
- package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
- package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
- package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
- package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
- package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
- package/dist/core/code/shared/scope-resolution/types.js +25 -0
- package/dist/core/code/shared/test-helpers.js +17 -0
- package/dist/core/code/vendor/leiden/index.cjs +355 -0
- package/dist/core/code/vendor/leiden/utils.cjs +419 -0
- package/dist/core/features/scanner.d.ts +2 -0
- package/dist/core/features/scanner.d.ts.map +1 -1
- package/dist/core/features/scanner.js +27 -6
- package/dist/core/features/scanner.js.map +1 -1
- package/dist/core/timeline/cli.d.ts.map +1 -1
- package/dist/core/timeline/cli.js +13 -6
- package/dist/core/timeline/cli.js.map +1 -1
- package/dist/core/timeline/debris.d.ts +20 -0
- package/dist/core/timeline/debris.d.ts.map +1 -0
- package/dist/core/timeline/debris.js +124 -0
- package/dist/core/timeline/debris.js.map +1 -0
- package/dist/core/timeline/hook-runner.d.ts.map +1 -1
- package/dist/core/timeline/hook-runner.js +3 -1
- package/dist/core/timeline/hook-runner.js.map +1 -1
- package/dist/core/timeline/hooks.d.ts.map +1 -1
- package/dist/core/timeline/hooks.js +13 -5
- package/dist/core/timeline/hooks.js.map +1 -1
- package/dist/core/timeline/installer.d.ts +2 -0
- package/dist/core/timeline/installer.d.ts.map +1 -1
- package/dist/core/timeline/installer.js +12 -0
- package/dist/core/timeline/installer.js.map +1 -1
- package/dist/core/timeline/project-root.d.ts +21 -0
- package/dist/core/timeline/project-root.d.ts.map +1 -0
- package/dist/core/timeline/project-root.js +83 -0
- package/dist/core/timeline/project-root.js.map +1 -0
- package/package.json +1 -1
package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.preprocessSwiftConditionalDirectives = preprocessSwiftConditionalDirectives;
|
|
4
|
+
/**
|
|
5
|
+
* A conditional-compilation directive occupying a whole line.
|
|
6
|
+
*
|
|
7
|
+
* `[^\S\r\n]` (horizontal whitespace) rather than `[ \t]` so NBSP /
|
|
8
|
+
* ideographic-space indentation and a leading BOM are recognized too. Leading
|
|
9
|
+
* whitespace is *not* required: nesting is decided from the scanner's brace
|
|
10
|
+
* depth, not from indentation (a column-0 `#if` inside a class body is exactly
|
|
11
|
+
* the shape that loses its enclosing declaration).
|
|
12
|
+
*/
|
|
13
|
+
const SWIFT_CONDITIONAL_DIRECTIVE_RE = /^[^\S\r\n]*#(if|elseif|else|endif)\b[^\r\n]*$/;
|
|
14
|
+
/**
|
|
15
|
+
* Cheap whole-file precondition, mirroring `stripUeMacros`'s `HAS_UE_HINT`.
|
|
16
|
+
* Derived from the line pattern so the two can never drift apart.
|
|
17
|
+
*/
|
|
18
|
+
const HAS_CONDITIONAL_DIRECTIVE_HINT = new RegExp(SWIFT_CONDITIONAL_DIRECTIVE_RE.source, 'm');
|
|
19
|
+
function hasTripleQuoteAt(line, index) {
|
|
20
|
+
return line.startsWith('"""', index);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Length of the multiline terminator at `index`, or 0.
|
|
24
|
+
*
|
|
25
|
+
* A plain `"""` string always closes at `"""`, whatever follows it β an
|
|
26
|
+
* adjacent `#` is the next token, not part of the delimiter. A raw `#"""`
|
|
27
|
+
* string closes at `"""` followed by *at least* its own pound count.
|
|
28
|
+
*/
|
|
29
|
+
function matchingMultilineCloseLength(line, index, poundCount) {
|
|
30
|
+
if (!hasTripleQuoteAt(line, index))
|
|
31
|
+
return 0;
|
|
32
|
+
if (poundCount === 0)
|
|
33
|
+
return 3;
|
|
34
|
+
return line.startsWith('#'.repeat(poundCount), index + 3) ? 3 + poundCount : 0;
|
|
35
|
+
}
|
|
36
|
+
function skipRegularString(line, startIndex, rawPoundCount) {
|
|
37
|
+
const endPounds = '#'.repeat(rawPoundCount);
|
|
38
|
+
let index = startIndex + (rawPoundCount > 0 ? rawPoundCount + 1 : 1);
|
|
39
|
+
while (index < line.length) {
|
|
40
|
+
if (line[index] === '"') {
|
|
41
|
+
if (rawPoundCount === 0)
|
|
42
|
+
return index + 1;
|
|
43
|
+
if (line.startsWith(endPounds, index + 1))
|
|
44
|
+
return index + 1 + rawPoundCount;
|
|
45
|
+
}
|
|
46
|
+
if (rawPoundCount === 0 && line[index] === '\\')
|
|
47
|
+
index++;
|
|
48
|
+
index++;
|
|
49
|
+
}
|
|
50
|
+
return line.length;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Skip an extended regex literal (`#/β¦/#`), whose body may legally contain
|
|
54
|
+
* `/*` β which would otherwise open a block comment that never closes.
|
|
55
|
+
* `slashIndex` points at the `/` that follows the opening pound run.
|
|
56
|
+
*/
|
|
57
|
+
function skipExtendedRegexLiteral(line, slashIndex, poundCount) {
|
|
58
|
+
const closePounds = '#'.repeat(poundCount);
|
|
59
|
+
let index = slashIndex + 1;
|
|
60
|
+
while (index < line.length) {
|
|
61
|
+
if (line[index] === '\\') {
|
|
62
|
+
index += 2;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (line[index] === '/' && line.startsWith(closePounds, index + 1)) {
|
|
66
|
+
return index + 1 + poundCount;
|
|
67
|
+
}
|
|
68
|
+
index++;
|
|
69
|
+
}
|
|
70
|
+
return line.length;
|
|
71
|
+
}
|
|
72
|
+
function scanSwiftLine(line, state) {
|
|
73
|
+
let index = 0;
|
|
74
|
+
while (index < line.length) {
|
|
75
|
+
if (state.blockCommentDepth > 0) {
|
|
76
|
+
if (line.startsWith('/*', index)) {
|
|
77
|
+
state.blockCommentDepth++;
|
|
78
|
+
index += 2;
|
|
79
|
+
}
|
|
80
|
+
else if (line.startsWith('*/', index)) {
|
|
81
|
+
state.blockCommentDepth--;
|
|
82
|
+
index += 2;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
index++;
|
|
86
|
+
}
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (state.multilineStringPounds !== null) {
|
|
90
|
+
const closeLength = matchingMultilineCloseLength(line, index, state.multilineStringPounds);
|
|
91
|
+
if (closeLength > 0) {
|
|
92
|
+
state.multilineStringPounds = null;
|
|
93
|
+
index += closeLength;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
// Non-raw multiline strings honour backslash escapes, so `\"""` is string
|
|
97
|
+
// data and not a terminator. Raw strings escape with `\#`, so a bare
|
|
98
|
+
// backslash there is literal.
|
|
99
|
+
index += state.multilineStringPounds === 0 && line[index] === '\\' ? 2 : 1;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (line.startsWith('//', index))
|
|
103
|
+
return;
|
|
104
|
+
if (line.startsWith('/*', index)) {
|
|
105
|
+
state.blockCommentDepth = 1;
|
|
106
|
+
index += 2;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (line[index] === '#') {
|
|
110
|
+
// Count the pound run exactly once and always advance past it, so a long
|
|
111
|
+
// run of bare `#` stays linear instead of being re-walked per character.
|
|
112
|
+
let poundCount = 1;
|
|
113
|
+
while (line[index + poundCount] === '#')
|
|
114
|
+
poundCount++;
|
|
115
|
+
const afterPounds = index + poundCount;
|
|
116
|
+
if (hasTripleQuoteAt(line, afterPounds)) {
|
|
117
|
+
state.multilineStringPounds = poundCount;
|
|
118
|
+
index = afterPounds + 3;
|
|
119
|
+
}
|
|
120
|
+
else if (line[afterPounds] === '"') {
|
|
121
|
+
index = skipRegularString(line, index, poundCount);
|
|
122
|
+
}
|
|
123
|
+
else if (line[afterPounds] === '/') {
|
|
124
|
+
index = skipExtendedRegexLiteral(line, afterPounds, poundCount);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
index = afterPounds;
|
|
128
|
+
}
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (hasTripleQuoteAt(line, index)) {
|
|
132
|
+
state.multilineStringPounds = 0;
|
|
133
|
+
index += 3;
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (line[index] === '"') {
|
|
137
|
+
index = skipRegularString(line, index, 0);
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
if (line[index] === '{')
|
|
141
|
+
state.braceDepth++;
|
|
142
|
+
else if (line[index] === '}')
|
|
143
|
+
state.braceDepth--;
|
|
144
|
+
index++;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Blank nested Swift conditional-compilation directives before parsing.
|
|
149
|
+
*
|
|
150
|
+
* tree-sitter-swift 0.7.1 does not admit `directive` as a `class_body` child
|
|
151
|
+
* (`vendor/tree-sitter-swift/src/node-types.json`), so error recovery can
|
|
152
|
+
* discard the enclosing declaration. Replacing only the directive text with
|
|
153
|
+
* spaces preserves `.length`, line endings, and every declaration offset.
|
|
154
|
+
*
|
|
155
|
+
* ponytail: delete this file (and the `preprocessSource` wiring in `swift.ts`)
|
|
156
|
+
* once a vendored tree-sitter-swift release includes upstream PR #583 ("Allow
|
|
157
|
+
* #if/#elseif/#else/#endif directives inside type bodies"); see also upstream
|
|
158
|
+
* issue #298 and PR #599. `.github/vendored-grammars.json` has no `"hold"` on
|
|
159
|
+
* swift, so the bump bot will land that release on its own.
|
|
160
|
+
*
|
|
161
|
+
* A directive group is blanked only when **all** of these hold:
|
|
162
|
+
*
|
|
163
|
+
* - it opens at `braceDepth > 0` β nesting, not indentation, is what the
|
|
164
|
+
* grammar rejects; top-level directives are valid source-file members and
|
|
165
|
+
* are left intact
|
|
166
|
+
* - it is not inside a multiline string literal or a block comment β blanking
|
|
167
|
+
* a line that carries a block-comment terminator would un-terminate the
|
|
168
|
+
* comment and swallow the rest of the file, and blanking inside a literal
|
|
169
|
+
* would rewrite program data
|
|
170
|
+
* - every branch is brace-balanced. A group that splits a declaration header
|
|
171
|
+
* (`#if` β¦ `func f() async {` β¦ `#else` β¦ `func f() {` β¦ `#endif`) leaves
|
|
172
|
+
* one unmatched `{` once both branches survive, which re-parents every
|
|
173
|
+
* later top-level declaration. Such a group degrades to the pre-fix
|
|
174
|
+
* behavior instead.
|
|
175
|
+
*
|
|
176
|
+
* Known residuals, all of which degrade to "directive left in place" rather
|
|
177
|
+
* than to corrupted output: string interpolation is not parsed with full Swift
|
|
178
|
+
* expression fidelity, so a nested multiline string inside an interpolation can
|
|
179
|
+
* confuse the scanner; a bare `/β¦/` regex literal containing `/*` opens a
|
|
180
|
+
* phantom block comment; and a multiline extended regex literal is treated as
|
|
181
|
+
* ending at its first line.
|
|
182
|
+
*
|
|
183
|
+
* Byte length is *not* preserved when a blanked directive line carries
|
|
184
|
+
* non-ASCII trailing text (` #if os(iOS) // ζ₯ζ¬θͺ π₯` is 23 UTF-16 code units
|
|
185
|
+
* either way, but shrinks from 31 UTF-8 bytes to 23). C++ sidesteps this
|
|
186
|
+
* because UE macro tokens are ASCII-only; a Swift directive line can carry any
|
|
187
|
+
* trailing comment. Per the `LanguageProvider.preprocessSource` contract this is
|
|
188
|
+
* safe only while no consumer slices the original UTF-8 bytes by `startIndex`:
|
|
189
|
+
* node-tree-sitter reports UTF-16 code-unit indices, and every in-process
|
|
190
|
+
* consumer slices the JS string, whose `.length` *is* preserved.
|
|
191
|
+
*
|
|
192
|
+
* Must stay pure and idempotent β see `LanguageProvider.preprocessSource`.
|
|
193
|
+
*/
|
|
194
|
+
function preprocessSwiftConditionalDirectives(sourceText) {
|
|
195
|
+
if (!HAS_CONDITIONAL_DIRECTIVE_HINT.test(sourceText))
|
|
196
|
+
return sourceText;
|
|
197
|
+
// Alternating [line, terminator, line, terminator, β¦, line]; joining it back
|
|
198
|
+
// reproduces the input byte for byte, including bare-`\r` endings.
|
|
199
|
+
const parts = sourceText.split(/(\r\n|\n|\r)/);
|
|
200
|
+
const state = {
|
|
201
|
+
blockCommentDepth: 0,
|
|
202
|
+
multilineStringPounds: null,
|
|
203
|
+
braceDepth: 0,
|
|
204
|
+
};
|
|
205
|
+
const openGroups = [];
|
|
206
|
+
let blankedAny = false;
|
|
207
|
+
for (let index = 0; index < parts.length; index += 2) {
|
|
208
|
+
const text = parts[index];
|
|
209
|
+
const insideLiteralOrComment = state.multilineStringPounds !== null || state.blockCommentDepth > 0;
|
|
210
|
+
const match = insideLiteralOrComment ? null : SWIFT_CONDITIONAL_DIRECTIVE_RE.exec(text);
|
|
211
|
+
const braceDepthAtStart = state.braceDepth;
|
|
212
|
+
scanSwiftLine(text, state);
|
|
213
|
+
const braceDelta = state.braceDepth - braceDepthAtStart;
|
|
214
|
+
const openGroup = openGroups[openGroups.length - 1];
|
|
215
|
+
if (match === null) {
|
|
216
|
+
if (openGroup !== undefined)
|
|
217
|
+
openGroup.currentBranchDelta += braceDelta;
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
// Directive lines are blanked as a unit, so their own braces (if any) never
|
|
221
|
+
// reach the parser and must not count toward a branch's balance.
|
|
222
|
+
if (match[1] === 'if') {
|
|
223
|
+
openGroups.push({
|
|
224
|
+
braceDepthAtStart,
|
|
225
|
+
directiveLines: [index],
|
|
226
|
+
totalDelta: 0,
|
|
227
|
+
allBranchesBalanced: true,
|
|
228
|
+
currentBranchDelta: 0,
|
|
229
|
+
});
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
// A `#else`/`#endif` with no open `#if` is malformed source β leave it be.
|
|
233
|
+
if (openGroup === undefined)
|
|
234
|
+
continue;
|
|
235
|
+
openGroup.directiveLines.push(index);
|
|
236
|
+
openGroup.totalDelta += openGroup.currentBranchDelta;
|
|
237
|
+
openGroup.allBranchesBalanced &&= openGroup.currentBranchDelta === 0;
|
|
238
|
+
openGroup.currentBranchDelta = 0;
|
|
239
|
+
if (match[1] !== 'endif')
|
|
240
|
+
continue;
|
|
241
|
+
openGroups.pop();
|
|
242
|
+
const parentGroup = openGroups[openGroups.length - 1];
|
|
243
|
+
// Every branch survives preprocessing, so the enclosing branch sees the sum
|
|
244
|
+
// β not one branch's delta.
|
|
245
|
+
if (parentGroup !== undefined)
|
|
246
|
+
parentGroup.currentBranchDelta += openGroup.totalDelta;
|
|
247
|
+
if (openGroup.braceDepthAtStart > 0 && openGroup.allBranchesBalanced) {
|
|
248
|
+
// Safe to mutate in place: every line of this group has already been
|
|
249
|
+
// scanned, and the decision never reopens.
|
|
250
|
+
for (const line of openGroup.directiveLines)
|
|
251
|
+
parts[line] = ' '.repeat(parts[line].length);
|
|
252
|
+
blankedAny = true;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return blankedAny ? parts.join('') : sourceText;
|
|
256
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Swift same-module implicit IMPORTS-edge emission for the
|
|
4
|
+
* `emitImplicitImportEdges` hook.
|
|
5
|
+
*
|
|
6
|
+
* Swift gives every file in a module (an SPM target) visibility of every
|
|
7
|
+
* other file's top-level declarations WITHOUT any `import` statement
|
|
8
|
+
* (whole-module visibility). The legacy DAG models this with FileβFile
|
|
9
|
+
* IMPORTS edges via `wireSwiftImplicitImports`; under registry-primary
|
|
10
|
+
* that wirer's `addImportEdge` is gated off, and the scope-resolution
|
|
11
|
+
* import pipeline (`emitImportEdges`) only materializes edges from
|
|
12
|
+
* finalized `ImportEdge`s β of which there are none here, because there
|
|
13
|
+
* is no syntactic `import`. This hook emits the missing edges directly.
|
|
14
|
+
*
|
|
15
|
+
* Module identity: Swift has no in-source `package X` marker. Module
|
|
16
|
+
* membership is the SPM target *subtree* (`Sources/<Target>/β¦`), threaded
|
|
17
|
+
* in via the SPM target map (`resolutionConfig` β `coerceSwiftTargets`)
|
|
18
|
+
* and grouped by `groupSwiftFilesBySpmTarget` β replicating legacy
|
|
19
|
+
* `groupSwiftFilesByTarget`. With no scanned source dir the map is null
|
|
20
|
+
* and all files form one `__default__` module (single-Xcode-project
|
|
21
|
+
* assumption). Every pair of distinct `.swift` files in the same module
|
|
22
|
+
* gets a directed IMPORTS edge in both directions (whole-module
|
|
23
|
+
* visibility is symmetric).
|
|
24
|
+
*
|
|
25
|
+
* Node identity + edge construction mirror the generic `emitImportEdges`
|
|
26
|
+
* convention (`graph-bridge/imports-to-edges.ts`): `generateId('File', path)`
|
|
27
|
+
* for endpoints and `generateId('IMPORTS', key)` for the relationship id,
|
|
28
|
+
* deduped by `(sourceFile -> targetFile)`. Re-invocation idempotency comes
|
|
29
|
+
* from `graph.addRelationship` id-dedup (the same `IMPORTS` id is produced
|
|
30
|
+
* for a given ordered pair), so no local `seen` set is needed.
|
|
31
|
+
*/
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.emitSwiftImplicitImportEdges = emitSwiftImplicitImportEdges;
|
|
34
|
+
const utils_js_1 = require("../../../../lib/utils.js");
|
|
35
|
+
const target_grouping_js_1 = require("./target-grouping.js");
|
|
36
|
+
function emitSwiftImplicitImportEdges(graph, parsedFiles, _nodeLookup, resolutionConfig) {
|
|
37
|
+
// Group files by SPM target subtree (the module). No-source-dir β all
|
|
38
|
+
// files in one `__default__` bucket.
|
|
39
|
+
const targets = (0, target_grouping_js_1.coerceSwiftTargets)(resolutionConfig);
|
|
40
|
+
const filesByTarget = (0, target_grouping_js_1.groupSwiftFilesBySpmTarget)(parsedFiles, (parsed) => parsed.filePath, targets);
|
|
41
|
+
for (const [, group] of filesByTarget) {
|
|
42
|
+
if (group.length < 2)
|
|
43
|
+
continue; // no siblings to import
|
|
44
|
+
for (const source of group) {
|
|
45
|
+
for (const target of group) {
|
|
46
|
+
if (source.filePath === target.filePath)
|
|
47
|
+
continue; // no self-import
|
|
48
|
+
const dedupKey = `${source.filePath}->${target.filePath}`;
|
|
49
|
+
graph.addRelationship({
|
|
50
|
+
id: (0, utils_js_1.generateId)('IMPORTS', dedupKey),
|
|
51
|
+
sourceId: (0, utils_js_1.generateId)('File', source.filePath),
|
|
52
|
+
targetId: (0, utils_js_1.generateId)('File', target.filePath),
|
|
53
|
+
type: 'IMPORTS',
|
|
54
|
+
confidence: 1.0,
|
|
55
|
+
reason: 'swift-scope: implicit module visibility',
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Decompose a Swift `import_declaration` into a `CaptureMatch` carrying
|
|
4
|
+
* the synthesized markers `@import.kind` / `@import.source` /
|
|
5
|
+
* `@import.name` / `@import.testable` that `interpretSwiftImport`
|
|
6
|
+
* consumes.
|
|
7
|
+
*
|
|
8
|
+
* Swift imports are whole-module (no named members), so this is 1:1 β
|
|
9
|
+
* one `import` produces exactly one import. The split layer exposes the
|
|
10
|
+
* module name and the `@testable` flag without pushing raw-text parsing
|
|
11
|
+
* into `interpret.ts`.
|
|
12
|
+
*
|
|
13
|
+
* import Foundation β kind=namespace, source=Foundation
|
|
14
|
+
* import Foo.Bar β kind=namespace, source=Foo (SPM target),
|
|
15
|
+
* name=Foo.Bar (full path, for reference)
|
|
16
|
+
* @testable import MyApp β kind=namespace, source=MyApp, testable=1
|
|
17
|
+
*
|
|
18
|
+
* Verified against tree-sitter-swift 0.7.1:
|
|
19
|
+
* (import_declaration
|
|
20
|
+
* (modifiers (attribute (user_type (type_identifier))))? ; @testable / @_exported
|
|
21
|
+
* (identifier (simple_identifier)+)) ; one per dotted segment
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.splitSwiftImport = splitSwiftImport;
|
|
25
|
+
const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
|
|
26
|
+
function splitSwiftImport(stmtNode) {
|
|
27
|
+
if (stmtNode.type !== 'import_declaration')
|
|
28
|
+
return null;
|
|
29
|
+
const spec = parseSwiftImport(stmtNode);
|
|
30
|
+
if (spec === null)
|
|
31
|
+
return null;
|
|
32
|
+
return buildImportMatch(stmtNode, spec);
|
|
33
|
+
}
|
|
34
|
+
function parseSwiftImport(node) {
|
|
35
|
+
let testable = false;
|
|
36
|
+
let identifierNode = null;
|
|
37
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
38
|
+
const child = node.namedChild(i);
|
|
39
|
+
if (child === null)
|
|
40
|
+
continue;
|
|
41
|
+
if (child.type === 'modifiers') {
|
|
42
|
+
// Any attribute whose text mentions `testable` flips the flag.
|
|
43
|
+
if (/\btestable\b/.test(child.text))
|
|
44
|
+
testable = true;
|
|
45
|
+
}
|
|
46
|
+
else if (child.type === 'identifier') {
|
|
47
|
+
identifierNode = child;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (identifierNode === null)
|
|
51
|
+
return null;
|
|
52
|
+
// The module path is one or more simple_identifier children, one per
|
|
53
|
+
// dotted segment. The SPM target is the FIRST segment.
|
|
54
|
+
const segments = [];
|
|
55
|
+
for (let i = 0; i < identifierNode.namedChildCount; i++) {
|
|
56
|
+
const seg = identifierNode.namedChild(i);
|
|
57
|
+
if (seg !== null && seg.type === 'simple_identifier')
|
|
58
|
+
segments.push(seg.text);
|
|
59
|
+
}
|
|
60
|
+
if (segments.length === 0) {
|
|
61
|
+
// Fall back to the raw identifier text (e.g. a grammar shape we didn't
|
|
62
|
+
// anticipate). Split on `.` to recover the target segment.
|
|
63
|
+
const raw = identifierNode.text.trim();
|
|
64
|
+
if (raw === '')
|
|
65
|
+
return null;
|
|
66
|
+
const parts = raw.split('.');
|
|
67
|
+
return { source: parts[0], fullPath: raw, testable, atNode: node };
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
source: segments[0],
|
|
71
|
+
fullPath: segments.join('.'),
|
|
72
|
+
testable,
|
|
73
|
+
atNode: node,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function buildImportMatch(stmtNode, spec) {
|
|
77
|
+
const m = {
|
|
78
|
+
'@import.statement': (0, ast_helpers_js_1.nodeToCapture)('@import.statement', stmtNode),
|
|
79
|
+
'@import.kind': (0, ast_helpers_js_1.syntheticCapture)('@import.kind', spec.atNode, 'namespace'),
|
|
80
|
+
'@import.source': (0, ast_helpers_js_1.syntheticCapture)('@import.source', spec.atNode, spec.source),
|
|
81
|
+
'@import.name': (0, ast_helpers_js_1.syntheticCapture)('@import.name', spec.atNode, spec.fullPath),
|
|
82
|
+
};
|
|
83
|
+
if (spec.testable) {
|
|
84
|
+
m['@import.testable'] = (0, ast_helpers_js_1.syntheticCapture)('@import.testable', spec.atNode, '1');
|
|
85
|
+
}
|
|
86
|
+
return m;
|
|
87
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `resolveImportTarget` adapter for the Swift `ScopeResolver`.
|
|
4
|
+
*
|
|
5
|
+
* Swift's `import ModuleName` brings in a whole SPM target / framework
|
|
6
|
+
* module. The scope-resolution contract passes only `allFilePaths` (no
|
|
7
|
+
* `SwiftPackageConfig`), so we resolve a module name to the `.swift`
|
|
8
|
+
* files under a directory segment named after the module β the SPM
|
|
9
|
+
* convention `Sources/<Module>/*.swift` (and the common
|
|
10
|
+
* `<Module>/*.swift` layout). This needs no manifest parsing.
|
|
11
|
+
*
|
|
12
|
+
* Same-module (intra-target) visibility β the bulk of Swift cross-file
|
|
13
|
+
* resolution, which needs NO `import` statement β is handled separately
|
|
14
|
+
* by `populateSwiftTargetSiblings` (see `target-siblings.ts`). This
|
|
15
|
+
* adapter only resolves EXPLICIT `import` statements (cross-module).
|
|
16
|
+
*
|
|
17
|
+
* Returns all matching files (one ImportEdge per file, like Go's
|
|
18
|
+
* package resolver) so every exported symbol in the module materializes
|
|
19
|
+
* a binding. Returns `null` for external frameworks (Foundation, UIKit,
|
|
20
|
+
* β¦) that have no in-repo directory.
|
|
21
|
+
*
|
|
22
|
+
* Performance: the directoryβfiles grouping is memoized on the stable
|
|
23
|
+
* `allFilePaths` Set identity (the same Set is threaded to every import
|
|
24
|
+
* in a run), so it is built once per run β NOT once per import. Mirrors
|
|
25
|
+
* Python's `getPythonFileIndex` WeakMap pattern (PR #1918).
|
|
26
|
+
*/
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.resolveSwiftImportTarget = resolveSwiftImportTarget;
|
|
29
|
+
const SWIFT_MODULE_INDEX_CACHE = new WeakMap();
|
|
30
|
+
function getSwiftModuleIndex(allFilePaths) {
|
|
31
|
+
const cached = SWIFT_MODULE_INDEX_CACHE.get(allFilePaths);
|
|
32
|
+
if (cached !== undefined)
|
|
33
|
+
return cached;
|
|
34
|
+
const byModule = new Map();
|
|
35
|
+
for (const raw of allFilePaths) {
|
|
36
|
+
const norm = raw.replace(/\\/g, '/');
|
|
37
|
+
if (!norm.endsWith('.swift'))
|
|
38
|
+
continue;
|
|
39
|
+
// Each interior directory segment is a candidate module name. A file
|
|
40
|
+
// `Sources/Models/User.swift` is attributed to module `Sources` and
|
|
41
|
+
// module `Models`; an `import Models` then resolves to it.
|
|
42
|
+
const segments = norm.split('/');
|
|
43
|
+
// Drop the filename (last segment); the rest are directory segments.
|
|
44
|
+
for (let i = 0; i < segments.length - 1; i++) {
|
|
45
|
+
const seg = segments[i];
|
|
46
|
+
if (seg === '')
|
|
47
|
+
continue;
|
|
48
|
+
let bucket = byModule.get(seg);
|
|
49
|
+
if (bucket === undefined) {
|
|
50
|
+
bucket = [];
|
|
51
|
+
byModule.set(seg, bucket);
|
|
52
|
+
}
|
|
53
|
+
bucket.push(raw);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const index = { byModule };
|
|
57
|
+
SWIFT_MODULE_INDEX_CACHE.set(allFilePaths, index);
|
|
58
|
+
return index;
|
|
59
|
+
}
|
|
60
|
+
function resolveSwiftImportTarget(parsedImport, workspaceIndex) {
|
|
61
|
+
const ctx = workspaceIndex;
|
|
62
|
+
// Duck-type the set (PR #1918 P2: don't `instanceof Set`).
|
|
63
|
+
const allFilePaths = ctx?.allFilePaths;
|
|
64
|
+
if (ctx === undefined ||
|
|
65
|
+
typeof ctx.fromFile !== 'string' ||
|
|
66
|
+
typeof allFilePaths?.has !== 'function' ||
|
|
67
|
+
typeof allFilePaths?.[Symbol.iterator] !== 'function') {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
// Swift import target is the SPM module name (first dotted segment).
|
|
71
|
+
const targetRaw = parsedImport.targetRaw;
|
|
72
|
+
if (targetRaw === null || targetRaw === '')
|
|
73
|
+
return null;
|
|
74
|
+
const moduleName = targetRaw.split('.')[0];
|
|
75
|
+
if (moduleName === '')
|
|
76
|
+
return null;
|
|
77
|
+
const index = getSwiftModuleIndex(ctx.allFilePaths);
|
|
78
|
+
const files = index.byModule.get(moduleName);
|
|
79
|
+
if (files === undefined || files.length === 0)
|
|
80
|
+
return null; // external framework
|
|
81
|
+
// Exclude the importer itself (a file under `Foo/` importing `Foo`).
|
|
82
|
+
const out = files.filter((f) => f !== ctx.fromFile);
|
|
83
|
+
return out.length > 0 ? out : null;
|
|
84
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Swift scope-resolution hooks (RFC #909 Ring 3, issue #937 β the final
|
|
4
|
+
* per-language migration).
|
|
5
|
+
*
|
|
6
|
+
* Public API barrel. Consumers import from this file rather than the
|
|
7
|
+
* individual modules.
|
|
8
|
+
*
|
|
9
|
+
* Module layout (each file is a single concern):
|
|
10
|
+
*
|
|
11
|
+
* - `query.ts` β tree-sitter query + lazy parser/query singletons
|
|
12
|
+
* - `captures.ts` β `emitSwiftScopeCaptures` orchestrator
|
|
13
|
+
* - `import-decomposer.ts` β each `import` β ParsedImport-shaped captures
|
|
14
|
+
* - `interpret.ts` β capture-match β `ParsedImport` / `ParsedTypeBinding`
|
|
15
|
+
* - `simple-hooks.ts` β small/no-op hooks made explicit
|
|
16
|
+
* - `receiver-binding.ts` β synthesize `self` / `super` type-bindings
|
|
17
|
+
* - `merge-bindings.ts` β Swift import-vs-local precedence
|
|
18
|
+
* - `arity.ts` β Swift arity compatibility (count-primary)
|
|
19
|
+
* - `arity-metadata.ts` β synthesize arity metadata from declarations
|
|
20
|
+
* - `import-target.ts` β `(ParsedImport, WorkspaceIndex) β file path` adapter
|
|
21
|
+
* - `target-grouping.ts` β group same-module files by SPM target subtree
|
|
22
|
+
* - `target-siblings.ts` β same-SPM-target implicit cross-file visibility
|
|
23
|
+
* - `implicit-imports.ts` β same-SPM-target FileβFile IMPORTS edges
|
|
24
|
+
* - `sibling-type-bindings.ts` β mirror sibling return-type typeBindings
|
|
25
|
+
* - `scope-resolver.ts` β `ScopeResolver` registered in `SCOPE_RESOLVERS`
|
|
26
|
+
* - `cache-stats.ts` β PROF_SCOPE_RESOLUTION cache hit/miss counters
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.swiftReceiverBinding = exports.swiftImportOwningScope = exports.swiftBindingScopeFor = exports.mirrorSwiftSiblingTypeBindings = exports.emitSwiftImplicitImportEdges = exports.populateSwiftTargetSiblings = exports.coerceSwiftTargets = exports.groupSwiftFilesBySpmTarget = exports.resolveSwiftImportTarget = exports.swiftArityCompatibility = exports.swiftMergeBindings = exports.interpretSwiftTypeBinding = exports.interpretSwiftImport = exports.resetSwiftCaptureCacheStats = exports.getSwiftCaptureCacheStats = exports.emitSwiftScopeCaptures = void 0;
|
|
30
|
+
var captures_js_1 = require("./captures.js");
|
|
31
|
+
Object.defineProperty(exports, "emitSwiftScopeCaptures", { enumerable: true, get: function () { return captures_js_1.emitSwiftScopeCaptures; } });
|
|
32
|
+
var cache_stats_js_1 = require("./cache-stats.js");
|
|
33
|
+
Object.defineProperty(exports, "getSwiftCaptureCacheStats", { enumerable: true, get: function () { return cache_stats_js_1.getSwiftCaptureCacheStats; } });
|
|
34
|
+
Object.defineProperty(exports, "resetSwiftCaptureCacheStats", { enumerable: true, get: function () { return cache_stats_js_1.resetSwiftCaptureCacheStats; } });
|
|
35
|
+
var interpret_js_1 = require("./interpret.js");
|
|
36
|
+
Object.defineProperty(exports, "interpretSwiftImport", { enumerable: true, get: function () { return interpret_js_1.interpretSwiftImport; } });
|
|
37
|
+
Object.defineProperty(exports, "interpretSwiftTypeBinding", { enumerable: true, get: function () { return interpret_js_1.interpretSwiftTypeBinding; } });
|
|
38
|
+
var merge_bindings_js_1 = require("./merge-bindings.js");
|
|
39
|
+
Object.defineProperty(exports, "swiftMergeBindings", { enumerable: true, get: function () { return merge_bindings_js_1.swiftMergeBindings; } });
|
|
40
|
+
var arity_js_1 = require("./arity.js");
|
|
41
|
+
Object.defineProperty(exports, "swiftArityCompatibility", { enumerable: true, get: function () { return arity_js_1.swiftArityCompatibility; } });
|
|
42
|
+
var import_target_js_1 = require("./import-target.js");
|
|
43
|
+
Object.defineProperty(exports, "resolveSwiftImportTarget", { enumerable: true, get: function () { return import_target_js_1.resolveSwiftImportTarget; } });
|
|
44
|
+
var target_grouping_js_1 = require("./target-grouping.js");
|
|
45
|
+
Object.defineProperty(exports, "groupSwiftFilesBySpmTarget", { enumerable: true, get: function () { return target_grouping_js_1.groupSwiftFilesBySpmTarget; } });
|
|
46
|
+
Object.defineProperty(exports, "coerceSwiftTargets", { enumerable: true, get: function () { return target_grouping_js_1.coerceSwiftTargets; } });
|
|
47
|
+
var target_siblings_js_1 = require("./target-siblings.js");
|
|
48
|
+
Object.defineProperty(exports, "populateSwiftTargetSiblings", { enumerable: true, get: function () { return target_siblings_js_1.populateSwiftTargetSiblings; } });
|
|
49
|
+
var implicit_imports_js_1 = require("./implicit-imports.js");
|
|
50
|
+
Object.defineProperty(exports, "emitSwiftImplicitImportEdges", { enumerable: true, get: function () { return implicit_imports_js_1.emitSwiftImplicitImportEdges; } });
|
|
51
|
+
var sibling_type_bindings_js_1 = require("./sibling-type-bindings.js");
|
|
52
|
+
Object.defineProperty(exports, "mirrorSwiftSiblingTypeBindings", { enumerable: true, get: function () { return sibling_type_bindings_js_1.mirrorSwiftSiblingTypeBindings; } });
|
|
53
|
+
var simple_hooks_js_1 = require("./simple-hooks.js");
|
|
54
|
+
Object.defineProperty(exports, "swiftBindingScopeFor", { enumerable: true, get: function () { return simple_hooks_js_1.swiftBindingScopeFor; } });
|
|
55
|
+
Object.defineProperty(exports, "swiftImportOwningScope", { enumerable: true, get: function () { return simple_hooks_js_1.swiftImportOwningScope; } });
|
|
56
|
+
Object.defineProperty(exports, "swiftReceiverBinding", { enumerable: true, get: function () { return simple_hooks_js_1.swiftReceiverBinding; } });
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Capture-match β semantic-shape interpreters for Swift.
|
|
4
|
+
*
|
|
5
|
+
* - `interpretSwiftImport` β `ParsedImport`
|
|
6
|
+
* - `interpretSwiftTypeBinding` β `ParsedTypeBinding`
|
|
7
|
+
*
|
|
8
|
+
* Import matches arrive pre-decomposed by `emitSwiftScopeCaptures` (one
|
|
9
|
+
* import per match, with synthesized `@import.kind/source/name` markers
|
|
10
|
+
* and an optional `@import.testable` flag). Type-binding matches arrive
|
|
11
|
+
* from the raw query captures β each `@type-binding.*` anchor carries
|
|
12
|
+
* `@type-binding.name` + `@type-binding.type`.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.interpretSwiftImport = interpretSwiftImport;
|
|
16
|
+
exports.interpretSwiftTypeBinding = interpretSwiftTypeBinding;
|
|
17
|
+
// βββ interpretImport ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
18
|
+
function interpretSwiftImport(captures) {
|
|
19
|
+
const sourceCap = captures['@import.source'];
|
|
20
|
+
if (sourceCap === undefined)
|
|
21
|
+
return null;
|
|
22
|
+
// Swift imports are whole-module (wildcard semantics): `import Foundation`
|
|
23
|
+
// brings the entire module into scope, no named members. The SPM target
|
|
24
|
+
// (first dotted segment) is the resolution target; the full path is kept
|
|
25
|
+
// as importedName for reference. `@testable` resolves identically to a
|
|
26
|
+
// plain import (same module is visible in test scope).
|
|
27
|
+
const source = sourceCap.text;
|
|
28
|
+
const fullPath = captures['@import.name']?.text ?? source;
|
|
29
|
+
return {
|
|
30
|
+
kind: 'namespace',
|
|
31
|
+
localName: source,
|
|
32
|
+
importedName: fullPath,
|
|
33
|
+
targetRaw: source,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// βββ interpretTypeBinding βββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
37
|
+
function interpretSwiftTypeBinding(captures) {
|
|
38
|
+
const nameCap = captures['@type-binding.name'];
|
|
39
|
+
const typeCap = captures['@type-binding.type'];
|
|
40
|
+
if (nameCap === undefined || typeCap === undefined)
|
|
41
|
+
return null;
|
|
42
|
+
// Normalize so receiver-typed resolution treats these identically:
|
|
43
|
+
// `User?` / `User!` β User (optional / IUO)
|
|
44
|
+
// `[User]` β User (array sugar)
|
|
45
|
+
// `Array<User>` / `Optional<User>` β User (single-arg generic)
|
|
46
|
+
// `Foundation.URL` β URL (qualifier)
|
|
47
|
+
const rawType = stripQualifier(stripGeneric(stripArraySugar(stripOptional(typeCap.text.trim()))));
|
|
48
|
+
let source = 'parameter-annotation';
|
|
49
|
+
if (captures['@type-binding.self'] !== undefined)
|
|
50
|
+
source = 'self';
|
|
51
|
+
else if (captures['@type-binding.constructor'] !== undefined)
|
|
52
|
+
source = 'constructor-inferred';
|
|
53
|
+
else if (captures['@type-binding.annotation'] !== undefined)
|
|
54
|
+
source = 'annotation';
|
|
55
|
+
else if (captures['@type-binding.alias'] !== undefined)
|
|
56
|
+
source = 'assignment-inferred';
|
|
57
|
+
else if (captures['@type-binding.return'] !== undefined)
|
|
58
|
+
source = 'return-annotation';
|
|
59
|
+
return { boundName: nameCap.text, rawTypeName: rawType, source };
|
|
60
|
+
}
|
|
61
|
+
/** `User?` / `User!` β `User`. */
|
|
62
|
+
function stripOptional(text) {
|
|
63
|
+
if (text.endsWith('?') || text.endsWith('!'))
|
|
64
|
+
return text.slice(0, -1).trim();
|
|
65
|
+
return text;
|
|
66
|
+
}
|
|
67
|
+
/** `[User]` β `User` (array sugar). `[K: V]` (dictionary) is left alone β
|
|
68
|
+
* element semantics aren't unambiguous. */
|
|
69
|
+
function stripArraySugar(text) {
|
|
70
|
+
if (text.startsWith('[') && text.endsWith(']') && !text.includes(':')) {
|
|
71
|
+
return text.slice(1, -1).trim();
|
|
72
|
+
}
|
|
73
|
+
return text;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Unwrap a single-arg generic collection wrapper β `Array<User>`,
|
|
77
|
+
* `Optional<User>`, `Set<User>` β to its element type. Mirrors C#'s
|
|
78
|
+
* `stripGeneric`. Multi-arg generics (`Dictionary<K, V>`,
|
|
79
|
+
* `Result<T, E>`) are left alone.
|
|
80
|
+
*/
|
|
81
|
+
function stripGeneric(text) {
|
|
82
|
+
const single = text.match(/^(?:[A-Za-z_][A-Za-z0-9_.]*\.)?(?:Array|Optional|Set|ContiguousArray|ArraySlice)<([^,<>]+)>$/);
|
|
83
|
+
if (single !== null)
|
|
84
|
+
return single[1].trim();
|
|
85
|
+
return text;
|
|
86
|
+
}
|
|
87
|
+
/** `Foundation.URL` β `URL`. */
|
|
88
|
+
function stripQualifier(text) {
|
|
89
|
+
const lastDot = text.lastIndexOf('.');
|
|
90
|
+
if (lastDot === -1)
|
|
91
|
+
return text;
|
|
92
|
+
return text.slice(lastDot + 1);
|
|
93
|
+
}
|