@quolu/lattice 0.70.0 → 0.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/sensor/dist/bin/lattice-sensor.js +746 -323
- package/sensor/dist/bin/viewer-gate.d.ts +17 -0
- package/sensor/dist/bin/viewer-gate.d.ts.map +1 -0
- package/sensor/dist/bin/viewer-gate.js +31 -0
- package/sensor/dist/bin/viewer-gate.js.map +1 -0
- package/sensor/dist/context/formatter.d.ts +7 -1
- package/sensor/dist/context/formatter.d.ts.map +1 -1
- package/sensor/dist/context/formatter.js +12 -6
- package/sensor/dist/context/formatter.js.map +1 -1
- package/sensor/dist/context/index.d.ts +12 -0
- package/sensor/dist/context/index.d.ts.map +1 -1
- package/sensor/dist/context/index.js +103 -16
- package/sensor/dist/context/index.js.map +1 -1
- package/sensor/dist/db/index.d.ts +23 -2
- package/sensor/dist/db/index.d.ts.map +1 -1
- package/sensor/dist/db/index.js +109 -31
- package/sensor/dist/db/index.js.map +1 -1
- package/sensor/dist/db/migrations.d.ts +1 -1
- package/sensor/dist/db/migrations.d.ts.map +1 -1
- package/sensor/dist/db/migrations.js +68 -1
- package/sensor/dist/db/migrations.js.map +1 -1
- package/sensor/dist/db/queries.d.ts +583 -6
- package/sensor/dist/db/queries.d.ts.map +1 -1
- package/sensor/dist/db/queries.js +1425 -57
- package/sensor/dist/db/queries.js.map +1 -1
- package/sensor/dist/db/schema.sql +27 -4
- package/sensor/dist/db/sqlite-adapter.d.ts +2 -0
- package/sensor/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/sensor/dist/db/sqlite-adapter.js +56 -7
- package/sensor/dist/db/sqlite-adapter.js.map +1 -1
- package/sensor/dist/db/synthesis-stage.d.ts +12 -0
- package/sensor/dist/db/synthesis-stage.d.ts.map +1 -0
- package/sensor/dist/db/synthesis-stage.js +93 -0
- package/sensor/dist/db/synthesis-stage.js.map +1 -0
- package/sensor/dist/db/wal-valve.d.ts +32 -12
- package/sensor/dist/db/wal-valve.d.ts.map +1 -1
- package/sensor/dist/db/wal-valve.js +65 -22
- package/sensor/dist/db/wal-valve.js.map +1 -1
- package/sensor/dist/db/wsl-shared-index.d.ts +53 -0
- package/sensor/dist/db/wsl-shared-index.d.ts.map +1 -0
- package/sensor/dist/db/wsl-shared-index.js +121 -0
- package/sensor/dist/db/wsl-shared-index.js.map +1 -0
- package/sensor/dist/directory.d.ts +126 -2
- package/sensor/dist/directory.d.ts.map +1 -1
- package/sensor/dist/directory.js +285 -16
- package/sensor/dist/directory.js.map +1 -1
- package/sensor/dist/errors.d.ts +14 -0
- package/sensor/dist/errors.d.ts.map +1 -1
- package/sensor/dist/errors.js +16 -1
- package/sensor/dist/errors.js.map +1 -1
- package/sensor/dist/extraction/cfml-extractor.d.ts +1 -0
- package/sensor/dist/extraction/cfml-extractor.d.ts.map +1 -1
- package/sensor/dist/extraction/cfml-extractor.js +15 -3
- package/sensor/dist/extraction/cfml-extractor.js.map +1 -1
- package/sensor/dist/extraction/dfm-extractor.d.ts.map +1 -1
- package/sensor/dist/extraction/dfm-extractor.js +14 -10
- package/sensor/dist/extraction/dfm-extractor.js.map +1 -1
- package/sensor/dist/extraction/extraction-version.d.ts +1 -1
- package/sensor/dist/extraction/extraction-version.d.ts.map +1 -1
- package/sensor/dist/extraction/extraction-version.js +3 -1
- package/sensor/dist/extraction/extraction-version.js.map +1 -1
- package/sensor/dist/extraction/function-ref.d.ts +6 -4
- package/sensor/dist/extraction/function-ref.d.ts.map +1 -1
- package/sensor/dist/extraction/function-ref.js +35 -14
- package/sensor/dist/extraction/function-ref.js.map +1 -1
- package/sensor/dist/extraction/generated-detection.d.ts +48 -12
- package/sensor/dist/extraction/generated-detection.d.ts.map +1 -1
- package/sensor/dist/extraction/generated-detection.js +176 -11
- package/sensor/dist/extraction/generated-detection.js.map +1 -1
- package/sensor/dist/extraction/grammars.d.ts +38 -0
- package/sensor/dist/extraction/grammars.d.ts.map +1 -1
- package/sensor/dist/extraction/grammars.js +115 -3
- package/sensor/dist/extraction/grammars.js.map +1 -1
- package/sensor/dist/extraction/index.d.ts +218 -14
- package/sensor/dist/extraction/index.d.ts.map +1 -1
- package/sensor/dist/extraction/index.js +887 -175
- package/sensor/dist/extraction/index.js.map +1 -1
- package/sensor/dist/extraction/languages/c-cpp.d.ts +58 -0
- package/sensor/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/c-cpp.js +310 -19
- package/sensor/dist/extraction/languages/c-cpp.js.map +1 -1
- package/sensor/dist/extraction/languages/dart.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/dart.js +8 -3
- package/sensor/dist/extraction/languages/dart.js.map +1 -1
- package/sensor/dist/extraction/languages/erlang.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/erlang.js +58 -22
- package/sensor/dist/extraction/languages/erlang.js.map +1 -1
- package/sensor/dist/extraction/languages/javascript.js +1 -1
- package/sensor/dist/extraction/languages/javascript.js.map +1 -1
- package/sensor/dist/extraction/languages/kotlin.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/kotlin.js +169 -36
- package/sensor/dist/extraction/languages/kotlin.js.map +1 -1
- package/sensor/dist/extraction/languages/lua.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/lua.js +4 -1
- package/sensor/dist/extraction/languages/lua.js.map +1 -1
- package/sensor/dist/extraction/languages/objc.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/objc.js +4 -0
- package/sensor/dist/extraction/languages/objc.js.map +1 -1
- package/sensor/dist/extraction/languages/python.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/python.js +71 -0
- package/sensor/dist/extraction/languages/python.js.map +1 -1
- package/sensor/dist/extraction/languages/rust.d.ts +20 -0
- package/sensor/dist/extraction/languages/rust.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/rust.js +50 -20
- package/sensor/dist/extraction/languages/rust.js.map +1 -1
- package/sensor/dist/extraction/languages/scala.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/scala.js +18 -3
- package/sensor/dist/extraction/languages/scala.js.map +1 -1
- package/sensor/dist/extraction/languages/swift.d.ts +15 -0
- package/sensor/dist/extraction/languages/swift.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/swift.js +50 -0
- package/sensor/dist/extraction/languages/swift.js.map +1 -1
- package/sensor/dist/extraction/languages/typescript.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/typescript.js +9 -2
- package/sensor/dist/extraction/languages/typescript.js.map +1 -1
- package/sensor/dist/extraction/liquid-extractor.d.ts +18 -0
- package/sensor/dist/extraction/liquid-extractor.d.ts.map +1 -1
- package/sensor/dist/extraction/liquid-extractor.js +98 -22
- package/sensor/dist/extraction/liquid-extractor.js.map +1 -1
- package/sensor/dist/extraction/mybatis-extractor.d.ts.map +1 -1
- package/sensor/dist/extraction/mybatis-extractor.js +6 -4
- package/sensor/dist/extraction/mybatis-extractor.js.map +1 -1
- package/sensor/dist/extraction/parse-pool.d.ts +7 -0
- package/sensor/dist/extraction/parse-pool.d.ts.map +1 -1
- package/sensor/dist/extraction/parse-pool.js +20 -1
- package/sensor/dist/extraction/parse-pool.js.map +1 -1
- package/sensor/dist/extraction/syntax-tokens.d.ts +103 -0
- package/sensor/dist/extraction/syntax-tokens.d.ts.map +1 -0
- package/sensor/dist/extraction/syntax-tokens.js +381 -0
- package/sensor/dist/extraction/syntax-tokens.js.map +1 -0
- package/sensor/dist/extraction/tree-sitter-helpers.d.ts +5 -0
- package/sensor/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/sensor/dist/extraction/tree-sitter-helpers.js +17 -0
- package/sensor/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/sensor/dist/extraction/tree-sitter-types.d.ts +31 -3
- package/sensor/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/sensor/dist/extraction/tree-sitter.d.ts +101 -18
- package/sensor/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/sensor/dist/extraction/tree-sitter.js +928 -134
- package/sensor/dist/extraction/tree-sitter.js.map +1 -1
- package/sensor/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/sensor/dist/file-limits.d.ts +40 -0
- package/sensor/dist/file-limits.d.ts.map +1 -0
- package/sensor/dist/file-limits.js +147 -0
- package/sensor/dist/file-limits.js.map +1 -0
- package/sensor/dist/graph/branch-guards.d.ts +265 -0
- package/sensor/dist/graph/branch-guards.d.ts.map +1 -0
- package/sensor/dist/graph/branch-guards.js +2325 -0
- package/sensor/dist/graph/branch-guards.js.map +1 -0
- package/sensor/dist/graph/dead-code.d.ts +251 -0
- package/sensor/dist/graph/dead-code.d.ts.map +1 -0
- package/sensor/dist/graph/dead-code.js +776 -0
- package/sensor/dist/graph/dead-code.js.map +1 -0
- package/sensor/dist/graph/dynamic-boundary-report.d.ts +121 -0
- package/sensor/dist/graph/dynamic-boundary-report.d.ts.map +1 -0
- package/sensor/dist/graph/dynamic-boundary-report.js +283 -0
- package/sensor/dist/graph/dynamic-boundary-report.js.map +1 -0
- package/sensor/dist/graph/index.d.ts +4 -0
- package/sensor/dist/graph/index.d.ts.map +1 -1
- package/sensor/dist/graph/index.js +16 -1
- package/sensor/dist/graph/index.js.map +1 -1
- package/sensor/dist/graph/named-symbol-flow.d.ts +125 -0
- package/sensor/dist/graph/named-symbol-flow.d.ts.map +1 -0
- package/sensor/dist/graph/named-symbol-flow.js +552 -0
- package/sensor/dist/graph/named-symbol-flow.js.map +1 -0
- package/sensor/dist/graph/queries.d.ts.map +1 -1
- package/sensor/dist/graph/queries.js +2 -0
- package/sensor/dist/graph/queries.js.map +1 -1
- package/sensor/dist/graph/symbol-lookup.d.ts +83 -0
- package/sensor/dist/graph/symbol-lookup.d.ts.map +1 -0
- package/sensor/dist/graph/symbol-lookup.js +181 -0
- package/sensor/dist/graph/symbol-lookup.js.map +1 -0
- package/sensor/dist/graph/traversal.d.ts +9 -0
- package/sensor/dist/graph/traversal.d.ts.map +1 -1
- package/sensor/dist/graph/traversal.js +62 -36
- package/sensor/dist/graph/traversal.js.map +1 -1
- package/sensor/dist/graph/type-hierarchy.d.ts +155 -0
- package/sensor/dist/graph/type-hierarchy.d.ts.map +1 -0
- package/sensor/dist/graph/type-hierarchy.js +382 -0
- package/sensor/dist/graph/type-hierarchy.js.map +1 -0
- package/sensor/dist/index.d.ts +272 -10
- package/sensor/dist/index.d.ts.map +1 -1
- package/sensor/dist/index.js +510 -34
- package/sensor/dist/index.js.map +1 -1
- package/sensor/dist/mcp/answer-freshness.d.ts +10 -0
- package/sensor/dist/mcp/answer-freshness.d.ts.map +1 -0
- package/sensor/dist/mcp/answer-freshness.js +68 -0
- package/sensor/dist/mcp/answer-freshness.js.map +1 -0
- package/sensor/dist/mcp/daemon-manager.d.ts +1 -1
- package/sensor/dist/mcp/daemon-manager.d.ts.map +1 -1
- package/sensor/dist/mcp/daemon-manager.js +17 -1
- package/sensor/dist/mcp/daemon-manager.js.map +1 -1
- package/sensor/dist/mcp/daemon-paths.d.ts +8 -0
- package/sensor/dist/mcp/daemon-paths.d.ts.map +1 -1
- package/sensor/dist/mcp/daemon-paths.js +65 -2
- package/sensor/dist/mcp/daemon-paths.js.map +1 -1
- package/sensor/dist/mcp/daemon-registry.d.ts +17 -4
- package/sensor/dist/mcp/daemon-registry.d.ts.map +1 -1
- package/sensor/dist/mcp/daemon-registry.js +133 -23
- package/sensor/dist/mcp/daemon-registry.js.map +1 -1
- package/sensor/dist/mcp/daemon.d.ts +26 -13
- package/sensor/dist/mcp/daemon.d.ts.map +1 -1
- package/sensor/dist/mcp/daemon.js +126 -32
- package/sensor/dist/mcp/daemon.js.map +1 -1
- package/sensor/dist/mcp/dynamic-boundaries.d.ts +1 -10
- package/sensor/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
- package/sensor/dist/mcp/dynamic-boundaries.js +46 -42
- package/sensor/dist/mcp/dynamic-boundaries.js.map +1 -1
- package/sensor/dist/mcp/engine.d.ts +31 -9
- package/sensor/dist/mcp/engine.d.ts.map +1 -1
- package/sensor/dist/mcp/engine.js +190 -79
- package/sensor/dist/mcp/engine.js.map +1 -1
- package/sensor/dist/mcp/explore-dedup.d.ts +140 -0
- package/sensor/dist/mcp/explore-dedup.d.ts.map +1 -0
- package/sensor/dist/mcp/explore-dedup.js +239 -0
- package/sensor/dist/mcp/explore-dedup.js.map +1 -0
- package/sensor/dist/mcp/explore-diagnostics.d.ts +289 -0
- package/sensor/dist/mcp/explore-diagnostics.d.ts.map +1 -0
- package/sensor/dist/mcp/explore-diagnostics.js +558 -0
- package/sensor/dist/mcp/explore-diagnostics.js.map +1 -0
- package/sensor/dist/mcp/explore-session-state.d.ts +217 -0
- package/sensor/dist/mcp/explore-session-state.d.ts.map +1 -0
- package/sensor/dist/mcp/explore-session-state.js +322 -0
- package/sensor/dist/mcp/explore-session-state.js.map +1 -0
- package/sensor/dist/mcp/index-freshness-worker.d.ts +2 -0
- package/sensor/dist/mcp/index-freshness-worker.d.ts.map +1 -0
- package/sensor/dist/mcp/index-freshness-worker.js +30 -0
- package/sensor/dist/mcp/index-freshness-worker.js.map +1 -0
- package/sensor/dist/mcp/index-freshness.d.ts +7 -0
- package/sensor/dist/mcp/index-freshness.d.ts.map +1 -0
- package/sensor/dist/mcp/index-freshness.js +94 -0
- package/sensor/dist/mcp/index-freshness.js.map +1 -0
- package/sensor/dist/mcp/index.d.ts +3 -1
- package/sensor/dist/mcp/index.d.ts.map +1 -1
- package/sensor/dist/mcp/index.js +109 -12
- package/sensor/dist/mcp/index.js.map +1 -1
- package/sensor/dist/mcp/liveness-watchdog.d.ts +4 -1
- package/sensor/dist/mcp/liveness-watchdog.d.ts.map +1 -1
- package/sensor/dist/mcp/liveness-watchdog.js +11 -2
- package/sensor/dist/mcp/liveness-watchdog.js.map +1 -1
- package/sensor/dist/mcp/project-lifecycle.d.ts +9 -0
- package/sensor/dist/mcp/project-lifecycle.d.ts.map +1 -0
- package/sensor/dist/mcp/project-lifecycle.js +182 -0
- package/sensor/dist/mcp/project-lifecycle.js.map +1 -0
- package/sensor/dist/mcp/proxy.d.ts.map +1 -1
- package/sensor/dist/mcp/proxy.js +15 -1
- package/sensor/dist/mcp/proxy.js.map +1 -1
- package/sensor/dist/mcp/query-pool.d.ts +2 -2
- package/sensor/dist/mcp/query-pool.d.ts.map +1 -1
- package/sensor/dist/mcp/query-pool.js +9 -7
- package/sensor/dist/mcp/query-pool.js.map +1 -1
- package/sensor/dist/mcp/query-worker.js +2 -2
- package/sensor/dist/mcp/query-worker.js.map +1 -1
- package/sensor/dist/mcp/server-instructions.d.ts +2 -2
- package/sensor/dist/mcp/server-instructions.d.ts.map +1 -1
- package/sensor/dist/mcp/server-instructions.js +13 -6
- package/sensor/dist/mcp/server-instructions.js.map +1 -1
- package/sensor/dist/mcp/session.d.ts +16 -0
- package/sensor/dist/mcp/session.d.ts.map +1 -1
- package/sensor/dist/mcp/session.js +36 -13
- package/sensor/dist/mcp/session.js.map +1 -1
- package/sensor/dist/mcp/startup-handshake.d.ts +3 -1
- package/sensor/dist/mcp/startup-handshake.d.ts.map +1 -1
- package/sensor/dist/mcp/startup-handshake.js +10 -2
- package/sensor/dist/mcp/startup-handshake.js.map +1 -1
- package/sensor/dist/mcp/tools.d.ts +496 -38
- package/sensor/dist/mcp/tools.d.ts.map +1 -1
- package/sensor/dist/mcp/tools.js +4021 -772
- package/sensor/dist/mcp/tools.js.map +1 -1
- package/sensor/dist/mcp/writer-lock.d.ts +61 -0
- package/sensor/dist/mcp/writer-lock.d.ts.map +1 -0
- package/sensor/dist/mcp/writer-lock.js +260 -0
- package/sensor/dist/mcp/writer-lock.js.map +1 -0
- package/sensor/dist/project-config.d.ts +23 -0
- package/sensor/dist/project-config.d.ts.map +1 -1
- package/sensor/dist/project-config.js +39 -2
- package/sensor/dist/project-config.js.map +1 -1
- package/sensor/dist/resolution/alias-binding.d.ts +56 -0
- package/sensor/dist/resolution/alias-binding.d.ts.map +1 -0
- package/sensor/dist/resolution/alias-binding.js +127 -0
- package/sensor/dist/resolution/alias-binding.js.map +1 -0
- package/sensor/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/sensor/dist/resolution/c-fnptr-synthesizer.js +21 -19
- package/sensor/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/sensor/dist/resolution/callback-synthesizer.d.ts +23 -1
- package/sensor/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/sensor/dist/resolution/callback-synthesizer.js +356 -155
- package/sensor/dist/resolution/callback-synthesizer.js.map +1 -1
- package/sensor/dist/resolution/cpp-constructor.d.ts +4 -0
- package/sensor/dist/resolution/cpp-constructor.d.ts.map +1 -0
- package/sensor/dist/resolution/cpp-constructor.js +123 -0
- package/sensor/dist/resolution/cpp-constructor.js.map +1 -0
- package/sensor/dist/resolution/cpp-macro-visibility.d.ts +12 -0
- package/sensor/dist/resolution/cpp-macro-visibility.d.ts.map +1 -0
- package/sensor/dist/resolution/cpp-macro-visibility.js +342 -0
- package/sensor/dist/resolution/cpp-macro-visibility.js.map +1 -0
- package/sensor/dist/resolution/expo-router-synthesizer.d.ts +32 -0
- package/sensor/dist/resolution/expo-router-synthesizer.d.ts.map +1 -0
- package/sensor/dist/resolution/expo-router-synthesizer.js +189 -0
- package/sensor/dist/resolution/expo-router-synthesizer.js.map +1 -0
- package/sensor/dist/resolution/frameworks/csharp.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/csharp.js +96 -2
- package/sensor/dist/resolution/frameworks/csharp.js.map +1 -1
- package/sensor/dist/resolution/frameworks/expo-router.d.ts +189 -0
- package/sensor/dist/resolution/frameworks/expo-router.d.ts.map +1 -0
- package/sensor/dist/resolution/frameworks/expo-router.js +785 -0
- package/sensor/dist/resolution/frameworks/expo-router.js.map +1 -0
- package/sensor/dist/resolution/frameworks/express.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/express.js +251 -16
- package/sensor/dist/resolution/frameworks/express.js.map +1 -1
- package/sensor/dist/resolution/frameworks/index.d.ts +5 -0
- package/sensor/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/index.js +29 -1
- package/sensor/dist/resolution/frameworks/index.js.map +1 -1
- package/sensor/dist/resolution/frameworks/java.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/java.js +79 -47
- package/sensor/dist/resolution/frameworks/java.js.map +1 -1
- package/sensor/dist/resolution/frameworks/laravel.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/laravel.js +294 -4
- package/sensor/dist/resolution/frameworks/laravel.js.map +1 -1
- package/sensor/dist/resolution/frameworks/nestjs.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/nestjs.js +6 -14
- package/sensor/dist/resolution/frameworks/nestjs.js.map +1 -1
- package/sensor/dist/resolution/frameworks/nextjs.d.ts +76 -0
- package/sensor/dist/resolution/frameworks/nextjs.d.ts.map +1 -0
- package/sensor/dist/resolution/frameworks/nextjs.js +328 -0
- package/sensor/dist/resolution/frameworks/nextjs.js.map +1 -0
- package/sensor/dist/resolution/frameworks/object-literal.d.ts +32 -0
- package/sensor/dist/resolution/frameworks/object-literal.d.ts.map +1 -0
- package/sensor/dist/resolution/frameworks/object-literal.js +139 -0
- package/sensor/dist/resolution/frameworks/object-literal.js.map +1 -0
- package/sensor/dist/resolution/frameworks/package-deps.d.ts +14 -0
- package/sensor/dist/resolution/frameworks/package-deps.d.ts.map +1 -0
- package/sensor/dist/resolution/frameworks/package-deps.js +78 -0
- package/sensor/dist/resolution/frameworks/package-deps.js.map +1 -0
- package/sensor/dist/resolution/frameworks/python.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/python.js +166 -0
- package/sensor/dist/resolution/frameworks/python.js.map +1 -1
- package/sensor/dist/resolution/frameworks/react-native.d.ts +26 -0
- package/sensor/dist/resolution/frameworks/react-native.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/react-native.js +153 -14
- package/sensor/dist/resolution/frameworks/react-native.js.map +1 -1
- package/sensor/dist/resolution/frameworks/react-router.d.ts +46 -0
- package/sensor/dist/resolution/frameworks/react-router.d.ts.map +1 -0
- package/sensor/dist/resolution/frameworks/react-router.js +187 -0
- package/sensor/dist/resolution/frameworks/react-router.js.map +1 -0
- package/sensor/dist/resolution/frameworks/react.d.ts +2 -1
- package/sensor/dist/resolution/frameworks/react.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/react.js +188 -139
- package/sensor/dist/resolution/frameworks/react.js.map +1 -1
- package/sensor/dist/resolution/frameworks/svelte.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/svelte.js +6 -1
- package/sensor/dist/resolution/frameworks/svelte.js.map +1 -1
- package/sensor/dist/resolution/frameworks/sveltekit-router.d.ts +36 -0
- package/sensor/dist/resolution/frameworks/sveltekit-router.d.ts.map +1 -0
- package/sensor/dist/resolution/frameworks/sveltekit-router.js +156 -0
- package/sensor/dist/resolution/frameworks/sveltekit-router.js.map +1 -0
- package/sensor/dist/resolution/frameworks/swift.d.ts.map +1 -1
- package/sensor/dist/resolution/frameworks/swift.js +140 -99
- package/sensor/dist/resolution/frameworks/swift.js.map +1 -1
- package/sensor/dist/resolution/frameworks/tanstack-router.d.ts +84 -0
- package/sensor/dist/resolution/frameworks/tanstack-router.d.ts.map +1 -0
- package/sensor/dist/resolution/frameworks/tanstack-router.js +437 -0
- package/sensor/dist/resolution/frameworks/tanstack-router.js.map +1 -0
- package/sensor/dist/resolution/frameworks/vue-router.d.ts +82 -0
- package/sensor/dist/resolution/frameworks/vue-router.d.ts.map +1 -0
- package/sensor/dist/resolution/frameworks/vue-router.js +377 -0
- package/sensor/dist/resolution/frameworks/vue-router.js.map +1 -0
- package/sensor/dist/resolution/import-resolver.d.ts +38 -0
- package/sensor/dist/resolution/import-resolver.d.ts.map +1 -1
- package/sensor/dist/resolution/import-resolver.js +394 -28
- package/sensor/dist/resolution/import-resolver.js.map +1 -1
- package/sensor/dist/resolution/index.d.ts +89 -25
- package/sensor/dist/resolution/index.d.ts.map +1 -1
- package/sensor/dist/resolution/index.js +573 -148
- package/sensor/dist/resolution/index.js.map +1 -1
- package/sensor/dist/resolution/js-builtins.d.ts +13 -0
- package/sensor/dist/resolution/js-builtins.d.ts.map +1 -0
- package/sensor/dist/resolution/js-builtins.js +46 -0
- package/sensor/dist/resolution/js-builtins.js.map +1 -0
- package/sensor/dist/resolution/name-matcher.d.ts +99 -22
- package/sensor/dist/resolution/name-matcher.d.ts.map +1 -1
- package/sensor/dist/resolution/name-matcher.js +2220 -86
- package/sensor/dist/resolution/name-matcher.js.map +1 -1
- package/sensor/dist/resolution/next-router-synthesizer.d.ts +27 -0
- package/sensor/dist/resolution/next-router-synthesizer.d.ts.map +1 -0
- package/sensor/dist/resolution/next-router-synthesizer.js +113 -0
- package/sensor/dist/resolution/next-router-synthesizer.js.map +1 -0
- package/sensor/dist/resolution/path-aliases.d.ts +6 -4
- package/sensor/dist/resolution/path-aliases.d.ts.map +1 -1
- package/sensor/dist/resolution/path-aliases.js +125 -17
- package/sensor/dist/resolution/path-aliases.js.map +1 -1
- package/sensor/dist/resolution/react-router-synthesizer.d.ts +33 -0
- package/sensor/dist/resolution/react-router-synthesizer.d.ts.map +1 -0
- package/sensor/dist/resolution/react-router-synthesizer.js +126 -0
- package/sensor/dist/resolution/react-router-synthesizer.js.map +1 -0
- package/sensor/dist/resolution/resolver-pool.d.ts +2 -0
- package/sensor/dist/resolution/resolver-pool.d.ts.map +1 -1
- package/sensor/dist/resolution/resolver-pool.js +4 -0
- package/sensor/dist/resolution/resolver-pool.js.map +1 -1
- package/sensor/dist/resolution/strip-comments.d.ts +6 -0
- package/sensor/dist/resolution/strip-comments.d.ts.map +1 -1
- package/sensor/dist/resolution/strip-comments.js +58 -0
- package/sensor/dist/resolution/strip-comments.js.map +1 -1
- package/sensor/dist/resolution/sveltekit-synthesizer.d.ts +58 -0
- package/sensor/dist/resolution/sveltekit-synthesizer.d.ts.map +1 -0
- package/sensor/dist/resolution/sveltekit-synthesizer.js +173 -0
- package/sensor/dist/resolution/sveltekit-synthesizer.js.map +1 -0
- package/sensor/dist/resolution/swift-type-visibility.d.ts +52 -0
- package/sensor/dist/resolution/swift-type-visibility.d.ts.map +1 -0
- package/sensor/dist/resolution/swift-type-visibility.js +328 -0
- package/sensor/dist/resolution/swift-type-visibility.js.map +1 -0
- package/sensor/dist/resolution/synth-utils.d.ts +26 -0
- package/sensor/dist/resolution/synth-utils.d.ts.map +1 -0
- package/sensor/dist/resolution/synth-utils.js +75 -0
- package/sensor/dist/resolution/synth-utils.js.map +1 -0
- package/sensor/dist/resolution/tanstack-router-synthesizer.d.ts +31 -0
- package/sensor/dist/resolution/tanstack-router-synthesizer.d.ts.map +1 -0
- package/sensor/dist/resolution/tanstack-router-synthesizer.js +114 -0
- package/sensor/dist/resolution/tanstack-router-synthesizer.js.map +1 -0
- package/sensor/dist/resolution/tier-synthesizer.d.ts +54 -0
- package/sensor/dist/resolution/tier-synthesizer.d.ts.map +1 -0
- package/sensor/dist/resolution/tier-synthesizer.js +1294 -0
- package/sensor/dist/resolution/tier-synthesizer.js.map +1 -0
- package/sensor/dist/resolution/types.d.ts +78 -2
- package/sensor/dist/resolution/types.d.ts.map +1 -1
- package/sensor/dist/resolution/types.js +64 -0
- package/sensor/dist/resolution/types.js.map +1 -1
- package/sensor/dist/resolution/vue-router-synthesizer.d.ts +30 -0
- package/sensor/dist/resolution/vue-router-synthesizer.d.ts.map +1 -0
- package/sensor/dist/resolution/vue-router-synthesizer.js +115 -0
- package/sensor/dist/resolution/vue-router-synthesizer.js.map +1 -0
- package/sensor/dist/search/identifier-segments.d.ts +10 -0
- package/sensor/dist/search/identifier-segments.d.ts.map +1 -1
- package/sensor/dist/search/identifier-segments.js +29 -0
- package/sensor/dist/search/identifier-segments.js.map +1 -1
- package/sensor/dist/search/query-paths.d.ts +106 -0
- package/sensor/dist/search/query-paths.d.ts.map +1 -0
- package/sensor/dist/search/query-paths.js +513 -0
- package/sensor/dist/search/query-paths.js.map +1 -0
- package/sensor/dist/search/query-utils.d.ts +22 -2
- package/sensor/dist/search/query-utils.d.ts.map +1 -1
- package/sensor/dist/search/query-utils.js +56 -16
- package/sensor/dist/search/query-utils.js.map +1 -1
- package/sensor/dist/sync/watch-policy.d.ts +14 -0
- package/sensor/dist/sync/watch-policy.d.ts.map +1 -1
- package/sensor/dist/sync/watch-policy.js +19 -0
- package/sensor/dist/sync/watch-policy.js.map +1 -1
- package/sensor/dist/sync/watcher.d.ts +74 -35
- package/sensor/dist/sync/watcher.d.ts.map +1 -1
- package/sensor/dist/sync/watcher.js +281 -99
- package/sensor/dist/sync/watcher.js.map +1 -1
- package/sensor/dist/telemetry/index.d.ts +4 -2
- package/sensor/dist/telemetry/index.d.ts.map +1 -1
- package/sensor/dist/telemetry/index.js +92 -41
- package/sensor/dist/telemetry/index.js.map +1 -1
- package/sensor/dist/types.d.ts +18 -2
- package/sensor/dist/types.d.ts.map +1 -1
- package/sensor/dist/types.js +2 -0
- package/sensor/dist/types.js.map +1 -1
- package/sensor/dist/ui-server/api/deadcode.d.ts +84 -0
- package/sensor/dist/ui-server/api/deadcode.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/deadcode.js +136 -0
- package/sensor/dist/ui-server/api/deadcode.js.map +1 -0
- package/sensor/dist/ui-server/api/effects.d.ts +94 -0
- package/sensor/dist/ui-server/api/effects.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/effects.js +527 -0
- package/sensor/dist/ui-server/api/effects.js.map +1 -0
- package/sensor/dist/ui-server/api/entrypoints.d.ts +92 -0
- package/sensor/dist/ui-server/api/entrypoints.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/entrypoints.js +361 -0
- package/sensor/dist/ui-server/api/entrypoints.js.map +1 -0
- package/sensor/dist/ui-server/api/events.d.ts +183 -0
- package/sensor/dist/ui-server/api/events.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/events.js +430 -0
- package/sensor/dist/ui-server/api/events.js.map +1 -0
- package/sensor/dist/ui-server/api/file.d.ts +66 -0
- package/sensor/dist/ui-server/api/file.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/file.js +235 -0
- package/sensor/dist/ui-server/api/file.js.map +1 -0
- package/sensor/dist/ui-server/api/filecode.d.ts +126 -0
- package/sensor/dist/ui-server/api/filecode.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/filecode.js +205 -0
- package/sensor/dist/ui-server/api/filecode.js.map +1 -0
- package/sensor/dist/ui-server/api/flow.d.ts +226 -0
- package/sensor/dist/ui-server/api/flow.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/flow.js +612 -0
- package/sensor/dist/ui-server/api/flow.js.map +1 -0
- package/sensor/dist/ui-server/api/hierarchy.d.ts +81 -0
- package/sensor/dist/ui-server/api/hierarchy.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/hierarchy.js +92 -0
- package/sensor/dist/ui-server/api/hierarchy.js.map +1 -0
- package/sensor/dist/ui-server/api/index.d.ts +90 -0
- package/sensor/dist/ui-server/api/index.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/index.js +332 -0
- package/sensor/dist/ui-server/api/index.js.map +1 -0
- package/sensor/dist/ui-server/api/map.d.ts +256 -0
- package/sensor/dist/ui-server/api/map.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/map.js +760 -0
- package/sensor/dist/ui-server/api/map.js.map +1 -0
- package/sensor/dist/ui-server/api/node.d.ts +81 -0
- package/sensor/dist/ui-server/api/node.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/node.js +388 -0
- package/sensor/dist/ui-server/api/node.js.map +1 -0
- package/sensor/dist/ui-server/api/nodes.d.ts +25 -0
- package/sensor/dist/ui-server/api/nodes.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/nodes.js +45 -0
- package/sensor/dist/ui-server/api/nodes.js.map +1 -0
- package/sensor/dist/ui-server/api/program.d.ts +139 -0
- package/sensor/dist/ui-server/api/program.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/program.js +315 -0
- package/sensor/dist/ui-server/api/program.js.map +1 -0
- package/sensor/dist/ui-server/api/respond.d.ts +76 -0
- package/sensor/dist/ui-server/api/respond.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/respond.js +186 -0
- package/sensor/dist/ui-server/api/respond.js.map +1 -0
- package/sensor/dist/ui-server/api/route-roots.d.ts +39 -0
- package/sensor/dist/ui-server/api/route-roots.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/route-roots.js +96 -0
- package/sensor/dist/ui-server/api/route-roots.js.map +1 -0
- package/sensor/dist/ui-server/api/routes.d.ts +59 -0
- package/sensor/dist/ui-server/api/routes.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/routes.js +108 -0
- package/sensor/dist/ui-server/api/routes.js.map +1 -0
- package/sensor/dist/ui-server/api/screens.d.ts +117 -0
- package/sensor/dist/ui-server/api/screens.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/screens.js +611 -0
- package/sensor/dist/ui-server/api/screens.js.map +1 -0
- package/sensor/dist/ui-server/api/search.d.ts +29 -0
- package/sensor/dist/ui-server/api/search.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/search.js +232 -0
- package/sensor/dist/ui-server/api/search.js.map +1 -0
- package/sensor/dist/ui-server/api/session.d.ts +52 -0
- package/sensor/dist/ui-server/api/session.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/session.js +196 -0
- package/sensor/dist/ui-server/api/session.js.map +1 -0
- package/sensor/dist/ui-server/api/source.d.ts +200 -0
- package/sensor/dist/ui-server/api/source.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/source.js +422 -0
- package/sensor/dist/ui-server/api/source.js.map +1 -0
- package/sensor/dist/ui-server/api/stats.d.ts +27 -0
- package/sensor/dist/ui-server/api/stats.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/stats.js +164 -0
- package/sensor/dist/ui-server/api/stats.js.map +1 -0
- package/sensor/dist/ui-server/api/steps.d.ts +274 -0
- package/sensor/dist/ui-server/api/steps.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/steps.js +1544 -0
- package/sensor/dist/ui-server/api/steps.js.map +1 -0
- package/sensor/dist/ui-server/api/trail-store.d.ts +142 -0
- package/sensor/dist/ui-server/api/trail-store.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/trail-store.js +325 -0
- package/sensor/dist/ui-server/api/trail-store.js.map +1 -0
- package/sensor/dist/ui-server/api/trails.d.ts +163 -0
- package/sensor/dist/ui-server/api/trails.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/trails.js +369 -0
- package/sensor/dist/ui-server/api/trails.js.map +1 -0
- package/sensor/dist/ui-server/api/when.d.ts +133 -0
- package/sensor/dist/ui-server/api/when.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/when.js +275 -0
- package/sensor/dist/ui-server/api/when.js.map +1 -0
- package/sensor/dist/ui-server/api/wire.d.ts +179 -0
- package/sensor/dist/ui-server/api/wire.d.ts.map +1 -0
- package/sensor/dist/ui-server/api/wire.js +231 -0
- package/sensor/dist/ui-server/api/wire.js.map +1 -0
- package/sensor/dist/ui-server/assets.d.ts +40 -0
- package/sensor/dist/ui-server/assets.d.ts.map +1 -0
- package/sensor/dist/ui-server/assets.js +110 -0
- package/sensor/dist/ui-server/assets.js.map +1 -0
- package/sensor/dist/ui-server/constants.d.ts +32 -0
- package/sensor/dist/ui-server/constants.d.ts.map +1 -0
- package/sensor/dist/ui-server/constants.js +35 -0
- package/sensor/dist/ui-server/constants.js.map +1 -0
- package/sensor/dist/ui-server/highlight/index.d.ts +113 -0
- package/sensor/dist/ui-server/highlight/index.d.ts.map +1 -0
- package/sensor/dist/ui-server/highlight/index.js +307 -0
- package/sensor/dist/ui-server/highlight/index.js.map +1 -0
- package/sensor/dist/ui-server/highlight/languages.d.ts +36 -0
- package/sensor/dist/ui-server/highlight/languages.d.ts.map +1 -0
- package/sensor/dist/ui-server/highlight/languages.js +50 -0
- package/sensor/dist/ui-server/highlight/languages.js.map +1 -0
- package/sensor/dist/ui-server/index.d.ts +92 -0
- package/sensor/dist/ui-server/index.d.ts.map +1 -0
- package/sensor/dist/ui-server/index.js +399 -0
- package/sensor/dist/ui-server/index.js.map +1 -0
- package/sensor/dist/ui-server/open-browser.d.ts +31 -0
- package/sensor/dist/ui-server/open-browser.d.ts.map +1 -0
- package/sensor/dist/ui-server/open-browser.js +79 -0
- package/sensor/dist/ui-server/open-browser.js.map +1 -0
- package/sensor/dist/ui-server/security.d.ts +127 -0
- package/sensor/dist/ui-server/security.d.ts.map +1 -0
- package/sensor/dist/ui-server/security.js +332 -0
- package/sensor/dist/ui-server/security.js.map +1 -0
- package/sensor/dist/ui-server/static.d.ts +45 -0
- package/sensor/dist/ui-server/static.d.ts.map +1 -0
- package/sensor/dist/ui-server/static.js +165 -0
- package/sensor/dist/ui-server/static.js.map +1 -0
- package/sensor/dist/utils.d.ts +14 -2
- package/sensor/dist/utils.d.ts.map +1 -1
- package/sensor/dist/utils.js +25 -10
- package/sensor/dist/utils.js.map +1 -1
- package/src/sensor-adapter.mjs +5 -1
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clearSwiftTypeVisibility = clearSwiftTypeVisibility;
|
|
4
|
+
exports.isSwiftExtension = isSwiftExtension;
|
|
5
|
+
exports.declaresExtension = declaresExtension;
|
|
6
|
+
exports.swiftExtendedConformances = swiftExtendedConformances;
|
|
7
|
+
exports.gateSwiftTypeTarget = gateSwiftTypeTarget;
|
|
8
|
+
const TYPE_KINDS = new Set(['class', 'struct', 'enum', 'interface', 'protocol', 'type_alias']);
|
|
9
|
+
/** The first declaration keyword of a class_declaration, past its attributes and modifiers. */
|
|
10
|
+
const DECLARATION_KEYWORD = /\b(extension|class|struct|enum|actor|protocol)\b/;
|
|
11
|
+
const memos = new WeakMap();
|
|
12
|
+
function memoFor(context) {
|
|
13
|
+
let memo = memos.get(context);
|
|
14
|
+
if (!memo) {
|
|
15
|
+
memo = { extension: new Map(), declaration: new Map(), conformances: new Map(), clauses: new Map(), inherited: new Map() };
|
|
16
|
+
memos.set(context, memo);
|
|
17
|
+
}
|
|
18
|
+
return memo;
|
|
19
|
+
}
|
|
20
|
+
/** Drop the memos (see ReferenceResolver.clearCaches). */
|
|
21
|
+
function clearSwiftTypeVisibility(context) {
|
|
22
|
+
memos.delete(context);
|
|
23
|
+
}
|
|
24
|
+
/** Is this Swift node an `extension` of a type rather than its declaration? */
|
|
25
|
+
function isSwiftExtension(node, context) {
|
|
26
|
+
// Extraction classifies an extension as a class (it is neither struct nor enum).
|
|
27
|
+
if (node.language !== 'swift' || node.kind !== 'class')
|
|
28
|
+
return false;
|
|
29
|
+
const memo = memoFor(context).extension;
|
|
30
|
+
const hit = memo.get(node.id);
|
|
31
|
+
if (hit !== undefined)
|
|
32
|
+
return hit;
|
|
33
|
+
const lines = linesOf(node.filePath, context);
|
|
34
|
+
const extension = !!lines && declaresExtension(lines, node);
|
|
35
|
+
memo.set(node.id, extension);
|
|
36
|
+
return extension;
|
|
37
|
+
}
|
|
38
|
+
/** Does the class_declaration at `node`'s position open with `extension`? From the file's lines. */
|
|
39
|
+
function declaresExtension(lines, node) {
|
|
40
|
+
const head = [
|
|
41
|
+
(lines[node.startLine - 1] ?? '').slice(node.startColumn),
|
|
42
|
+
...lines.slice(node.startLine, Math.min(node.endLine, node.startLine + 4)),
|
|
43
|
+
]
|
|
44
|
+
.join(' ')
|
|
45
|
+
// An attribute's string argument (`message: "use class Foo"`) is not a keyword.
|
|
46
|
+
.replace(/"(?:[^"\\\n]|\\.)*"/g, '""');
|
|
47
|
+
return DECLARATION_KEYWORD.exec(head)?.[1] === 'extension';
|
|
48
|
+
}
|
|
49
|
+
/** A declaration's inheritance clause: `struct HomeView: View, Sendable {` → `View, Sendable`. */
|
|
50
|
+
const INHERITANCE_CLAUSE = /\b(?:class|struct|enum|actor|protocol|extension)\s+[A-Za-z_][\w.]*\s*(?:<[^{}]*?>)?\s*:\s*([^{]*?)\s*(?:\bwhere\b[^{]*)?\{/;
|
|
51
|
+
/** The supertypes a Swift type node's own declaration names: `View`, `Sendable` for `struct HomeView: View, Sendable {`. */
|
|
52
|
+
function declaredSupertypes(node, context) {
|
|
53
|
+
const memo = memoFor(context).clauses;
|
|
54
|
+
const hit = memo.get(node.id);
|
|
55
|
+
if (hit)
|
|
56
|
+
return hit;
|
|
57
|
+
let names = [];
|
|
58
|
+
const lines = linesOf(node.filePath, context);
|
|
59
|
+
if (lines) {
|
|
60
|
+
const head = [(lines[node.startLine - 1] ?? '').slice(node.startColumn), ...lines.slice(node.startLine, Math.min(node.endLine, node.startLine + 6))].join(' ');
|
|
61
|
+
const clause = INHERITANCE_CLAUSE.exec(head.replace(/"(?:[^"\\\n]|\\.)*"/g, '""'))?.[1];
|
|
62
|
+
if (clause) {
|
|
63
|
+
names = clause
|
|
64
|
+
.split(',')
|
|
65
|
+
.map((part) => part.replace(GENERIC_ARGS, '').trim().split('.').pop().trim())
|
|
66
|
+
.filter((name) => /^[A-Za-z_]\w*$/.test(name));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
memo.set(node.id, names);
|
|
70
|
+
return names;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The types a Swift type node's own declaration conforms to that the project
|
|
74
|
+
* only extends — `View` for `struct HomeView: View` when `extension View {}`
|
|
75
|
+
* is all the index holds of it. Those conformances resolve to nothing (an
|
|
76
|
+
* extension is not the type), yet the members the extensions add are the
|
|
77
|
+
* conformer's: the supertype walk reads them from here. From the source, once
|
|
78
|
+
* per node — the resolved edges it would otherwise come from do not exist.
|
|
79
|
+
*/
|
|
80
|
+
function swiftExtendedConformances(node, context) {
|
|
81
|
+
if (node.language !== 'swift')
|
|
82
|
+
return [];
|
|
83
|
+
const memo = memoFor(context).conformances;
|
|
84
|
+
const hit = memo.get(node.id);
|
|
85
|
+
if (hit)
|
|
86
|
+
return hit;
|
|
87
|
+
const names = declaredSupertypes(node, context).filter((name) => {
|
|
88
|
+
const typed = context.getNodesByName(name).filter((n) => n.language === 'swift' && TYPE_KINDS.has(n.kind));
|
|
89
|
+
return typed.length > 0 && typed.every((n) => isSwiftExtension(n, context));
|
|
90
|
+
});
|
|
91
|
+
memo.set(node.id, names);
|
|
92
|
+
return names;
|
|
93
|
+
}
|
|
94
|
+
/** Every type a Swift type inherits from or conforms to, as declared in the project — transitively, a few levels. */
|
|
95
|
+
function inheritedTypeNames(typeName, context) {
|
|
96
|
+
const memo = memoFor(context).inherited;
|
|
97
|
+
const hit = memo.get(typeName);
|
|
98
|
+
if (hit)
|
|
99
|
+
return hit;
|
|
100
|
+
const found = new Set();
|
|
101
|
+
let frontier = [typeName];
|
|
102
|
+
for (let depth = 0; depth < 4 && frontier.length > 0; depth++) {
|
|
103
|
+
const next = [];
|
|
104
|
+
for (const name of frontier) {
|
|
105
|
+
for (const node of context.getNodesByName(name)) {
|
|
106
|
+
if (node.language !== 'swift' || !TYPE_KINDS.has(node.kind))
|
|
107
|
+
continue;
|
|
108
|
+
for (const sup of declaredSupertypes(node, context)) {
|
|
109
|
+
if (sup === typeName || found.has(sup))
|
|
110
|
+
continue;
|
|
111
|
+
found.add(sup);
|
|
112
|
+
next.push(sup);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
frontier = next;
|
|
117
|
+
}
|
|
118
|
+
memo.set(typeName, found);
|
|
119
|
+
return found;
|
|
120
|
+
}
|
|
121
|
+
/** The type path a nested type is declared in (`AccountsListViewModel` for `AccountsListViewModel::State`), or null at the top level. */
|
|
122
|
+
function parentPath(node) {
|
|
123
|
+
const sep = node.qualifiedName.lastIndexOf('::');
|
|
124
|
+
if (sep <= 0)
|
|
125
|
+
return null;
|
|
126
|
+
const parent = node.qualifiedName.slice(0, sep);
|
|
127
|
+
// A framework resolver's node is named after its file (`Sources/App/Home.swift::Home`), not a scope.
|
|
128
|
+
if (parent.includes('/') || parent.endsWith('.swift'))
|
|
129
|
+
return null;
|
|
130
|
+
return parent;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* How deep the code at `from` sits in `target`'s scope, when it may name
|
|
134
|
+
* `target` bare: 0 for a top-level type, the parent's segment count inside
|
|
135
|
+
* the parent or a subtype of it, one more inside the type itself; null when
|
|
136
|
+
* out of scope. An `extension API.PackageController` carries only its last
|
|
137
|
+
* segment (`PackageController::get`), so a suffix of a path counts as inside
|
|
138
|
+
* it too.
|
|
139
|
+
*/
|
|
140
|
+
function bareScopeDepth(target, from, context) {
|
|
141
|
+
const parent = parentPath(target);
|
|
142
|
+
if (!parent)
|
|
143
|
+
return 0;
|
|
144
|
+
if (!from)
|
|
145
|
+
return null;
|
|
146
|
+
const scope = from.qualifiedName;
|
|
147
|
+
const inside = (path) => {
|
|
148
|
+
const segs = path.split('::');
|
|
149
|
+
for (let i = 0; i < segs.length; i++) {
|
|
150
|
+
const suffix = segs.slice(i).join('::');
|
|
151
|
+
if (scope === suffix || scope.startsWith(`${suffix}::`))
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
return false;
|
|
155
|
+
};
|
|
156
|
+
const depth = parent.split('::').length;
|
|
157
|
+
// Inside the type itself — `extension NIOBSDSocket.Option { static let x: Option }` —
|
|
158
|
+
// or inside its parent.
|
|
159
|
+
if (inside(target.qualifiedName))
|
|
160
|
+
return depth + 1;
|
|
161
|
+
if (inside(parent))
|
|
162
|
+
return depth;
|
|
163
|
+
// A subclass (or conformer) names its supertype's nested types bare:
|
|
164
|
+
// `ReadResult` in `BaseStreamSocketChannel: BaseSocketChannel`.
|
|
165
|
+
const parentName = parent.split('::').pop();
|
|
166
|
+
const scopeTypes = scope.split('::');
|
|
167
|
+
for (const name of scopeTypes) {
|
|
168
|
+
if (inheritedTypeNames(name, context).has(parentName))
|
|
169
|
+
return depth;
|
|
170
|
+
}
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
/** The source lines of a file, through the resolver's line cache when it has one. */
|
|
174
|
+
function linesOf(filePath, context) {
|
|
175
|
+
return context.getFileLines?.(filePath) ?? context.readFile(filePath)?.split(/\r?\n/) ?? null;
|
|
176
|
+
}
|
|
177
|
+
/** `<Success>` / `<Key, [Value]>` — one level of nesting is all a qualifier carries in practice. */
|
|
178
|
+
const GENERIC_ARGS = /<[^<>]*(?:<[^<>]*>[^<>]*)*>/g;
|
|
179
|
+
const QUALIFIER_SEGMENT = String.raw `[A-Za-z_]\w*(?:<[^<>]*(?:<[^<>]*>[^<>]*)*>)?\s*\.\s*`;
|
|
180
|
+
const QUALIFIER_BEFORE = new RegExp(String.raw `((?:${QUALIFIER_SEGMENT})+)$`);
|
|
181
|
+
/**
|
|
182
|
+
* The reference as its site writes it. The index keeps a Swift type
|
|
183
|
+
* reference by its last segment — `Build.Id` is a ref named `Id` — so whether
|
|
184
|
+
* the name was qualified is read back from the line: a type annotation's
|
|
185
|
+
* column is the name's (`Build.|Id`), a construction's is the chain's
|
|
186
|
+
* (`|API.PackageController.GetRoute.Model(`).
|
|
187
|
+
*/
|
|
188
|
+
function writtenName(ref, context) {
|
|
189
|
+
const name = ref.referenceName;
|
|
190
|
+
if (name.includes('.'))
|
|
191
|
+
return name;
|
|
192
|
+
const text = linesOf(ref.filePath, context)?.[ref.line - 1];
|
|
193
|
+
if (!text)
|
|
194
|
+
return name;
|
|
195
|
+
// `EventLoopFuture<Success>.Isolated`: the qualifier's generic arguments are not part of its path.
|
|
196
|
+
const clean = (qualifier) => `${qualifier.replace(GENERIC_ARGS, '').replace(/\s+/g, '')}${name}`;
|
|
197
|
+
// A composition's `&` line is parsed one column left of the file, its `&`
|
|
198
|
+
// moved onto the line before (joinSwiftCompositionContinuations).
|
|
199
|
+
const column = !text.startsWith(name, ref.column) && /^[ \t]*&[ \t]/.test(text) && text.startsWith(name, ref.column + 1) ? ref.column + 1 : ref.column;
|
|
200
|
+
if (text.startsWith(name, column)) {
|
|
201
|
+
const before = QUALIFIER_BEFORE.exec(text.slice(Math.max(0, column - 240), column));
|
|
202
|
+
return before ? clean(before[1]) : name;
|
|
203
|
+
}
|
|
204
|
+
const chain = new RegExp(String.raw `^((?:${QUALIFIER_SEGMENT})+)${name.replace(/[$\\]/g, '\\$&')}\b`).exec(text.slice(ref.column, ref.column + 240));
|
|
205
|
+
return chain ? clean(chain[1]) : name;
|
|
206
|
+
}
|
|
207
|
+
/** `API.PackageController.Model` as `API::PackageController::Model`, up to `name`; null when `name` is not a segment. */
|
|
208
|
+
function writtenPath(written, name) {
|
|
209
|
+
const segs = written.split('.');
|
|
210
|
+
const at = segs.lastIndexOf(name);
|
|
211
|
+
return at < 0 ? null : segs.slice(0, at + 1).join('::');
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Does a type's qualified name fit the path a site wrote? A type declared in
|
|
215
|
+
* `extension API.PackageController.GetRoute` is `GetRoute::Model`, so its
|
|
216
|
+
* name may be a tail of the path; a module-qualified `Foundation.Date` names
|
|
217
|
+
* a top-level type.
|
|
218
|
+
*/
|
|
219
|
+
function fitsPath(node, path, context) {
|
|
220
|
+
const qn = node.qualifiedName;
|
|
221
|
+
if (qn === path || qn.endsWith(`::${path}`))
|
|
222
|
+
return true;
|
|
223
|
+
if (!path.endsWith(`::${qn}`))
|
|
224
|
+
return false;
|
|
225
|
+
if (qn.includes('::'))
|
|
226
|
+
return true;
|
|
227
|
+
const head = path.slice(0, path.length - qn.length - 2);
|
|
228
|
+
const parentName = head.split('::').pop();
|
|
229
|
+
// A member declared under `#if` in a type's body can be indexed at the top
|
|
230
|
+
// level — the grammar ends `enum NIOBSDSocket {` at an `#if` right inside
|
|
231
|
+
// it, so `typealias Handle` loses its parent. It still shares a file with a
|
|
232
|
+
// declaration or extension of the parent the site names.
|
|
233
|
+
if (context.getNodesInFile(node.filePath).some((p) => p.name === parentName && TYPE_KINDS.has(p.kind) && p.id !== node.id))
|
|
234
|
+
return true;
|
|
235
|
+
// `App.Build`: a top-level type under a qualifier that names no type — a module.
|
|
236
|
+
return !head.includes('::') && !context.getNodesByName(head).some((n) => n.language === 'swift' && TYPE_KINDS.has(n.kind));
|
|
237
|
+
}
|
|
238
|
+
/** Segments two paths' directories share. */
|
|
239
|
+
function sharedDirs(a, b) {
|
|
240
|
+
const da = a.split('/').slice(0, -1);
|
|
241
|
+
const db = b.split('/').slice(0, -1);
|
|
242
|
+
let n = 0;
|
|
243
|
+
while (n < da.length && n < db.length && da[n] === db[n])
|
|
244
|
+
n++;
|
|
245
|
+
return n;
|
|
246
|
+
}
|
|
247
|
+
/** The project's own declaration of the type a site names, when exactly one fits. */
|
|
248
|
+
function declarationFor(name, written, ref, from, context) {
|
|
249
|
+
const memo = memoFor(context).declaration;
|
|
250
|
+
const key = `${ref.filePath}\0${from?.qualifiedName ?? ''}\0${written}\0${name}`;
|
|
251
|
+
if (memo.has(key))
|
|
252
|
+
return memo.get(key);
|
|
253
|
+
const bare = !written.includes('.');
|
|
254
|
+
const path = bare ? null : writtenPath(written, name);
|
|
255
|
+
const scored = [];
|
|
256
|
+
for (const node of context.getNodesByName(name)) {
|
|
257
|
+
if (node.language !== 'swift' || !TYPE_KINDS.has(node.kind) || isSwiftExtension(node, context))
|
|
258
|
+
continue;
|
|
259
|
+
if (path !== null) {
|
|
260
|
+
if (fitsPath(node, path, context))
|
|
261
|
+
scored.push({ node, depth: 0 });
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
const depth = bare ? bareScopeDepth(node, from, context) : 0;
|
|
265
|
+
if (depth !== null)
|
|
266
|
+
scored.push({ node, depth });
|
|
267
|
+
}
|
|
268
|
+
// Swift looks a bare name up innermost scope first.
|
|
269
|
+
const deepest = Math.max(-1, ...scored.map((s) => s.depth));
|
|
270
|
+
// One declaration per file: a framework resolver's one-line twin of a
|
|
271
|
+
// declaration (`@main struct App`) is the same type.
|
|
272
|
+
const byFile = new Map();
|
|
273
|
+
for (const { node, depth } of scored) {
|
|
274
|
+
if (depth !== deepest)
|
|
275
|
+
continue;
|
|
276
|
+
const had = byFile.get(node.filePath);
|
|
277
|
+
if (!had || node.endLine - node.startLine > had.endLine - had.startLine)
|
|
278
|
+
byFile.set(node.filePath, node);
|
|
279
|
+
}
|
|
280
|
+
const declarations = [...byFile.values()];
|
|
281
|
+
let found = null;
|
|
282
|
+
if (declarations.length === 1) {
|
|
283
|
+
found = declarations[0];
|
|
284
|
+
}
|
|
285
|
+
else if (declarations.length > 1) {
|
|
286
|
+
// The same file's, else the nearest by directory — a package's own type
|
|
287
|
+
// over another package's. A tie is left unresolved.
|
|
288
|
+
found = declarations.find((n) => n.filePath === ref.filePath) ?? null;
|
|
289
|
+
if (!found) {
|
|
290
|
+
const near = Math.max(...declarations.map((n) => sharedDirs(n.filePath, ref.filePath)));
|
|
291
|
+
const nearest = declarations.filter((n) => sharedDirs(n.filePath, ref.filePath) === near);
|
|
292
|
+
found = nearest.length === 1 ? nearest[0] : null;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
memo.set(key, found);
|
|
296
|
+
return found;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* A Swift reference's resolved type target, checked against what the site
|
|
300
|
+
* wrote: an extension moves to the declaration it extends, a qualified name
|
|
301
|
+
* to the type on that path, and a bare name of a nested type out of its
|
|
302
|
+
* scope to one in scope — or the reference is left unresolved.
|
|
303
|
+
*/
|
|
304
|
+
function gateSwiftTypeTarget(result, ref, context) {
|
|
305
|
+
if (!result || ref.language !== 'swift' || ref.referenceKind === 'imports')
|
|
306
|
+
return result;
|
|
307
|
+
const target = context.getNodeById?.(result.targetNodeId);
|
|
308
|
+
if (!target || target.language !== 'swift' || !TYPE_KINDS.has(target.kind))
|
|
309
|
+
return result;
|
|
310
|
+
const from = context.getNodeById?.(ref.fromNodeId) ?? null;
|
|
311
|
+
const written = writtenName(ref, context);
|
|
312
|
+
if (!isSwiftExtension(target, context)) {
|
|
313
|
+
if (!written.includes('.')) {
|
|
314
|
+
if (bareScopeDepth(target, from, context) !== null)
|
|
315
|
+
return result;
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
const path = writtenPath(written, target.name);
|
|
319
|
+
if (path === null || fitsPath(target, path, context))
|
|
320
|
+
return result;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
const declared = declarationFor(target.name, written, ref, from, context);
|
|
324
|
+
if (!declared)
|
|
325
|
+
return null;
|
|
326
|
+
return declared.id === result.targetNodeId ? result : { ...result, targetNodeId: declared.id };
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=swift-type-visibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swift-type-visibility.js","sourceRoot":"","sources":["../../src/resolution/swift-type-visibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Small helpers the dynamic-edge synthesizers share: a per-match line
|
|
3
|
+
* resolver over one source string, and "the function this line is in".
|
|
4
|
+
*/
|
|
5
|
+
import type { Node } from '../types';
|
|
6
|
+
/** The kinds a call site can be attributed to. */
|
|
7
|
+
export declare const FN_KINDS: ReadonlySet<string>;
|
|
8
|
+
/**
|
|
9
|
+
* Per-match line resolver over `src`, 1-based at `baseLine`. The inline
|
|
10
|
+
* `src.slice(0, idx).split('\n').length` idiom is O(source-length) PER MATCH,
|
|
11
|
+
* which goes quadratic on a match-dense source (a generated function full of
|
|
12
|
+
* `.push(` calls re-scanned tens of thousands of times was most of the #1235
|
|
13
|
+
* indexing wedge). Builds the newline index once — lazily, since most sources
|
|
14
|
+
* never produce a match — then answers each call with a binary search.
|
|
15
|
+
*/
|
|
16
|
+
export declare function makeLineAt(src: string, baseLine: number): (idx: number) => number;
|
|
17
|
+
/** Innermost function/method node whose line range contains `line`. */
|
|
18
|
+
export declare function enclosingFn(nodesInFile: readonly Node[], line: number): Node | null;
|
|
19
|
+
/**
|
|
20
|
+
* The smallest `constant` / `variable` node whose lines contain `line` — the
|
|
21
|
+
* value a top-level registration is written inside (`const worker = new
|
|
22
|
+
* Worker('q', async (job) => …)`): what a caller imports and a walk can start
|
|
23
|
+
* from when no function encloses the site.
|
|
24
|
+
*/
|
|
25
|
+
export declare function enclosingValue(nodesInFile: readonly Node[], line: number): Node | null;
|
|
26
|
+
//# sourceMappingURL=synth-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synth-utils.d.ts","sourceRoot":"","sources":["../../src/resolution/synth-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,kDAAkD;AAClD,eAAO,MAAM,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAgD,CAAC;AAE1F;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAiBjF;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAUnF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAUtF"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Small helpers the dynamic-edge synthesizers share: a per-match line
|
|
4
|
+
* resolver over one source string, and "the function this line is in".
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.FN_KINDS = void 0;
|
|
8
|
+
exports.makeLineAt = makeLineAt;
|
|
9
|
+
exports.enclosingFn = enclosingFn;
|
|
10
|
+
exports.enclosingValue = enclosingValue;
|
|
11
|
+
/** The kinds a call site can be attributed to. */
|
|
12
|
+
exports.FN_KINDS = new Set(['method', 'function', 'component']);
|
|
13
|
+
/**
|
|
14
|
+
* Per-match line resolver over `src`, 1-based at `baseLine`. The inline
|
|
15
|
+
* `src.slice(0, idx).split('\n').length` idiom is O(source-length) PER MATCH,
|
|
16
|
+
* which goes quadratic on a match-dense source (a generated function full of
|
|
17
|
+
* `.push(` calls re-scanned tens of thousands of times was most of the #1235
|
|
18
|
+
* indexing wedge). Builds the newline index once — lazily, since most sources
|
|
19
|
+
* never produce a match — then answers each call with a binary search.
|
|
20
|
+
*/
|
|
21
|
+
function makeLineAt(src, baseLine) {
|
|
22
|
+
let nl = null;
|
|
23
|
+
return (idx) => {
|
|
24
|
+
if (!nl) {
|
|
25
|
+
nl = [];
|
|
26
|
+
for (let i = src.indexOf('\n'); i !== -1; i = src.indexOf('\n', i + 1))
|
|
27
|
+
nl.push(i);
|
|
28
|
+
}
|
|
29
|
+
// Count newlines strictly before idx.
|
|
30
|
+
let lo = 0;
|
|
31
|
+
let hi = nl.length;
|
|
32
|
+
while (lo < hi) {
|
|
33
|
+
const mid = (lo + hi) >> 1;
|
|
34
|
+
if (nl[mid] < idx)
|
|
35
|
+
lo = mid + 1;
|
|
36
|
+
else
|
|
37
|
+
hi = mid;
|
|
38
|
+
}
|
|
39
|
+
return baseLine + lo;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Innermost function/method node whose line range contains `line`. */
|
|
43
|
+
function enclosingFn(nodesInFile, line) {
|
|
44
|
+
let best = null;
|
|
45
|
+
for (const n of nodesInFile) {
|
|
46
|
+
if (!exports.FN_KINDS.has(n.kind))
|
|
47
|
+
continue;
|
|
48
|
+
const end = n.endLine ?? n.startLine;
|
|
49
|
+
if (n.startLine <= line && end >= line) {
|
|
50
|
+
if (!best || n.startLine >= best.startLine)
|
|
51
|
+
best = n; // prefer the tightest (latest-starting) encloser
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return best;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The smallest `constant` / `variable` node whose lines contain `line` — the
|
|
58
|
+
* value a top-level registration is written inside (`const worker = new
|
|
59
|
+
* Worker('q', async (job) => …)`): what a caller imports and a walk can start
|
|
60
|
+
* from when no function encloses the site.
|
|
61
|
+
*/
|
|
62
|
+
function enclosingValue(nodesInFile, line) {
|
|
63
|
+
let best = null;
|
|
64
|
+
for (const n of nodesInFile) {
|
|
65
|
+
if (n.kind !== 'constant' && n.kind !== 'variable')
|
|
66
|
+
continue;
|
|
67
|
+
const end = n.endLine ?? n.startLine;
|
|
68
|
+
if (n.startLine <= line && end >= line) {
|
|
69
|
+
if (!best || n.startLine >= best.startLine)
|
|
70
|
+
best = n;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return best;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=synth-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synth-utils.js","sourceRoot":"","sources":["../../src/resolution/synth-utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAeH,gCAiBC;AAGD,kCAUC;AAQD,wCAUC;AA3DD,kDAAkD;AACrC,QAAA,QAAQ,GAAwB,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAE1F;;;;;;;GAOG;AACH,SAAgB,UAAU,CAAC,GAAW,EAAE,QAAgB;IACtD,IAAI,EAAE,GAAoB,IAAI,CAAC;IAC/B,OAAO,CAAC,GAAW,EAAE,EAAE;QACrB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,EAAE,GAAG,EAAE,CAAC;YACR,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,sCAAsC;QACtC,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,EAAE,CAAC,GAAG,CAAE,GAAG,GAAG;gBAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;;gBAC5B,EAAE,GAAG,GAAG,CAAC;QAChB,CAAC;QACD,OAAO,QAAQ,GAAG,EAAE,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,SAAgB,WAAW,CAAC,WAA4B,EAAE,IAAY;IACpE,IAAI,IAAI,GAAgB,IAAI,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QACpC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,GAAG,CAAC,CAAC,CAAC,iDAAiD;QACzG,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,WAA4B,EAAE,IAAY;IACvE,IAAI,IAAI,GAAgB,IAAI,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QAC7D,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,GAAG,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TanStack Router — navigation written as markup.
|
|
3
|
+
*
|
|
4
|
+
* <Link to="/dashboard/invoices/$invoiceId" params={{ invoiceId: 3 }}>…</Link>
|
|
5
|
+
* <Link to="/login">Sign in</Link>
|
|
6
|
+
* <Navigate to="/dashboard" />
|
|
7
|
+
*
|
|
8
|
+
* A JSX attribute is not a call, so the extractor records no reference for it
|
|
9
|
+
* and the resolver in `frameworks/tanstack-router.ts` — which binds
|
|
10
|
+
* `navigate({ to })` and `redirect({ to })` — never sees it. This pass reads
|
|
11
|
+
* every `to` out of the source, attributes it to the component (the innermost
|
|
12
|
+
* function) it is written in, matches it against the TanStack route table, and
|
|
13
|
+
* synthesizes one `navigates` edge from the component to the route.
|
|
14
|
+
*
|
|
15
|
+
* What makes this different from React Router's identical-looking `<Link to>`:
|
|
16
|
+
* TanStack's `to` is the route PATTERN and the values ride beside it in
|
|
17
|
+
* `params`, so `to="/posts/$postId"` names the route rather than an address —
|
|
18
|
+
* and it is normalised the same way a route name is instead of being read as a
|
|
19
|
+
* URL. A `<Link from=…>` with no `to` is a relative link within the route it
|
|
20
|
+
* is already on, and names no destination of its own.
|
|
21
|
+
*
|
|
22
|
+
* Edges are `provenance:'heuristic'`, `synthesizedBy:'tanstack-link'`, with the
|
|
23
|
+
* destination as written and `registeredAt` = the JSX site. A computed `to` is
|
|
24
|
+
* nothing; a pattern no route serves is nothing. Nothing here runs on a project
|
|
25
|
+
* with no TanStack routes.
|
|
26
|
+
*/
|
|
27
|
+
import type { Edge } from '../types';
|
|
28
|
+
import type { ResolutionContext } from './types';
|
|
29
|
+
import type { MaybeYield } from './cooperative-yield';
|
|
30
|
+
export declare function tanstackLinkEdges(ctx: ResolutionContext, onYield: MaybeYield): Promise<Edge[]>;
|
|
31
|
+
//# sourceMappingURL=tanstack-router-synthesizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanstack-router-synthesizer.d.ts","sourceRoot":"","sources":["../../src/resolution/tanstack-router-synthesizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAmBtD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CA2DpG"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TanStack Router — navigation written as markup.
|
|
4
|
+
*
|
|
5
|
+
* <Link to="/dashboard/invoices/$invoiceId" params={{ invoiceId: 3 }}>…</Link>
|
|
6
|
+
* <Link to="/login">Sign in</Link>
|
|
7
|
+
* <Navigate to="/dashboard" />
|
|
8
|
+
*
|
|
9
|
+
* A JSX attribute is not a call, so the extractor records no reference for it
|
|
10
|
+
* and the resolver in `frameworks/tanstack-router.ts` — which binds
|
|
11
|
+
* `navigate({ to })` and `redirect({ to })` — never sees it. This pass reads
|
|
12
|
+
* every `to` out of the source, attributes it to the component (the innermost
|
|
13
|
+
* function) it is written in, matches it against the TanStack route table, and
|
|
14
|
+
* synthesizes one `navigates` edge from the component to the route.
|
|
15
|
+
*
|
|
16
|
+
* What makes this different from React Router's identical-looking `<Link to>`:
|
|
17
|
+
* TanStack's `to` is the route PATTERN and the values ride beside it in
|
|
18
|
+
* `params`, so `to="/posts/$postId"` names the route rather than an address —
|
|
19
|
+
* and it is normalised the same way a route name is instead of being read as a
|
|
20
|
+
* URL. A `<Link from=…>` with no `to` is a relative link within the route it
|
|
21
|
+
* is already on, and names no destination of its own.
|
|
22
|
+
*
|
|
23
|
+
* Edges are `provenance:'heuristic'`, `synthesizedBy:'tanstack-link'`, with the
|
|
24
|
+
* destination as written and `registeredAt` = the JSX site. A computed `to` is
|
|
25
|
+
* nothing; a pattern no route serves is nothing. Nothing here runs on a project
|
|
26
|
+
* with no TanStack routes.
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.tanstackLinkEdges = tanstackLinkEdges;
|
|
30
|
+
const strip_comments_1 = require("./strip-comments");
|
|
31
|
+
const query_utils_1 = require("../search/query-utils");
|
|
32
|
+
const expo_router_1 = require("./frameworks/expo-router");
|
|
33
|
+
const nextjs_1 = require("./frameworks/nextjs");
|
|
34
|
+
const tanstack_router_1 = require("./frameworks/tanstack-router");
|
|
35
|
+
const synth_utils_1 = require("./synth-utils");
|
|
36
|
+
const JSX_FILE = /\.(?:[cm]?[jt]sx?)$/;
|
|
37
|
+
/** `<Link … to=` / `<Navigate … to=`, the attribute anywhere in the tag. */
|
|
38
|
+
const LINK_TAG = /<(Link|Navigate)\b([^>]*?)\bto\s*=\s*(?:"([^"]*)"|'([^']*)'|\{\s*)/g;
|
|
39
|
+
/** A tag this pass could possibly match — the cheap prefilter. */
|
|
40
|
+
const HAS_LINK_TAG = /<(?:Link|Navigate)\b/;
|
|
41
|
+
/** Links a single component may carry before it is a navigation menu, not a decision. */
|
|
42
|
+
const MAX_LINKS_PER_COMPONENT = 24;
|
|
43
|
+
async function tanstackLinkEdges(ctx, onYield) {
|
|
44
|
+
const table = (0, tanstack_router_1.tanstackTable)(ctx);
|
|
45
|
+
if (table.byRoot.size === 0)
|
|
46
|
+
return [];
|
|
47
|
+
const edges = [];
|
|
48
|
+
const seen = new Set();
|
|
49
|
+
const perComponent = new Map();
|
|
50
|
+
let scanned = 0;
|
|
51
|
+
for (const file of ctx.getAllFiles()) {
|
|
52
|
+
if (!JSX_FILE.test(file) || (0, query_utils_1.isTestPath)(file))
|
|
53
|
+
continue;
|
|
54
|
+
const routes = (0, expo_router_1.routesForFile)(table, file);
|
|
55
|
+
if (!routes || routes.exact.size === 0)
|
|
56
|
+
continue;
|
|
57
|
+
if ((++scanned & 63) === 0)
|
|
58
|
+
await onYield();
|
|
59
|
+
const source = ctx.readFile(file);
|
|
60
|
+
if (!source || !HAS_LINK_TAG.test(source))
|
|
61
|
+
continue;
|
|
62
|
+
const safe = (0, strip_comments_1.stripCommentsForRegex)(source, 'typescript');
|
|
63
|
+
const nodes = ctx.getNodesInFile(file);
|
|
64
|
+
const lineOf = (0, synth_utils_1.makeLineAt)(safe, 1);
|
|
65
|
+
LINK_TAG.lastIndex = 0;
|
|
66
|
+
let m;
|
|
67
|
+
while ((m = LINK_TAG.exec(safe)) !== null) {
|
|
68
|
+
let literal = m[3] ?? m[4] ?? null;
|
|
69
|
+
if (literal === null) {
|
|
70
|
+
// `to={…}`: a string or a template.
|
|
71
|
+
const at = m.index + m[0].length;
|
|
72
|
+
const ch = safe[at];
|
|
73
|
+
if (ch === '"' || ch === "'" || ch === '`')
|
|
74
|
+
literal = (0, expo_router_1.readStringAt)(safe, at);
|
|
75
|
+
}
|
|
76
|
+
if (literal === null)
|
|
77
|
+
continue;
|
|
78
|
+
const href = (0, tanstack_router_1.tanstackDestination)(JSON.stringify(literal));
|
|
79
|
+
if (!href)
|
|
80
|
+
continue;
|
|
81
|
+
const line = lineOf(m.index);
|
|
82
|
+
const component = (0, synth_utils_1.enclosingFn)(nodes, line);
|
|
83
|
+
if (!component)
|
|
84
|
+
continue;
|
|
85
|
+
// A destination written as a choice names one route per arm, and the
|
|
86
|
+
// user reaches every one of them — each is drawn.
|
|
87
|
+
for (const { node: route, href: arm } of (0, nextjs_1.destinationsForHref)(href, routes)) {
|
|
88
|
+
const key = `${component.id}>${route.id}`;
|
|
89
|
+
if (seen.has(key))
|
|
90
|
+
continue;
|
|
91
|
+
const count = (perComponent.get(component.id) ?? 0) + 1;
|
|
92
|
+
perComponent.set(component.id, count);
|
|
93
|
+
if (count > MAX_LINKS_PER_COMPONENT)
|
|
94
|
+
continue;
|
|
95
|
+
seen.add(key);
|
|
96
|
+
edges.push({
|
|
97
|
+
source: component.id,
|
|
98
|
+
target: route.id,
|
|
99
|
+
kind: 'navigates',
|
|
100
|
+
line,
|
|
101
|
+
provenance: 'heuristic',
|
|
102
|
+
metadata: {
|
|
103
|
+
synthesizedBy: 'tanstack-link',
|
|
104
|
+
href: arm.display,
|
|
105
|
+
navMethod: m[1] === 'Navigate' ? 'navigate' : 'link',
|
|
106
|
+
registeredAt: `${file}:${line}`,
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return edges;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=tanstack-router-synthesizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanstack-router-synthesizer.js","sourceRoot":"","sources":["../../src/resolution/tanstack-router-synthesizer.ts"],"names":[],"mappings":"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"}
|