src-mcp 1.0.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/LICENSE +21 -0
- package/README.md +721 -0
- package/assets/languages.json +219 -0
- package/assets/queries/_javascript/highlights.scm +36 -0
- package/assets/queries/_javascript/locals.scm +14 -0
- package/assets/queries/_javascript/tags.scm +88 -0
- package/assets/queries/_jsx/highlights.scm +43 -0
- package/assets/queries/_jsx/indents.scm +6 -0
- package/assets/queries/_jsx/textobjects.scm +7 -0
- package/assets/queries/_typescript/highlights.scm +148 -0
- package/assets/queries/_typescript/indents.scm +5 -0
- package/assets/queries/_typescript/locals.scm +34 -0
- package/assets/queries/_typescript/tags.scm +23 -0
- package/assets/queries/_typescript/textobjects.scm +12 -0
- package/assets/queries/c/highlights.scm +167 -0
- package/assets/queries/c/indents.scm +51 -0
- package/assets/queries/c/injections.scm +2 -0
- package/assets/queries/c/locals.scm +38 -0
- package/assets/queries/c/rainbows.scm +29 -0
- package/assets/queries/c/tags.scm +9 -0
- package/assets/queries/c/textobjects.scm +27 -0
- package/assets/queries/c_sharp/highlights.scm +208 -0
- package/assets/queries/c_sharp/injections.scm +2 -0
- package/assets/queries/c_sharp/tags.scm +21 -0
- package/assets/queries/c_sharp/textobjects.scm +20 -0
- package/assets/queries/cpp/highlights.scm +177 -0
- package/assets/queries/cpp/indents.scm +3 -0
- package/assets/queries/cpp/injections.scm +4 -0
- package/assets/queries/cpp/rainbows.scm +49 -0
- package/assets/queries/cpp/tags.scm +12 -0
- package/assets/queries/cpp/textobjects.scm +7 -0
- package/assets/queries/ecma/highlights.scm +288 -0
- package/assets/queries/ecma/indents.scm +28 -0
- package/assets/queries/ecma/injections.scm +100 -0
- package/assets/queries/ecma/locals.scm +26 -0
- package/assets/queries/ecma/rainbows.scm +28 -0
- package/assets/queries/ecma/textobjects.scm +45 -0
- package/assets/queries/go/highlights.scm +236 -0
- package/assets/queries/go/indents.scm +40 -0
- package/assets/queries/go/injections.scm +92 -0
- package/assets/queries/go/locals.scm +25 -0
- package/assets/queries/go/rainbows.scm +33 -0
- package/assets/queries/go/tags.scm +30 -0
- package/assets/queries/go/textobjects.scm +33 -0
- package/assets/queries/html/highlights.scm +47 -0
- package/assets/queries/html/injections.scm +10 -0
- package/assets/queries/html/rainbows.scm +13 -0
- package/assets/queries/html/textobjects.scm +9 -0
- package/assets/queries/java/highlights.scm +227 -0
- package/assets/queries/java/indents.scm +35 -0
- package/assets/queries/java/injections.scm +2 -0
- package/assets/queries/java/rainbows.scm +35 -0
- package/assets/queries/java/tags.scm +27 -0
- package/assets/queries/java/textobjects.scm +44 -0
- package/assets/queries/javascript/highlights.scm +3 -0
- package/assets/queries/javascript/indents.scm +3 -0
- package/assets/queries/javascript/injections.scm +3 -0
- package/assets/queries/javascript/locals.scm +3 -0
- package/assets/queries/javascript/rainbows.scm +1 -0
- package/assets/queries/javascript/tags.scm +3 -0
- package/assets/queries/javascript/textobjects.scm +3 -0
- package/assets/queries/jsx/highlights.scm +3 -0
- package/assets/queries/jsx/indents.scm +3 -0
- package/assets/queries/jsx/injections.scm +3 -0
- package/assets/queries/jsx/locals.scm +3 -0
- package/assets/queries/jsx/rainbows.scm +9 -0
- package/assets/queries/jsx/tags.scm +3 -0
- package/assets/queries/jsx/textobjects.scm +3 -0
- package/assets/queries/kotlin/folds.scm +17 -0
- package/assets/queries/kotlin/highlights.scm +330 -0
- package/assets/queries/kotlin/indents.scm +44 -0
- package/assets/queries/kotlin/injections.scm +42 -0
- package/assets/queries/kotlin/locals.scm +23 -0
- package/assets/queries/kotlin/tags.scm +12 -0
- package/assets/queries/kotlin/textobjects.scm +45 -0
- package/assets/queries/ocaml/highlights.scm +151 -0
- package/assets/queries/ocaml/indents.scm +12 -0
- package/assets/queries/ocaml/injections.scm +2 -0
- package/assets/queries/ocaml/locals.scm +24 -0
- package/assets/queries/php/highlights.scm +319 -0
- package/assets/queries/php/indents.scm +18 -0
- package/assets/queries/php/injections.scm +25 -0
- package/assets/queries/php/rainbows.scm +15 -0
- package/assets/queries/php/tags.scm +26 -0
- package/assets/queries/php/textobjects.scm +52 -0
- package/assets/queries/python/highlights.scm +308 -0
- package/assets/queries/python/indents.scm +84 -0
- package/assets/queries/python/injections.scm +14 -0
- package/assets/queries/python/locals.scm +50 -0
- package/assets/queries/python/rainbows.scm +30 -0
- package/assets/queries/python/tags.scm +14 -0
- package/assets/queries/python/textobjects.scm +35 -0
- package/assets/queries/ruby/highlights.scm +191 -0
- package/assets/queries/ruby/indents.scm +24 -0
- package/assets/queries/ruby/injections.scm +35 -0
- package/assets/queries/ruby/locals.scm +20 -0
- package/assets/queries/ruby/rainbows.scm +28 -0
- package/assets/queries/ruby/tags.scm +64 -0
- package/assets/queries/ruby/textobjects.scm +56 -0
- package/assets/queries/rust/highlights.scm +514 -0
- package/assets/queries/rust/indents.scm +148 -0
- package/assets/queries/rust/injections.scm +170 -0
- package/assets/queries/rust/locals.scm +28 -0
- package/assets/queries/rust/rainbows.scm +60 -0
- package/assets/queries/rust/tags.scm +26 -0
- package/assets/queries/rust/textobjects.scm +85 -0
- package/assets/queries/scala/highlights.scm +267 -0
- package/assets/queries/scala/indents.scm +22 -0
- package/assets/queries/scala/injections.scm +16 -0
- package/assets/queries/scala/locals.scm +14 -0
- package/assets/queries/scala/textobjects.scm +65 -0
- package/assets/queries/svelte/folds.scm +13 -0
- package/assets/queries/svelte/highlights.scm +38 -0
- package/assets/queries/svelte/indents.scm +24 -0
- package/assets/queries/svelte/injections.scm +46 -0
- package/assets/queries/svelte/locals.scm +1 -0
- package/assets/queries/swift/highlights.scm +200 -0
- package/assets/queries/swift/indents.scm +100 -0
- package/assets/queries/swift/injections.scm +10 -0
- package/assets/queries/swift/locals.scm +19 -0
- package/assets/queries/swift/rainbows.scm +60 -0
- package/assets/queries/swift/textobjects.scm +23 -0
- package/assets/queries/tsx/highlights.scm +3 -0
- package/assets/queries/tsx/indents.scm +3 -0
- package/assets/queries/tsx/injections.scm +3 -0
- package/assets/queries/tsx/locals.scm +3 -0
- package/assets/queries/tsx/rainbows.scm +2 -0
- package/assets/queries/tsx/tags.scm +3 -0
- package/assets/queries/tsx/textobjects.scm +3 -0
- package/assets/queries/typescript/highlights.scm +3 -0
- package/assets/queries/typescript/indents.scm +3 -0
- package/assets/queries/typescript/injections.scm +3 -0
- package/assets/queries/typescript/locals.scm +3 -0
- package/assets/queries/typescript/rainbows.scm +19 -0
- package/assets/queries/typescript/tags.scm +3 -0
- package/assets/queries/typescript/textobjects.scm +3 -0
- package/assets/wasm/tree-sitter-c.wasm +0 -0
- package/assets/wasm/tree-sitter-c_sharp.wasm +0 -0
- package/assets/wasm/tree-sitter-cpp.wasm +0 -0
- package/assets/wasm/tree-sitter-go.wasm +0 -0
- package/assets/wasm/tree-sitter-html.wasm +0 -0
- package/assets/wasm/tree-sitter-java.wasm +0 -0
- package/assets/wasm/tree-sitter-javascript.wasm +0 -0
- package/assets/wasm/tree-sitter-kotlin.wasm +0 -0
- package/assets/wasm/tree-sitter-ocaml.wasm +0 -0
- package/assets/wasm/tree-sitter-php.wasm +0 -0
- package/assets/wasm/tree-sitter-python.wasm +0 -0
- package/assets/wasm/tree-sitter-ruby.wasm +0 -0
- package/assets/wasm/tree-sitter-rust.wasm +0 -0
- package/assets/wasm/tree-sitter-scala.wasm +0 -0
- package/assets/wasm/tree-sitter-svelte.wasm +0 -0
- package/assets/wasm/tree-sitter-swift.wasm +0 -0
- package/assets/wasm/tree-sitter-tsx.wasm +0 -0
- package/assets/wasm/tree-sitter-typescript.wasm +0 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +4 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/adapter.d.ts +7 -0
- package/dist/cli/adapter.d.ts.map +1 -0
- package/dist/cli/adapter.js +39 -0
- package/dist/cli/adapter.js.map +1 -0
- package/dist/cli/commands/index.d.ts +24 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +13 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/serve.command.d.ts +21 -0
- package/dist/cli/commands/serve.command.d.ts.map +1 -0
- package/dist/cli/commands/serve.command.js +62 -0
- package/dist/cli/commands/serve.command.js.map +1 -0
- package/dist/cli/commands/version.command.d.ts +2 -0
- package/dist/cli/commands/version.command.d.ts.map +1 -0
- package/dist/cli/commands/version.command.js +12 -0
- package/dist/cli/commands/version.command.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +15 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parser.d.ts +7 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +99 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/config/index.d.ts +24 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +38 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/ast/index.d.ts +82 -0
- package/dist/core/ast/index.d.ts.map +1 -0
- package/dist/core/ast/index.js +204 -0
- package/dist/core/ast/index.js.map +1 -0
- package/dist/core/ast/types.d.ts +152 -0
- package/dist/core/ast/types.d.ts.map +1 -0
- package/dist/core/ast/types.js +5 -0
- package/dist/core/ast/types.js.map +1 -0
- package/dist/core/constants.d.ts +17 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +49 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/embeddings/callgraph.d.ts +98 -0
- package/dist/core/embeddings/callgraph.d.ts.map +1 -0
- package/dist/core/embeddings/callgraph.js +415 -0
- package/dist/core/embeddings/callgraph.js.map +1 -0
- package/dist/core/embeddings/chunker.d.ts +37 -0
- package/dist/core/embeddings/chunker.d.ts.map +1 -0
- package/dist/core/embeddings/chunker.js +298 -0
- package/dist/core/embeddings/chunker.js.map +1 -0
- package/dist/core/embeddings/client.d.ts +30 -0
- package/dist/core/embeddings/client.d.ts.map +1 -0
- package/dist/core/embeddings/client.js +65 -0
- package/dist/core/embeddings/client.js.map +1 -0
- package/dist/core/embeddings/crossfile.d.ts +58 -0
- package/dist/core/embeddings/crossfile.d.ts.map +1 -0
- package/dist/core/embeddings/crossfile.js +202 -0
- package/dist/core/embeddings/crossfile.js.map +1 -0
- package/dist/core/embeddings/enricher.d.ts +53 -0
- package/dist/core/embeddings/enricher.d.ts.map +1 -0
- package/dist/core/embeddings/enricher.js +308 -0
- package/dist/core/embeddings/enricher.js.map +1 -0
- package/dist/core/embeddings/index.d.ts +13 -0
- package/dist/core/embeddings/index.d.ts.map +1 -0
- package/dist/core/embeddings/index.js +20 -0
- package/dist/core/embeddings/index.js.map +1 -0
- package/dist/core/embeddings/reranker.d.ts +41 -0
- package/dist/core/embeddings/reranker.d.ts.map +1 -0
- package/dist/core/embeddings/reranker.js +117 -0
- package/dist/core/embeddings/reranker.js.map +1 -0
- package/dist/core/embeddings/store.d.ts +93 -0
- package/dist/core/embeddings/store.d.ts.map +1 -0
- package/dist/core/embeddings/store.js +304 -0
- package/dist/core/embeddings/store.js.map +1 -0
- package/dist/core/embeddings/types.d.ts +77 -0
- package/dist/core/embeddings/types.d.ts.map +1 -0
- package/dist/core/embeddings/types.js +5 -0
- package/dist/core/embeddings/types.js.map +1 -0
- package/dist/core/embeddings/watcher.d.ts +130 -0
- package/dist/core/embeddings/watcher.d.ts.map +1 -0
- package/dist/core/embeddings/watcher.js +448 -0
- package/dist/core/embeddings/watcher.js.map +1 -0
- package/dist/core/fallback/index.d.ts +26 -0
- package/dist/core/fallback/index.d.ts.map +1 -0
- package/dist/core/fallback/index.js +76 -0
- package/dist/core/fallback/index.js.map +1 -0
- package/dist/core/parser/index.d.ts +64 -0
- package/dist/core/parser/index.d.ts.map +1 -0
- package/dist/core/parser/index.js +205 -0
- package/dist/core/parser/index.js.map +1 -0
- package/dist/core/parser/languages.d.ts +26 -0
- package/dist/core/parser/languages.d.ts.map +1 -0
- package/dist/core/parser/languages.js +101 -0
- package/dist/core/parser/languages.js.map +1 -0
- package/dist/core/queries/helpers.d.ts +72 -0
- package/dist/core/queries/helpers.d.ts.map +1 -0
- package/dist/core/queries/helpers.js +101 -0
- package/dist/core/queries/helpers.js.map +1 -0
- package/dist/core/queries/index.d.ts +144 -0
- package/dist/core/queries/index.d.ts.map +1 -0
- package/dist/core/queries/index.js +396 -0
- package/dist/core/queries/index.js.map +1 -0
- package/dist/core/queries/loader.d.ts +46 -0
- package/dist/core/queries/loader.d.ts.map +1 -0
- package/dist/core/queries/loader.js +216 -0
- package/dist/core/queries/loader.js.map +1 -0
- package/dist/core/queries/patterns.d.ts +10 -0
- package/dist/core/queries/patterns.d.ts.map +1 -0
- package/dist/core/queries/patterns.js +112 -0
- package/dist/core/queries/patterns.js.map +1 -0
- package/dist/core/symbols/index.d.ts +70 -0
- package/dist/core/symbols/index.d.ts.map +1 -0
- package/dist/core/symbols/index.js +359 -0
- package/dist/core/symbols/index.js.map +1 -0
- package/dist/core/unified/index.d.ts +118 -0
- package/dist/core/unified/index.d.ts.map +1 -0
- package/dist/core/unified/index.js +428 -0
- package/dist/core/unified/index.js.map +1 -0
- package/dist/core/utils/assets.d.ts +34 -0
- package/dist/core/utils/assets.d.ts.map +1 -0
- package/dist/core/utils/assets.js +85 -0
- package/dist/core/utils/assets.js.map +1 -0
- package/dist/core/utils/cache.d.ts +43 -0
- package/dist/core/utils/cache.d.ts.map +1 -0
- package/dist/core/utils/cache.js +60 -0
- package/dist/core/utils/cache.js.map +1 -0
- package/dist/core/utils/index.d.ts +7 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/index.js +10 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/tsconfig.d.ts +34 -0
- package/dist/core/utils/tsconfig.d.ts.map +1 -0
- package/dist/core/utils/tsconfig.js +173 -0
- package/dist/core/utils/tsconfig.js.map +1 -0
- package/dist/features/analyze-file/index.d.ts +15 -0
- package/dist/features/analyze-file/index.d.ts.map +1 -0
- package/dist/features/analyze-file/index.js +164 -0
- package/dist/features/analyze-file/index.js.map +1 -0
- package/dist/features/get-call-graph/index.d.ts +24 -0
- package/dist/features/get-call-graph/index.d.ts.map +1 -0
- package/dist/features/get-call-graph/index.js +246 -0
- package/dist/features/get-call-graph/index.js.map +1 -0
- package/dist/features/get-index-status/index.d.ts +20 -0
- package/dist/features/get-index-status/index.d.ts.map +1 -0
- package/dist/features/get-index-status/index.js +90 -0
- package/dist/features/get-index-status/index.js.map +1 -0
- package/dist/features/index-codebase/index.d.ts +24 -0
- package/dist/features/index-codebase/index.d.ts.map +1 -0
- package/dist/features/index-codebase/index.js +283 -0
- package/dist/features/index-codebase/index.js.map +1 -0
- package/dist/features/index.d.ts +15 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +28 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/info/index.d.ts +19 -0
- package/dist/features/info/index.d.ts.map +1 -0
- package/dist/features/info/index.js +41 -0
- package/dist/features/info/index.js.map +1 -0
- package/dist/features/list-symbols/index.d.ts +22 -0
- package/dist/features/list-symbols/index.d.ts.map +1 -0
- package/dist/features/list-symbols/index.js +74 -0
- package/dist/features/list-symbols/index.js.map +1 -0
- package/dist/features/parse-ast/index.d.ts +12 -0
- package/dist/features/parse-ast/index.d.ts.map +1 -0
- package/dist/features/parse-ast/index.js +71 -0
- package/dist/features/parse-ast/index.js.map +1 -0
- package/dist/features/query-code/index.d.ts +23 -0
- package/dist/features/query-code/index.d.ts.map +1 -0
- package/dist/features/query-code/index.js +96 -0
- package/dist/features/query-code/index.js.map +1 -0
- package/dist/features/search-code/index.d.ts +39 -0
- package/dist/features/search-code/index.d.ts.map +1 -0
- package/dist/features/search-code/index.js +258 -0
- package/dist/features/search-code/index.js.map +1 -0
- package/dist/features/types.d.ts +14 -0
- package/dist/features/types.d.ts.map +1 -0
- package/dist/features/types.js +2 -0
- package/dist/features/types.js.map +1 -0
- package/dist/features/update-index/index.d.ts +24 -0
- package/dist/features/update-index/index.d.ts.map +1 -0
- package/dist/features/update-index/index.js +358 -0
- package/dist/features/update-index/index.js.map +1 -0
- package/dist/features/utils/content.d.ts +30 -0
- package/dist/features/utils/content.d.ts.map +1 -0
- package/dist/features/utils/content.js +49 -0
- package/dist/features/utils/content.js.map +1 -0
- package/dist/features/utils/index.d.ts +6 -0
- package/dist/features/utils/index.d.ts.map +1 -0
- package/dist/features/utils/index.js +8 -0
- package/dist/features/utils/index.js.map +1 -0
- package/dist/features/utils/result.d.ts +37 -0
- package/dist/features/utils/result.d.ts.map +1 -0
- package/dist/features/utils/result.js +53 -0
- package/dist/features/utils/result.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +9 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +188 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +3 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +17 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +24 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/adapter.d.ts +4 -0
- package/dist/tools/adapter.d.ts.map +1 -0
- package/dist/tools/adapter.js +28 -0
- package/dist/tools/adapter.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/colors.d.ts +24 -0
- package/dist/utils/colors.d.ts.map +1 -0
- package/dist/utils/colors.js +30 -0
- package/dist/utils/colors.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +57 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/spinner.d.ts +11 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +36 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +110 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/queries/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SCM Query engine for Tree-sitter
|
|
3
|
+
*
|
|
4
|
+
* Supports both official .scm query files and custom preset patterns
|
|
5
|
+
*/
|
|
6
|
+
import { Query, } from "web-tree-sitter";
|
|
7
|
+
import { toASTNode } from "@core/parser";
|
|
8
|
+
import { deduplicateNodes, extractNodes, findCapture, findCaptureByPrefix, getCaptureKind, } from "./helpers";
|
|
9
|
+
import { hasOfficialTags, loadHighlightsQuery, loadLocalsQuery, loadTagsQuery, } from "./loader";
|
|
10
|
+
import { getAvailablePresets as getAvailablePresetsBase, getQueryPattern, } from "./patterns";
|
|
11
|
+
// Re-export helpers for external use
|
|
12
|
+
export * from "./helpers";
|
|
13
|
+
// Re-export patterns and loader (except getAvailablePresets which we override)
|
|
14
|
+
export * from "./loader";
|
|
15
|
+
export { getQueryPattern, getQuerySupportedLanguages, isPresetAvailable, FALLBACK_PATTERNS, } from "./patterns";
|
|
16
|
+
/**
|
|
17
|
+
* Get all available presets for a language
|
|
18
|
+
* Automatically checks for official tags.scm support
|
|
19
|
+
*/
|
|
20
|
+
export function getAvailablePresets(language) {
|
|
21
|
+
return getAvailablePresetsBase(language, hasOfficialTags(language));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Execute a SCM query on parsed code
|
|
25
|
+
*/
|
|
26
|
+
export function executeQuery(tree, languageInstance, queryString, language, options = {}) {
|
|
27
|
+
const { maxMatches, startIndex, endIndex } = options;
|
|
28
|
+
// Create query
|
|
29
|
+
let query;
|
|
30
|
+
try {
|
|
31
|
+
query = new Query(languageInstance, queryString);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
35
|
+
throw new Error(`Invalid query: ${message}`);
|
|
36
|
+
}
|
|
37
|
+
// Get matches
|
|
38
|
+
const queryMatches = query.matches(tree.rootNode, {
|
|
39
|
+
startIndex,
|
|
40
|
+
endIndex,
|
|
41
|
+
});
|
|
42
|
+
const matches = [];
|
|
43
|
+
let count = 0;
|
|
44
|
+
for (const match of queryMatches) {
|
|
45
|
+
// Check max matches limit
|
|
46
|
+
if (maxMatches !== undefined && count >= maxMatches) {
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
const captures = match.captures.map((capture) => ({
|
|
50
|
+
name: capture.name,
|
|
51
|
+
node: toASTNode(capture.node),
|
|
52
|
+
}));
|
|
53
|
+
matches.push({
|
|
54
|
+
pattern: match.patternIndex,
|
|
55
|
+
captures,
|
|
56
|
+
});
|
|
57
|
+
count++;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
matches,
|
|
61
|
+
count,
|
|
62
|
+
query: queryString,
|
|
63
|
+
language,
|
|
64
|
+
source: "preset",
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Execute an official .scm query file
|
|
69
|
+
*
|
|
70
|
+
* @param tree - Parsed tree
|
|
71
|
+
* @param languageInstance - Tree-sitter language instance
|
|
72
|
+
* @param language - Language name
|
|
73
|
+
* @param queryType - Type of query (tags, highlights, locals, etc.)
|
|
74
|
+
* @param options - Query options
|
|
75
|
+
*/
|
|
76
|
+
export function executeOfficialQuery(tree, languageInstance, language, queryType, options = {}) {
|
|
77
|
+
let queryString;
|
|
78
|
+
switch (queryType) {
|
|
79
|
+
case "tags":
|
|
80
|
+
queryString = loadTagsQuery(language);
|
|
81
|
+
break;
|
|
82
|
+
case "highlights":
|
|
83
|
+
queryString = loadHighlightsQuery(language);
|
|
84
|
+
break;
|
|
85
|
+
case "locals":
|
|
86
|
+
queryString = loadLocalsQuery(language);
|
|
87
|
+
break;
|
|
88
|
+
case "injections":
|
|
89
|
+
case "indents":
|
|
90
|
+
case "folds":
|
|
91
|
+
// These query types are not yet implemented
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
if (!queryString) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
const result = executeQuery(tree, languageInstance, queryString, language, options);
|
|
99
|
+
return {
|
|
100
|
+
...result,
|
|
101
|
+
source: "official",
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Official query might have incompatible patterns
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Execute tags.scm for comprehensive symbol extraction
|
|
111
|
+
*
|
|
112
|
+
* This uses the official Tree-sitter tags.scm file which provides:
|
|
113
|
+
* - Function definitions with documentation
|
|
114
|
+
* - Class definitions
|
|
115
|
+
* - Method definitions
|
|
116
|
+
* - Module/interface definitions
|
|
117
|
+
* - Reference tracking (calls, types)
|
|
118
|
+
*/
|
|
119
|
+
export function executeTagsQuery(tree, languageInstance, language, options = {}) {
|
|
120
|
+
return executeOfficialQuery(tree, languageInstance, language, "tags", options);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Execute a preset query
|
|
124
|
+
* Uses official tags.scm for functions/classes when available,
|
|
125
|
+
* otherwise falls back to preset patterns
|
|
126
|
+
*/
|
|
127
|
+
export function executePresetQuery(tree, languageInstance, language, preset, options = {}) {
|
|
128
|
+
const { maxMatches } = options;
|
|
129
|
+
// Check if we have a language-specific fallback pattern for this preset
|
|
130
|
+
// This is needed for languages like TypeScript where official tags.scm is incomplete
|
|
131
|
+
const fallbackPattern = getQueryPattern(language, preset);
|
|
132
|
+
// For functions and classes, try official tags.scm first, then fallback patterns
|
|
133
|
+
if (preset === "functions" || preset === "classes") {
|
|
134
|
+
// First try official tags.scm
|
|
135
|
+
if (hasOfficialTags(language)) {
|
|
136
|
+
const { definitions } = extractSymbolsFromTags(tree, languageInstance, language);
|
|
137
|
+
let filteredDefs = preset === "functions"
|
|
138
|
+
? definitions.filter((d) => d.kind === "function" || d.kind === "method")
|
|
139
|
+
: definitions.filter((d) => d.kind === "class" ||
|
|
140
|
+
d.kind === "interface" ||
|
|
141
|
+
d.kind === "module");
|
|
142
|
+
// If official tags.scm found results, use them
|
|
143
|
+
if (filteredDefs.length > 0) {
|
|
144
|
+
// Apply maxMatches limit
|
|
145
|
+
if (maxMatches !== undefined && filteredDefs.length > maxMatches) {
|
|
146
|
+
filteredDefs = filteredDefs.slice(0, maxMatches);
|
|
147
|
+
}
|
|
148
|
+
// Convert to QueryResult format
|
|
149
|
+
const matches = filteredDefs.map((def) => ({
|
|
150
|
+
pattern: 0,
|
|
151
|
+
captures: [
|
|
152
|
+
{
|
|
153
|
+
name: preset === "functions"
|
|
154
|
+
? "function.definition"
|
|
155
|
+
: "class.definition",
|
|
156
|
+
node: def.node,
|
|
157
|
+
},
|
|
158
|
+
{ name: `${preset.slice(0, -1)}.name`, node: def.nameNode },
|
|
159
|
+
],
|
|
160
|
+
}));
|
|
161
|
+
return {
|
|
162
|
+
matches,
|
|
163
|
+
count: matches.length,
|
|
164
|
+
query: `[tags.scm ${preset}]`,
|
|
165
|
+
language,
|
|
166
|
+
source: "official",
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
// Official tags.scm found 0 results - try fallback pattern or return empty
|
|
170
|
+
if (fallbackPattern) {
|
|
171
|
+
return executeQuery(tree, languageInstance, fallbackPattern, language, options);
|
|
172
|
+
}
|
|
173
|
+
// No fallback pattern and 0 results from official - return empty result
|
|
174
|
+
return {
|
|
175
|
+
matches: [],
|
|
176
|
+
count: 0,
|
|
177
|
+
query: `[tags.scm ${preset}]`,
|
|
178
|
+
language,
|
|
179
|
+
source: "official",
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
// No official tags.scm - must use fallback pattern
|
|
183
|
+
if (fallbackPattern) {
|
|
184
|
+
return executeQuery(tree, languageInstance, fallbackPattern, language, options);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// For other presets, use fallback patterns
|
|
188
|
+
if (!fallbackPattern) {
|
|
189
|
+
throw new Error(`No '${preset}' query pattern available for ${language}`);
|
|
190
|
+
}
|
|
191
|
+
return executeQuery(tree, languageInstance, fallbackPattern, language, options);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Extract symbols using official tags.scm when available
|
|
195
|
+
*
|
|
196
|
+
* This is the recommended method for symbol extraction as it uses
|
|
197
|
+
* the official Tree-sitter query files for better accuracy.
|
|
198
|
+
*/
|
|
199
|
+
export function extractSymbolsFromTags(tree, languageInstance, language) {
|
|
200
|
+
const result = executeTagsQuery(tree, languageInstance, language);
|
|
201
|
+
if (!result) {
|
|
202
|
+
return { definitions: [], references: [] };
|
|
203
|
+
}
|
|
204
|
+
const definitions = [];
|
|
205
|
+
const references = [];
|
|
206
|
+
for (const match of result.matches) {
|
|
207
|
+
// Extract name capture
|
|
208
|
+
const nameCapture = findCapture(match.captures, "name");
|
|
209
|
+
if (!nameCapture) {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
// Check if it's a definition or reference
|
|
213
|
+
const defCapture = findCaptureByPrefix(match.captures, "definition.");
|
|
214
|
+
const refCapture = findCaptureByPrefix(match.captures, "reference.");
|
|
215
|
+
const docCapture = findCapture(match.captures, "doc");
|
|
216
|
+
if (defCapture) {
|
|
217
|
+
const kind = getCaptureKind(defCapture.name, "definition.");
|
|
218
|
+
definitions.push({
|
|
219
|
+
name: nameCapture.node.text,
|
|
220
|
+
kind,
|
|
221
|
+
node: defCapture.node,
|
|
222
|
+
nameNode: nameCapture.node,
|
|
223
|
+
documentation: docCapture?.node.text,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
else if (refCapture) {
|
|
227
|
+
const kind = getCaptureKind(refCapture.name, "reference.");
|
|
228
|
+
references.push({
|
|
229
|
+
name: nameCapture.node.text,
|
|
230
|
+
kind,
|
|
231
|
+
node: refCapture.node,
|
|
232
|
+
nameNode: nameCapture.node,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return { definitions, references };
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Find all functions in the code
|
|
240
|
+
* Prefers official tags.scm when available
|
|
241
|
+
*/
|
|
242
|
+
export function findFunctions(tree, languageInstance, language, options = {}) {
|
|
243
|
+
// Try official tags.scm first if preferOfficial is true or default
|
|
244
|
+
if (options.preferOfficial !== false && hasOfficialTags(language)) {
|
|
245
|
+
const { definitions } = extractSymbolsFromTags(tree, languageInstance, language);
|
|
246
|
+
return definitions
|
|
247
|
+
.filter((d) => d.kind === "function" || d.kind === "method")
|
|
248
|
+
.map((d) => d.node);
|
|
249
|
+
}
|
|
250
|
+
// Fall back to preset patterns
|
|
251
|
+
try {
|
|
252
|
+
const result = executePresetQuery(tree, languageInstance, language, "functions", options);
|
|
253
|
+
return extractNodes(result.matches, [
|
|
254
|
+
"function.definition",
|
|
255
|
+
"method.definition",
|
|
256
|
+
"function.declaration",
|
|
257
|
+
]);
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
return [];
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Find all classes/structs in the code
|
|
265
|
+
* Prefers official tags.scm when available
|
|
266
|
+
*/
|
|
267
|
+
export function findClasses(tree, languageInstance, language, options = {}) {
|
|
268
|
+
// Try official tags.scm first
|
|
269
|
+
if (options.preferOfficial !== false && hasOfficialTags(language)) {
|
|
270
|
+
const { definitions } = extractSymbolsFromTags(tree, languageInstance, language);
|
|
271
|
+
return definitions
|
|
272
|
+
.filter((d) => d.kind === "class" || d.kind === "interface" || d.kind === "module")
|
|
273
|
+
.map((d) => d.node);
|
|
274
|
+
}
|
|
275
|
+
// Fall back to preset patterns
|
|
276
|
+
try {
|
|
277
|
+
const result = executePresetQuery(tree, languageInstance, language, "classes", options);
|
|
278
|
+
return extractNodes(result.matches, [
|
|
279
|
+
"class.definition",
|
|
280
|
+
"struct.definition",
|
|
281
|
+
"impl.definition",
|
|
282
|
+
]);
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
return [];
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Find all imports in the code
|
|
290
|
+
*/
|
|
291
|
+
export function findImports(tree, languageInstance, language, options = {}) {
|
|
292
|
+
try {
|
|
293
|
+
const result = executePresetQuery(tree, languageInstance, language, "imports", options);
|
|
294
|
+
return deduplicateNodes(result.matches, [
|
|
295
|
+
"import.statement",
|
|
296
|
+
"include.statement",
|
|
297
|
+
]);
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
return [];
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Find all exports in the code
|
|
305
|
+
*/
|
|
306
|
+
export function findExports(tree, languageInstance, language, options = {}) {
|
|
307
|
+
try {
|
|
308
|
+
const result = executePresetQuery(tree, languageInstance, language, "exports", options);
|
|
309
|
+
return deduplicateNodes(result.matches, [
|
|
310
|
+
"export.statement",
|
|
311
|
+
"export.function",
|
|
312
|
+
"export.class",
|
|
313
|
+
"export.type",
|
|
314
|
+
]);
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
return [];
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Find all comments in the code
|
|
322
|
+
*/
|
|
323
|
+
export function findComments(tree, languageInstance, language, options = {}) {
|
|
324
|
+
try {
|
|
325
|
+
const result = executePresetQuery(tree, languageInstance, language, "comments", options);
|
|
326
|
+
return extractNodes(result.matches, ["comment", "comment.block"]);
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
return [];
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Find all string literals in the code
|
|
334
|
+
*/
|
|
335
|
+
export function findStrings(tree, languageInstance, language, options = {}) {
|
|
336
|
+
try {
|
|
337
|
+
const result = executePresetQuery(tree, languageInstance, language, "strings", options);
|
|
338
|
+
return extractNodes(result.matches, [
|
|
339
|
+
"string",
|
|
340
|
+
"string.template",
|
|
341
|
+
"string.raw",
|
|
342
|
+
]);
|
|
343
|
+
}
|
|
344
|
+
catch {
|
|
345
|
+
return [];
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Get function name from a function node
|
|
350
|
+
*/
|
|
351
|
+
export function getFunctionName(funcNode) {
|
|
352
|
+
// Look in fields first
|
|
353
|
+
if (funcNode.fields?.name) {
|
|
354
|
+
const nameNode = funcNode.fields.name;
|
|
355
|
+
if (!Array.isArray(nameNode)) {
|
|
356
|
+
return nameNode.text;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// Look in children for identifier
|
|
360
|
+
if (funcNode.children) {
|
|
361
|
+
for (const child of funcNode.children) {
|
|
362
|
+
if (child.type === "identifier" ||
|
|
363
|
+
child.type === "property_identifier" ||
|
|
364
|
+
child.type === "field_identifier") {
|
|
365
|
+
return child.text;
|
|
366
|
+
}
|
|
367
|
+
// Recursive for function_declarator
|
|
368
|
+
if (child.type === "function_declarator") {
|
|
369
|
+
return getFunctionName(child);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return undefined;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Get class name from a class node
|
|
377
|
+
*/
|
|
378
|
+
export function getClassName(classNode) {
|
|
379
|
+
// Look in fields first
|
|
380
|
+
if (classNode.fields?.name) {
|
|
381
|
+
const nameNode = classNode.fields.name;
|
|
382
|
+
if (!Array.isArray(nameNode)) {
|
|
383
|
+
return nameNode.text;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
// Look in children for identifier
|
|
387
|
+
if (classNode.children) {
|
|
388
|
+
for (const child of classNode.children) {
|
|
389
|
+
if (child.type === "identifier" || child.type === "type_identifier") {
|
|
390
|
+
return child.text;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return undefined;
|
|
395
|
+
}
|
|
396
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/queries/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query type available in Tree-sitter grammars
|
|
3
|
+
*/
|
|
4
|
+
export type SCMQueryType = "tags" | "highlights" | "locals" | "injections" | "indents" | "folds";
|
|
5
|
+
/**
|
|
6
|
+
* Get the path to a .scm query file
|
|
7
|
+
*/
|
|
8
|
+
export declare function getSCMPath(language: string, queryType: SCMQueryType): string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Load a .scm query file for a language with inheritance resolved
|
|
11
|
+
*
|
|
12
|
+
* @param language - Language name (e.g., "javascript", "python")
|
|
13
|
+
* @param queryType - Type of query (e.g., "tags", "highlights")
|
|
14
|
+
* @param visited - Set of visited languages to prevent circular inheritance
|
|
15
|
+
* @returns Query string or undefined if not found
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadSCMQuery(language: string, queryType: SCMQueryType, visited?: Set<string>): string | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Load tags.scm for symbol extraction
|
|
20
|
+
*/
|
|
21
|
+
export declare function loadTagsQuery(language: string): string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Load highlights.scm for syntax highlighting
|
|
24
|
+
*/
|
|
25
|
+
export declare function loadHighlightsQuery(language: string): string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Load locals.scm for local variable scoping
|
|
28
|
+
*/
|
|
29
|
+
export declare function loadLocalsQuery(language: string): string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Check which query types are available for a language
|
|
32
|
+
*/
|
|
33
|
+
export declare function getAvailableQueryTypes(language: string): SCMQueryType[];
|
|
34
|
+
/**
|
|
35
|
+
* Check if a language has official tags.scm
|
|
36
|
+
*/
|
|
37
|
+
export declare function hasOfficialTags(language: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Get all languages with official tags.scm
|
|
40
|
+
*/
|
|
41
|
+
export declare function getLanguagesWithTags(): string[];
|
|
42
|
+
/**
|
|
43
|
+
* Clear the SCM cache
|
|
44
|
+
*/
|
|
45
|
+
export declare function clearSCMCache(): void;
|
|
46
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/queries/loader.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,OAAO,CAAC;AA0DZ;;GAEG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,YAAY,GACtB,MAAM,GAAG,SAAS,CASpB;AAwDD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,YAAY,EACvB,OAAO,cAAoB,GAC1B,MAAM,GAAG,SAAS,CA6CpB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAWvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SCM Query file loader
|
|
3
|
+
*
|
|
4
|
+
* Loads official Tree-sitter .scm query files from local assets directory
|
|
5
|
+
* Supports inheritance via `; inherits: lang1,lang2` directives
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync } from "fs";
|
|
8
|
+
import { join } from "path";
|
|
9
|
+
import { assetExists, getAssetsDir, registerCache } from "@core/utils";
|
|
10
|
+
/**
|
|
11
|
+
* Cache for loaded SCM queries (with inheritance resolved)
|
|
12
|
+
*/
|
|
13
|
+
const scmCache = new Map();
|
|
14
|
+
/**
|
|
15
|
+
* Supported languages with SCM query files
|
|
16
|
+
*/
|
|
17
|
+
const SUPPORTED_LANGUAGES = new Set([
|
|
18
|
+
// Web & Frontend
|
|
19
|
+
"javascript",
|
|
20
|
+
"typescript",
|
|
21
|
+
"tsx",
|
|
22
|
+
"svelte",
|
|
23
|
+
"html",
|
|
24
|
+
// Systems Programming
|
|
25
|
+
"c",
|
|
26
|
+
"cpp",
|
|
27
|
+
"rust",
|
|
28
|
+
"go",
|
|
29
|
+
"swift",
|
|
30
|
+
// JVM Languages
|
|
31
|
+
"java",
|
|
32
|
+
"scala",
|
|
33
|
+
"kotlin",
|
|
34
|
+
// Scripting Languages
|
|
35
|
+
"python",
|
|
36
|
+
"ruby",
|
|
37
|
+
"php",
|
|
38
|
+
// .NET
|
|
39
|
+
"csharp",
|
|
40
|
+
"c_sharp",
|
|
41
|
+
// Functional
|
|
42
|
+
"ocaml",
|
|
43
|
+
// Base/dependency languages (for inheritance)
|
|
44
|
+
"_javascript",
|
|
45
|
+
"_jsx",
|
|
46
|
+
"_typescript",
|
|
47
|
+
"ecma",
|
|
48
|
+
"jsx",
|
|
49
|
+
]);
|
|
50
|
+
/**
|
|
51
|
+
* Normalize language name for directory lookup
|
|
52
|
+
*/
|
|
53
|
+
function normalizeLanguageName(language) {
|
|
54
|
+
// Map aliases to directory names
|
|
55
|
+
if (language === "csharp") {
|
|
56
|
+
return "c_sharp";
|
|
57
|
+
}
|
|
58
|
+
if (language === "tsx") {
|
|
59
|
+
return "typescript"; // TSX uses typescript queries
|
|
60
|
+
}
|
|
61
|
+
return language;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get the path to a .scm query file
|
|
65
|
+
*/
|
|
66
|
+
export function getSCMPath(language, queryType) {
|
|
67
|
+
const langDir = normalizeLanguageName(language);
|
|
68
|
+
const relativePath = join("queries", langDir, `${queryType}.scm`);
|
|
69
|
+
if (assetExists(relativePath)) {
|
|
70
|
+
return join(getAssetsDir(), relativePath);
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Parse inherit directives from SCM content
|
|
76
|
+
* Supports: `; inherits: lang1,lang2` and `; inherits lang1`
|
|
77
|
+
*/
|
|
78
|
+
function parseInherits(content) {
|
|
79
|
+
const inherits = [];
|
|
80
|
+
// Normalize line endings (handle CRLF and CR)
|
|
81
|
+
const normalizedContent = content.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
82
|
+
const lines = normalizedContent.split("\n");
|
|
83
|
+
for (const line of lines) {
|
|
84
|
+
const match = /^;\s*inherits:?\s+([^\s].*)$/.exec(line);
|
|
85
|
+
if (match?.[1]) {
|
|
86
|
+
const langs = match[1].split(",").map((l) => l.trim());
|
|
87
|
+
inherits.push(...langs);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return inherits;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Remove inherit directives from SCM content
|
|
94
|
+
*/
|
|
95
|
+
function removeInheritDirectives(content) {
|
|
96
|
+
// Normalize line endings (handle CRLF and CR)
|
|
97
|
+
const normalizedContent = content.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
98
|
+
return normalizedContent
|
|
99
|
+
.split("\n")
|
|
100
|
+
.filter((line) => !/^;\s*inherits:?\s+/.exec(line))
|
|
101
|
+
.join("\n");
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Load a raw .scm file without resolving inheritance
|
|
105
|
+
*/
|
|
106
|
+
function loadRawSCM(language, queryType) {
|
|
107
|
+
const assetsDir = getAssetsDir();
|
|
108
|
+
const scmPath = join(assetsDir, "queries", language, `${queryType}.scm`);
|
|
109
|
+
if (!existsSync(scmPath)) {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
return readFileSync(scmPath, "utf-8");
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Load a .scm query file for a language with inheritance resolved
|
|
121
|
+
*
|
|
122
|
+
* @param language - Language name (e.g., "javascript", "python")
|
|
123
|
+
* @param queryType - Type of query (e.g., "tags", "highlights")
|
|
124
|
+
* @param visited - Set of visited languages to prevent circular inheritance
|
|
125
|
+
* @returns Query string or undefined if not found
|
|
126
|
+
*/
|
|
127
|
+
export function loadSCMQuery(language, queryType, visited = new Set()) {
|
|
128
|
+
const cacheKey = `${language}:${queryType}`;
|
|
129
|
+
// Check cache first
|
|
130
|
+
if (scmCache.has(cacheKey)) {
|
|
131
|
+
return scmCache.get(cacheKey);
|
|
132
|
+
}
|
|
133
|
+
// Prevent circular inheritance
|
|
134
|
+
if (visited.has(language)) {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
visited.add(language);
|
|
138
|
+
// Normalize language name for file lookup
|
|
139
|
+
const langDir = normalizeLanguageName(language);
|
|
140
|
+
const rawContent = loadRawSCM(langDir, queryType);
|
|
141
|
+
if (!rawContent) {
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
// Parse inherits directives
|
|
145
|
+
const inherits = parseInherits(rawContent);
|
|
146
|
+
const ownContent = removeInheritDirectives(rawContent).trim();
|
|
147
|
+
// Load inherited content
|
|
148
|
+
const inheritedParts = [];
|
|
149
|
+
for (const inheritLang of inherits) {
|
|
150
|
+
const inheritedContent = loadSCMQuery(inheritLang, queryType, visited);
|
|
151
|
+
if (inheritedContent) {
|
|
152
|
+
inheritedParts.push(inheritedContent);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Combine inherited content with own content
|
|
156
|
+
const finalContent = [...inheritedParts, ownContent]
|
|
157
|
+
.filter(Boolean)
|
|
158
|
+
.join("\n\n");
|
|
159
|
+
if (finalContent) {
|
|
160
|
+
scmCache.set(cacheKey, finalContent);
|
|
161
|
+
}
|
|
162
|
+
return finalContent || undefined;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Load tags.scm for symbol extraction
|
|
166
|
+
*/
|
|
167
|
+
export function loadTagsQuery(language) {
|
|
168
|
+
return loadSCMQuery(language, "tags");
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Load highlights.scm for syntax highlighting
|
|
172
|
+
*/
|
|
173
|
+
export function loadHighlightsQuery(language) {
|
|
174
|
+
return loadSCMQuery(language, "highlights");
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Load locals.scm for local variable scoping
|
|
178
|
+
*/
|
|
179
|
+
export function loadLocalsQuery(language) {
|
|
180
|
+
return loadSCMQuery(language, "locals");
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Check which query types are available for a language
|
|
184
|
+
*/
|
|
185
|
+
export function getAvailableQueryTypes(language) {
|
|
186
|
+
const types = [
|
|
187
|
+
"tags",
|
|
188
|
+
"highlights",
|
|
189
|
+
"locals",
|
|
190
|
+
"injections",
|
|
191
|
+
"indents",
|
|
192
|
+
"folds",
|
|
193
|
+
];
|
|
194
|
+
return types.filter((type) => getSCMPath(language, type) !== undefined);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Check if a language has official tags.scm
|
|
198
|
+
*/
|
|
199
|
+
export function hasOfficialTags(language) {
|
|
200
|
+
return getSCMPath(language, "tags") !== undefined;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get all languages with official tags.scm
|
|
204
|
+
*/
|
|
205
|
+
export function getLanguagesWithTags() {
|
|
206
|
+
return Array.from(SUPPORTED_LANGUAGES).filter(hasOfficialTags);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Clear the SCM cache
|
|
210
|
+
*/
|
|
211
|
+
export function clearSCMCache() {
|
|
212
|
+
scmCache.clear();
|
|
213
|
+
}
|
|
214
|
+
// Register cache for centralized clearing
|
|
215
|
+
registerCache("queries:scm", clearSCMCache);
|
|
216
|
+
//# sourceMappingURL=loader.js.map
|