gitnexus 1.6.11-rc.8 → 1.6.11
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 +95 -26
- package/dist/_shared/graph/types.d.ts +81 -2
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
- package/dist/_shared/language-detection.d.ts.map +1 -1
- package/dist/_shared/language-detection.js +2 -0
- package/dist/_shared/language-detection.js.map +1 -1
- package/dist/_shared/languages.d.ts +2 -1
- package/dist/_shared/languages.d.ts.map +1 -1
- package/dist/_shared/languages.js +1 -0
- package/dist/_shared/languages.js.map +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts +2 -2
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +4 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +1 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/language-classification.d.ts +3 -0
- package/dist/_shared/scope-resolution/language-classification.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/language-classification.js +4 -0
- package/dist/_shared/scope-resolution/language-classification.js.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +10 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +15 -0
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +4 -0
- package/dist/cli/ai-context.js +90 -14
- package/dist/cli/analyze-config.js +14 -0
- package/dist/cli/analyze-options.d.ts +14 -0
- package/dist/cli/analyze-watch.d.ts +20 -0
- package/dist/cli/analyze-watch.js +434 -0
- package/dist/cli/analyze.js +27 -9
- package/dist/cli/auto-sync.d.ts +1 -0
- package/dist/cli/auto-sync.js +107 -0
- package/dist/cli/command-banner.d.ts +15 -0
- package/dist/cli/command-banner.js +42 -0
- package/dist/cli/detect-changes-format.js +21 -0
- package/dist/cli/doctor.d.ts +7 -0
- package/dist/cli/doctor.js +14 -0
- package/dist/cli/group.js +7 -1
- package/dist/cli/help-i18n.js +4 -0
- package/dist/cli/i18n/en.d.ts +18 -3
- package/dist/cli/i18n/en.js +18 -3
- package/dist/cli/i18n/resources.d.ts +33 -3
- package/dist/cli/i18n/zh-CN.d.ts +15 -0
- package/dist/cli/i18n/zh-CN.js +18 -3
- package/dist/cli/index.js +34 -7
- package/dist/cli/mcp.d.ts +15 -0
- package/dist/cli/mcp.js +44 -0
- package/dist/cli/optional-grammars.d.ts +3 -2
- package/dist/cli/optional-grammars.js +19 -3
- package/dist/cli/setup.js +41 -15
- package/dist/cli/update-notice.d.ts +34 -0
- package/dist/cli/update-notice.js +91 -0
- package/dist/cli/update.d.ts +21 -0
- package/dist/cli/update.js +93 -0
- package/dist/cli/watch.d.ts +1 -20
- package/dist/cli/watch.js +5 -371
- package/dist/core/analysis-feature-registry.d.ts +2 -0
- package/dist/core/analysis-feature-registry.js +15 -0
- package/dist/core/analyzer-identity.js +21 -3
- package/dist/core/auto-sync/analysis-worker-launch.d.ts +30 -0
- package/dist/core/auto-sync/analysis-worker-launch.js +166 -0
- package/dist/core/auto-sync/config.d.ts +33 -0
- package/dist/core/auto-sync/config.js +320 -0
- package/dist/core/auto-sync/index.d.ts +6 -0
- package/dist/core/auto-sync/index.js +6 -0
- package/dist/core/auto-sync/path-security.d.ts +9 -0
- package/dist/core/auto-sync/path-security.js +251 -0
- package/dist/core/auto-sync/repo.d.ts +1 -0
- package/dist/core/auto-sync/repo.js +6 -0
- package/dist/core/auto-sync/runner.d.ts +44 -0
- package/dist/core/auto-sync/runner.js +428 -0
- package/dist/core/auto-sync/starter.d.ts +50 -0
- package/dist/core/auto-sync/starter.js +497 -0
- package/dist/core/auto-sync/state.d.ts +37 -0
- package/dist/core/auto-sync/state.js +119 -0
- package/dist/core/group/config-parser.js +8 -1
- package/dist/core/group/cross-impact.d.ts +3 -0
- package/dist/core/group/cross-impact.js +36 -4
- package/dist/core/group/extractors/http-patterns/java.js +22 -8
- package/dist/core/group/extractors/http-patterns/kotlin.js +86 -31
- package/dist/core/group/extractors/http-patterns/node.js +145 -8
- package/dist/core/group/extractors/http-patterns/python.js +11 -7
- package/dist/core/group/extractors/http-route-extractor.js +63 -17
- package/dist/core/group/extractors/java-workspace-extractor.js +244 -31
- package/dist/core/group/group-lock.js +5 -6
- package/dist/core/group/normalization.d.ts +38 -1
- package/dist/core/group/normalization.js +59 -3
- package/dist/core/group/service.d.ts +11 -0
- package/dist/core/group/service.js +13 -1
- package/dist/core/group/storage.js +2 -2
- package/dist/core/group/sync.d.ts +24 -1
- package/dist/core/group/sync.js +46 -8
- package/dist/core/group/types.d.ts +13 -0
- package/dist/core/incremental/derived-writeback.d.ts +36 -0
- package/dist/core/incremental/derived-writeback.js +68 -0
- package/dist/core/incremental/spring-config-drift.d.ts +12 -0
- package/dist/core/incremental/spring-config-drift.js +46 -0
- package/dist/core/incremental/subgraph-extract.d.ts +7 -4
- package/dist/core/incremental/subgraph-extract.js +30 -5
- package/dist/core/ingestion/asyncapi/document.d.ts +226 -0
- package/dist/core/ingestion/asyncapi/document.js +758 -0
- package/dist/core/ingestion/asyncapi/protocol.d.ts +79 -0
- package/dist/core/ingestion/asyncapi/protocol.js +203 -0
- package/dist/core/ingestion/call-extractors/configs/zig.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/zig.js +4 -0
- package/dist/core/ingestion/call-extractors/zig-static-gating.d.ts +100 -0
- package/dist/core/ingestion/call-extractors/zig-static-gating.js +319 -0
- package/dist/core/ingestion/call-processor.js +3 -1
- package/dist/core/ingestion/class-extractors/configs/zig.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/zig.js +32 -0
- package/dist/core/ingestion/class-extractors/generic.js +4 -1
- package/dist/core/ingestion/class-types.d.ts +6 -2
- package/dist/core/ingestion/destination-key.d.ts +59 -0
- package/dist/core/ingestion/destination-key.js +61 -0
- package/dist/core/ingestion/entry-point-scoring.d.ts +6 -2
- package/dist/core/ingestion/entry-point-scoring.js +8 -44
- package/dist/core/ingestion/export-detection.d.ts +37 -0
- package/dist/core/ingestion/export-detection.js +60 -0
- package/dist/core/ingestion/field-extractors/configs/zig.d.ts +8 -0
- package/dist/core/ingestion/field-extractors/configs/zig.js +49 -0
- package/dist/core/ingestion/field-extractors/generic.d.ts +1 -1
- package/dist/core/ingestion/field-extractors/generic.js +12 -1
- package/dist/core/ingestion/frameworks/spring/actuator-runtime.d.ts +26 -0
- package/dist/core/ingestion/frameworks/spring/actuator-runtime.js +843 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +5 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +9 -0
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +8 -1
- package/dist/core/ingestion/frameworks/spring/argument-facts.d.ts +80 -0
- package/dist/core/ingestion/frameworks/spring/argument-facts.js +85 -0
- package/dist/core/ingestion/frameworks/spring/config-bindings.d.ts +1 -0
- package/dist/core/ingestion/frameworks/spring/config-bindings.js +2 -1
- package/dist/core/ingestion/frameworks/spring/destinations.d.ts +539 -0
- package/dist/core/ingestion/frameworks/spring/destinations.js +840 -0
- package/dist/core/ingestion/frameworks/spring/dynamic-lookups.d.ts +22 -0
- package/dist/core/ingestion/frameworks/spring/dynamic-lookups.js +124 -0
- package/dist/core/ingestion/frameworks/spring/message-producers.d.ts +78 -0
- package/dist/core/ingestion/frameworks/spring/message-producers.js +90 -0
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +29 -0
- package/dist/core/ingestion/frameworks/spring/vendor-prefixes.d.ts +7 -0
- package/dist/core/ingestion/frameworks/spring/vendor-prefixes.js +22 -0
- package/dist/core/ingestion/import-resolvers/configs/zig.d.ts +13 -0
- package/dist/core/ingestion/import-resolvers/configs/zig.js +26 -0
- package/dist/core/ingestion/import-resolvers/zig.d.ts +34 -0
- package/dist/core/ingestion/import-resolvers/zig.js +193 -0
- package/dist/core/ingestion/language-config.d.ts +177 -0
- package/dist/core/ingestion/language-config.js +719 -0
- package/dist/core/ingestion/language-provider.d.ts +178 -1
- package/dist/core/ingestion/language-provider.js +22 -0
- package/dist/core/ingestion/languages/csharp/razor-view-components.d.ts +62 -0
- package/dist/core/ingestion/languages/csharp/razor-view-components.js +954 -0
- package/dist/core/ingestion/languages/csharp/resolution-config.d.ts +3 -0
- package/dist/core/ingestion/languages/csharp/resolution-config.js +6 -1
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +8 -0
- package/dist/core/ingestion/languages/index.d.ts +1 -0
- package/dist/core/ingestion/languages/index.js +2 -0
- package/dist/core/ingestion/languages/java/analysis-features.d.ts +1 -1
- package/dist/core/ingestion/languages/java/analysis-features.js +14 -6
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +8 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +34 -0
- package/dist/core/ingestion/languages/java/captures.js +22 -1
- package/dist/core/ingestion/languages/java/lombok-synthesizer.d.ts +42 -0
- package/dist/core/ingestion/languages/java/lombok-synthesizer.js +439 -0
- package/dist/core/ingestion/languages/java/scope-resolver.js +2 -0
- package/dist/core/ingestion/languages/java/spring-actuator.d.ts +2 -0
- package/dist/core/ingestion/languages/java/spring-actuator.js +62 -0
- package/dist/core/ingestion/languages/java/spring-di.d.ts +17 -1
- package/dist/core/ingestion/languages/java/spring-di.js +44 -2
- package/dist/core/ingestion/languages/java/spring-dynamic-lookup.d.ts +8 -0
- package/dist/core/ingestion/languages/java/spring-dynamic-lookup.js +62 -0
- package/dist/core/ingestion/languages/java/spring-message-producers.d.ts +20 -0
- package/dist/core/ingestion/languages/java/spring-message-producers.js +83 -0
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +11 -1
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +13 -3
- package/dist/core/ingestion/languages/java.js +18 -8
- package/dist/core/ingestion/languages/jvm/accessor-synthesis.d.ts +99 -0
- package/dist/core/ingestion/languages/jvm/accessor-synthesis.js +173 -0
- package/dist/core/ingestion/languages/jvm/beanspec.d.ts +17 -0
- package/dist/core/ingestion/languages/jvm/beanspec.js +42 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +50 -0
- package/dist/core/ingestion/languages/kotlin/captures.js +24 -1
- package/dist/core/ingestion/languages/kotlin/lombok-synthesizer.d.ts +26 -0
- package/dist/core/ingestion/languages/kotlin/lombok-synthesizer.js +417 -0
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +4 -0
- package/dist/core/ingestion/languages/kotlin/spring-actuator.d.ts +4 -0
- package/dist/core/ingestion/languages/kotlin/spring-actuator.js +172 -0
- package/dist/core/ingestion/languages/kotlin/spring-config-bindings.d.ts +18 -0
- package/dist/core/ingestion/languages/kotlin/spring-config-bindings.js +411 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +51 -1
- package/dist/core/ingestion/languages/kotlin/spring-di.js +86 -6
- package/dist/core/ingestion/languages/kotlin/spring-dynamic-lookup.d.ts +8 -0
- package/dist/core/ingestion/languages/kotlin/spring-dynamic-lookup.js +77 -0
- package/dist/core/ingestion/languages/kotlin/spring-message-producers.d.ts +17 -0
- package/dist/core/ingestion/languages/kotlin/spring-message-producers.js +119 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +16 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +77 -2
- package/dist/core/ingestion/languages/kotlin.js +24 -0
- package/dist/core/ingestion/languages/python.js +2 -0
- package/dist/core/ingestion/languages/rust/query.js +8 -8
- package/dist/core/ingestion/languages/zig/captures.d.ts +260 -0
- package/dist/core/ingestion/languages/zig/captures.js +2070 -0
- package/dist/core/ingestion/languages/zig/index.d.ts +4 -0
- package/dist/core/ingestion/languages/zig/index.js +4 -0
- package/dist/core/ingestion/languages/zig/interpret.d.ts +36 -0
- package/dist/core/ingestion/languages/zig/interpret.js +176 -0
- package/dist/core/ingestion/languages/zig/query.d.ts +3 -0
- package/dist/core/ingestion/languages/zig/query.js +426 -0
- package/dist/core/ingestion/languages/zig/range-binding.d.ts +37 -0
- package/dist/core/ingestion/languages/zig/range-binding.js +373 -0
- package/dist/core/ingestion/languages/zig/scope-resolver.d.ts +12 -0
- package/dist/core/ingestion/languages/zig/scope-resolver.js +58 -0
- package/dist/core/ingestion/languages/zig/simple-hooks.d.ts +25 -0
- package/dist/core/ingestion/languages/zig/simple-hooks.js +143 -0
- package/dist/core/ingestion/languages/zig.d.ts +32 -0
- package/dist/core/ingestion/languages/zig.js +130 -0
- package/dist/core/ingestion/method-extractors/configs/zig.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/zig.js +120 -0
- package/dist/core/ingestion/method-extractors/generic.js +16 -4
- package/dist/core/ingestion/method-types.d.ts +10 -4
- package/dist/core/ingestion/model/field-registry.d.ts +3 -3
- package/dist/core/ingestion/model/field-registry.js +11 -7
- package/dist/core/ingestion/model/method-registry.d.ts +3 -3
- package/dist/core/ingestion/model/method-registry.js +13 -8
- package/dist/core/ingestion/model/registration-table.js +3 -0
- package/dist/core/ingestion/model/type-registry.js +8 -4
- package/dist/core/ingestion/pipeline-phases/di.js +47 -14
- package/dist/core/ingestion/pipeline-phases/index.d.ts +1 -0
- package/dist/core/ingestion/pipeline-phases/index.js +1 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +7 -1
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +79 -91
- package/dist/core/ingestion/pipeline-phases/parse.d.ts +17 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +2 -1
- package/dist/core/ingestion/pipeline-phases/processes.js +39 -4
- package/dist/core/ingestion/pipeline-phases/routes.js +27 -18
- package/dist/core/ingestion/pipeline-phases/runner.d.ts +4 -1
- package/dist/core/ingestion/pipeline-phases/runner.js +34 -14
- package/dist/core/ingestion/pipeline-phases/scan.js +82 -1
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +2 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +8 -0
- package/dist/core/ingestion/pipeline-phases/spring-destinations.d.ts +123 -0
- package/dist/core/ingestion/pipeline-phases/spring-destinations.js +688 -0
- package/dist/core/ingestion/pipeline.d.ts +30 -1
- package/dist/core/ingestion/pipeline.js +52 -14
- package/dist/core/ingestion/resolve-references.js +5 -0
- package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +16 -0
- package/dist/core/ingestion/route-extractors/constant-resolver.js +10 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +27 -1
- package/dist/core/ingestion/route-extractors/java-const-resolver.js +161 -13
- package/dist/core/ingestion/route-extractors/kotlin-const-resolver.d.ts +12 -18
- package/dist/core/ingestion/route-extractors/kotlin-const-resolver.js +214 -33
- package/dist/core/ingestion/route-extractors/kotlin-spring.d.ts +13 -0
- package/dist/core/ingestion/route-extractors/kotlin-spring.js +259 -0
- package/dist/core/ingestion/route-extractors/python-decorator-handler.d.ts +6 -0
- package/dist/core/ingestion/route-extractors/python-decorator-handler.js +16 -0
- package/dist/core/ingestion/route-extractors/spring-shared.d.ts +30 -1
- package/dist/core/ingestion/route-extractors/spring-shared.js +77 -9
- package/dist/core/ingestion/route-extractors/spring.js +9 -5
- package/dist/core/ingestion/scope-extractor.js +8 -0
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +62 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +4 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +2 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +28 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +11 -2
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +23 -2
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +24 -3
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +11 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +26 -6
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +11 -0
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +29 -3
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +8 -1
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +35 -9
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +1 -4
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +277 -9
- package/dist/core/ingestion/scope-resolution/pipeline/registry.js +2 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +7 -3
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +43 -9
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +71 -10
- package/dist/core/ingestion/tree-sitter-queries.d.ts +1 -0
- package/dist/core/ingestion/tree-sitter-queries.js +161 -0
- package/dist/core/ingestion/type-extractors/zig.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/zig.js +17 -0
- package/dist/core/ingestion/utils/ast-helpers.d.ts +40 -1
- package/dist/core/ingestion/utils/ast-helpers.js +124 -6
- package/dist/core/ingestion/utils/callable-flow-captures.d.ts +9 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +75 -14
- package/dist/core/ingestion/utils/test-file-path.d.ts +28 -0
- package/dist/core/ingestion/utils/test-file-path.js +87 -0
- package/dist/core/ingestion/variable-extractors/configs/zig.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/zig.js +71 -0
- package/dist/core/ingestion/workers/parse-worker.js +85 -14
- package/dist/core/install-context.d.ts +4 -0
- package/dist/core/install-context.js +152 -0
- package/dist/core/lbug/csv-generator.d.ts +10 -1
- package/dist/core/lbug/csv-generator.js +92 -22
- package/dist/core/lbug/graph-emit-sink.d.ts +3 -2
- package/dist/core/lbug/graph-emit-sink.js +4 -2
- package/dist/core/lbug/lbug-adapter.d.ts +100 -5
- package/dist/core/lbug/lbug-adapter.js +236 -24
- package/dist/core/lbug/schema.d.ts +6 -5
- package/dist/core/lbug/schema.js +84 -22
- package/dist/core/net/url-guard.d.ts +6 -0
- package/dist/core/net/url-guard.js +147 -0
- package/dist/core/package-version.d.ts +5 -0
- package/dist/core/package-version.js +10 -0
- package/dist/core/run-analyze.d.ts +21 -4
- package/dist/core/run-analyze.js +426 -117
- package/dist/core/search/fts-indexes.d.ts +19 -1
- package/dist/core/search/fts-indexes.js +28 -1
- package/dist/core/tree-sitter/parser-loader.js +16 -0
- package/dist/core/update-cache.d.ts +39 -0
- package/dist/core/update-cache.js +141 -0
- package/dist/core/update-check.d.ts +31 -0
- package/dist/core/update-check.js +274 -0
- package/dist/mcp/local/local-backend.d.ts +27 -13
- package/dist/mcp/local/local-backend.js +148 -60
- package/dist/mcp/repository-policy.d.ts +5 -1
- package/dist/mcp/repository-policy.js +48 -4
- package/dist/mcp/resources.js +10 -1
- package/dist/mcp/server.js +8 -9
- package/dist/mcp/tools.js +32 -22
- package/dist/server/analyze-launch.d.ts +2 -0
- package/dist/server/analyze-launch.js +2 -0
- package/dist/server/analyze-worker-protocol.d.ts +6 -1
- package/dist/server/analyze-worker.d.ts +1 -0
- package/dist/server/analyze-worker.js +38 -20
- package/dist/server/api.d.ts +5 -1
- package/dist/server/api.js +105 -88
- package/dist/server/git-clone.d.ts +40 -16
- package/dist/server/git-clone.js +253 -199
- package/dist/server/grep-params.d.ts +18 -0
- package/dist/server/grep-params.js +83 -0
- package/dist/server/grep-scan.d.ts +23 -0
- package/dist/server/grep-scan.js +107 -0
- package/dist/server/grep-worker.d.ts +1 -0
- package/dist/server/grep-worker.js +12 -0
- package/dist/server/mcp-http.d.ts +8 -0
- package/dist/server/mcp-http.js +16 -1
- package/dist/server/update-controller.d.ts +29 -0
- package/dist/server/update-controller.js +82 -0
- package/dist/storage/file-lock.d.ts +15 -0
- package/dist/storage/file-lock.js +155 -0
- package/dist/storage/fs-atomic.d.ts +24 -0
- package/dist/storage/fs-atomic.js +86 -2
- package/dist/storage/global-dir.d.ts +2 -0
- package/dist/storage/global-dir.js +6 -0
- package/dist/storage/parse-cache.d.ts +45 -7
- package/dist/storage/parse-cache.js +189 -42
- package/dist/storage/parsedfile-store.d.ts +41 -60
- package/dist/storage/parsedfile-store.js +247 -171
- package/dist/storage/repo-manager.d.ts +10 -4
- package/dist/storage/repo-manager.js +35 -25
- package/dist/storage/repo-meta.d.ts +34 -0
- package/dist/storage/v8-sidecar.d.ts +48 -0
- package/dist/storage/v8-sidecar.js +347 -0
- package/dist/types/pipeline.d.ts +14 -0
- package/dist/utils/process-identity.d.ts +2 -0
- package/dist/utils/process-identity.js +35 -0
- package/package.json +10 -4
- package/scripts/assert-web-assets.mjs +35 -0
- package/scripts/build-web.js +72 -0
- package/scripts/build.js +31 -28
- package/scripts/cross-platform-tests.ts +5 -0
- package/skills/gitnexus-cli.md +5 -1
- package/web/assets/ProcessFlowModal-DAeX2BHW.js +24 -0
- package/web/assets/{abnfDiagram-QNN2D4NM-Cq2djWWe.js → abnfDiagram-PAR5IXJI-J3OdeHLl.js} +1 -1
- package/web/assets/{agent-BWAXPjC5.js → agent-BMRqXorA.js} +6 -4
- package/web/assets/architecture-7GRP2DOG-M7G3SWCO-G3sWyX6M.js +1 -0
- package/web/assets/architectureDiagram-2PNWDENW-ysKcRlGT.js +36 -0
- package/web/assets/blockDiagram-PUWGUBOA-oLXTa1lY.js +129 -0
- package/web/assets/c4Diagram-3NLNHZP5-D3iu4eC0.js +38 -0
- package/web/assets/{chunk-2SREHG4O-Dip42xOq.js → chunk-2NMSUPJH-B24w-wng.js} +1 -1
- package/web/assets/{chunk-VJFVEZTB-CX66F2ep.js → chunk-32MCUW2P-ByUyt0Sa.js} +3 -3
- package/web/assets/{chunk-4RFN2BYJ-DHHWuC-n.js → chunk-3NPNU5GP-DocZ07Sg.js} +1 -1
- package/web/assets/{chunk-XNMVGMAZ-Cg_LnPtj.js → chunk-3SMGFRGC-CAu4JRLv.js} +1 -1
- package/web/assets/{chunk-W44A43WB-BN8EQc_u.js → chunk-4CAJECRU-DRYMwG9z.js} +1 -1
- package/web/assets/chunk-4OADUZ5Q-CxrSvOwZ.js +10 -0
- package/web/assets/{chunk-DMV4VAQV-Bn6WXDSX.js → chunk-5IQCK5RY-CCMhl4so.js} +2 -2
- package/web/assets/{chunk-RRFMTAIC-CMN0wcYA.js → chunk-5MVFYWFU-Db9KvrYO.js} +1 -1
- package/web/assets/chunk-CLS4B6BI-Uvx5QNsu.js +168 -0
- package/web/assets/chunk-DZP67EKU-B3Mt380j.js +70 -0
- package/web/assets/{chunk-6L755F7B-CMhLBxi2.js → chunk-EICP7K5X-CqwE9hui.js} +1 -1
- package/web/assets/{chunk-BI6VK774-D0oaWk8V.js → chunk-GDY2UAB4-CtQQR0a8.js} +1 -1
- package/web/assets/chunk-H7VHZCWX-CE1nAmt6.js +1 -0
- package/web/assets/chunk-IJBDOHL6-BUKtY6oF.js +1 -0
- package/web/assets/{chunk-OIYT25JQ-CQ6KOZGX.js → chunk-JFFVMJIA-0fJenqia.js} +1 -1
- package/web/assets/{chunk-HNC4WDU7-DoU3KnA7.js → chunk-JZGDI5JK-BeTMSSkJ.js} +1 -1
- package/web/assets/{chunk-EQFTRU2I-1ix7TzW9.js → chunk-KD6SPIPN-Qp1Pflah.js} +1 -1
- package/web/assets/chunk-NF366YI6-CpSpya3n.js +231 -0
- package/web/assets/chunk-NUDPKBEF-CU1-BQIW.js +34 -0
- package/web/assets/{chunk-SATU7PGQ-B1zhgOvc.js → chunk-OJINMHTS-zOCQe4eI.js} +1 -1
- package/web/assets/{chunk-E5QJAATJ-dh-5CtIV.js → chunk-Q6NGPIAH-yyBomb63.js} +1 -1
- package/web/assets/chunk-QJSWEUOL-D_rf9gPD.js +128 -0
- package/web/assets/chunk-R7JDMUKV-CRoqKpD6.js +1 -0
- package/web/assets/{chunk-VE5CLXGZ-C1vB7wpY.js → chunk-RCXAM2GK-CUqrWQDV.js} +1 -1
- package/web/assets/{chunk-66DQ2XMT-CM0xjFAN.js → chunk-RT4MAWR3-zXy9-Lvt.js} +1 -1
- package/web/assets/{chunk-TZUXEDM2-B7p9AcTw.js → chunk-SFMINX4W-J2UrvMpD.js} +1 -1
- package/web/assets/{chunk-LORZLZWG-B57uGw2N.js → chunk-SLDQ463B-CHY6e_bQ.js} +2 -2
- package/web/assets/{chunk-FWYVLQTC-BgDItRzJ.js → chunk-TCEHX7R3-CXPDEVbm.js} +1 -1
- package/web/assets/{chunk-224SPVON-B8gxtXpy.js → chunk-VQC2EELJ-Dc8fIy4R.js} +1 -1
- package/web/assets/chunk-VRZKL3EH-DB3KixTQ.js +1 -0
- package/web/assets/{chunk-A7VWPJGB-B4O3oQdQ.js → chunk-VTHDQ7BV-b7FsPQZO.js} +1 -1
- package/web/assets/chunk-VY2OSTJR-Dkgc3Brg.js +2 -0
- package/web/assets/chunk-WUBWJARI-7FwILJ3k.js +2 -0
- package/web/assets/{chunk-D6VWDJW2-BxcBdZ9c.js → chunk-YBMQ5JGJ-BSnyWZmd.js} +1 -1
- package/web/assets/chunk-YDMLL4PJ-IHhMngTz.js +2 -0
- package/web/assets/chunk-Z6V44ARX-BjCEsF0Q.js +62 -0
- package/web/assets/chunk-ZJJ7VQJP-Dz089b-K.js +321 -0
- package/web/assets/chunk-ZNLK7HRR-B0iFpmW4.js +1 -0
- package/web/assets/chunk-ZQN7UHIL-Cy7KAjQt.js +1 -0
- package/web/assets/{chunk-L5GCOVLC-CE2w8Nm_.js → chunk-ZS6VBONO-DBjJO0w9.js} +2 -2
- package/web/assets/{chunk-NV3KIAZN-5yvcpMiu.js → chunk-ZUNWM646-DNRJyNPe.js} +1 -1
- package/web/assets/classDiagram-FGAMPOII-C5Ibyode.js +1 -0
- package/web/assets/classDiagram-v2-AI5RJEK4-C5Ibyode.js +1 -0
- package/web/assets/{cose-bilkent-RZA4XIPR-BHpK4Crp.js → cose-bilkent-Q72C2OJ3-DMeFXnK8.js} +1 -1
- package/web/assets/cynefin-OW5HDTMX-6OCTWOGG-vlqakYcO.js +1 -0
- package/web/assets/{cynefinDiagram-TR7LZUCG-C3Iar9lZ.js → cynefinDiagram-2OOWUY4M-BY6DZkTt.js} +1 -1
- package/web/assets/dagre-MPVFI544-DWO70fy_.js +4 -0
- package/web/assets/diagram-AE4NWXFW-f7JRVRUL.js +24 -0
- package/web/assets/{diagram-L7DVE3PN-GIRyVUtt.js → diagram-BUJID5UG-BXZv1rCS.js} +2 -2
- package/web/assets/{diagram-JCD7PQ7C-DC5-9FRr.js → diagram-C44CZ5NI-CRNfvjCq.js} +1 -1
- package/web/assets/diagram-EYOLEXXS-DZOjKQVE.js +30 -0
- package/web/assets/diagram-P7B6PWOJ-D3SQmw3_.js +3 -0
- package/web/assets/{ebnfDiagram-DRHRQJWO-D8_CI4ZF.js → ebnfDiagram-FTPZ3PV6-jKWpIDN2.js} +1 -1
- package/web/assets/erDiagram-H3ERR26V-BqJntEuJ.js +99 -0
- package/web/assets/eventmodeling-NTZA5JFV-WKSWQHFS-Bq4FqtBL.js +1 -0
- package/web/assets/flowDiagram-YHGXBVSY-Dnlk2bEu.js +1 -0
- package/web/assets/ganttDiagram-RWFTB7ED-Bl6Y1K5T.js +292 -0
- package/web/assets/gitGraph-4MIJSDKK-JH2HKYUO-B3yc4GkH.js +1 -0
- package/web/assets/gitGraphDiagram-MAR6GKOP-CkNvsrdw.js +106 -0
- package/web/assets/{index-CJDpyH-n.css → index-C2_aej58.css} +1 -1
- package/web/assets/{index-DDRie6_8.js → index-Dj3vQOHK.js} +51 -51
- package/web/assets/info-A6RAGUB7-3TX3OFWW-BM3N5_Dv.js +1 -0
- package/web/assets/infoDiagram-LV547AFH-COkFutAf.js +2 -0
- package/web/assets/{ishikawaDiagram-4JDSWWDM-DmqWtjkl.js → ishikawaDiagram-PUJQGNDS-Bb8FylSR.js} +2 -2
- package/web/assets/{journeyDiagram-QUS3FAKT-XAzVzrQW.js → journeyDiagram-EW5QJT4W-BzoHUBhM.js} +4 -4
- package/web/assets/{kanban-definition-D4L7SQKK-YurRnmYn.js → kanban-definition-JSQERAZB-Uy2Pi0yQ.js} +4 -4
- package/web/assets/katex-CZ4GXH2S-C0Fcou7U.js +257 -0
- package/web/assets/{mindmap-definition-66QP5TD6-ChrWWnil.js → mindmap-definition-VBJCLQLM-B-CnOnt_.js} +3 -3
- package/web/assets/packet-AYTQ26CC-MKII6P3Y-Bd52ZE3V.js +1 -0
- package/web/assets/{pegDiagram-YKIO5C6U-QGeQLEq2.js → pegDiagram-7WILOQTJ-D9sneKXg.js} +1 -1
- package/web/assets/pie-WAS4IAKB-6B4OPMJ5-DW5Xy69Z.js +1 -0
- package/web/assets/pieDiagram-EFA7CBSB-Dx2NQofL.js +39 -0
- package/web/assets/{quadrantDiagram-VO5QLCXA-B7098wSc.js → quadrantDiagram-WARVYA7P-DPKL9_0A.js} +3 -3
- package/web/assets/radar-RG4KPBEZ-UPTR3XUL-CkzibT2h.js +1 -0
- package/web/assets/railroad-74A4TZTK-MEFUPFMS-D9zF-mDN.js +1 -0
- package/web/assets/railroad-abnf-HS5TGJTU-R5YG2S5D-ruacjUbX.js +1 -0
- package/web/assets/railroad-ebnf-LZEXJU2U-G5QEX2L6-S1zc5OiO.js +1 -0
- package/web/assets/railroad-peg-WCYAUIDC-H5I2ZRY2-Cbcr0XzY.js +1 -0
- package/web/assets/{railroadDiagram-M77LTMSB-AXu4vxk_.js → railroadDiagram-5NIQVNLQ-DsweTo14.js} +1 -1
- package/web/assets/{requirementDiagram-RASO5HTO-B-l8InpK.js → requirementDiagram-SXREGOKZ-CXwdNSVR.js} +4 -4
- package/web/assets/{sankeyDiagram-F32LOJ6L-Kd7zjJgX.js → sankeyDiagram-VV74M2VP-CA6jtP9P.js} +3 -3
- package/web/assets/{sequenceDiagram-URATNSBD-BlcdY9DS.js → sequenceDiagram-52ZFIFDL-k_5rEbzm.js} +15 -15
- package/web/assets/src-Df5C1Nz4.js +1 -0
- package/web/assets/stateDiagram-3QAKPIVI-BejHTf31.js +1 -0
- package/web/assets/stateDiagram-v2-HN2P4RDZ-BrfoRuOc.js +1 -0
- package/web/assets/swimlanes-QLVP42QD-CQSVO5D6.js +1 -0
- package/web/assets/swimlanesDiagram-JKPDBFCN-DrWB9kcD.js +8 -0
- package/web/assets/{timeline-definition-WJXWRH4I-DUfp1R3E.js → timeline-definition-GS45XAXW-C0Ks8rPP.js} +4 -4
- package/web/assets/treeView-Q6P3EWNA-ZRJGANNQ-DmKOCo6L.js +1 -0
- package/web/assets/treemap-WGGIJYW6-K64VN5AS-DO3xY92U.js +1 -0
- package/web/assets/{vennDiagram-K3VCMQLI-Bj-FN-XS.js → vennDiagram-QIQU2ZRJ-rgPiS837.js} +3 -3
- package/web/assets/wardley-WFR3VGLG-D67OWCCH-DiDPBNft.js +1 -0
- package/web/assets/wardleyDiagram-U6YNM66N-DRVr7SPi.js +78 -0
- package/web/assets/{xychartDiagram-5VRUVLCW-CK_rbSWE.js → xychartDiagram-XJAZEDNM-COtlZzYb.js} +3 -3
- package/web/index.html +19 -17
- package/web/assets/ProcessFlowModal-Badh2Pbg.js +0 -24
- package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +0 -1
- package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +0 -36
- package/web/assets/blockDiagram-54WLDVWM-Dg_hrRWE.js +0 -132
- package/web/assets/c4Diagram-X2LASM7V-CnhoT4aV.js +0 -10
- package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +0 -127
- package/web/assets/chunk-5VCL7Z4A-CQ-2dYWj.js +0 -1
- package/web/assets/chunk-6BELYETK-ChsYtfHW.js +0 -1
- package/web/assets/chunk-7CWYLC5S-DRgGkkpF.js +0 -2
- package/web/assets/chunk-7FYTHRHK-CsmYIswB.js +0 -32
- package/web/assets/chunk-KRXBNO2N-C-UNuKKf.js +0 -1
- package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +0 -321
- package/web/assets/chunk-LIEV3EAG-pyKGssV3.js +0 -1
- package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +0 -62
- package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +0 -10
- package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +0 -156
- package/web/assets/chunk-SZD42YQK-ijyKKVr1.js +0 -70
- package/web/assets/chunk-TFPGFQPA-Dj6a-0pC.js +0 -231
- package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +0 -2
- package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +0 -1
- package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +0 -1
- package/web/assets/chunk-WJBAP47W-BckNkuEN.js +0 -1
- package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +0 -1
- package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +0 -1
- package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +0 -1
- package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +0 -4
- package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +0 -30
- package/web/assets/diagram-KFBZAVDW-Dfmf_4ti.js +0 -3
- package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +0 -24
- package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +0 -85
- package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +0 -1
- package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +0 -1
- package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +0 -292
- package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +0 -1
- package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +0 -106
- package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +0 -1
- package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +0 -2
- package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +0 -257
- package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +0 -1
- package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +0 -1
- package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +0 -39
- package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +0 -1
- package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +0 -1
- package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +0 -1
- package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +0 -1
- package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +0 -1
- package/web/assets/src-C5sx_gMp.js +0 -1
- package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +0 -1
- package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +0 -1
- package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +0 -2
- package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +0 -8
- package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +0 -1
- package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +0 -1
- package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +0 -1
- package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +0 -78
- /package/web/assets/{sizeCapture-5GORAGP4-BEqQzsxs.js → sizeCapture-FGA5AGYP-BEqQzsxs.js} +0 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AsyncAPI protocol name → broker identity, for `destinationNodeKey`.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately OUTSIDE `frameworks/spring/`, like `destination-key.ts` and for
|
|
5
|
+
* the same reason: an AsyncAPI document is not a Spring artifact, and the
|
|
6
|
+
* broker it names has to be mintable by anything that reads one.
|
|
7
|
+
*
|
|
8
|
+
* ── TWO READERS, TWO RULES, AND WHY THEY ARE NOT THE SAME RULE ────────────
|
|
9
|
+
*
|
|
10
|
+
* A document states its protocol in two places, and they have opposite
|
|
11
|
+
* defaults:
|
|
12
|
+
*
|
|
13
|
+
* `servers[].protocol` is a FIELD DECLARED TO HOLD A PROTOCOL. Whatever it
|
|
14
|
+
* contains is the document's claim about its broker, including a protocol
|
|
15
|
+
* this codebase has never heard of. {@link brokerForProtocol} therefore
|
|
16
|
+
* passes an unrecognized value through as its own literal — an `mqtt` or
|
|
17
|
+
* `nats` channel mints `mqtt <address>` and joins any other site that says
|
|
18
|
+
* the same thing, instead of being dropped for the sake of a closed union it
|
|
19
|
+
* was never going to fit. Refusing it would lose a destination the document
|
|
20
|
+
* states plainly, to protect against a collision that cannot happen: an
|
|
21
|
+
* unmapped protocol keys on its own name, so it can only meet a site that
|
|
22
|
+
* named the same protocol.
|
|
23
|
+
*
|
|
24
|
+
* A `bindings` MAP KEY is not that. The map is keyed by protocol name BY
|
|
25
|
+
* CONVENTION, and the specification puts other things in the same namespace:
|
|
26
|
+
* `$ref` when the bindings are a Reference Object, and `x-` Specification
|
|
27
|
+
* Extensions, which generators emit routinely. Here a non-protocol key is the
|
|
28
|
+
* EXPECTED case, not the exotic one, so {@link brokerForBindingKey} answers
|
|
29
|
+
* only for names it recognizes.
|
|
30
|
+
*
|
|
31
|
+
* That asymmetry was learned the expensive way. An earlier version applied one
|
|
32
|
+
* syntactic test to both and excluded only `$`-prefixed tokens; a document
|
|
33
|
+
* carrying `bindings: { x-scs-function: … }` then minted
|
|
34
|
+
* `Destination(broker='x-scs-function')`, so two unrelated services sharing a
|
|
35
|
+
* vendor annotation and an address landed on ONE node with a broker half that
|
|
36
|
+
* carried no broker information at all. Worse, `{ kafka: {}, x-internal: {} }`
|
|
37
|
+
* read as two brokers and refused a conformant document as self-contradictory
|
|
38
|
+
* — which also makes any writer of a document a one-line saboteur of its own
|
|
39
|
+
* cross-service links. A list that must be extended when AsyncAPI adds a
|
|
40
|
+
* binding is the smaller cost.
|
|
41
|
+
*
|
|
42
|
+
* ── WHY THE ALIASES EARN THEIR ROWS ───────────────────────────────────────
|
|
43
|
+
*
|
|
44
|
+
* `amqp` → `rabbit` is not an identity. AMQP is a wire protocol and RabbitMQ is
|
|
45
|
+
* one implementation of it; a Qpid or ActiveMQ broker speaking AMQP is filed
|
|
46
|
+
* under `rabbit` here and the label is wrong about the product. It is mapped
|
|
47
|
+
* anyway because the alternative is a guaranteed MISS: Spring's own capture
|
|
48
|
+
* calls `@RabbitListener` `rabbit`, so an `amqp` document describing the very
|
|
49
|
+
* same queue would sit on a second node and the two would never meet. A label
|
|
50
|
+
* that is wrong about the vendor but right about the protocol family joins the
|
|
51
|
+
* pair; an honest `amqp` label splits it every time.
|
|
52
|
+
*
|
|
53
|
+
* The transport-security variants are that argument with the vendor doubt
|
|
54
|
+
* removed. AsyncAPI's SERVER vocabulary distinguishes `kafka` from
|
|
55
|
+
* `kafka-secure`; its BINDINGS vocabulary does not. Without these rows a
|
|
56
|
+
* secured cluster's own document contradicts itself, and with bindings absent
|
|
57
|
+
* it is worse and quieter: `kafka-secure <address>` never meets the
|
|
58
|
+
* `kafka <address>` Spring capture mints, and nothing reports the miss. TLS is
|
|
59
|
+
* a property of the connection, not of the place messages go.
|
|
60
|
+
*/
|
|
61
|
+
/** True when a broker names a transport whose addresses must not be keyed. */
|
|
62
|
+
export declare function isNonDestinationBroker(broker: string): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Normalize a `servers[].protocol` value to the broker half of a `Destination`
|
|
65
|
+
* key. Unrecognized protocols pass through; see the header.
|
|
66
|
+
*
|
|
67
|
+
* Returns `undefined` for a blank or implausibly long value — silence is not a
|
|
68
|
+
* claim, and a key built from an empty string would merge every silent
|
|
69
|
+
* document.
|
|
70
|
+
*/
|
|
71
|
+
export declare function brokerForProtocol(protocol: string | undefined): string | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Normalize a `bindings` MAP KEY to a broker, answering only for names in
|
|
74
|
+
* AsyncAPI's binding vocabulary.
|
|
75
|
+
*
|
|
76
|
+
* `$ref` and `x-` extensions live in this namespace legitimately, so anything
|
|
77
|
+
* unrecognized is silence rather than a broker.
|
|
78
|
+
*/
|
|
79
|
+
export declare function brokerForBindingKey(key: string | undefined): string | undefined;
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AsyncAPI protocol name → broker identity, for `destinationNodeKey`.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately OUTSIDE `frameworks/spring/`, like `destination-key.ts` and for
|
|
5
|
+
* the same reason: an AsyncAPI document is not a Spring artifact, and the
|
|
6
|
+
* broker it names has to be mintable by anything that reads one.
|
|
7
|
+
*
|
|
8
|
+
* ── TWO READERS, TWO RULES, AND WHY THEY ARE NOT THE SAME RULE ────────────
|
|
9
|
+
*
|
|
10
|
+
* A document states its protocol in two places, and they have opposite
|
|
11
|
+
* defaults:
|
|
12
|
+
*
|
|
13
|
+
* `servers[].protocol` is a FIELD DECLARED TO HOLD A PROTOCOL. Whatever it
|
|
14
|
+
* contains is the document's claim about its broker, including a protocol
|
|
15
|
+
* this codebase has never heard of. {@link brokerForProtocol} therefore
|
|
16
|
+
* passes an unrecognized value through as its own literal — an `mqtt` or
|
|
17
|
+
* `nats` channel mints `mqtt <address>` and joins any other site that says
|
|
18
|
+
* the same thing, instead of being dropped for the sake of a closed union it
|
|
19
|
+
* was never going to fit. Refusing it would lose a destination the document
|
|
20
|
+
* states plainly, to protect against a collision that cannot happen: an
|
|
21
|
+
* unmapped protocol keys on its own name, so it can only meet a site that
|
|
22
|
+
* named the same protocol.
|
|
23
|
+
*
|
|
24
|
+
* A `bindings` MAP KEY is not that. The map is keyed by protocol name BY
|
|
25
|
+
* CONVENTION, and the specification puts other things in the same namespace:
|
|
26
|
+
* `$ref` when the bindings are a Reference Object, and `x-` Specification
|
|
27
|
+
* Extensions, which generators emit routinely. Here a non-protocol key is the
|
|
28
|
+
* EXPECTED case, not the exotic one, so {@link brokerForBindingKey} answers
|
|
29
|
+
* only for names it recognizes.
|
|
30
|
+
*
|
|
31
|
+
* That asymmetry was learned the expensive way. An earlier version applied one
|
|
32
|
+
* syntactic test to both and excluded only `$`-prefixed tokens; a document
|
|
33
|
+
* carrying `bindings: { x-scs-function: … }` then minted
|
|
34
|
+
* `Destination(broker='x-scs-function')`, so two unrelated services sharing a
|
|
35
|
+
* vendor annotation and an address landed on ONE node with a broker half that
|
|
36
|
+
* carried no broker information at all. Worse, `{ kafka: {}, x-internal: {} }`
|
|
37
|
+
* read as two brokers and refused a conformant document as self-contradictory
|
|
38
|
+
* — which also makes any writer of a document a one-line saboteur of its own
|
|
39
|
+
* cross-service links. A list that must be extended when AsyncAPI adds a
|
|
40
|
+
* binding is the smaller cost.
|
|
41
|
+
*
|
|
42
|
+
* ── WHY THE ALIASES EARN THEIR ROWS ───────────────────────────────────────
|
|
43
|
+
*
|
|
44
|
+
* `amqp` → `rabbit` is not an identity. AMQP is a wire protocol and RabbitMQ is
|
|
45
|
+
* one implementation of it; a Qpid or ActiveMQ broker speaking AMQP is filed
|
|
46
|
+
* under `rabbit` here and the label is wrong about the product. It is mapped
|
|
47
|
+
* anyway because the alternative is a guaranteed MISS: Spring's own capture
|
|
48
|
+
* calls `@RabbitListener` `rabbit`, so an `amqp` document describing the very
|
|
49
|
+
* same queue would sit on a second node and the two would never meet. A label
|
|
50
|
+
* that is wrong about the vendor but right about the protocol family joins the
|
|
51
|
+
* pair; an honest `amqp` label splits it every time.
|
|
52
|
+
*
|
|
53
|
+
* The transport-security variants are that argument with the vendor doubt
|
|
54
|
+
* removed. AsyncAPI's SERVER vocabulary distinguishes `kafka` from
|
|
55
|
+
* `kafka-secure`; its BINDINGS vocabulary does not. Without these rows a
|
|
56
|
+
* secured cluster's own document contradicts itself, and with bindings absent
|
|
57
|
+
* it is worse and quieter: `kafka-secure <address>` never meets the
|
|
58
|
+
* `kafka <address>` Spring capture mints, and nothing reports the miss. TLS is
|
|
59
|
+
* a property of the connection, not of the place messages go.
|
|
60
|
+
*/
|
|
61
|
+
/**
|
|
62
|
+
* A protocol name long enough to be a mistake.
|
|
63
|
+
*
|
|
64
|
+
* The broker is the THIRD string that reaches a graph identifier, alongside the
|
|
65
|
+
* address and the operation id, and it is the one that was left unbounded:
|
|
66
|
+
* `destinationNodeKey` is `` `${broker} ${address}` `` and `generateId` is
|
|
67
|
+
* `` `${label}:${name}` `` — concatenation both, no hashing. A one-megabyte
|
|
68
|
+
* protocol in a document that satisfies every other cap was measured producing
|
|
69
|
+
* a gigabyte of resident identifier strings, because the phase mints one id per
|
|
70
|
+
* node and one per edge. The longest name in AsyncAPI's vocabulary is
|
|
71
|
+
* `googlepubsub` at twelve characters, so this bound is generous by more than a
|
|
72
|
+
* factor of two and can only be reached on purpose.
|
|
73
|
+
*/
|
|
74
|
+
const MAX_PROTOCOL_LENGTH = 32;
|
|
75
|
+
/**
|
|
76
|
+
* Spellings that differ between AsyncAPI's protocol vocabulary and the broker
|
|
77
|
+
* names this codebase already mints from source.
|
|
78
|
+
*
|
|
79
|
+
* Both AMQP versions collapse: `amqp1` is AMQP 1.0, a different wire format for
|
|
80
|
+
* the same family, and a service that documents one while its code speaks the
|
|
81
|
+
* other is describing one queue, not two. `mqtt5` collapses onto `mqtt` for the
|
|
82
|
+
* identical reason.
|
|
83
|
+
*/
|
|
84
|
+
const PROTOCOL_ALIASES = new Map([
|
|
85
|
+
['amqp', 'rabbit'],
|
|
86
|
+
['amqp1', 'rabbit'],
|
|
87
|
+
['kafka-secure', 'kafka'],
|
|
88
|
+
['secure-mqtt', 'mqtt'],
|
|
89
|
+
['mqtts', 'mqtt'],
|
|
90
|
+
['mqtt5', 'mqtt'],
|
|
91
|
+
['wss', 'ws'],
|
|
92
|
+
['stomps', 'stomp'],
|
|
93
|
+
['https', 'http'],
|
|
94
|
+
]);
|
|
95
|
+
/**
|
|
96
|
+
* AsyncAPI's binding vocabulary — the names a `bindings` map key may take.
|
|
97
|
+
*
|
|
98
|
+
* Closed on purpose; see the header. Adding a protocol here is a deliberate
|
|
99
|
+
* act, which is the point: the cost of a missing row is one document's
|
|
100
|
+
* destinations, and the cost of an open door is a node keyed on a vendor
|
|
101
|
+
* annotation that two unrelated services happen to share.
|
|
102
|
+
*/
|
|
103
|
+
const BINDING_PROTOCOLS = new Set([
|
|
104
|
+
'amqp',
|
|
105
|
+
'amqp1',
|
|
106
|
+
'anypointmq',
|
|
107
|
+
'googlepubsub',
|
|
108
|
+
'http',
|
|
109
|
+
'https',
|
|
110
|
+
'ibmmq',
|
|
111
|
+
'jms',
|
|
112
|
+
'kafka',
|
|
113
|
+
'kafka-secure',
|
|
114
|
+
'mercure',
|
|
115
|
+
'mqtt',
|
|
116
|
+
'mqtt5',
|
|
117
|
+
'mqtts',
|
|
118
|
+
'nats',
|
|
119
|
+
'pulsar',
|
|
120
|
+
'redis',
|
|
121
|
+
'secure-mqtt',
|
|
122
|
+
'sns',
|
|
123
|
+
'solace',
|
|
124
|
+
'sqs',
|
|
125
|
+
'stomp',
|
|
126
|
+
'stomps',
|
|
127
|
+
'ws',
|
|
128
|
+
'wss',
|
|
129
|
+
]);
|
|
130
|
+
/**
|
|
131
|
+
* Protocols whose destinations this module refuses to mint, because the address
|
|
132
|
+
* alone is not the thing that identifies them.
|
|
133
|
+
*
|
|
134
|
+
* For a broker, the topic or queue name IS the namespace: two services naming
|
|
135
|
+
* `orders.v1` on Kafka are talking about one place, and dropping which cluster
|
|
136
|
+
* they used is a bounded, stated trade. For HTTP and WebSocket the HOST is the
|
|
137
|
+
* namespace and the address is only a path, so keying on the path alone makes
|
|
138
|
+
* every service that exposes `/events` — or `/health`, or `/api/v1/orders` —
|
|
139
|
+
* one node. That is unbounded, and it is a false join rather than a lost one.
|
|
140
|
+
*
|
|
141
|
+
* These are not lost information: an HTTP endpoint is a `Route`, which the
|
|
142
|
+
* routes phase already models with the method in its key.
|
|
143
|
+
*/
|
|
144
|
+
const NON_DESTINATION_PROTOCOLS = new Set(['http', 'ws']);
|
|
145
|
+
/**
|
|
146
|
+
* Shape a protocol NAME must take, applied to both readers.
|
|
147
|
+
*
|
|
148
|
+
* The pass-through in {@link brokerForProtocol} is an argument about
|
|
149
|
+
* UNRECOGNIZED protocols — a name this codebase has not heard of is still the
|
|
150
|
+
* document's claim. It is not an argument about arbitrary text. A protocol name
|
|
151
|
+
* contains no whitespace, and one that did would collide in the node key, since
|
|
152
|
+
* `destinationNodeKey` joins broker and address with a space: `("kafka orders",
|
|
153
|
+
* "x")` and `("kafka", "orders x")` are then the same node.
|
|
154
|
+
*
|
|
155
|
+
* Learned twice. The check was added when that collision was first shown to be
|
|
156
|
+
* reachable, then dropped during a rewrite that moved the binding-key filtering
|
|
157
|
+
* into its own function — and the test written for the first lesson caught the
|
|
158
|
+
* second within the minute.
|
|
159
|
+
*/
|
|
160
|
+
function isProtocolToken(value) {
|
|
161
|
+
return /^[a-z0-9][a-z0-9+._-]*$/.test(value);
|
|
162
|
+
}
|
|
163
|
+
function normalize(protocol) {
|
|
164
|
+
if (protocol === undefined)
|
|
165
|
+
return undefined;
|
|
166
|
+
const trimmed = protocol.trim().toLowerCase();
|
|
167
|
+
if (trimmed === '' || trimmed.length > MAX_PROTOCOL_LENGTH)
|
|
168
|
+
return undefined;
|
|
169
|
+
if (!isProtocolToken(trimmed))
|
|
170
|
+
return undefined;
|
|
171
|
+
return trimmed;
|
|
172
|
+
}
|
|
173
|
+
/** True when a broker names a transport whose addresses must not be keyed. */
|
|
174
|
+
export function isNonDestinationBroker(broker) {
|
|
175
|
+
return NON_DESTINATION_PROTOCOLS.has(broker);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Normalize a `servers[].protocol` value to the broker half of a `Destination`
|
|
179
|
+
* key. Unrecognized protocols pass through; see the header.
|
|
180
|
+
*
|
|
181
|
+
* Returns `undefined` for a blank or implausibly long value — silence is not a
|
|
182
|
+
* claim, and a key built from an empty string would merge every silent
|
|
183
|
+
* document.
|
|
184
|
+
*/
|
|
185
|
+
export function brokerForProtocol(protocol) {
|
|
186
|
+
const normalized = normalize(protocol);
|
|
187
|
+
if (normalized === undefined)
|
|
188
|
+
return undefined;
|
|
189
|
+
return PROTOCOL_ALIASES.get(normalized) ?? normalized;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Normalize a `bindings` MAP KEY to a broker, answering only for names in
|
|
193
|
+
* AsyncAPI's binding vocabulary.
|
|
194
|
+
*
|
|
195
|
+
* `$ref` and `x-` extensions live in this namespace legitimately, so anything
|
|
196
|
+
* unrecognized is silence rather than a broker.
|
|
197
|
+
*/
|
|
198
|
+
export function brokerForBindingKey(key) {
|
|
199
|
+
const normalized = normalize(key);
|
|
200
|
+
if (normalized === undefined || !BINDING_PROTOCOLS.has(normalized))
|
|
201
|
+
return undefined;
|
|
202
|
+
return PROTOCOL_ALIASES.get(normalized) ?? normalized;
|
|
203
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zig static-gating resolver.
|
|
3
|
+
*
|
|
4
|
+
* Detects calls inside `if (CONST_FALSE)` blocks (and trivial boolean
|
|
5
|
+
* extensions: `and`, `or`, `==`/`!=`, parentheses, and prefix `!` negation,
|
|
6
|
+
* which tree-sitter-zig parses as `error_union_type`) so the call edge can be
|
|
7
|
+
* tagged with `staticGated: true`. The flag lets impact-analysis
|
|
8
|
+
* consumers filter out paper-tiger callers that live in dead branches
|
|
9
|
+
* gated behind a comptime-known `false` constant.
|
|
10
|
+
*
|
|
11
|
+
* Conservative by design: we only tag an edge when we can prove the
|
|
12
|
+
* gating expression evaluates to `false`. Anything ambiguous → live.
|
|
13
|
+
*
|
|
14
|
+
* Scope of v1:
|
|
15
|
+
*
|
|
16
|
+
* (a) **File-local** consts (`pub const FOO = false;`, plus const-to-const
|
|
17
|
+
* aliases up to 5 hops), built once per file by `buildZigBoolConstMap`.
|
|
18
|
+
* (b) **Cross-file** (`const cfg = @import("./cfg.zig"); if (cfg.FOO)`) is
|
|
19
|
+
* NOT resolved yet. The evaluator keeps the seam for it (`importAliases`
|
|
20
|
+
* + `lookupBoolsForPath`, consumed by the `field_expression` case), but
|
|
21
|
+
* the only caller passes an empty alias map and a lookup that always
|
|
22
|
+
* returns `undefined`, because the capture emitter runs in the parse
|
|
23
|
+
* worker and sees only the current file. Tracked in #3162. Until then
|
|
24
|
+
* every `cfg.FOO` condition folds to unknown, i.e. live.
|
|
25
|
+
*
|
|
26
|
+
* Also out of scope: multi-hop member access (`cfg.sub.FOO`), re-exported
|
|
27
|
+
* consts, runtime-evaluated bools (`const FOO = computeIt();`), and
|
|
28
|
+
* `builtin.mode` gates.
|
|
29
|
+
*
|
|
30
|
+
* Wire-up: `stampZigStaticGating` in ../languages/zig/captures.ts calls
|
|
31
|
+
* `collectZigStaticGatedRanges` once per file and marks every call capture
|
|
32
|
+
* whose position falls inside a dead range with `@reference.static-gated`;
|
|
33
|
+
* the scope-resolution pipeline carries that marker to the CALLS edge.
|
|
34
|
+
*/
|
|
35
|
+
import type { SyntaxNode } from '../utils/ast-helpers.js';
|
|
36
|
+
/**
|
|
37
|
+
* Per-file table of comptime-known booleans:
|
|
38
|
+
* `pub const FOO: bool = false;` → Map { 'FOO' → false }
|
|
39
|
+
* `pub const BAR = true;` → Map { 'BAR' → true }
|
|
40
|
+
*
|
|
41
|
+
* Constants whose RHS is anything other than a bare `boolean` literal
|
|
42
|
+
* (e.g. function calls, struct accesses) are intentionally absent —
|
|
43
|
+
* they resolve to `undefined`.
|
|
44
|
+
*/
|
|
45
|
+
export type ZigBoolConstMap = ReadonlyMap<string, boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* Per-file `@import` alias map, mapping a local identifier to the
|
|
48
|
+
* resolved absolute file path of the imported module. Used for the
|
|
49
|
+
* `cfg.FOO` cross-file lookup pattern.
|
|
50
|
+
*
|
|
51
|
+
* `const cfg = @import("./cfg.zig");` → Map { 'cfg' → 'src/cfg.zig' }
|
|
52
|
+
*/
|
|
53
|
+
export type ZigImportAliasMap = ReadonlyMap<string, string>;
|
|
54
|
+
/**
|
|
55
|
+
* Cross-file lookup: given an alias-resolved file path, return that
|
|
56
|
+
* file's known-bool map. Implemented by the caller — the resolver
|
|
57
|
+
* itself stays stateless.
|
|
58
|
+
*/
|
|
59
|
+
export type ZigBoolConstLookup = (filePath: string) => ZigBoolConstMap | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Walk the top-level of a Zig source file and collect known-bool
|
|
62
|
+
* constants. Two passes:
|
|
63
|
+
*
|
|
64
|
+
* Pass 1: collect every top-level `const X = <expr>` where the RHS
|
|
65
|
+
* is either a `boolean` literal (recorded in `literals`) or
|
|
66
|
+
* a single `identifier` (recorded in `aliases`).
|
|
67
|
+
* Pass 2: walk each alias entry up to `MAX_ALIAS_HOPS` hops; if the
|
|
68
|
+
* chain terminates at a known-bool literal, record `X` with
|
|
69
|
+
* the literal's value. Cycles, chains exceeding the cap, and
|
|
70
|
+
* chains exiting file scope (unknown identifier at the root)
|
|
71
|
+
* bail to "unknown".
|
|
72
|
+
*
|
|
73
|
+
* Only `const` decls qualify (not `var`). The function is permissive
|
|
74
|
+
* about modifier tokens (`pub`, type annotation) — it reads only the
|
|
75
|
+
* identifier name and the RHS expression shape.
|
|
76
|
+
*/
|
|
77
|
+
export declare function buildZigBoolConstMap(rootNode: SyntaxNode): ZigBoolConstMap;
|
|
78
|
+
/**
|
|
79
|
+
* Every source range that is statically dead in this file: the body of an
|
|
80
|
+
* `if` whose condition folds to `false`, and the `else` clause of an `if`
|
|
81
|
+
* whose condition folds to `true`. Both the statement form (`if (c) { .. }`)
|
|
82
|
+
* and the expression form (`const x = if (c) a else b;`) are walked; the
|
|
83
|
+
* arms differ only in how the grammar exposes them, see `ifExpressionArms`.
|
|
84
|
+
* Line/col ranges, so a capture layer that
|
|
85
|
+
* only keeps `Capture.range` (no node) can still stamp its call sites —
|
|
86
|
+
* that is how the scope-resolution provider consumes this module.
|
|
87
|
+
*
|
|
88
|
+
* One walk per file over every `if`, so a call site is classified by
|
|
89
|
+
* position lookup; nesting needs no special case because an inner branch
|
|
90
|
+
* inside a dead body is inside the dead body's range already.
|
|
91
|
+
*/
|
|
92
|
+
export interface ZigGatedRange {
|
|
93
|
+
readonly startLine: number;
|
|
94
|
+
readonly startCol: number;
|
|
95
|
+
readonly endLine: number;
|
|
96
|
+
readonly endCol: number;
|
|
97
|
+
}
|
|
98
|
+
export declare function collectZigStaticGatedRanges(rootNode: SyntaxNode, localBools: ZigBoolConstMap, importAliases: ZigImportAliasMap, lookupBoolsForPath: ZigBoolConstLookup): readonly ZigGatedRange[];
|
|
99
|
+
/** Is a (1-based line, 0-based col) position inside one of `ranges`? */
|
|
100
|
+
export declare function isPositionStaticGated(line: number, col: number, ranges: readonly ZigGatedRange[]): boolean;
|