@quolu/lattice 0.70.0 → 0.71.1
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/bin/lattice.mjs +21 -0
- 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
|
Binary file
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
/**
|
|
3
|
+
* Largest source file LatticeSensor will parse or read during resolution. Generated
|
|
4
|
+
* bundles, minified sources, and dependency archives above this limit provide no
|
|
5
|
+
* useful symbols; 1 MB covers essentially all hand-written source.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MAX_SOURCE_FILE_SIZE_BYTES: number;
|
|
8
|
+
/**
|
|
9
|
+
* What stands in for the content of a file over MAX_SOURCE_FILE_SIZE_BYTES. Such a file is
|
|
10
|
+
* never parsed, so its bytes are never needed — reading them only to hash and
|
|
11
|
+
* discard cost multi-GB RSS spikes on committed video/blob fixtures and could
|
|
12
|
+
* fail outright with `Invalid string length` (#1910). The stamp is a function
|
|
13
|
+
* of size alone: change detection compares it to the stored hash, so a
|
|
14
|
+
* same-size rewrite of an oversize file is not a change (nothing about it is
|
|
15
|
+
* indexed), while crossing the limit in either direction is.
|
|
16
|
+
*/
|
|
17
|
+
export declare function oversizeStamp(size: number): string;
|
|
18
|
+
/**
|
|
19
|
+
* The text whose hash the index stores for a file of `size` bytes: its content
|
|
20
|
+
* within the limit, the size stamp over it. Anything that checks a file on disk
|
|
21
|
+
* against its stored `contentHash` has to hash this, or every unchanged file
|
|
22
|
+
* over the limit reads as drifted. `content` is only read within the limit.
|
|
23
|
+
*/
|
|
24
|
+
export declare function indexedHashInput(size: number, content: () => string): string;
|
|
25
|
+
/** A source file's stats, and its bytes when they are within the limit (null = oversize). */
|
|
26
|
+
export interface BoundedSource {
|
|
27
|
+
stats: fs.Stats;
|
|
28
|
+
bytes: Buffer | null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Read a source file without ever holding more than the limit plus one byte.
|
|
32
|
+
* A stat before the read is not enough: the file can grow between the stat
|
|
33
|
+
* and the read (a log, a download, a build output being written), so the
|
|
34
|
+
* descriptor is re-checked after opening and the read itself stops one byte
|
|
35
|
+
* past the limit. Returns `bytes: null` for an oversize file.
|
|
36
|
+
*/
|
|
37
|
+
export declare function readBoundedSource(file: string): Promise<BoundedSource>;
|
|
38
|
+
/** Synchronous {@link readBoundedSource}. */
|
|
39
|
+
export declare function readBoundedSourceSync(file: string): BoundedSource;
|
|
40
|
+
//# sourceMappingURL=file-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-limits.d.ts","sourceRoot":"","sources":["../src/file-limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAAc,CAAC;AAEtD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM,GAAG,MAAM,CAE5E;AAED,6FAA6F;AAC7F,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAQD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA2B5E;AAED,6CAA6C;AAC7C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CA2BjE"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MAX_SOURCE_FILE_SIZE_BYTES = void 0;
|
|
37
|
+
exports.oversizeStamp = oversizeStamp;
|
|
38
|
+
exports.indexedHashInput = indexedHashInput;
|
|
39
|
+
exports.readBoundedSource = readBoundedSource;
|
|
40
|
+
exports.readBoundedSourceSync = readBoundedSourceSync;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const fsp = __importStar(require("fs/promises"));
|
|
43
|
+
/**
|
|
44
|
+
* Largest source file LatticeSensor will parse or read during resolution. Generated
|
|
45
|
+
* bundles, minified sources, and dependency archives above this limit provide no
|
|
46
|
+
* useful symbols; 1 MB covers essentially all hand-written source.
|
|
47
|
+
*/
|
|
48
|
+
exports.MAX_SOURCE_FILE_SIZE_BYTES = 1024 * 1024;
|
|
49
|
+
/**
|
|
50
|
+
* What stands in for the content of a file over MAX_SOURCE_FILE_SIZE_BYTES. Such a file is
|
|
51
|
+
* never parsed, so its bytes are never needed — reading them only to hash and
|
|
52
|
+
* discard cost multi-GB RSS spikes on committed video/blob fixtures and could
|
|
53
|
+
* fail outright with `Invalid string length` (#1910). The stamp is a function
|
|
54
|
+
* of size alone: change detection compares it to the stored hash, so a
|
|
55
|
+
* same-size rewrite of an oversize file is not a change (nothing about it is
|
|
56
|
+
* indexed), while crossing the limit in either direction is.
|
|
57
|
+
*/
|
|
58
|
+
function oversizeStamp(size) {
|
|
59
|
+
return `latticeSensor:oversize:${size}`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The text whose hash the index stores for a file of `size` bytes: its content
|
|
63
|
+
* within the limit, the size stamp over it. Anything that checks a file on disk
|
|
64
|
+
* against its stored `contentHash` has to hash this, or every unchanged file
|
|
65
|
+
* over the limit reads as drifted. `content` is only read within the limit.
|
|
66
|
+
*/
|
|
67
|
+
function indexedHashInput(size, content) {
|
|
68
|
+
return size > exports.MAX_SOURCE_FILE_SIZE_BYTES ? oversizeStamp(size) : content();
|
|
69
|
+
}
|
|
70
|
+
const READ_CHUNK_BYTES = 64 * 1024;
|
|
71
|
+
function assertRegularFile(stats) {
|
|
72
|
+
if (!stats.isFile())
|
|
73
|
+
throw new Error('Source path is not a regular file');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Read a source file without ever holding more than the limit plus one byte.
|
|
77
|
+
* A stat before the read is not enough: the file can grow between the stat
|
|
78
|
+
* and the read (a log, a download, a build output being written), so the
|
|
79
|
+
* descriptor is re-checked after opening and the read itself stops one byte
|
|
80
|
+
* past the limit. Returns `bytes: null` for an oversize file.
|
|
81
|
+
*/
|
|
82
|
+
async function readBoundedSource(file) {
|
|
83
|
+
const initial = await fsp.stat(file);
|
|
84
|
+
assertRegularFile(initial);
|
|
85
|
+
if (initial.size > exports.MAX_SOURCE_FILE_SIZE_BYTES)
|
|
86
|
+
return { stats: initial, bytes: null };
|
|
87
|
+
const handle = await fsp.open(file, 'r');
|
|
88
|
+
try {
|
|
89
|
+
let stats = await handle.stat();
|
|
90
|
+
assertRegularFile(stats);
|
|
91
|
+
if (stats.size > exports.MAX_SOURCE_FILE_SIZE_BYTES)
|
|
92
|
+
return { stats, bytes: null };
|
|
93
|
+
const chunks = [];
|
|
94
|
+
let size = 0;
|
|
95
|
+
while (size <= exports.MAX_SOURCE_FILE_SIZE_BYTES) {
|
|
96
|
+
const chunk = Buffer.allocUnsafe(Math.min(READ_CHUNK_BYTES, exports.MAX_SOURCE_FILE_SIZE_BYTES + 1 - size));
|
|
97
|
+
const { bytesRead } = await handle.read(chunk, 0, chunk.length, size);
|
|
98
|
+
if (!bytesRead)
|
|
99
|
+
break;
|
|
100
|
+
chunks.push(chunk.subarray(0, bytesRead));
|
|
101
|
+
size += bytesRead;
|
|
102
|
+
}
|
|
103
|
+
stats = await handle.stat();
|
|
104
|
+
if (size > exports.MAX_SOURCE_FILE_SIZE_BYTES || stats.size > exports.MAX_SOURCE_FILE_SIZE_BYTES) {
|
|
105
|
+
stats.size = Math.max(size, stats.size);
|
|
106
|
+
return { stats, bytes: null };
|
|
107
|
+
}
|
|
108
|
+
return { stats, bytes: Buffer.concat(chunks, size) };
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
await handle.close();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/** Synchronous {@link readBoundedSource}. */
|
|
115
|
+
function readBoundedSourceSync(file) {
|
|
116
|
+
const initial = fs.statSync(file);
|
|
117
|
+
assertRegularFile(initial);
|
|
118
|
+
if (initial.size > exports.MAX_SOURCE_FILE_SIZE_BYTES)
|
|
119
|
+
return { stats: initial, bytes: null };
|
|
120
|
+
const fd = fs.openSync(file, 'r');
|
|
121
|
+
try {
|
|
122
|
+
let stats = fs.fstatSync(fd);
|
|
123
|
+
assertRegularFile(stats);
|
|
124
|
+
if (stats.size > exports.MAX_SOURCE_FILE_SIZE_BYTES)
|
|
125
|
+
return { stats, bytes: null };
|
|
126
|
+
const chunks = [];
|
|
127
|
+
let size = 0;
|
|
128
|
+
while (size <= exports.MAX_SOURCE_FILE_SIZE_BYTES) {
|
|
129
|
+
const chunk = Buffer.allocUnsafe(Math.min(READ_CHUNK_BYTES, exports.MAX_SOURCE_FILE_SIZE_BYTES + 1 - size));
|
|
130
|
+
const bytesRead = fs.readSync(fd, chunk, 0, chunk.length, size);
|
|
131
|
+
if (!bytesRead)
|
|
132
|
+
break;
|
|
133
|
+
chunks.push(chunk.subarray(0, bytesRead));
|
|
134
|
+
size += bytesRead;
|
|
135
|
+
}
|
|
136
|
+
stats = fs.fstatSync(fd);
|
|
137
|
+
if (size > exports.MAX_SOURCE_FILE_SIZE_BYTES || stats.size > exports.MAX_SOURCE_FILE_SIZE_BYTES) {
|
|
138
|
+
stats.size = Math.max(size, stats.size);
|
|
139
|
+
return { stats, bytes: null };
|
|
140
|
+
}
|
|
141
|
+
return { stats, bytes: Buffer.concat(chunks, size) };
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
fs.closeSync(fd);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=file-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-limits.js","sourceRoot":"","sources":["../src/file-limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branch guards — the conditions under which a call site runs.
|
|
3
|
+
*
|
|
4
|
+
* An edge says `handlePress → openObjectDetail`. What a reader wants to know
|
|
5
|
+
* is that it happens **when `isCollected`** and **not while `isUploading`**:
|
|
6
|
+
*
|
|
7
|
+
* if (isUploading) return ← early-return guard: !isUploading
|
|
8
|
+
* if (isCollected) { ← if: isCollected
|
|
9
|
+
* openObjectDetail(item) ← the call site
|
|
10
|
+
*
|
|
11
|
+
* This module derives that from the AST at query time. Given a file, its
|
|
12
|
+
* language and a call site (line, column), it walks from the innermost node at
|
|
13
|
+
* that position up to the enclosing function boundary and records every
|
|
14
|
+
* branch it passes through: `if` / `else` / `else if`, the arms of a ternary,
|
|
15
|
+
* `switch` cases, the right side of `&&` / `||`, a `catch`, and — at each
|
|
16
|
+
* statement block on the way — the early exits that precede the site
|
|
17
|
+
* (`if (x) return`, Swift `guard x else { return }`).
|
|
18
|
+
*
|
|
19
|
+
* Nothing is stored in the index. The viewer and `lattice_sensor_explore` already
|
|
20
|
+
* re-read source per request (drift checks, source windows, highlighting), the
|
|
21
|
+
* grammars are loaded in both processes, and a file parses in about a
|
|
22
|
+
* millisecond — so labels are computed where they are shown, from the source
|
|
23
|
+
* as it is now, and the index schema and the native kernel are untouched. A
|
|
24
|
+
* small LRU keeps the last few parsed trees so a Symbol view that asks about
|
|
25
|
+
* forty call sites in one file parses it once.
|
|
26
|
+
*
|
|
27
|
+
* Only what the AST states is reported. Loops are not conditions and are not
|
|
28
|
+
* listed; a condition that cannot be read (a language without rules here, a
|
|
29
|
+
* file that will not parse) yields no label rather than a wrong one.
|
|
30
|
+
*/
|
|
31
|
+
import type { Node as SyntaxNode } from 'web-tree-sitter';
|
|
32
|
+
import type { Language } from '../types';
|
|
33
|
+
export type GuardForm = 'if' | 'else' | 'ternary' | 'case' | 'guard' | 'and' | 'or' | 'catch';
|
|
34
|
+
/** How an arm leaves the flow: back to the caller, or by an error. */
|
|
35
|
+
export type GuardExit = 'return' | 'throw' | 'exit';
|
|
36
|
+
export interface BranchGuard {
|
|
37
|
+
/** The condition's source, whitespace-collapsed, outer parens dropped, capped in length. */
|
|
38
|
+
text: string;
|
|
39
|
+
/** The site runs when the condition is FALSE (an else arm, an early-return guard, `||`). */
|
|
40
|
+
negated: boolean;
|
|
41
|
+
form: GuardForm;
|
|
42
|
+
/** Line of the condition (1-based). */
|
|
43
|
+
line: number;
|
|
44
|
+
/**
|
|
45
|
+
* Where the branching construct starts, `line:column` (1-based line, 0-based
|
|
46
|
+
* column) — the identity of the FORK rather than of the arm: the `if` an
|
|
47
|
+
* `if` guard and its `else` guard both come from, the `switch` every one of
|
|
48
|
+
* its cases comes from, the `try` a `catch` belongs to. Two guards with the
|
|
49
|
+
* same `branch` are arms of one decision, which is what a reader of the code
|
|
50
|
+
* in its own order needs and a joined condition string cannot say.
|
|
51
|
+
* '' when the walk could not place it.
|
|
52
|
+
*/
|
|
53
|
+
branch: string;
|
|
54
|
+
/** How the arm the site is IN leaves, when it always does — `return`, `throw`. */
|
|
55
|
+
armExit?: GuardExit;
|
|
56
|
+
/** For an early exit (`form: 'guard'`), how the arm that was NOT taken leaves. */
|
|
57
|
+
exit?: GuardExit;
|
|
58
|
+
}
|
|
59
|
+
/** Languages with walk rules below. Others yield no guards (never a wrong one). */
|
|
60
|
+
export declare function supportsBranchGuards(language: Language | string | undefined | null): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* The label a rail or a flow connector prints: the conditions in execution
|
|
63
|
+
* order, joined with `&&`, each negated one written as `!x`. Empty when the
|
|
64
|
+
* site is unconditional.
|
|
65
|
+
*/
|
|
66
|
+
export declare function guardLabel(guards: readonly BranchGuard[]): string;
|
|
67
|
+
/**
|
|
68
|
+
* Files above this size are not parsed for labels. A 300 KB source file costs
|
|
69
|
+
* tens of milliseconds to parse, and a Symbol view is budgeted at 100 ms end
|
|
70
|
+
* to end; a call site in such a file simply shows no `when`.
|
|
71
|
+
*/
|
|
72
|
+
export declare const MAX_PARSE_BYTES: number;
|
|
73
|
+
export interface CallSite {
|
|
74
|
+
line: number;
|
|
75
|
+
/** 0-based; null/undefined = the first non-blank column of the line. */
|
|
76
|
+
column?: number | null;
|
|
77
|
+
/**
|
|
78
|
+
* The callee's last segment, when known (`json` for `res.status(201).json(…)`):
|
|
79
|
+
* a position at the start of a chain sits on the innermost call, and the
|
|
80
|
+
* climb continues to the call that is actually this one.
|
|
81
|
+
*/
|
|
82
|
+
callee?: string;
|
|
83
|
+
}
|
|
84
|
+
export declare function siteKey(site: CallSite): string;
|
|
85
|
+
/**
|
|
86
|
+
* Guards for many call sites in one file, keyed by {@link siteKey}. The file
|
|
87
|
+
* is parsed once (and cached across requests until it changes on disk). A
|
|
88
|
+
* language without rules, or a file that cannot be read or parsed, yields an
|
|
89
|
+
* empty map.
|
|
90
|
+
*/
|
|
91
|
+
export declare function guardsForFile(absPath: string, language: Language, sites: readonly CallSite[]): Promise<Map<string, BranchGuard[]>>;
|
|
92
|
+
/**
|
|
93
|
+
* Synchronous twin of {@link guardsForFile} for callers that cannot await
|
|
94
|
+
* (the explore text builder). It only serves languages whose grammar is
|
|
95
|
+
* ALREADY loaded — see {@link warmBranchGuardGrammars} — and yields an empty
|
|
96
|
+
* map otherwise, never a wrong label.
|
|
97
|
+
*/
|
|
98
|
+
export declare function guardsForFileSync(absPath: string, language: Language, sites: readonly CallSite[]): Map<string, BranchGuard[]>;
|
|
99
|
+
/** The languages with rules here — what {@link warmBranchGuardGrammars} loads. */
|
|
100
|
+
export declare const BRANCH_GUARD_LANGUAGES: readonly Language[];
|
|
101
|
+
/**
|
|
102
|
+
* The arguments a call site passes, as written, abbreviated to what a reader
|
|
103
|
+
* scans for: a string literal whole (a storage key, a URL, a message), a name
|
|
104
|
+
* whole, an object as its keys (`{ email, password }`), an array as `[…]`, a
|
|
105
|
+
* function as `() => …`, a nested call as `f(…)`. The conditions say WHEN a
|
|
106
|
+
* step runs; this says WITH WHAT — `SecureStore.setItemAsync('userEmail',
|
|
107
|
+
* values.email)` is a different fact from `SecureStore.setItemAsync`.
|
|
108
|
+
*
|
|
109
|
+
* Keyed by {@link siteKey} like the guards, read from the same cached tree.
|
|
110
|
+
* A site that is not inside a call, or a language without rules, is absent.
|
|
111
|
+
*/
|
|
112
|
+
export declare function callArgumentsForFile(absPath: string, language: Language, sites: readonly CallSite[]): Promise<Map<string, string>>;
|
|
113
|
+
/** {@link callArgumentsForFile} over source text — the test surface. */
|
|
114
|
+
export declare function callArgumentsInSource(source: string, language: Language, line: number, column: number | null): Promise<string | null>;
|
|
115
|
+
export declare function callArgumentsInTree(root: SyntaxNode, source: string, line: number, column: number | null): string | null;
|
|
116
|
+
/** One call site, both halves: what is called, as written, and what it is passed. */
|
|
117
|
+
export interface CallSiteText {
|
|
118
|
+
/**
|
|
119
|
+
* The callee as written, normalised: `prisma.article.findFirst`,
|
|
120
|
+
* `this.owners.findById().orElseThrow`, `res.status().json` — member
|
|
121
|
+
* chains kept whole (the index keeps only the last segment of a deep
|
|
122
|
+
* chain), argument lists emptied, `await`/`new` dropped, `?.` as `.`.
|
|
123
|
+
*/
|
|
124
|
+
callee: string;
|
|
125
|
+
/** The argument list, abbreviated as {@link callArgumentsForFile} says. */
|
|
126
|
+
args: string;
|
|
127
|
+
/** The same arguments one by one — a registration site's middleware chain is `argList.slice(1, -1)`. */
|
|
128
|
+
argList: string[];
|
|
129
|
+
/** A status code written as an object property in the arguments (`{ status: 201 }`), which the abbreviation to keys would hide. */
|
|
130
|
+
status?: number;
|
|
131
|
+
/** Where the call starts and ends in the source (1-based lines) — the span another site may be written inside. */
|
|
132
|
+
span?: {
|
|
133
|
+
start: {
|
|
134
|
+
line: number;
|
|
135
|
+
column: number;
|
|
136
|
+
};
|
|
137
|
+
end: {
|
|
138
|
+
line: number;
|
|
139
|
+
column: number;
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* The call this one is written inside the arguments of — `res.json` for the
|
|
144
|
+
* `generateToken(…)` in `res.json({ token: generateToken(…) })` — normalised
|
|
145
|
+
* like `callee`. Absent at the top of a statement, and never reaching out of
|
|
146
|
+
* the function or block the call is in.
|
|
147
|
+
*/
|
|
148
|
+
within?: string;
|
|
149
|
+
}
|
|
150
|
+
export declare function callSiteInTree(root: SyntaxNode, source: string, line: number, column: number | null, want?: string): CallSiteText | null;
|
|
151
|
+
/** Both halves of every site, keyed by {@link siteKey}, from one cached tree. */
|
|
152
|
+
export declare function callSitesForFile(absPath: string, language: Language, sites: readonly CallSite[]): Promise<Map<string, CallSiteText>>;
|
|
153
|
+
/** {@link callSitesForFile} over source text — the test surface. */
|
|
154
|
+
export declare function callSiteInSource(source: string, language: Language, line: number, column: number | null): Promise<CallSiteText | null>;
|
|
155
|
+
/**
|
|
156
|
+
* What binds a call site to an event, when something does — the answer to
|
|
157
|
+
* "at what point does this run": the JSX attribute the site sits under
|
|
158
|
+
* (`onPress` of `<Button>`), the `on*` option it is written in (`onSubmit`
|
|
159
|
+
* of `useFormik({…})`), or the runs-later call it is an argument of
|
|
160
|
+
* (`useEffect`, `setTimeout`, `addListener('x')`, `.then`).
|
|
161
|
+
*/
|
|
162
|
+
export interface SiteTrigger {
|
|
163
|
+
/**
|
|
164
|
+
* `prop` / `option` / `callback` are read at the site (below). `request`
|
|
165
|
+
* (a route: `name` the verb, `of` the path), `decorator` (`@Process('email')`:
|
|
166
|
+
* `name` the decorator, `of` its literal argument) and `load` (a page's own
|
|
167
|
+
* load-time work) are set by the Steps endpoint from the registration
|
|
168
|
+
* site, not read from the tree.
|
|
169
|
+
*/
|
|
170
|
+
kind: 'prop' | 'option' | 'callback' | 'request' | 'decorator' | 'load';
|
|
171
|
+
/** `onPress`, `onSubmit`, `useEffect`, `addListener`, `POST`, `Process`. */
|
|
172
|
+
name: string;
|
|
173
|
+
/** `Button` for a prop, `useFormik` for an option, the first string argument for a callback; null when unknown. */
|
|
174
|
+
of: string | null;
|
|
175
|
+
/** What runs before it fires — the middleware / guard chain at the registration site, in order. */
|
|
176
|
+
after?: string[];
|
|
177
|
+
}
|
|
178
|
+
export declare function triggersForFile(absPath: string, language: Language, sites: readonly CallSite[]): Promise<Map<string, SiteTrigger>>;
|
|
179
|
+
/** {@link triggersForFile} over source text — the test surface. */
|
|
180
|
+
export declare function triggerInSource(source: string, language: Language, line: number, column: number | null): Promise<SiteTrigger | null>;
|
|
181
|
+
export declare function triggerInTree(root: SyntaxNode, source: string, line: number, column: number | null): SiteTrigger | null;
|
|
182
|
+
/** Load the grammars {@link guardsForFileSync} needs; a no-op once loaded, never throws. */
|
|
183
|
+
export declare function warmBranchGuardGrammars(only?: readonly Language[]): Promise<void>;
|
|
184
|
+
/** Guards for one site in source text — the test seam; production reads files. */
|
|
185
|
+
export declare function guardsInSource(source: string, language: Language, line: number, column?: number | null): Promise<BranchGuard[]>;
|
|
186
|
+
/** Loops for one site in source text — the test seam; production reads files. */
|
|
187
|
+
export declare function loopsInSource(source: string, language: Language, line: number, column?: number | null): Promise<SiteLoop[]>;
|
|
188
|
+
/** A loop a site is written inside: its header as written, and where the loop starts. */
|
|
189
|
+
export interface SiteLoop {
|
|
190
|
+
/** `const item of items`, `i = 0; i < n; i++`, `queue.length > 0` — the header, without its keyword. */
|
|
191
|
+
text: string;
|
|
192
|
+
/** `each` for a `for` / `foreach` / `for … in`, `while` for a `while` / `do` / `repeat`. */
|
|
193
|
+
kind: 'each' | 'while';
|
|
194
|
+
/** Where the loop starts, `line:column` — the same identity a guard's `branch` carries. */
|
|
195
|
+
branch: string;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* The loops a site is written inside, outermost first — what tells a reading in
|
|
199
|
+
* the code's order that a run of calls happens once PER ITEM rather than once.
|
|
200
|
+
* The climb is the guards' climb (the same boundaries, the same transparent
|
|
201
|
+
* inline functions), so a callback's body is read in its own function and a
|
|
202
|
+
* `.forEach` body under the loop it is written in.
|
|
203
|
+
*/
|
|
204
|
+
export declare function loopsInTree(root: SyntaxNode, source: string, language: Language, line: number, column: number | null): SiteLoop[];
|
|
205
|
+
/** Loops for many sites in one file, keyed by {@link siteKey}. */
|
|
206
|
+
export declare function loopsForFile(absPath: string, language: Language, sites: readonly CallSite[]): Promise<Map<string, SiteLoop[]>>;
|
|
207
|
+
/**
|
|
208
|
+
* The walk. `line` is 1-based, `column` 0-based (null → first non-blank).
|
|
209
|
+
* Returns the guards outermost first — execution order, the way a reader
|
|
210
|
+
* would list them.
|
|
211
|
+
*/
|
|
212
|
+
export declare function guardsInTree(root: SyntaxNode, source: string, language: Language, line: number, column: number | null): BranchGuard[];
|
|
213
|
+
/**
|
|
214
|
+
* The decorators / annotations / attributes on the definition at a line, and
|
|
215
|
+
* on the class that holds it: `UseGuards(AuthGuard('jwt'))`,
|
|
216
|
+
* `PreAuthorize("hasRole('ADMIN')")`, `HttpPost("items")`, `Process('email')`.
|
|
217
|
+
* Text as written, without the `@` or the brackets, whitespace collapsed,
|
|
218
|
+
* capped. The index keeps no decorators, so they are read here at request
|
|
219
|
+
* time like the guards.
|
|
220
|
+
*/
|
|
221
|
+
/**
|
|
222
|
+
* A `return` a definition makes itself — never one inside a lambda, a local
|
|
223
|
+
* function or a nested / anonymous class — with what it returns, as written.
|
|
224
|
+
* `value` is the string a same-class constant holds, when the expression is
|
|
225
|
+
* a bare name that declares one: Spring MVC handlers return
|
|
226
|
+
* `VIEWS_OWNER_CREATE_OR_UPDATE_FORM`, and the view is its value.
|
|
227
|
+
*/
|
|
228
|
+
export interface ReturnSite {
|
|
229
|
+
line: number;
|
|
230
|
+
column: number;
|
|
231
|
+
expression: string;
|
|
232
|
+
value?: string;
|
|
233
|
+
}
|
|
234
|
+
export declare function returnsForFile(absPath: string, language: Language, line: number): Promise<ReturnSite[]>;
|
|
235
|
+
/** {@link returnsForFile} over source text — the test surface. */
|
|
236
|
+
export declare function returnsInSource(source: string, language: Language, line: number): Promise<ReturnSite[]>;
|
|
237
|
+
export declare function returnsInTree(root: SyntaxNode, line: number): ReturnSite[];
|
|
238
|
+
export interface DefinitionDecorators {
|
|
239
|
+
own: string[];
|
|
240
|
+
/** The enclosing class's, when the definition is a member. */
|
|
241
|
+
class: string[];
|
|
242
|
+
}
|
|
243
|
+
export declare function decoratorsForFile(absPath: string, language: Language, lines: readonly number[]): Promise<Map<number, DefinitionDecorators>>;
|
|
244
|
+
/** {@link decoratorsForFile} over source text — the test surface. */
|
|
245
|
+
export declare function decoratorsInSource(source: string, language: Language, line: number): Promise<DefinitionDecorators | null>;
|
|
246
|
+
export declare function decoratorsInTree(root: SyntaxNode, source: string, line: number): DefinitionDecorators | null;
|
|
247
|
+
/**
|
|
248
|
+
* The declared types of a class's members, read from the tree: the
|
|
249
|
+
* constructor's parameter properties (`private readonly usersService:
|
|
250
|
+
* UsersService`), its fields (`private final OwnerRepository owners`,
|
|
251
|
+
* `val owners: OwnerRepository`, `private readonly IRepo _repo`), its typed
|
|
252
|
+
* properties. The index keeps no type for these, and a member call the
|
|
253
|
+
* extractor kept only the last segment of (`this.usersService.findByEmail`
|
|
254
|
+
* → `findByEmail`) resolves by name alone; the declared type is what says
|
|
255
|
+
* where it really goes, and whether it leaves the index.
|
|
256
|
+
*
|
|
257
|
+
* Keyed by member name, the type as written without generics'
|
|
258
|
+
* arguments (`Repository<Cat>` → `Repository<Cat>` is kept whole; callers
|
|
259
|
+
* strip what they need).
|
|
260
|
+
*/
|
|
261
|
+
export declare function memberTypesForFile(absPath: string, language: Language, line: number): Promise<Map<string, string>>;
|
|
262
|
+
/** {@link memberTypesForFile} over source text — the test surface. */
|
|
263
|
+
export declare function memberTypesInSource(source: string, language: Language, line: number): Promise<Map<string, string>>;
|
|
264
|
+
export declare function memberTypesInTree(root: SyntaxNode, source: string, line: number): Map<string, string>;
|
|
265
|
+
//# sourceMappingURL=branch-guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-guards.d.ts","sourceRoot":"","sources":["../../src/graph/branch-guards.ts"],"names":[],"mappings":"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"}
|