@saluzi/codegraph 0.2.0 → 0.2.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/dist/bin/codegraph.d.ts +26 -0
- package/dist/bin/codegraph.d.ts.map +1 -0
- package/dist/bin/codegraph.js +2248 -0
- package/dist/bin/codegraph.js.map +1 -0
- package/dist/bin/command-supervision.d.ts +49 -0
- package/dist/bin/command-supervision.d.ts.map +1 -0
- package/dist/bin/command-supervision.js +95 -0
- package/dist/bin/command-supervision.js.map +1 -0
- package/dist/bin/fatal-handler.d.ts +20 -0
- package/dist/bin/fatal-handler.d.ts.map +1 -0
- package/dist/bin/fatal-handler.js +118 -0
- package/dist/bin/fatal-handler.js.map +1 -0
- package/dist/bin/node-version-check.d.ts +37 -0
- package/dist/bin/node-version-check.d.ts.map +1 -0
- package/dist/bin/node-version-check.js +79 -0
- package/dist/bin/node-version-check.js.map +1 -0
- package/dist/bin/uninstall.d.ts +14 -0
- package/dist/bin/uninstall.d.ts.map +1 -0
- package/dist/bin/uninstall.js +36 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/context/formatter.d.ts +30 -0
- package/dist/context/formatter.d.ts.map +1 -0
- package/dist/context/formatter.js +263 -0
- package/dist/context/formatter.js.map +1 -0
- package/dist/context/index.d.ts +119 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +1296 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/markers.d.ts +19 -0
- package/dist/context/markers.d.ts.map +1 -0
- package/dist/context/markers.js +22 -0
- package/dist/context/markers.js.map +1 -0
- package/dist/db/index.d.ts +201 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +493 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +44 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +212 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +513 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +1886 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.sql +194 -0
- package/dist/db/sqlite-adapter.d.ts +53 -0
- package/dist/db/sqlite-adapter.d.ts.map +1 -0
- package/dist/db/sqlite-adapter.js +117 -0
- package/dist/db/sqlite-adapter.js.map +1 -0
- package/dist/db/wal-valve.d.ts +106 -0
- package/dist/db/wal-valve.d.ts.map +1 -0
- package/dist/db/wal-valve.js +208 -0
- package/dist/db/wal-valve.js.map +1 -0
- package/dist/directory.d.ts +183 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +797 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +136 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +219 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction/astro-extractor.d.ts +79 -0
- package/dist/extraction/astro-extractor.d.ts.map +1 -0
- package/dist/extraction/astro-extractor.js +320 -0
- package/dist/extraction/astro-extractor.js.map +1 -0
- package/dist/extraction/cfml-extractor.d.ts +107 -0
- package/dist/extraction/cfml-extractor.d.ts.map +1 -0
- package/dist/extraction/cfml-extractor.js +494 -0
- package/dist/extraction/cfml-extractor.js.map +1 -0
- package/dist/extraction/dfm-extractor.d.ts +31 -0
- package/dist/extraction/dfm-extractor.d.ts.map +1 -0
- package/dist/extraction/dfm-extractor.js +151 -0
- package/dist/extraction/dfm-extractor.js.map +1 -0
- package/dist/extraction/extraction-version.d.ts +25 -0
- package/dist/extraction/extraction-version.d.ts.map +1 -0
- package/dist/extraction/extraction-version.js +28 -0
- package/dist/extraction/extraction-version.js.map +1 -0
- package/dist/extraction/function-ref.d.ts +118 -0
- package/dist/extraction/function-ref.d.ts.map +1 -0
- package/dist/extraction/function-ref.js +727 -0
- package/dist/extraction/function-ref.js.map +1 -0
- package/dist/extraction/generated-detection.d.ts +30 -0
- package/dist/extraction/generated-detection.d.ts.map +1 -0
- package/dist/extraction/generated-detection.js +83 -0
- package/dist/extraction/generated-detection.js.map +1 -0
- package/dist/extraction/grammars.d.ts +138 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +631 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +232 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +2409 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/languages/arkts.d.ts +3 -0
- package/dist/extraction/languages/arkts.d.ts.map +1 -0
- package/dist/extraction/languages/arkts.js +127 -0
- package/dist/extraction/languages/arkts.js.map +1 -0
- package/dist/extraction/languages/c-cpp.d.ts +110 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
- package/dist/extraction/languages/c-cpp.js +837 -0
- package/dist/extraction/languages/c-cpp.js.map +1 -0
- package/dist/extraction/languages/cfquery.d.ts +12 -0
- package/dist/extraction/languages/cfquery.d.ts.map +1 -0
- package/dist/extraction/languages/cfquery.js +28 -0
- package/dist/extraction/languages/cfquery.js.map +1 -0
- package/dist/extraction/languages/cfscript.d.ts +3 -0
- package/dist/extraction/languages/cfscript.d.ts.map +1 -0
- package/dist/extraction/languages/cfscript.js +73 -0
- package/dist/extraction/languages/cfscript.js.map +1 -0
- package/dist/extraction/languages/cobol.d.ts +33 -0
- package/dist/extraction/languages/cobol.d.ts.map +1 -0
- package/dist/extraction/languages/cobol.js +499 -0
- package/dist/extraction/languages/cobol.js.map +1 -0
- package/dist/extraction/languages/csharp.d.ts +25 -0
- package/dist/extraction/languages/csharp.d.ts.map +1 -0
- package/dist/extraction/languages/csharp.js +175 -0
- package/dist/extraction/languages/csharp.js.map +1 -0
- package/dist/extraction/languages/dart.d.ts +3 -0
- package/dist/extraction/languages/dart.d.ts.map +1 -0
- package/dist/extraction/languages/dart.js +374 -0
- package/dist/extraction/languages/dart.js.map +1 -0
- package/dist/extraction/languages/erlang.d.ts +3 -0
- package/dist/extraction/languages/erlang.d.ts.map +1 -0
- package/dist/extraction/languages/erlang.js +350 -0
- package/dist/extraction/languages/erlang.js.map +1 -0
- package/dist/extraction/languages/go.d.ts +3 -0
- package/dist/extraction/languages/go.d.ts.map +1 -0
- package/dist/extraction/languages/go.js +111 -0
- package/dist/extraction/languages/go.js.map +1 -0
- package/dist/extraction/languages/index.d.ts +10 -0
- package/dist/extraction/languages/index.d.ts.map +1 -0
- package/dist/extraction/languages/index.js +71 -0
- package/dist/extraction/languages/index.js.map +1 -0
- package/dist/extraction/languages/java.d.ts +3 -0
- package/dist/extraction/languages/java.d.ts.map +1 -0
- package/dist/extraction/languages/java.js +315 -0
- package/dist/extraction/languages/java.js.map +1 -0
- package/dist/extraction/languages/javascript.d.ts +3 -0
- package/dist/extraction/languages/javascript.d.ts.map +1 -0
- package/dist/extraction/languages/javascript.js +106 -0
- package/dist/extraction/languages/javascript.js.map +1 -0
- package/dist/extraction/languages/kotlin.d.ts +3 -0
- package/dist/extraction/languages/kotlin.d.ts.map +1 -0
- package/dist/extraction/languages/kotlin.js +379 -0
- package/dist/extraction/languages/kotlin.js.map +1 -0
- package/dist/extraction/languages/lua.d.ts +3 -0
- package/dist/extraction/languages/lua.d.ts.map +1 -0
- package/dist/extraction/languages/lua.js +150 -0
- package/dist/extraction/languages/lua.js.map +1 -0
- package/dist/extraction/languages/luau.d.ts +3 -0
- package/dist/extraction/languages/luau.d.ts.map +1 -0
- package/dist/extraction/languages/luau.js +37 -0
- package/dist/extraction/languages/luau.js.map +1 -0
- package/dist/extraction/languages/nix.d.ts +3 -0
- package/dist/extraction/languages/nix.d.ts.map +1 -0
- package/dist/extraction/languages/nix.js +294 -0
- package/dist/extraction/languages/nix.js.map +1 -0
- package/dist/extraction/languages/objc.d.ts +3 -0
- package/dist/extraction/languages/objc.d.ts.map +1 -0
- package/dist/extraction/languages/objc.js +175 -0
- package/dist/extraction/languages/objc.js.map +1 -0
- package/dist/extraction/languages/pascal.d.ts +3 -0
- package/dist/extraction/languages/pascal.d.ts.map +1 -0
- package/dist/extraction/languages/pascal.js +77 -0
- package/dist/extraction/languages/pascal.js.map +1 -0
- package/dist/extraction/languages/php.d.ts +3 -0
- package/dist/extraction/languages/php.d.ts.map +1 -0
- package/dist/extraction/languages/php.js +196 -0
- package/dist/extraction/languages/php.js.map +1 -0
- package/dist/extraction/languages/python.d.ts +3 -0
- package/dist/extraction/languages/python.d.ts.map +1 -0
- package/dist/extraction/languages/python.js +56 -0
- package/dist/extraction/languages/python.js.map +1 -0
- package/dist/extraction/languages/r.d.ts +3 -0
- package/dist/extraction/languages/r.d.ts.map +1 -0
- package/dist/extraction/languages/r.js +314 -0
- package/dist/extraction/languages/r.js.map +1 -0
- package/dist/extraction/languages/ruby.d.ts +3 -0
- package/dist/extraction/languages/ruby.d.ts.map +1 -0
- package/dist/extraction/languages/ruby.js +149 -0
- package/dist/extraction/languages/ruby.js.map +1 -0
- package/dist/extraction/languages/rust.d.ts +3 -0
- package/dist/extraction/languages/rust.d.ts.map +1 -0
- package/dist/extraction/languages/rust.js +142 -0
- package/dist/extraction/languages/rust.js.map +1 -0
- package/dist/extraction/languages/scala.d.ts +3 -0
- package/dist/extraction/languages/scala.d.ts.map +1 -0
- package/dist/extraction/languages/scala.js +209 -0
- package/dist/extraction/languages/scala.js.map +1 -0
- package/dist/extraction/languages/solidity.d.ts +3 -0
- package/dist/extraction/languages/solidity.d.ts.map +1 -0
- package/dist/extraction/languages/solidity.js +293 -0
- package/dist/extraction/languages/solidity.js.map +1 -0
- package/dist/extraction/languages/swift.d.ts +3 -0
- package/dist/extraction/languages/swift.d.ts.map +1 -0
- package/dist/extraction/languages/swift.js +152 -0
- package/dist/extraction/languages/swift.js.map +1 -0
- package/dist/extraction/languages/terraform.d.ts +3 -0
- package/dist/extraction/languages/terraform.d.ts.map +1 -0
- package/dist/extraction/languages/terraform.js +641 -0
- package/dist/extraction/languages/terraform.js.map +1 -0
- package/dist/extraction/languages/typescript.d.ts +16 -0
- package/dist/extraction/languages/typescript.d.ts.map +1 -0
- package/dist/extraction/languages/typescript.js +167 -0
- package/dist/extraction/languages/typescript.js.map +1 -0
- package/dist/extraction/languages/vbnet.d.ts +11 -0
- package/dist/extraction/languages/vbnet.d.ts.map +1 -0
- package/dist/extraction/languages/vbnet.js +141 -0
- package/dist/extraction/languages/vbnet.js.map +1 -0
- package/dist/extraction/liquid-extractor.d.ts +59 -0
- package/dist/extraction/liquid-extractor.d.ts.map +1 -0
- package/dist/extraction/liquid-extractor.js +357 -0
- package/dist/extraction/liquid-extractor.js.map +1 -0
- package/dist/extraction/mybatis-extractor.d.ts +68 -0
- package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
- package/dist/extraction/mybatis-extractor.js +300 -0
- package/dist/extraction/mybatis-extractor.js.map +1 -0
- package/dist/extraction/parse-pool.d.ts +152 -0
- package/dist/extraction/parse-pool.d.ts.map +1 -0
- package/dist/extraction/parse-pool.js +387 -0
- package/dist/extraction/parse-pool.js.map +1 -0
- package/dist/extraction/parse-worker.d.ts +8 -0
- package/dist/extraction/parse-worker.d.ts.map +1 -0
- package/dist/extraction/parse-worker.js +104 -0
- package/dist/extraction/parse-worker.js.map +1 -0
- package/dist/extraction/razor-extractor.d.ts +42 -0
- package/dist/extraction/razor-extractor.d.ts.map +1 -0
- package/dist/extraction/razor-extractor.js +285 -0
- package/dist/extraction/razor-extractor.js.map +1 -0
- package/dist/extraction/svelte-extractor.d.ts +56 -0
- package/dist/extraction/svelte-extractor.d.ts.map +1 -0
- package/dist/extraction/svelte-extractor.js +275 -0
- package/dist/extraction/svelte-extractor.js.map +1 -0
- package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-helpers.js +153 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -0
- package/dist/extraction/tree-sitter-types.d.ts +258 -0
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-types.js +10 -0
- package/dist/extraction/tree-sitter-types.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +706 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +6506 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/extraction/vue-extractor.d.ts +51 -0
- package/dist/extraction/vue-extractor.d.ts.map +1 -0
- package/dist/extraction/vue-extractor.js +254 -0
- package/dist/extraction/vue-extractor.js.map +1 -0
- package/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
- package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
- package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
- package/dist/extraction/wasm-runtime-flags.js +106 -0
- package/dist/extraction/wasm-runtime-flags.js.map +1 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/queries.d.ts +106 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +339 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/traversal.d.ts +127 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +599 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/index.d.ts +643 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1491 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/config-writer.d.ts +28 -0
- package/dist/installer/config-writer.d.ts.map +1 -0
- package/dist/installer/config-writer.js +91 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +142 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +619 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/installer/instructions-template.d.ts +41 -0
- package/dist/installer/instructions-template.d.ts.map +1 -0
- package/dist/installer/instructions-template.js +53 -0
- package/dist/installer/instructions-template.js.map +1 -0
- package/dist/installer/targets/antigravity.d.ts +57 -0
- package/dist/installer/targets/antigravity.d.ts.map +1 -0
- package/dist/installer/targets/antigravity.js +308 -0
- package/dist/installer/targets/antigravity.js.map +1 -0
- package/dist/installer/targets/claude.d.ts +62 -0
- package/dist/installer/targets/claude.d.ts.map +1 -0
- package/dist/installer/targets/claude.js +454 -0
- package/dist/installer/targets/claude.js.map +1 -0
- package/dist/installer/targets/codex.d.ts +18 -0
- package/dist/installer/targets/codex.d.ts.map +1 -0
- package/dist/installer/targets/codex.js +185 -0
- package/dist/installer/targets/codex.js.map +1 -0
- package/dist/installer/targets/cursor.d.ts +35 -0
- package/dist/installer/targets/cursor.d.ts.map +1 -0
- package/dist/installer/targets/cursor.js +254 -0
- package/dist/installer/targets/cursor.js.map +1 -0
- package/dist/installer/targets/gemini.d.ts +26 -0
- package/dist/installer/targets/gemini.d.ts.map +1 -0
- package/dist/installer/targets/gemini.js +165 -0
- package/dist/installer/targets/gemini.js.map +1 -0
- package/dist/installer/targets/hermes.d.ts +18 -0
- package/dist/installer/targets/hermes.d.ts.map +1 -0
- package/dist/installer/targets/hermes.js +359 -0
- package/dist/installer/targets/hermes.js.map +1 -0
- package/dist/installer/targets/kiro.d.ts +27 -0
- package/dist/installer/targets/kiro.d.ts.map +1 -0
- package/dist/installer/targets/kiro.js +178 -0
- package/dist/installer/targets/kiro.js.map +1 -0
- package/dist/installer/targets/opencode.d.ts +38 -0
- package/dist/installer/targets/opencode.d.ts.map +1 -0
- package/dist/installer/targets/opencode.js +288 -0
- package/dist/installer/targets/opencode.js.map +1 -0
- package/dist/installer/targets/registry.d.ts +35 -0
- package/dist/installer/targets/registry.d.ts.map +1 -0
- package/dist/installer/targets/registry.js +91 -0
- package/dist/installer/targets/registry.js.map +1 -0
- package/dist/installer/targets/shared.d.ts +101 -0
- package/dist/installer/targets/shared.d.ts.map +1 -0
- package/dist/installer/targets/shared.js +264 -0
- package/dist/installer/targets/shared.js.map +1 -0
- package/dist/installer/targets/toml.d.ts +52 -0
- package/dist/installer/targets/toml.d.ts.map +1 -0
- package/dist/installer/targets/toml.js +147 -0
- package/dist/installer/targets/toml.js.map +1 -0
- package/dist/installer/targets/types.d.ts +108 -0
- package/dist/installer/targets/types.d.ts.map +1 -0
- package/dist/installer/targets/types.js +16 -0
- package/dist/installer/targets/types.js.map +1 -0
- package/dist/mcp/daemon-manager.d.ts +42 -0
- package/dist/mcp/daemon-manager.d.ts.map +1 -0
- package/dist/mcp/daemon-manager.js +129 -0
- package/dist/mcp/daemon-manager.js.map +1 -0
- package/dist/mcp/daemon-paths.d.ts +73 -0
- package/dist/mcp/daemon-paths.d.ts.map +1 -0
- package/dist/mcp/daemon-paths.js +165 -0
- package/dist/mcp/daemon-paths.js.map +1 -0
- package/dist/mcp/daemon-registry.d.ts +47 -0
- package/dist/mcp/daemon-registry.d.ts.map +1 -0
- package/dist/mcp/daemon-registry.js +233 -0
- package/dist/mcp/daemon-registry.js.map +1 -0
- package/dist/mcp/daemon.d.ts +290 -0
- package/dist/mcp/daemon.d.ts.map +1 -0
- package/dist/mcp/daemon.js +862 -0
- package/dist/mcp/daemon.js.map +1 -0
- package/dist/mcp/dynamic-boundaries.d.ts +41 -0
- package/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
- package/dist/mcp/dynamic-boundaries.js +360 -0
- package/dist/mcp/dynamic-boundaries.js.map +1 -0
- package/dist/mcp/early-ppid.d.ts +26 -0
- package/dist/mcp/early-ppid.d.ts.map +1 -0
- package/dist/mcp/early-ppid.js +29 -0
- package/dist/mcp/early-ppid.js.map +1 -0
- package/dist/mcp/engine.d.ts +122 -0
- package/dist/mcp/engine.d.ts.map +1 -0
- package/dist/mcp/engine.js +350 -0
- package/dist/mcp/engine.js.map +1 -0
- package/dist/mcp/index.d.ts +113 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +506 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/liveness-watchdog.d.ts +35 -0
- package/dist/mcp/liveness-watchdog.d.ts.map +1 -0
- package/dist/mcp/liveness-watchdog.js +267 -0
- package/dist/mcp/liveness-watchdog.js.map +1 -0
- package/dist/mcp/ppid-watchdog.d.ts +62 -0
- package/dist/mcp/ppid-watchdog.d.ts.map +1 -0
- package/dist/mcp/ppid-watchdog.js +64 -0
- package/dist/mcp/ppid-watchdog.js.map +1 -0
- package/dist/mcp/proxy.d.ts +87 -0
- package/dist/mcp/proxy.d.ts.map +1 -0
- package/dist/mcp/proxy.js +667 -0
- package/dist/mcp/proxy.js.map +1 -0
- package/dist/mcp/query-pool.d.ts +108 -0
- package/dist/mcp/query-pool.d.ts.map +1 -0
- package/dist/mcp/query-pool.js +315 -0
- package/dist/mcp/query-pool.js.map +1 -0
- package/dist/mcp/query-worker.d.ts +24 -0
- package/dist/mcp/query-worker.d.ts.map +1 -0
- package/dist/mcp/query-worker.js +87 -0
- package/dist/mcp/query-worker.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +34 -0
- package/dist/mcp/server-instructions.d.ts.map +1 -0
- package/dist/mcp/server-instructions.js +106 -0
- package/dist/mcp/server-instructions.js.map +1 -0
- package/dist/mcp/session.d.ts +93 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +357 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/startup-handshake.d.ts +44 -0
- package/dist/mcp/startup-handshake.d.ts.map +1 -0
- package/dist/mcp/startup-handshake.js +73 -0
- package/dist/mcp/startup-handshake.js.map +1 -0
- package/dist/mcp/stdin-teardown.d.ts +27 -0
- package/dist/mcp/stdin-teardown.d.ts.map +1 -0
- package/dist/mcp/stdin-teardown.js +49 -0
- package/dist/mcp/stdin-teardown.js.map +1 -0
- package/dist/mcp/tools.d.ts +613 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +4477 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/transport.d.ts +188 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +377 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/mcp/version.d.ts +19 -0
- package/dist/mcp/version.d.ts.map +1 -0
- package/dist/mcp/version.js +71 -0
- package/dist/mcp/version.js.map +1 -0
- package/dist/project-config.d.ts +94 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +374 -0
- package/dist/project-config.js.map +1 -0
- package/dist/resolution/c-fnptr-synthesizer.d.ts +6 -0
- package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -0
- package/dist/resolution/c-fnptr-synthesizer.js +1062 -0
- package/dist/resolution/c-fnptr-synthesizer.js.map +1 -0
- package/dist/resolution/callback-synthesizer.d.ts +15 -0
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
- package/dist/resolution/callback-synthesizer.js +3938 -0
- package/dist/resolution/callback-synthesizer.js.map +1 -0
- package/dist/resolution/cooperative-yield.d.ts +32 -0
- package/dist/resolution/cooperative-yield.d.ts.map +1 -0
- package/dist/resolution/cooperative-yield.js +42 -0
- package/dist/resolution/cooperative-yield.js.map +1 -0
- package/dist/resolution/frameworks/astro.d.ts +9 -0
- package/dist/resolution/frameworks/astro.d.ts.map +1 -0
- package/dist/resolution/frameworks/astro.js +169 -0
- package/dist/resolution/frameworks/astro.js.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.js +225 -0
- package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
- package/dist/resolution/frameworks/cics.d.ts +20 -0
- package/dist/resolution/frameworks/cics.d.ts.map +1 -0
- package/dist/resolution/frameworks/cics.js +90 -0
- package/dist/resolution/frameworks/cics.js.map +1 -0
- package/dist/resolution/frameworks/csharp.d.ts +8 -0
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
- package/dist/resolution/frameworks/csharp.js +241 -0
- package/dist/resolution/frameworks/csharp.js.map +1 -0
- package/dist/resolution/frameworks/drupal.d.ts +51 -0
- package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
- package/dist/resolution/frameworks/drupal.js +367 -0
- package/dist/resolution/frameworks/drupal.js.map +1 -0
- package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
- package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
- package/dist/resolution/frameworks/expo-modules.js +148 -0
- package/dist/resolution/frameworks/expo-modules.js.map +1 -0
- package/dist/resolution/frameworks/express.d.ts +8 -0
- package/dist/resolution/frameworks/express.d.ts.map +1 -0
- package/dist/resolution/frameworks/express.js +308 -0
- package/dist/resolution/frameworks/express.js.map +1 -0
- package/dist/resolution/frameworks/fabric.d.ts +3 -0
- package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
- package/dist/resolution/frameworks/fabric.js +354 -0
- package/dist/resolution/frameworks/fabric.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts +8 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -0
- package/dist/resolution/frameworks/go.js +161 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/goframe.d.ts +41 -0
- package/dist/resolution/frameworks/goframe.d.ts.map +1 -0
- package/dist/resolution/frameworks/goframe.js +112 -0
- package/dist/resolution/frameworks/goframe.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +50 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +175 -0
- package/dist/resolution/frameworks/index.js.map +1 -0
- package/dist/resolution/frameworks/java.d.ts +8 -0
- package/dist/resolution/frameworks/java.d.ts.map +1 -0
- package/dist/resolution/frameworks/java.js +517 -0
- package/dist/resolution/frameworks/java.js.map +1 -0
- package/dist/resolution/frameworks/laravel.d.ts +13 -0
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
- package/dist/resolution/frameworks/laravel.js +257 -0
- package/dist/resolution/frameworks/laravel.js.map +1 -0
- package/dist/resolution/frameworks/nestjs.d.ts +26 -0
- package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
- package/dist/resolution/frameworks/nestjs.js +698 -0
- package/dist/resolution/frameworks/nestjs.js.map +1 -0
- package/dist/resolution/frameworks/play.d.ts +19 -0
- package/dist/resolution/frameworks/play.d.ts.map +1 -0
- package/dist/resolution/frameworks/play.js +111 -0
- package/dist/resolution/frameworks/play.js.map +1 -0
- package/dist/resolution/frameworks/python.d.ts +10 -0
- package/dist/resolution/frameworks/python.d.ts.map +1 -0
- package/dist/resolution/frameworks/python.js +400 -0
- package/dist/resolution/frameworks/python.js.map +1 -0
- package/dist/resolution/frameworks/react-native.d.ts +3 -0
- package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
- package/dist/resolution/frameworks/react-native.js +410 -0
- package/dist/resolution/frameworks/react-native.js.map +1 -0
- package/dist/resolution/frameworks/react.d.ts +8 -0
- package/dist/resolution/frameworks/react.d.ts.map +1 -0
- package/dist/resolution/frameworks/react.js +334 -0
- package/dist/resolution/frameworks/react.js.map +1 -0
- package/dist/resolution/frameworks/ruby.d.ts +8 -0
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
- package/dist/resolution/frameworks/ruby.js +302 -0
- package/dist/resolution/frameworks/ruby.js.map +1 -0
- package/dist/resolution/frameworks/rust.d.ts +8 -0
- package/dist/resolution/frameworks/rust.d.ts.map +1 -0
- package/dist/resolution/frameworks/rust.js +304 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/svelte.d.ts +9 -0
- package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
- package/dist/resolution/frameworks/svelte.js +253 -0
- package/dist/resolution/frameworks/svelte.js.map +1 -0
- package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
- package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift-objc.js +252 -0
- package/dist/resolution/frameworks/swift-objc.js.map +1 -0
- package/dist/resolution/frameworks/swift.d.ts +10 -0
- package/dist/resolution/frameworks/swift.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift.js +400 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/frameworks/terraform.d.ts +38 -0
- package/dist/resolution/frameworks/terraform.d.ts.map +1 -0
- package/dist/resolution/frameworks/terraform.js +277 -0
- package/dist/resolution/frameworks/terraform.js.map +1 -0
- package/dist/resolution/frameworks/vue.d.ts +9 -0
- package/dist/resolution/frameworks/vue.d.ts.map +1 -0
- package/dist/resolution/frameworks/vue.js +303 -0
- package/dist/resolution/frameworks/vue.js.map +1 -0
- package/dist/resolution/go-module.d.ts +26 -0
- package/dist/resolution/go-module.d.ts.map +1 -0
- package/dist/resolution/go-module.js +78 -0
- package/dist/resolution/go-module.js.map +1 -0
- package/dist/resolution/goframe-synthesizer.d.ts +29 -0
- package/dist/resolution/goframe-synthesizer.d.ts.map +1 -0
- package/dist/resolution/goframe-synthesizer.js +163 -0
- package/dist/resolution/goframe-synthesizer.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +85 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +1974 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +258 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +1746 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/lru-cache.d.ts +24 -0
- package/dist/resolution/lru-cache.d.ts.map +1 -0
- package/dist/resolution/lru-cache.js +62 -0
- package/dist/resolution/lru-cache.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +112 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +1830 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/path-aliases.d.ts +68 -0
- package/dist/resolution/path-aliases.d.ts.map +1 -0
- package/dist/resolution/path-aliases.js +238 -0
- package/dist/resolution/path-aliases.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +27 -0
- package/dist/resolution/strip-comments.d.ts.map +1 -0
- package/dist/resolution/strip-comments.js +492 -0
- package/dist/resolution/strip-comments.js.map +1 -0
- package/dist/resolution/swift-objc-bridge.d.ts +134 -0
- package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
- package/dist/resolution/swift-objc-bridge.js +256 -0
- package/dist/resolution/swift-objc-bridge.js.map +1 -0
- package/dist/resolution/types.d.ts +262 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +8 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/resolution/workspace-packages.d.ts +58 -0
- package/dist/resolution/workspace-packages.d.ts.map +1 -0
- package/dist/resolution/workspace-packages.js +346 -0
- package/dist/resolution/workspace-packages.js.map +1 -0
- package/dist/search/identifier-segments.d.ts +60 -0
- package/dist/search/identifier-segments.d.ts.map +1 -0
- package/dist/search/identifier-segments.js +176 -0
- package/dist/search/identifier-segments.js.map +1 -0
- package/dist/search/query-parser.d.ts +57 -0
- package/dist/search/query-parser.d.ts.map +1 -0
- package/dist/search/query-parser.js +177 -0
- package/dist/search/query-parser.js.map +1 -0
- package/dist/search/query-utils.d.ts +87 -0
- package/dist/search/query-utils.d.ts.map +1 -0
- package/dist/search/query-utils.js +449 -0
- package/dist/search/query-utils.js.map +1 -0
- package/dist/sync/git-hooks.d.ts +45 -0
- package/dist/sync/git-hooks.d.ts.map +1 -0
- package/dist/sync/git-hooks.js +227 -0
- package/dist/sync/git-hooks.js.map +1 -0
- package/dist/sync/index.d.ts +19 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +35 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/watch-policy.d.ts +48 -0
- package/dist/sync/watch-policy.d.ts.map +1 -0
- package/dist/sync/watch-policy.js +124 -0
- package/dist/sync/watch-policy.js.map +1 -0
- package/dist/sync/watcher.d.ts +355 -0
- package/dist/sync/watcher.d.ts.map +1 -0
- package/dist/sync/watcher.js +848 -0
- package/dist/sync/watcher.js.map +1 -0
- package/dist/sync/worktree.d.ts +63 -0
- package/dist/sync/worktree.d.ts.map +1 -0
- package/dist/sync/worktree.js +182 -0
- package/dist/sync/worktree.js.map +1 -0
- package/dist/telemetry/index.d.ts +143 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +541 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/types.d.ts +415 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +91 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/glyphs.d.ts +42 -0
- package/dist/ui/glyphs.d.ts.map +1 -0
- package/dist/ui/glyphs.js +78 -0
- package/dist/ui/glyphs.js.map +1 -0
- package/dist/ui/shimmer-progress.d.ts +11 -0
- package/dist/ui/shimmer-progress.d.ts.map +1 -0
- package/dist/ui/shimmer-progress.js +90 -0
- package/dist/ui/shimmer-progress.js.map +1 -0
- package/dist/ui/shimmer-worker.d.ts +2 -0
- package/dist/ui/shimmer-worker.d.ts.map +1 -0
- package/dist/ui/shimmer-worker.js +118 -0
- package/dist/ui/shimmer-worker.js.map +1 -0
- package/dist/ui/types.d.ts +17 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +3 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/upgrade/index.d.ts +164 -0
- package/dist/upgrade/index.d.ts.map +1 -0
- package/dist/upgrade/index.js +646 -0
- package/dist/upgrade/index.js.map +1 -0
- package/dist/upgrade/remove-binary.d.ts +87 -0
- package/dist/upgrade/remove-binary.d.ts.map +1 -0
- package/dist/upgrade/remove-binary.js +289 -0
- package/dist/upgrade/remove-binary.js.map +1 -0
- package/dist/upgrade/update-check.d.ts +92 -0
- package/dist/upgrade/update-check.d.ts.map +1 -0
- package/dist/upgrade/update-check.js +258 -0
- package/dist/upgrade/update-check.js.map +1 -0
- package/dist/utils.d.ts +224 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +583 -0
- package/dist/utils.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AstroExtractor = void 0;
|
|
4
|
+
const tree_sitter_helpers_1 = require("./tree-sitter-helpers");
|
|
5
|
+
const tree_sitter_1 = require("./tree-sitter");
|
|
6
|
+
const grammars_1 = require("./grammars");
|
|
7
|
+
/**
|
|
8
|
+
* Astro built-in components — compiler-provided (`<Fragment>`) or shipped by
|
|
9
|
+
* `astro:components` (`<Code>`, `<Debug>`), not user code.
|
|
10
|
+
*/
|
|
11
|
+
const ASTRO_BUILTIN_COMPONENTS = new Set(['Fragment', 'Code', 'Debug']);
|
|
12
|
+
/**
|
|
13
|
+
* AstroExtractor - Extracts code relationships from Astro component files
|
|
14
|
+
*
|
|
15
|
+
* Astro files are multi-language: a TypeScript frontmatter block fenced by
|
|
16
|
+
* `---` lines, a JSX-like HTML template, and optional <script>/<style> blocks.
|
|
17
|
+
* Rather than parsing a full Astro grammar, we extract the frontmatter and
|
|
18
|
+
* <script> contents and delegate them to the TypeScript TreeSitterExtractor
|
|
19
|
+
* (Astro processes both as TypeScript by default — no `lang` attr needed).
|
|
20
|
+
*
|
|
21
|
+
* Also extracts function calls from template expressions (`{fn(...)}`) and
|
|
22
|
+
* component usages (`<PascalCase>`) so cross-file edges are captured even
|
|
23
|
+
* when the only reference lives in markup.
|
|
24
|
+
*
|
|
25
|
+
* Every .astro file produces a component node (Astro components are always
|
|
26
|
+
* importable).
|
|
27
|
+
*/
|
|
28
|
+
class AstroExtractor {
|
|
29
|
+
filePath;
|
|
30
|
+
source;
|
|
31
|
+
nodes = [];
|
|
32
|
+
edges = [];
|
|
33
|
+
unresolvedReferences = [];
|
|
34
|
+
errors = [];
|
|
35
|
+
constructor(filePath, source) {
|
|
36
|
+
this.filePath = filePath;
|
|
37
|
+
this.source = source;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Extract from Astro source
|
|
41
|
+
*/
|
|
42
|
+
extract() {
|
|
43
|
+
const startTime = Date.now();
|
|
44
|
+
try {
|
|
45
|
+
// Create component node for the .astro file itself
|
|
46
|
+
const componentNode = this.createComponentNode();
|
|
47
|
+
// Extract and process the frontmatter block (--- fenced, TypeScript)
|
|
48
|
+
const frontmatter = this.extractFrontmatter();
|
|
49
|
+
if (frontmatter) {
|
|
50
|
+
this.processScriptContent(frontmatter, componentNode.id, 'frontmatter');
|
|
51
|
+
}
|
|
52
|
+
// Extract and process <script> blocks (client-side, TypeScript-capable)
|
|
53
|
+
for (const block of this.extractScriptBlocks()) {
|
|
54
|
+
this.processScriptContent(block, componentNode.id, 'script');
|
|
55
|
+
}
|
|
56
|
+
// Ranges the template scans must skip: frontmatter + <script>/<style>
|
|
57
|
+
const coveredRanges = this.getCoveredRanges(frontmatter);
|
|
58
|
+
// Extract function calls from template expressions ({fn(...)})
|
|
59
|
+
this.extractTemplateCalls(componentNode.id, coveredRanges);
|
|
60
|
+
// Extract component usages from template (<ComponentName>)
|
|
61
|
+
this.extractTemplateComponents(componentNode.id, coveredRanges);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
this.errors.push({
|
|
65
|
+
message: `Astro extraction error: ${error instanceof Error ? error.message : String(error)}`,
|
|
66
|
+
severity: 'error',
|
|
67
|
+
code: 'parse_error',
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
nodes: this.nodes,
|
|
72
|
+
edges: this.edges,
|
|
73
|
+
unresolvedReferences: this.unresolvedReferences,
|
|
74
|
+
errors: this.errors,
|
|
75
|
+
durationMs: Date.now() - startTime,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create a component node for the .astro file
|
|
80
|
+
*/
|
|
81
|
+
createComponentNode() {
|
|
82
|
+
const lines = this.source.split('\n');
|
|
83
|
+
const fileName = this.filePath.split(/[/\\]/).pop() || this.filePath;
|
|
84
|
+
const componentName = fileName.replace(/\.astro$/, '');
|
|
85
|
+
const id = (0, tree_sitter_helpers_1.generateNodeId)(this.filePath, 'component', componentName, 1);
|
|
86
|
+
const node = {
|
|
87
|
+
id,
|
|
88
|
+
kind: 'component',
|
|
89
|
+
name: componentName,
|
|
90
|
+
qualifiedName: `${this.filePath}::${componentName}`,
|
|
91
|
+
filePath: this.filePath,
|
|
92
|
+
language: 'astro',
|
|
93
|
+
startLine: 1,
|
|
94
|
+
endLine: lines.length,
|
|
95
|
+
startColumn: 0,
|
|
96
|
+
endColumn: lines[lines.length - 1]?.length || 0,
|
|
97
|
+
isExported: true, // Astro components are always importable
|
|
98
|
+
updatedAt: Date.now(),
|
|
99
|
+
};
|
|
100
|
+
this.nodes.push(node);
|
|
101
|
+
return node;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Extract the frontmatter block: the content between the opening `---`
|
|
105
|
+
* fence (first non-blank line of the file) and the closing `---` fence.
|
|
106
|
+
* An unclosed fence is treated as "no frontmatter" rather than swallowing
|
|
107
|
+
* the whole template as TypeScript.
|
|
108
|
+
*
|
|
109
|
+
* Returns the content plus its 0-indexed start line, or null.
|
|
110
|
+
*/
|
|
111
|
+
extractFrontmatter() {
|
|
112
|
+
const lines = this.source.split('\n');
|
|
113
|
+
// Opening fence must be the first non-blank line
|
|
114
|
+
let openIdx = -1;
|
|
115
|
+
for (let i = 0; i < lines.length; i++) {
|
|
116
|
+
const trimmed = lines[i].trim();
|
|
117
|
+
if (trimmed === '')
|
|
118
|
+
continue;
|
|
119
|
+
if (trimmed === '---')
|
|
120
|
+
openIdx = i;
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
if (openIdx === -1)
|
|
124
|
+
return null;
|
|
125
|
+
// Closing fence
|
|
126
|
+
let closeIdx = -1;
|
|
127
|
+
for (let i = openIdx + 1; i < lines.length; i++) {
|
|
128
|
+
if (lines[i].trim() === '---') {
|
|
129
|
+
closeIdx = i;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (closeIdx === -1)
|
|
134
|
+
return null;
|
|
135
|
+
return {
|
|
136
|
+
content: lines.slice(openIdx + 1, closeIdx).join('\n'),
|
|
137
|
+
startLine: openIdx + 1, // 0-indexed line where content starts
|
|
138
|
+
endLine: closeIdx, // 0-indexed line of the closing fence
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Extract <script> blocks from the template portion
|
|
143
|
+
*/
|
|
144
|
+
extractScriptBlocks() {
|
|
145
|
+
const blocks = [];
|
|
146
|
+
const scriptRegex = /<script(\s[^>]*)?>(?<content>[\s\S]*?)<\/script>/g;
|
|
147
|
+
let match;
|
|
148
|
+
while ((match = scriptRegex.exec(this.source)) !== null) {
|
|
149
|
+
const content = match.groups?.content || match[2] || '';
|
|
150
|
+
// Calculate the 0-indexed line where the content begins. The content
|
|
151
|
+
// starts right after the opening tag's `>` — its leading `\n` is part
|
|
152
|
+
// of the content, so relative line 1 sits ON the tag's closing line
|
|
153
|
+
// (do not add 1 here; that double-counts the embedded newline).
|
|
154
|
+
const beforeScript = this.source.substring(0, match.index);
|
|
155
|
+
const scriptTagLine = (beforeScript.match(/\n/g) || []).length;
|
|
156
|
+
const openingTag = match[0].substring(0, match[0].indexOf('>') + 1);
|
|
157
|
+
const openingTagLines = (openingTag.match(/\n/g) || []).length;
|
|
158
|
+
const contentStartLine = scriptTagLine + openingTagLines; // 0-indexed
|
|
159
|
+
blocks.push({ content, startLine: contentStartLine });
|
|
160
|
+
}
|
|
161
|
+
return blocks;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Process frontmatter / script content by delegating to TreeSitterExtractor.
|
|
165
|
+
* Astro treats both as TypeScript by default.
|
|
166
|
+
*/
|
|
167
|
+
processScriptContent(block, componentNodeId, label) {
|
|
168
|
+
if (!(0, grammars_1.isLanguageSupported)('typescript')) {
|
|
169
|
+
this.errors.push({
|
|
170
|
+
message: `Parser for typescript not available, cannot parse Astro ${label} block`,
|
|
171
|
+
severity: 'warning',
|
|
172
|
+
});
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
// Delegate to TreeSitterExtractor
|
|
176
|
+
const extractor = new tree_sitter_1.TreeSitterExtractor(this.filePath, block.content, 'typescript');
|
|
177
|
+
const result = extractor.extract();
|
|
178
|
+
// Offset line numbers from the block back to .astro file positions
|
|
179
|
+
for (const node of result.nodes) {
|
|
180
|
+
node.startLine += block.startLine;
|
|
181
|
+
node.endLine += block.startLine;
|
|
182
|
+
node.language = 'astro'; // Mark as astro, not TS
|
|
183
|
+
this.nodes.push(node);
|
|
184
|
+
// Add containment edge from component to this node
|
|
185
|
+
this.edges.push({
|
|
186
|
+
source: componentNodeId,
|
|
187
|
+
target: node.id,
|
|
188
|
+
kind: 'contains',
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
// Offset edges (they reference line numbers)
|
|
192
|
+
for (const edge of result.edges) {
|
|
193
|
+
if (edge.line) {
|
|
194
|
+
edge.line += block.startLine;
|
|
195
|
+
}
|
|
196
|
+
this.edges.push(edge);
|
|
197
|
+
}
|
|
198
|
+
// Offset unresolved references
|
|
199
|
+
for (const ref of result.unresolvedReferences) {
|
|
200
|
+
ref.line += block.startLine;
|
|
201
|
+
ref.filePath = this.filePath;
|
|
202
|
+
ref.language = 'astro';
|
|
203
|
+
this.unresolvedReferences.push(ref);
|
|
204
|
+
}
|
|
205
|
+
// Carry over errors
|
|
206
|
+
for (const error of result.errors) {
|
|
207
|
+
if (error.line) {
|
|
208
|
+
error.line += block.startLine;
|
|
209
|
+
}
|
|
210
|
+
this.errors.push(error);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Line ranges (0-indexed, inclusive) the template scans must skip:
|
|
215
|
+
* the frontmatter block and <script>/<style> blocks.
|
|
216
|
+
*/
|
|
217
|
+
getCoveredRanges(frontmatter) {
|
|
218
|
+
const coveredRanges = [];
|
|
219
|
+
if (frontmatter) {
|
|
220
|
+
// Cover from the opening fence line through the closing fence line
|
|
221
|
+
coveredRanges.push([frontmatter.startLine - 1, frontmatter.endLine]);
|
|
222
|
+
}
|
|
223
|
+
const tagRegex = /<(script|style)(\s[^>]*)?>[\s\S]*?<\/\1>/g;
|
|
224
|
+
let tagMatch;
|
|
225
|
+
while ((tagMatch = tagRegex.exec(this.source)) !== null) {
|
|
226
|
+
const startLine = (this.source.substring(0, tagMatch.index).match(/\n/g) || []).length;
|
|
227
|
+
const endLine = startLine + (tagMatch[0].match(/\n/g) || []).length;
|
|
228
|
+
coveredRanges.push([startLine, endLine]);
|
|
229
|
+
}
|
|
230
|
+
return coveredRanges;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Extract function calls from Astro template expressions.
|
|
234
|
+
*
|
|
235
|
+
* Astro templates embed JSX-like expressions (`{formatDate(post.date)}`,
|
|
236
|
+
* `class:list={cn(...)}`), so calls frequently live in markup rather than
|
|
237
|
+
* the frontmatter. We scan template lines for `{expression}` groups and
|
|
238
|
+
* extract call patterns from them. A `{` group left open at end-of-line
|
|
239
|
+
* (the pervasive `{posts.map((post) => (` pattern) contributes the calls
|
|
240
|
+
* on its opening line.
|
|
241
|
+
*/
|
|
242
|
+
extractTemplateCalls(componentNodeId, coveredRanges) {
|
|
243
|
+
const lines = this.source.split('\n');
|
|
244
|
+
// Complete groups: {...} — excluding JSX comments ({/* ... */})
|
|
245
|
+
const exprRegex = /\{([^}/][^}]*)\}/g;
|
|
246
|
+
// A group opened but not closed on this line
|
|
247
|
+
const openExprRegex = /\{([^}/][^}]*)$/;
|
|
248
|
+
for (let lineIdx = 0; lineIdx < lines.length; lineIdx++) {
|
|
249
|
+
if (coveredRanges.some(([start, end]) => lineIdx >= start && lineIdx <= end))
|
|
250
|
+
continue;
|
|
251
|
+
const line = lines[lineIdx];
|
|
252
|
+
const exprs = [];
|
|
253
|
+
let exprMatch;
|
|
254
|
+
while ((exprMatch = exprRegex.exec(line)) !== null) {
|
|
255
|
+
exprs.push({ text: exprMatch[1], offset: exprMatch.index });
|
|
256
|
+
}
|
|
257
|
+
const openMatch = openExprRegex.exec(line.replace(exprRegex, ''));
|
|
258
|
+
if (openMatch) {
|
|
259
|
+
exprs.push({ text: openMatch[1], offset: line.lastIndexOf('{') });
|
|
260
|
+
}
|
|
261
|
+
for (const expr of exprs) {
|
|
262
|
+
// Extract function calls: identifiers followed by (
|
|
263
|
+
// Matches: cn(...), formatDate(...), obj.method(...)
|
|
264
|
+
const callRegex = /\b([a-zA-Z_$][\w$.]*)\s*\(/g;
|
|
265
|
+
let callMatch;
|
|
266
|
+
while ((callMatch = callRegex.exec(expr.text)) !== null) {
|
|
267
|
+
const calleeName = callMatch[1];
|
|
268
|
+
// Skip control-flow keywords valid inside expressions
|
|
269
|
+
if (calleeName === 'if' || calleeName === 'await' || calleeName === 'function')
|
|
270
|
+
continue;
|
|
271
|
+
this.unresolvedReferences.push({
|
|
272
|
+
fromNodeId: componentNodeId,
|
|
273
|
+
referenceName: calleeName,
|
|
274
|
+
referenceKind: 'calls',
|
|
275
|
+
line: lineIdx + 1, // 1-indexed
|
|
276
|
+
column: expr.offset + callMatch.index,
|
|
277
|
+
filePath: this.filePath,
|
|
278
|
+
language: 'astro',
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Extract component usages from the Astro template.
|
|
286
|
+
*
|
|
287
|
+
* PascalCase tags like <Layout>, <PostCard /> represent component
|
|
288
|
+
* instantiations — analogous to function calls in imperative code.
|
|
289
|
+
* Lowercase tags are native HTML (Astro does not register kebab-case
|
|
290
|
+
* components the way Vue does, so those are real custom elements and
|
|
291
|
+
* are skipped).
|
|
292
|
+
*/
|
|
293
|
+
extractTemplateComponents(componentNodeId, coveredRanges) {
|
|
294
|
+
const lines = this.source.split('\n');
|
|
295
|
+
// Opening/self-closing tags (closing tags </Foo> start with </ so won't match)
|
|
296
|
+
const componentTagRegex = /<([A-Z][a-zA-Z0-9_$]*)\b/g;
|
|
297
|
+
for (let lineIdx = 0; lineIdx < lines.length; lineIdx++) {
|
|
298
|
+
if (coveredRanges.some(([start, end]) => lineIdx >= start && lineIdx <= end))
|
|
299
|
+
continue;
|
|
300
|
+
const line = lines[lineIdx];
|
|
301
|
+
let match;
|
|
302
|
+
while ((match = componentTagRegex.exec(line)) !== null) {
|
|
303
|
+
const componentName = match[1];
|
|
304
|
+
if (ASTRO_BUILTIN_COMPONENTS.has(componentName))
|
|
305
|
+
continue;
|
|
306
|
+
this.unresolvedReferences.push({
|
|
307
|
+
fromNodeId: componentNodeId,
|
|
308
|
+
referenceName: componentName,
|
|
309
|
+
referenceKind: 'references',
|
|
310
|
+
line: lineIdx + 1, // 1-indexed
|
|
311
|
+
column: match.index + 1,
|
|
312
|
+
filePath: this.filePath,
|
|
313
|
+
language: 'astro',
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
exports.AstroExtractor = AstroExtractor;
|
|
320
|
+
//# sourceMappingURL=astro-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astro-extractor.js","sourceRoot":"","sources":["../../src/extraction/astro-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { ExtractionResult, Language } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* CfmlExtractor - Extracts code relationships from CFML source (.cfc/.cfm).
|
|
4
|
+
*
|
|
5
|
+
* tree-sitter-cfml splits CFML into two related grammars: `cfml` (tag-based —
|
|
6
|
+
* `<cfcomponent>`/`<cffunction>`/HTML) and `cfscript` (modern bare-script
|
|
7
|
+
* `component { ... }` syntax). The `cfml` grammar's own injections.scm treats
|
|
8
|
+
* bare-script content as an opaque blob meant to be re-parsed by `cfscript` —
|
|
9
|
+
* that re-parsing only happens at the editor/highlighting layer, not in the
|
|
10
|
+
* raw AST, so this extractor replicates it: a file whose first real token
|
|
11
|
+
* isn't `<` is delegated wholesale to the cfscript grammar (the dominant
|
|
12
|
+
* modern style); otherwise the file is walked tag-by-tag with the cfml
|
|
13
|
+
* grammar, delegating any `<cfscript>` tag bodies the same way.
|
|
14
|
+
*/
|
|
15
|
+
export declare class CfmlExtractor {
|
|
16
|
+
private filePath;
|
|
17
|
+
private source;
|
|
18
|
+
private language;
|
|
19
|
+
private nodes;
|
|
20
|
+
private edges;
|
|
21
|
+
private unresolvedReferences;
|
|
22
|
+
private errors;
|
|
23
|
+
/** `language` is the file's detected language — `'cfml'` for `.cfc`/`.cfm`, `'cfscript'` for `.cfs`. Both dialect-switch internally; this only controls the language tag stamped onto emitted nodes/refs. */
|
|
24
|
+
constructor(filePath: string, source: string, language?: Language);
|
|
25
|
+
extract(): ExtractionResult;
|
|
26
|
+
/** Modern bare-script `.cfc`/`.cfm`: delegate the whole file to the cfscript grammar. */
|
|
27
|
+
private extractBareScript;
|
|
28
|
+
/** Legacy tag-based CFML: walk `<cfcomponent>`/`<cffunction>`, delegating `<cfscript>` bodies. */
|
|
29
|
+
private extractTagBased;
|
|
30
|
+
/** Build the file's own `kind:'file'` node, spanning the whole source. Tag-based files need this explicitly — unlike `extractBareScript` (which delegates the whole file to `TreeSitterExtractor` and inherits its file node), `extractTagBased` walks the tree itself and has no other source of one. */
|
|
31
|
+
private createFileNode;
|
|
32
|
+
/**
|
|
33
|
+
* Walks `program`'s named children with a single forward cursor (not an
|
|
34
|
+
* index loop) — `extractComponent` consumes a variable run of FOLLOWING
|
|
35
|
+
* siblings as the component body (see its doc comment), so this must
|
|
36
|
+
* resume from whatever it last consumed rather than revisiting those same
|
|
37
|
+
* cffunction/cfscript siblings a second time as bogus top-level symbols.
|
|
38
|
+
*/
|
|
39
|
+
private walkProgram;
|
|
40
|
+
/**
|
|
41
|
+
* `<cfcomponent extends="Base" implements="IFoo,IBar">...</cfcomponent>`.
|
|
42
|
+
* The grammar's implicit-end-tag scanner means component body content
|
|
43
|
+
* (cffunction tags, cfscript tags, etc.) appears as the open tag's FOLLOWING
|
|
44
|
+
* siblings in `program`, not nested children — walk forward to the matching
|
|
45
|
+
* cf_component_close_tag.
|
|
46
|
+
*/
|
|
47
|
+
private extractComponent;
|
|
48
|
+
/**
|
|
49
|
+
* `<cffunction name="..." access="..." returntype="...">...</cffunction>`.
|
|
50
|
+
* `parentClassId` decides `method` vs top-level `function`; `containerId` is
|
|
51
|
+
* the `contains`-edge target (the class when inside one, otherwise the file
|
|
52
|
+
* node for a bare top-level cffunction) — kept separate so a top-level
|
|
53
|
+
* function still gets a containment edge without being misclassified as a
|
|
54
|
+
* method of the file. A method's qualifiedName is scoped under
|
|
55
|
+
* `parentClassName` (`TagService::save`, the same `Class::member` shape the
|
|
56
|
+
* generic extractor produces) so type-validated method resolution can match.
|
|
57
|
+
*/
|
|
58
|
+
private extractFunctionTag;
|
|
59
|
+
/**
|
|
60
|
+
* Recursively delegates any `cf_script_tag`/`cf_query_tag` found within
|
|
61
|
+
* `node`'s subtree — e.g. a `<cfscript>`/`<cfquery>` nested inside
|
|
62
|
+
* `<cfif>`/`<cfloop>`/`<cftry>` control-flow tags, which (unlike
|
|
63
|
+
* `<cfcomponent>`'s body — see the implicit-end-tag note on `extractComponent`)
|
|
64
|
+
* ARE normal children, just possibly several levels deep, so a direct-children
|
|
65
|
+
* check misses them. Does not descend into a nested `cf_function_tag` — that
|
|
66
|
+
* has its own scope and is walked separately. `parentClassName` rides along
|
|
67
|
+
* so a `<cfscript>` at component scope classifies its functions as methods
|
|
68
|
+
* scoped under the component.
|
|
69
|
+
*/
|
|
70
|
+
private delegateNestedTags;
|
|
71
|
+
/**
|
|
72
|
+
* Delegate a `<cfscript>...</cfscript>` tag body to the cfscript grammar.
|
|
73
|
+
* With `parentClassName` set (the block sits at component scope), functions
|
|
74
|
+
* declared at the script's top level are the component's methods
|
|
75
|
+
* (`<cfcomponent><cfscript>function configure(){}` — the standard ColdBox
|
|
76
|
+
* ModuleConfig shape): they're re-kinded `function` → `method`, and every
|
|
77
|
+
* merged symbol's qualifiedName is prefixed with the component scope
|
|
78
|
+
* (`configure` → `ModuleConfig::configure`) so type-validated method
|
|
79
|
+
* resolution can match them. Functions nested inside another function
|
|
80
|
+
* (closures) keep kind `function`.
|
|
81
|
+
*/
|
|
82
|
+
private delegateScriptTag;
|
|
83
|
+
/**
|
|
84
|
+
* Delegate a `<cfquery>...</cfquery>` tag's SQL body to the `cfquery` grammar.
|
|
85
|
+
* `#hash#` expressions inside the SQL (e.g. `#getCurrentUser().getId()#` in a
|
|
86
|
+
* WHERE clause) are real CFML calls/references — tree-sitter-cfml's `cfquery`
|
|
87
|
+
* grammar parses them structurally (same `call_expression`/`member_expression`
|
|
88
|
+
* shape as cfscript), so without this delegation they're silently dropped as
|
|
89
|
+
* opaque SQL text. The grammar models no other symbols, so only call/reference
|
|
90
|
+
* extraction is relevant here — unlike `delegateScriptTag`, there are no nodes
|
|
91
|
+
* or contains-edges to merge.
|
|
92
|
+
*/
|
|
93
|
+
private delegateQueryTag;
|
|
94
|
+
/** Read a `cf_attribute`'s value by name from a tag node's direct `cf_attribute`/`cf_tag_attributes` children. */
|
|
95
|
+
private tagAttr;
|
|
96
|
+
private componentNameFromPath;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Sniff whether CFML source is bare-script (`component { ... }`, modern style)
|
|
100
|
+
* vs tag-based (`<cfcomponent>`, `<cfif>`, HTML). Skips a leading UTF-8 BOM
|
|
101
|
+
* (endemic in CFML's Windows-editor history — 17% of ColdBox's files carry
|
|
102
|
+
* one; both grammars parse fine with it once routed correctly), whitespace,
|
|
103
|
+
* and `//`/`/* *\/` comments to find the first real token; tag-based files
|
|
104
|
+
* start with `<`, script-based files don't.
|
|
105
|
+
*/
|
|
106
|
+
export declare function isBareScriptCfml(source: string): boolean;
|
|
107
|
+
//# sourceMappingURL=cfml-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cfml-extractor.d.ts","sourceRoot":"","sources":["../../src/extraction/cfml-extractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,gBAAgB,EAAwC,QAAQ,EAAE,MAAM,UAAU,CAAC;AAKxG;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,MAAM,CAAyB;IAEvC,6MAA6M;gBACjM,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB;IAMzE,OAAO,IAAI,gBAAgB;IA0B3B,yFAAyF;IACzF,OAAO,CAAC,iBAAiB;IA8BzB,kGAAkG;IAClG,OAAO,CAAC,eAAe;IAyBvB,0SAA0S;IAC1S,OAAO,CAAC,cAAc;IAoBtB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAqBnB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IA0ExB;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAsC1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;IA8DzB;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAwBxB,kHAAkH;IAClH,OAAO,CAAC,OAAO;IA8Bf,OAAO,CAAC,qBAAqB;CAI9B;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAkBxD"}
|