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":"loader.js","sourceRoot":"","sources":["../../../src/core/queries/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback SCM query patterns for languages without official tags.scm
|
|
3
|
+
*/
|
|
4
|
+
export type QueryPreset = "functions" | "classes" | "imports" | "exports" | "comments" | "strings" | "variables" | "types";
|
|
5
|
+
export declare const FALLBACK_PATTERNS: Record<string, Partial<Record<QueryPreset, string>>>;
|
|
6
|
+
export declare function getQueryPattern(language: string, preset: QueryPreset): string | undefined;
|
|
7
|
+
export declare function isPresetAvailable(language: string, preset: QueryPreset): boolean;
|
|
8
|
+
export declare function getAvailablePresets(language: string, hasOfficialTagsFile?: boolean): QueryPreset[];
|
|
9
|
+
export declare function getQuerySupportedLanguages(): string[];
|
|
10
|
+
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/core/queries/patterns.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,SAAS,GACT,SAAS,GACT,SAAS,GACT,UAAU,GACV,SAAS,GACT,WAAW,GACX,OAAO,CAAC;AAiBZ,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,MAAM,EACN,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAgErC,CAAC;AAEF,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAClB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAET;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,mBAAmB,UAAQ,GAC1B,WAAW,EAAE,CAqBf;AAED,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback SCM query patterns for languages without official tags.scm
|
|
3
|
+
*/
|
|
4
|
+
const GENERIC_PATTERNS = {
|
|
5
|
+
comments: `[(comment) @comment]`,
|
|
6
|
+
strings: `[(string) @string (template_string) @string]`,
|
|
7
|
+
imports: `(import_statement) @import.statement`,
|
|
8
|
+
exports: `(export_statement) @export.statement`,
|
|
9
|
+
variables: `[
|
|
10
|
+
(variable_declaration (variable_declarator name: (identifier) @variable.name) @variable.declaration)
|
|
11
|
+
(lexical_declaration (variable_declarator name: (identifier) @variable.name) @variable.declaration)
|
|
12
|
+
]`,
|
|
13
|
+
types: `[
|
|
14
|
+
(type_alias_declaration name: (type_identifier) @type.alias) @type.definition
|
|
15
|
+
(enum_declaration name: (identifier) @enum.name) @enum.definition
|
|
16
|
+
]`,
|
|
17
|
+
};
|
|
18
|
+
export const FALLBACK_PATTERNS = {
|
|
19
|
+
typescript: {
|
|
20
|
+
functions: `[
|
|
21
|
+
(function_declaration name: (identifier) @function.name) @function.definition
|
|
22
|
+
(method_definition name: (property_identifier) @function.name) @function.definition
|
|
23
|
+
(lexical_declaration (variable_declarator name: (identifier) @function.name value: [(arrow_function) (function_expression)]) @function.definition)
|
|
24
|
+
]`,
|
|
25
|
+
},
|
|
26
|
+
json: { strings: `[(string) @string]` },
|
|
27
|
+
yaml: {
|
|
28
|
+
strings: `[(string_scalar) @string (double_quote_scalar) @string (single_quote_scalar) @string]`,
|
|
29
|
+
comments: `[(comment) @comment]`,
|
|
30
|
+
},
|
|
31
|
+
toml: { strings: `[(string) @string]`, comments: `[(comment) @comment]` },
|
|
32
|
+
bash: {
|
|
33
|
+
functions: `(function_definition name: (word) @function.name) @function.definition`,
|
|
34
|
+
comments: `[(comment) @comment]`,
|
|
35
|
+
strings: `[(string) @string (raw_string) @string]`,
|
|
36
|
+
variables: `(variable_assignment name: (variable_name) @variable.name) @variable.declaration`,
|
|
37
|
+
},
|
|
38
|
+
html: {
|
|
39
|
+
strings: `[(attribute_value) @string (quoted_attribute_value) @string]`,
|
|
40
|
+
comments: `[(comment) @comment]`,
|
|
41
|
+
},
|
|
42
|
+
css: {
|
|
43
|
+
comments: `[(comment) @comment]`,
|
|
44
|
+
strings: `[(string_value) @string]`,
|
|
45
|
+
},
|
|
46
|
+
scala: {
|
|
47
|
+
functions: `(function_definition (identifier) @function.name) @function.definition`,
|
|
48
|
+
classes: `[
|
|
49
|
+
(class_definition (identifier) @class.name) @class.definition
|
|
50
|
+
(object_definition (identifier) @class.name) @class.definition
|
|
51
|
+
(trait_definition (identifier) @class.name) @class.definition
|
|
52
|
+
]`,
|
|
53
|
+
comments: `[(comment) @comment]`,
|
|
54
|
+
strings: `[(string) @string]`,
|
|
55
|
+
},
|
|
56
|
+
swift: {
|
|
57
|
+
functions: `[
|
|
58
|
+
(function_declaration (simple_identifier) @function.name) @function.definition
|
|
59
|
+
(init_declaration) @function.definition
|
|
60
|
+
]`,
|
|
61
|
+
classes: `[
|
|
62
|
+
(class_declaration (type_identifier) @class.name) @class.definition
|
|
63
|
+
(protocol_declaration (type_identifier) @class.name) @class.definition
|
|
64
|
+
]`,
|
|
65
|
+
comments: `[(comment) @comment (multiline_comment) @comment]`,
|
|
66
|
+
strings: `[(line_string_literal) @string]`,
|
|
67
|
+
},
|
|
68
|
+
ocaml: {
|
|
69
|
+
functions: `(value_definition (let_binding (value_name) @function.name)) @function.definition`,
|
|
70
|
+
classes: `[
|
|
71
|
+
(type_definition (type_binding (type_constructor) @class.name)) @class.definition
|
|
72
|
+
(module_definition (module_binding (module_name) @class.name)) @class.definition
|
|
73
|
+
]`,
|
|
74
|
+
comments: `[(comment) @comment]`,
|
|
75
|
+
strings: `[(string) @string]`,
|
|
76
|
+
},
|
|
77
|
+
svelte: {
|
|
78
|
+
comments: `[(comment) @comment]`,
|
|
79
|
+
strings: `[(attribute_value) @string (quoted_attribute_value) @string]`,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
export function getQueryPattern(language, preset) {
|
|
83
|
+
return FALLBACK_PATTERNS[language]?.[preset] ?? GENERIC_PATTERNS[preset];
|
|
84
|
+
}
|
|
85
|
+
export function isPresetAvailable(language, preset) {
|
|
86
|
+
return getQueryPattern(language, preset) !== undefined;
|
|
87
|
+
}
|
|
88
|
+
export function getAvailablePresets(language, hasOfficialTagsFile = false) {
|
|
89
|
+
const presets = hasOfficialTagsFile
|
|
90
|
+
? ["functions", "classes"]
|
|
91
|
+
: [];
|
|
92
|
+
const allPresets = [
|
|
93
|
+
"functions",
|
|
94
|
+
"classes",
|
|
95
|
+
"imports",
|
|
96
|
+
"exports",
|
|
97
|
+
"comments",
|
|
98
|
+
"strings",
|
|
99
|
+
"variables",
|
|
100
|
+
"types",
|
|
101
|
+
];
|
|
102
|
+
for (const preset of allPresets) {
|
|
103
|
+
if (!presets.includes(preset) && isPresetAvailable(language, preset)) {
|
|
104
|
+
presets.push(preset);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return presets;
|
|
108
|
+
}
|
|
109
|
+
export function getQuerySupportedLanguages() {
|
|
110
|
+
return Object.keys(FALLBACK_PATTERNS);
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/core/queries/patterns.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,MAAM,gBAAgB,GAAyC;IAC7D,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE,8CAA8C;IACvD,OAAO,EAAE,sCAAsC;IAC/C,OAAO,EAAE,sCAAsC;IAC/C,SAAS,EAAE;;;IAGT;IACF,KAAK,EAAE;;;IAGL;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAG1B;IACF,UAAU,EAAE;QACV,SAAS,EAAE;;;;MAIT;KACH;IACD,IAAI,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACvC,IAAI,EAAE;QACJ,OAAO,EAAE,uFAAuF;QAChG,QAAQ,EAAE,sBAAsB;KACjC;IACD,IAAI,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;IACzE,IAAI,EAAE;QACJ,SAAS,EAAE,wEAAwE;QACnF,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,yCAAyC;QAClD,SAAS,EAAE,kFAAkF;KAC9F;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,8DAA8D;QACvE,QAAQ,EAAE,sBAAsB;KACjC;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,0BAA0B;KACpC;IACD,KAAK,EAAE;QACL,SAAS,EAAE,wEAAwE;QACnF,OAAO,EAAE;;;;MAIP;QACF,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,oBAAoB;KAC9B;IACD,KAAK,EAAE;QACL,SAAS,EAAE;;;MAGT;QACF,OAAO,EAAE;;;MAGP;QACF,QAAQ,EAAE,mDAAmD;QAC7D,OAAO,EAAE,iCAAiC;KAC3C;IACD,KAAK,EAAE;QACL,SAAS,EAAE,mFAAmF;QAC9F,OAAO,EAAE;;;MAGP;QACF,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,oBAAoB;KAC9B;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,8DAA8D;KACxE;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,MAAmB;IAEnB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,MAAmB;IAEnB,OAAO,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,SAAS,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,mBAAmB,GAAG,KAAK;IAE3B,MAAM,OAAO,GAAkB,mBAAmB;QAChD,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC;QAC1B,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,UAAU,GAAkB;QAChC,WAAW;QACX,SAAS;QACT,SAAS;QACT,SAAS;QACT,UAAU;QACV,SAAS;QACT,WAAW;QACX,OAAO;KACR,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbol extraction from parsed code
|
|
3
|
+
*/
|
|
4
|
+
import type { Language, Tree } from "web-tree-sitter";
|
|
5
|
+
import type { Export, Import, Symbol, SymbolType } from "@core/ast/types";
|
|
6
|
+
/**
|
|
7
|
+
* Symbol filter options
|
|
8
|
+
*/
|
|
9
|
+
export interface SymbolFilter {
|
|
10
|
+
/** Include only specific types */
|
|
11
|
+
types?: SymbolType[];
|
|
12
|
+
/** Exclude specific types */
|
|
13
|
+
excludeTypes?: SymbolType[];
|
|
14
|
+
/** Include only exported symbols */
|
|
15
|
+
exportedOnly?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Symbol extraction result
|
|
19
|
+
*/
|
|
20
|
+
export interface SymbolsResult {
|
|
21
|
+
/** Extracted symbols */
|
|
22
|
+
symbols: Symbol[];
|
|
23
|
+
/** Summary counts */
|
|
24
|
+
summary: {
|
|
25
|
+
functions: number;
|
|
26
|
+
classes: number;
|
|
27
|
+
variables: number;
|
|
28
|
+
constants: number;
|
|
29
|
+
interfaces: number;
|
|
30
|
+
types: number;
|
|
31
|
+
enums: number;
|
|
32
|
+
methods: number;
|
|
33
|
+
properties: number;
|
|
34
|
+
total: number;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extract symbols from parsed code
|
|
39
|
+
*/
|
|
40
|
+
export declare function extractSymbols(tree: Tree, languageInstance: Language, language: string, filter?: SymbolFilter): SymbolsResult;
|
|
41
|
+
/**
|
|
42
|
+
* Extract imports from parsed code
|
|
43
|
+
*/
|
|
44
|
+
export declare function extractImports(tree: Tree, languageInstance: Language, language: string): Import[];
|
|
45
|
+
/**
|
|
46
|
+
* Extract exports from parsed code
|
|
47
|
+
*/
|
|
48
|
+
export declare function extractExports(tree: Tree, languageInstance: Language, language: string): Export[];
|
|
49
|
+
/**
|
|
50
|
+
* Get symbols by type
|
|
51
|
+
*/
|
|
52
|
+
export declare function getSymbolsByType(symbols: Symbol[], type: SymbolType): Symbol[];
|
|
53
|
+
/**
|
|
54
|
+
* Find symbol by name
|
|
55
|
+
*/
|
|
56
|
+
export declare function findSymbolByName(symbols: Symbol[], name: string): Symbol | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Get symbol at position
|
|
59
|
+
*/
|
|
60
|
+
export declare function getSymbolAtPosition(symbols: Symbol[], line: number, column: number): Symbol | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Extract all code information
|
|
63
|
+
*/
|
|
64
|
+
export interface CodeInfo {
|
|
65
|
+
symbols: SymbolsResult;
|
|
66
|
+
imports: Import[];
|
|
67
|
+
exports: Export[];
|
|
68
|
+
}
|
|
69
|
+
export declare function extractCodeInfo(tree: Tree, languageInstance: Language, language: string, filter?: SymbolFilter): CodeInfo;
|
|
70
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/symbols/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EACV,MAAM,EACN,MAAM,EAEN,MAAM,EACN,UAAU,EACX,MAAM,iBAAiB,CAAC;AAUzB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qBAAqB;IACrB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,YAAiB,GACxB,aAAa,CAkNf;AAkFD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CA6DV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CAwDV;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,UAAU,GACf,MAAM,EAAE,CAEV;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAEpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS,CASpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,YAAiB,GACxB,QAAQ,CAMV"}
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import { createOffsetTracker, executePresetQuery, findCapture, findCaptureByNames, getClassName, getFunctionName, } from "@core/queries";
|
|
2
|
+
/**
|
|
3
|
+
* Extract symbols from parsed code
|
|
4
|
+
*/
|
|
5
|
+
export function extractSymbols(tree, languageInstance, language, filter = {}) {
|
|
6
|
+
const symbols = [];
|
|
7
|
+
const { types, excludeTypes } = filter;
|
|
8
|
+
const shouldInclude = (type) => {
|
|
9
|
+
if (types && !types.includes(type)) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (excludeTypes?.includes(type)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return true;
|
|
16
|
+
};
|
|
17
|
+
// Extract functions and classes using official tags.scm when available
|
|
18
|
+
if (shouldInclude("function") ||
|
|
19
|
+
shouldInclude("method") ||
|
|
20
|
+
shouldInclude("class") ||
|
|
21
|
+
shouldInclude("interface")) {
|
|
22
|
+
const tagsResult = executePresetQuery(tree, languageInstance, language, "functions");
|
|
23
|
+
// Process function definitions
|
|
24
|
+
if (shouldInclude("function") || shouldInclude("method")) {
|
|
25
|
+
for (const match of tagsResult.matches) {
|
|
26
|
+
const defCapture = findCapture(match.captures, "function.definition");
|
|
27
|
+
const nameCapture = findCapture(match.captures, "function.name");
|
|
28
|
+
if (defCapture) {
|
|
29
|
+
const name = nameCapture?.node.text ?? getFunctionName(defCapture.node);
|
|
30
|
+
if (name) {
|
|
31
|
+
const isMethod = defCapture.node.type.includes("method") ||
|
|
32
|
+
defCapture.node.type === "method_definition";
|
|
33
|
+
const type = isMethod ? "method" : "function";
|
|
34
|
+
if (shouldInclude(type)) {
|
|
35
|
+
symbols.push({
|
|
36
|
+
name,
|
|
37
|
+
type,
|
|
38
|
+
start: defCapture.node.start,
|
|
39
|
+
end: defCapture.node.end,
|
|
40
|
+
signature: extractFunctionSignature(defCapture.node),
|
|
41
|
+
modifiers: extractModifiers(defCapture.node),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Extract classes
|
|
50
|
+
if (shouldInclude("class") || shouldInclude("interface")) {
|
|
51
|
+
const classResult = executePresetQuery(tree, languageInstance, language, "classes");
|
|
52
|
+
for (const match of classResult.matches) {
|
|
53
|
+
const defCapture = findCapture(match.captures, "class.definition");
|
|
54
|
+
const nameCapture = findCapture(match.captures, "class.name");
|
|
55
|
+
if (defCapture) {
|
|
56
|
+
const name = nameCapture?.node.text ?? getClassName(defCapture.node);
|
|
57
|
+
if (name) {
|
|
58
|
+
// Determine type based on AST node type
|
|
59
|
+
const nodeType = defCapture.node.type;
|
|
60
|
+
let symbolType = "class";
|
|
61
|
+
if (nodeType.includes("interface") ||
|
|
62
|
+
nodeType === "interface_declaration") {
|
|
63
|
+
symbolType = "interface";
|
|
64
|
+
}
|
|
65
|
+
else if (nodeType.includes("struct")) {
|
|
66
|
+
symbolType = "interface";
|
|
67
|
+
}
|
|
68
|
+
if (shouldInclude(symbolType)) {
|
|
69
|
+
symbols.push({
|
|
70
|
+
name,
|
|
71
|
+
type: symbolType,
|
|
72
|
+
start: defCapture.node.start,
|
|
73
|
+
end: defCapture.node.end,
|
|
74
|
+
modifiers: extractModifiers(defCapture.node),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Extract variables and constants
|
|
82
|
+
if (shouldInclude("variable") || shouldInclude("constant")) {
|
|
83
|
+
try {
|
|
84
|
+
const varResult = executePresetQuery(tree, languageInstance, language, "variables");
|
|
85
|
+
for (const match of varResult.matches) {
|
|
86
|
+
const nameCapture = findCaptureByNames(match.captures, [
|
|
87
|
+
"variable.name",
|
|
88
|
+
"constant.name",
|
|
89
|
+
"field.name",
|
|
90
|
+
]);
|
|
91
|
+
const declCapture = findCaptureByNames(match.captures, [
|
|
92
|
+
"variable.declaration",
|
|
93
|
+
"constant.declaration",
|
|
94
|
+
"field.declaration",
|
|
95
|
+
]);
|
|
96
|
+
if (nameCapture && declCapture) {
|
|
97
|
+
const isConstant = declCapture.node.text.startsWith("const ") ||
|
|
98
|
+
findCapture(match.captures, "constant.name") !== undefined;
|
|
99
|
+
const type = isConstant ? "constant" : "variable";
|
|
100
|
+
if (shouldInclude(type)) {
|
|
101
|
+
symbols.push({
|
|
102
|
+
name: nameCapture.node.text,
|
|
103
|
+
type,
|
|
104
|
+
start: declCapture.node.start,
|
|
105
|
+
end: declCapture.node.end,
|
|
106
|
+
modifiers: extractModifiers(declCapture.node),
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Query not available for this language
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Extract types (interfaces, type aliases, enums)
|
|
117
|
+
if (shouldInclude("interface") ||
|
|
118
|
+
shouldInclude("type") ||
|
|
119
|
+
shouldInclude("enum")) {
|
|
120
|
+
try {
|
|
121
|
+
const typeResult = executePresetQuery(tree, languageInstance, language, "types");
|
|
122
|
+
for (const match of typeResult.matches) {
|
|
123
|
+
const nameCapture = findCaptureByNames(match.captures, [
|
|
124
|
+
"type.name",
|
|
125
|
+
"interface.name",
|
|
126
|
+
"enum.name",
|
|
127
|
+
"type.alias",
|
|
128
|
+
]);
|
|
129
|
+
const defCapture = findCaptureByNames(match.captures, [
|
|
130
|
+
"type.definition",
|
|
131
|
+
"interface.definition",
|
|
132
|
+
"enum.definition",
|
|
133
|
+
]);
|
|
134
|
+
if (nameCapture && defCapture) {
|
|
135
|
+
let type = "type";
|
|
136
|
+
if (nameCapture.name === "interface.name") {
|
|
137
|
+
type = "interface";
|
|
138
|
+
}
|
|
139
|
+
else if (nameCapture.name === "enum.name") {
|
|
140
|
+
type = "enum";
|
|
141
|
+
}
|
|
142
|
+
if (shouldInclude(type)) {
|
|
143
|
+
symbols.push({
|
|
144
|
+
name: nameCapture.node.text,
|
|
145
|
+
type,
|
|
146
|
+
start: defCapture.node.start,
|
|
147
|
+
end: defCapture.node.end,
|
|
148
|
+
modifiers: extractModifiers(defCapture.node),
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
// Query not available for this language
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Calculate summary
|
|
159
|
+
const summary = {
|
|
160
|
+
functions: symbols.filter((s) => s.type === "function").length,
|
|
161
|
+
classes: symbols.filter((s) => s.type === "class").length,
|
|
162
|
+
variables: symbols.filter((s) => s.type === "variable").length,
|
|
163
|
+
constants: symbols.filter((s) => s.type === "constant").length,
|
|
164
|
+
interfaces: symbols.filter((s) => s.type === "interface").length,
|
|
165
|
+
types: symbols.filter((s) => s.type === "type").length,
|
|
166
|
+
enums: symbols.filter((s) => s.type === "enum").length,
|
|
167
|
+
methods: symbols.filter((s) => s.type === "method").length,
|
|
168
|
+
properties: symbols.filter((s) => s.type === "property").length,
|
|
169
|
+
total: symbols.length,
|
|
170
|
+
};
|
|
171
|
+
return { symbols, summary };
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Extract function signature from AST node
|
|
175
|
+
*/
|
|
176
|
+
function extractFunctionSignature(node) {
|
|
177
|
+
// Try to extract just the signature (function name + params)
|
|
178
|
+
const text = node.text;
|
|
179
|
+
// For JavaScript/TypeScript-like syntax
|
|
180
|
+
const jsMatch = /^(async\s+)?function\s*\*?\s*(\w*)\s*(<[^>]*>)?\s*\([^)]*\)(\s*:\s*[^{]+)?/.exec(text);
|
|
181
|
+
if (jsMatch) {
|
|
182
|
+
return jsMatch[0].trim();
|
|
183
|
+
}
|
|
184
|
+
// For arrow functions
|
|
185
|
+
const arrowMatch = /^\([^)]*\)\s*(:\s*[^=]+)?\s*=>/.exec(text);
|
|
186
|
+
if (arrowMatch) {
|
|
187
|
+
return arrowMatch[0].trim();
|
|
188
|
+
}
|
|
189
|
+
// For Python
|
|
190
|
+
const pyMatch = /^def\s+(\w+)\s*\([^)]*\)(\s*->\s*[^:]+)?:/.exec(text);
|
|
191
|
+
if (pyMatch) {
|
|
192
|
+
return pyMatch[0].replace(/:$/, "").trim();
|
|
193
|
+
}
|
|
194
|
+
// For Go
|
|
195
|
+
const goMatch = /^func\s*(\([^)]*\)\s*)?(\w+)\s*\([^)]*\)/.exec(text);
|
|
196
|
+
if (goMatch) {
|
|
197
|
+
return goMatch[0].trim();
|
|
198
|
+
}
|
|
199
|
+
// Fallback: return first line up to opening brace
|
|
200
|
+
const firstLine = text.split(/[{:]/)[0];
|
|
201
|
+
return firstLine ? firstLine.trim() : undefined;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Extract modifiers from AST node
|
|
205
|
+
*/
|
|
206
|
+
function extractModifiers(node) {
|
|
207
|
+
const modifiers = [];
|
|
208
|
+
const text = node.text;
|
|
209
|
+
// Common modifiers
|
|
210
|
+
const modifierPatterns = [
|
|
211
|
+
"export",
|
|
212
|
+
"default",
|
|
213
|
+
"async",
|
|
214
|
+
"static",
|
|
215
|
+
"public",
|
|
216
|
+
"private",
|
|
217
|
+
"protected",
|
|
218
|
+
"readonly",
|
|
219
|
+
"abstract",
|
|
220
|
+
"const",
|
|
221
|
+
"let",
|
|
222
|
+
"var",
|
|
223
|
+
"final",
|
|
224
|
+
"override",
|
|
225
|
+
"pub",
|
|
226
|
+
"mut",
|
|
227
|
+
];
|
|
228
|
+
for (const mod of modifierPatterns) {
|
|
229
|
+
const pattern = new RegExp(`\\b${mod}\\b`);
|
|
230
|
+
if (pattern.test(text.slice(0, 100))) {
|
|
231
|
+
// Only check start of node
|
|
232
|
+
modifiers.push(mod);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return modifiers.length > 0 ? modifiers : undefined;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Extract imports from parsed code
|
|
239
|
+
*/
|
|
240
|
+
export function extractImports(tree, languageInstance, language) {
|
|
241
|
+
const imports = [];
|
|
242
|
+
try {
|
|
243
|
+
const result = executePresetQuery(tree, languageInstance, language, "imports");
|
|
244
|
+
const tracker = createOffsetTracker();
|
|
245
|
+
for (const match of result.matches) {
|
|
246
|
+
const stmtCapture = findCaptureByNames(match.captures, [
|
|
247
|
+
"import.statement",
|
|
248
|
+
"include.statement",
|
|
249
|
+
]);
|
|
250
|
+
if (!stmtCapture || tracker.has(stmtCapture.node)) {
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
tracker.add(stmtCapture.node);
|
|
254
|
+
const sourceCapture = findCaptureByNames(match.captures, [
|
|
255
|
+
"import.source",
|
|
256
|
+
"import.path",
|
|
257
|
+
"include.path",
|
|
258
|
+
]);
|
|
259
|
+
const defaultCapture = findCapture(match.captures, "import.default");
|
|
260
|
+
const nameCaptures = match.captures.filter((c) => c.name === "import.name");
|
|
261
|
+
const source = sourceCapture
|
|
262
|
+
? sourceCapture.node.text.replace(/['"]/g, "")
|
|
263
|
+
: "";
|
|
264
|
+
const names = [];
|
|
265
|
+
if (defaultCapture) {
|
|
266
|
+
names.push({ name: defaultCapture.node.text });
|
|
267
|
+
}
|
|
268
|
+
for (const nameCapture of nameCaptures) {
|
|
269
|
+
names.push({ name: nameCapture.node.text });
|
|
270
|
+
}
|
|
271
|
+
imports.push({
|
|
272
|
+
source,
|
|
273
|
+
names,
|
|
274
|
+
isDefault: !!defaultCapture && nameCaptures.length === 0,
|
|
275
|
+
start: stmtCapture.node.start,
|
|
276
|
+
end: stmtCapture.node.end,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// Query not available
|
|
282
|
+
}
|
|
283
|
+
return imports;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Extract exports from parsed code
|
|
287
|
+
*/
|
|
288
|
+
export function extractExports(tree, languageInstance, language) {
|
|
289
|
+
const exportList = [];
|
|
290
|
+
try {
|
|
291
|
+
const result = executePresetQuery(tree, languageInstance, language, "exports");
|
|
292
|
+
const tracker = createOffsetTracker();
|
|
293
|
+
for (const match of result.matches) {
|
|
294
|
+
const stmtCapture = findCaptureByNames(match.captures, [
|
|
295
|
+
"export.statement",
|
|
296
|
+
"export.function",
|
|
297
|
+
"export.class",
|
|
298
|
+
"export.type",
|
|
299
|
+
]);
|
|
300
|
+
if (!stmtCapture || tracker.has(stmtCapture.node)) {
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
tracker.add(stmtCapture.node);
|
|
304
|
+
const nameCapture = findCapture(match.captures, "export.name");
|
|
305
|
+
const text = stmtCapture.node.text;
|
|
306
|
+
const isDefault = text.includes("export default");
|
|
307
|
+
// Try to extract name from declaration if not captured
|
|
308
|
+
let name = nameCapture?.node.text;
|
|
309
|
+
if (!name) {
|
|
310
|
+
// Try to extract from export statement
|
|
311
|
+
const nameMatch = /export\s+(?:default\s+)?(?:function|class|const|let|var|interface|type|enum)\s+(\w+)/.exec(text);
|
|
312
|
+
if (nameMatch?.[1]) {
|
|
313
|
+
name = nameMatch[1];
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
exportList.push({
|
|
317
|
+
name: name ?? "default",
|
|
318
|
+
isDefault,
|
|
319
|
+
start: stmtCapture.node.start,
|
|
320
|
+
end: stmtCapture.node.end,
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
// Query not available
|
|
326
|
+
}
|
|
327
|
+
return exportList;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Get symbols by type
|
|
331
|
+
*/
|
|
332
|
+
export function getSymbolsByType(symbols, type) {
|
|
333
|
+
return symbols.filter((s) => s.type === type);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Find symbol by name
|
|
337
|
+
*/
|
|
338
|
+
export function findSymbolByName(symbols, name) {
|
|
339
|
+
return symbols.find((s) => s.name === name);
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Get symbol at position
|
|
343
|
+
*/
|
|
344
|
+
export function getSymbolAtPosition(symbols, line, column) {
|
|
345
|
+
return symbols.find((s) => {
|
|
346
|
+
const afterStart = line > s.start.line ||
|
|
347
|
+
(line === s.start.line && column >= s.start.column);
|
|
348
|
+
const beforeEnd = line < s.end.line || (line === s.end.line && column <= s.end.column);
|
|
349
|
+
return afterStart && beforeEnd;
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
export function extractCodeInfo(tree, languageInstance, language, filter = {}) {
|
|
353
|
+
return {
|
|
354
|
+
symbols: extractSymbols(tree, languageInstance, language, filter),
|
|
355
|
+
imports: extractImports(tree, languageInstance, language),
|
|
356
|
+
exports: extractExports(tree, languageInstance, language),
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/symbols/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,eAAe,GAChB,MAAM,eAAe,CAAC;AAmCvB;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAU,EACV,gBAA0B,EAC1B,QAAgB,EAChB,SAAuB,EAAE;IAEzB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAEvC,MAAM,aAAa,GAAG,CAAC,IAAgB,EAAW,EAAE;QAClD,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,uEAAuE;IACvE,IACE,aAAa,CAAC,UAAU,CAAC;QACzB,aAAa,CAAC,QAAQ,CAAC;QACvB,aAAa,CAAC,OAAO,CAAC;QACtB,aAAa,CAAC,WAAW,CAAC,EAC1B,CAAC;QACD,MAAM,UAAU,GAAG,kBAAkB,CACnC,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,WAAW,CACZ,CAAC;QAEF,+BAA+B;QAC/B,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;gBACtE,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;gBAEjE,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,IAAI,GACR,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC7D,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,QAAQ,GACZ,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;4BACvC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC;wBAC/C,MAAM,IAAI,GAAe,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;wBAC1D,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;4BACxB,OAAO,CAAC,IAAI,CAAC;gCACX,IAAI;gCACJ,IAAI;gCACJ,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK;gCAC5B,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG;gCACxB,SAAS,EAAE,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC;gCACpD,SAAS,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;6BAC7C,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACzD,MAAM,WAAW,GAAG,kBAAkB,CACpC,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,SAAS,CACV,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAE9D,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,IAAI,EAAE,CAAC;oBACT,wCAAwC;oBACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oBACtC,IAAI,UAAU,GAAe,OAAO,CAAC;oBACrC,IACE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAC9B,QAAQ,KAAK,uBAAuB,EACpC,CAAC;wBACD,UAAU,GAAG,WAAW,CAAC;oBAC3B,CAAC;yBAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACvC,UAAU,GAAG,WAAW,CAAC;oBAC3B,CAAC;oBAED,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9B,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI;4BACJ,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK;4BAC5B,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG;4BACxB,SAAS,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;yBAC7C,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,kBAAkB,CAClC,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,WAAW,CACZ,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE;oBACrD,eAAe;oBACf,eAAe;oBACf,YAAY;iBACb,CAAC,CAAC;gBACH,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE;oBACrD,sBAAsB;oBACtB,sBAAsB;oBACtB,mBAAmB;iBACpB,CAAC,CAAC;gBAEH,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;oBAC/B,MAAM,UAAU,GACd,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;wBAC1C,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC,KAAK,SAAS,CAAC;oBAE7D,MAAM,IAAI,GAAe,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;oBAC9D,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;4BAC3B,IAAI;4BACJ,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK;4BAC7B,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG;4BACzB,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;yBAC9C,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,IACE,aAAa,CAAC,WAAW,CAAC;QAC1B,aAAa,CAAC,MAAM,CAAC;QACrB,aAAa,CAAC,MAAM,CAAC,EACrB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,kBAAkB,CACnC,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,OAAO,CACR,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE;oBACrD,WAAW;oBACX,gBAAgB;oBAChB,WAAW;oBACX,YAAY;iBACb,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE;oBACpD,iBAAiB;oBACjB,sBAAsB;oBACtB,iBAAiB;iBAClB,CAAC,CAAC;gBAEH,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;oBAC9B,IAAI,IAAI,GAAe,MAAM,CAAC;oBAC9B,IAAI,WAAW,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;wBAC1C,IAAI,GAAG,WAAW,CAAC;oBACrB,CAAC;yBAAM,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBAC5C,IAAI,GAAG,MAAM,CAAC;oBAChB,CAAC;oBAED,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;4BAC3B,IAAI;4BACJ,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK;4BAC5B,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG;4BACxB,SAAS,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;yBAC7C,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM;QAC9D,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM;QACzD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM;QAC9D,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM;QAC9D,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM;QAChE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM;QACtD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM;QACtD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,MAAM;QAC1D,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM;QAC/D,KAAK,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,IAGjC;IACC,6DAA6D;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAEvB,wCAAwC;IACxC,MAAM,OAAO,GACX,4EAA4E,CAAC,IAAI,CAC/E,IAAI,CACL,CAAC;IACJ,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,sBAAsB;IACtB,MAAM,UAAU,GAAG,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,aAAa;IACb,MAAM,OAAO,GAAG,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,SAAS;IACT,MAAM,OAAO,GAAG,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,kDAAkD;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAsB;IAC9C,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAEvB,mBAAmB;IACnB,MAAM,gBAAgB,GAAG;QACvB,QAAQ;QACR,SAAS;QACT,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,WAAW;QACX,UAAU;QACV,UAAU;QACV,OAAO;QACP,KAAK;QACL,KAAK;QACL,OAAO;QACP,UAAU;QACV,KAAK;QACL,KAAK;KACN,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACrC,2BAA2B;YAC3B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAU,EACV,gBAA0B,EAC1B,QAAgB;IAEhB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAC/B,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,SAAS,CACV,CAAC;QAEF,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACrD,kBAAkB;gBAClB,mBAAmB;aACpB,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,SAAS;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE9B,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACvD,eAAe;gBACf,aAAa;gBACb,cAAc;aACf,CAAC,CAAC;YACH,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACrE,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAChC,CAAC;YAEF,MAAM,MAAM,GAAG,aAAa;gBAC1B,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC9C,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,KAAK,GAAmB,EAAE,CAAC;YAEjC,IAAI,cAAc,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM;gBACN,KAAK;gBACL,SAAS,EAAE,CAAC,CAAC,cAAc,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBACxD,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK;gBAC7B,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAU,EACV,gBAA0B,EAC1B,QAAgB;IAEhB,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAC/B,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,SAAS,CACV,CAAC;QAEF,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACrD,kBAAkB;gBAClB,iBAAiB;gBACjB,cAAc;gBACd,aAAa;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,SAAS;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE9B,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAE/D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAElD,uDAAuD;YACvD,IAAI,IAAI,GAAG,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,uCAAuC;gBACvC,MAAM,SAAS,GACb,sFAAsF,CAAC,IAAI,CACzF,IAAI,CACL,CAAC;gBACJ,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnB,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YAED,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,IAAI,IAAI,SAAS;gBACvB,SAAS;gBACT,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK;gBAC7B,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAiB,EACjB,IAAgB;IAEhB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAiB,EACjB,IAAY;IAEZ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAiB,EACjB,IAAY,EACZ,MAAc;IAEd,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACxB,MAAM,UAAU,GACd,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI;YACnB,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,SAAS,GACb,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvE,OAAO,UAAU,IAAI,SAAS,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,eAAe,CAC7B,IAAU,EACV,gBAA0B,EAC1B,QAAgB,EAChB,SAAuB,EAAE;IAEzB,OAAO;QACL,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC;QACjE,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,CAAC;QACzD,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,CAAC;KAC1D,CAAC;AACJ,CAAC"}
|