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,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized asset directory utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent access to the assets directory and JSON config loading
|
|
5
|
+
* across all core modules.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync } from "fs";
|
|
8
|
+
import { dirname, join } from "path";
|
|
9
|
+
import { fileURLToPath } from "url";
|
|
10
|
+
/**
|
|
11
|
+
* Cached assets directory path
|
|
12
|
+
*/
|
|
13
|
+
let assetsDirCache = null;
|
|
14
|
+
/**
|
|
15
|
+
* Get the assets directory path
|
|
16
|
+
*
|
|
17
|
+
* Handles both ESM and CJS contexts by trying multiple possible paths
|
|
18
|
+
* relative to the current module location.
|
|
19
|
+
*/
|
|
20
|
+
export function getAssetsDir() {
|
|
21
|
+
if (assetsDirCache) {
|
|
22
|
+
return assetsDirCache;
|
|
23
|
+
}
|
|
24
|
+
// Handle both ESM and CJS contexts
|
|
25
|
+
const currentDir = typeof __dirname !== "undefined"
|
|
26
|
+
? __dirname
|
|
27
|
+
: dirname(fileURLToPath(import.meta.url));
|
|
28
|
+
// Try various paths relative to current file location
|
|
29
|
+
const possiblePaths = [
|
|
30
|
+
join(currentDir, "..", "..", "..", "assets"), // From dist/core/utils
|
|
31
|
+
join(currentDir, "..", "..", "assets"), // From src/core/utils (dev)
|
|
32
|
+
join(process.cwd(), "assets"), // From project root
|
|
33
|
+
];
|
|
34
|
+
for (const p of possiblePaths) {
|
|
35
|
+
if (existsSync(p)) {
|
|
36
|
+
assetsDirCache = p;
|
|
37
|
+
return p;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Default fallback
|
|
41
|
+
assetsDirCache = join(process.cwd(), "assets");
|
|
42
|
+
return assetsDirCache;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Load and parse a JSON config file from the assets directory
|
|
46
|
+
*
|
|
47
|
+
* @param filename - Name of the JSON file in assets directory
|
|
48
|
+
* @param defaultValue - Default value to return if file cannot be loaded
|
|
49
|
+
* @returns Parsed JSON content or default value
|
|
50
|
+
*/
|
|
51
|
+
export function loadJsonConfig(filename, defaultValue) {
|
|
52
|
+
const configPath = join(getAssetsDir(), filename);
|
|
53
|
+
try {
|
|
54
|
+
const content = readFileSync(configPath, "utf-8");
|
|
55
|
+
return JSON.parse(content);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return defaultValue;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get the path to a file within the assets directory
|
|
63
|
+
*
|
|
64
|
+
* @param segments - Path segments relative to assets directory
|
|
65
|
+
* @returns Full path to the asset file
|
|
66
|
+
*/
|
|
67
|
+
export function getAssetPath(...segments) {
|
|
68
|
+
return join(getAssetsDir(), ...segments);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Check if an asset file exists
|
|
72
|
+
*
|
|
73
|
+
* @param segments - Path segments relative to assets directory
|
|
74
|
+
* @returns True if the file exists
|
|
75
|
+
*/
|
|
76
|
+
export function assetExists(...segments) {
|
|
77
|
+
return existsSync(getAssetPath(...segments));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Clear the assets directory cache (for testing)
|
|
81
|
+
*/
|
|
82
|
+
export function clearAssetsDirCache() {
|
|
83
|
+
assetsDirCache = null;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/core/utils/assets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC;;GAEG;AACH,IAAI,cAAc,GAAkB,IAAI,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,GACd,OAAO,SAAS,KAAK,WAAW;QAC9B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9C,sDAAsD;IACtD,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,uBAAuB;QACrE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,4BAA4B;QACpE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,oBAAoB;KACpD,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,cAAc,GAAG,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/C,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAI,QAAgB,EAAE,YAAe;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAG,QAAkB;IAChD,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAG,QAAkB;IAC/C,OAAO,UAAU,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized cache management
|
|
3
|
+
*
|
|
4
|
+
* Provides a registry for cache clear functions across all modules.
|
|
5
|
+
* Allows clearing all caches at once (useful for testing).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Cache clear function type
|
|
9
|
+
*/
|
|
10
|
+
export type CacheClearFn = () => void;
|
|
11
|
+
/**
|
|
12
|
+
* Register a cache clear function
|
|
13
|
+
*
|
|
14
|
+
* @param name - Unique name for this cache (for debugging/identification)
|
|
15
|
+
* @param clearFn - Function that clears the cache
|
|
16
|
+
*/
|
|
17
|
+
export declare function registerCache(name: string, clearFn: CacheClearFn): void;
|
|
18
|
+
/**
|
|
19
|
+
* Unregister a cache clear function
|
|
20
|
+
*
|
|
21
|
+
* @param name - Name of the cache to unregister
|
|
22
|
+
*/
|
|
23
|
+
export declare function unregisterCache(name: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Clear all registered caches
|
|
26
|
+
*
|
|
27
|
+
* Useful for testing to ensure a clean state between tests.
|
|
28
|
+
*/
|
|
29
|
+
export declare function clearAllCaches(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Get names of all registered caches
|
|
32
|
+
*
|
|
33
|
+
* @returns Array of cache names
|
|
34
|
+
*/
|
|
35
|
+
export declare function getRegisteredCaches(): string[];
|
|
36
|
+
/**
|
|
37
|
+
* Clear a specific cache by name
|
|
38
|
+
*
|
|
39
|
+
* @param name - Name of the cache to clear
|
|
40
|
+
* @returns True if cache was found and cleared
|
|
41
|
+
*/
|
|
42
|
+
export declare function clearCache(name: string): boolean;
|
|
43
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/core/utils/cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC;AAOtC;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOhD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized cache management
|
|
3
|
+
*
|
|
4
|
+
* Provides a registry for cache clear functions across all modules.
|
|
5
|
+
* Allows clearing all caches at once (useful for testing).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Registry of cache clear functions
|
|
9
|
+
*/
|
|
10
|
+
const cacheRegistry = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Register a cache clear function
|
|
13
|
+
*
|
|
14
|
+
* @param name - Unique name for this cache (for debugging/identification)
|
|
15
|
+
* @param clearFn - Function that clears the cache
|
|
16
|
+
*/
|
|
17
|
+
export function registerCache(name, clearFn) {
|
|
18
|
+
cacheRegistry.set(name, clearFn);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Unregister a cache clear function
|
|
22
|
+
*
|
|
23
|
+
* @param name - Name of the cache to unregister
|
|
24
|
+
*/
|
|
25
|
+
export function unregisterCache(name) {
|
|
26
|
+
cacheRegistry.delete(name);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Clear all registered caches
|
|
30
|
+
*
|
|
31
|
+
* Useful for testing to ensure a clean state between tests.
|
|
32
|
+
*/
|
|
33
|
+
export function clearAllCaches() {
|
|
34
|
+
for (const clearFn of cacheRegistry.values()) {
|
|
35
|
+
clearFn();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get names of all registered caches
|
|
40
|
+
*
|
|
41
|
+
* @returns Array of cache names
|
|
42
|
+
*/
|
|
43
|
+
export function getRegisteredCaches() {
|
|
44
|
+
return Array.from(cacheRegistry.keys());
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Clear a specific cache by name
|
|
48
|
+
*
|
|
49
|
+
* @param name - Name of the cache to clear
|
|
50
|
+
* @returns True if cache was found and cleared
|
|
51
|
+
*/
|
|
52
|
+
export function clearCache(name) {
|
|
53
|
+
const clearFn = cacheRegistry.get(name);
|
|
54
|
+
if (clearFn) {
|
|
55
|
+
clearFn();
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/core/utils/cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAqB;IAC/D,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core utilities barrel export
|
|
3
|
+
*/
|
|
4
|
+
export { assetExists, clearAssetsDirCache, getAssetPath, getAssetsDir, loadJsonConfig, } from "./assets";
|
|
5
|
+
export { clearAllCaches, clearCache, getRegisteredCaches, registerCache, unregisterCache, type CacheClearFn, } from "./cache";
|
|
6
|
+
export { clearPathAliasCache, readPathAliases, readPathAliasesCached, type PathAliases, } from "./tsconfig";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core utilities barrel export
|
|
3
|
+
*/
|
|
4
|
+
// Asset directory utilities
|
|
5
|
+
export { assetExists, clearAssetsDirCache, getAssetPath, getAssetsDir, loadJsonConfig, } from "./assets";
|
|
6
|
+
// Cache management
|
|
7
|
+
export { clearAllCaches, clearCache, getRegisteredCaches, registerCache, unregisterCache, } from "./cache";
|
|
8
|
+
// TSConfig utilities
|
|
9
|
+
export { clearPathAliasCache, readPathAliases, readPathAliasesCached, } from "./tsconfig";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,4BAA4B;AAC5B,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,eAAe,GAEhB,MAAM,SAAS,CAAC;AAEjB,qBAAqB;AACrB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GAEtB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TSConfig utilities for reading path aliases
|
|
3
|
+
*
|
|
4
|
+
* Reads and parses tsconfig.json to extract path aliases
|
|
5
|
+
* in a format usable by the cross-file resolution system.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Converted path aliases in simple format
|
|
9
|
+
* Key is the alias prefix (e.g., "@core", "@/")
|
|
10
|
+
* Value is the resolved directory path relative to project root
|
|
11
|
+
*/
|
|
12
|
+
export type PathAliases = Record<string, string>;
|
|
13
|
+
/**
|
|
14
|
+
* Read tsconfig.json and extract path aliases
|
|
15
|
+
*
|
|
16
|
+
* Handles:
|
|
17
|
+
* - Comments in tsconfig (// and /* *\/)
|
|
18
|
+
* - baseUrl relative paths
|
|
19
|
+
* - Wildcard patterns (@core/* -> src/core/*)
|
|
20
|
+
* - Exact patterns (@core -> src/core)
|
|
21
|
+
*
|
|
22
|
+
* @param projectRoot - The project root directory containing tsconfig.json
|
|
23
|
+
* @returns Path aliases in simple format, or empty object if not found/invalid
|
|
24
|
+
*/
|
|
25
|
+
export declare function readPathAliases(projectRoot: string): PathAliases;
|
|
26
|
+
/**
|
|
27
|
+
* Read path aliases with caching
|
|
28
|
+
*/
|
|
29
|
+
export declare function readPathAliasesCached(projectRoot: string): PathAliases;
|
|
30
|
+
/**
|
|
31
|
+
* Clear the path aliases cache
|
|
32
|
+
*/
|
|
33
|
+
export declare function clearPathAliasCache(): void;
|
|
34
|
+
//# sourceMappingURL=tsconfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsconfig.d.ts","sourceRoot":"","sources":["../../../src/core/utils/tsconfig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAuHjD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAoChE;AAOD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAWtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TSConfig utilities for reading path aliases
|
|
3
|
+
*
|
|
4
|
+
* Reads and parses tsconfig.json to extract path aliases
|
|
5
|
+
* in a format usable by the cross-file resolution system.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from "node:fs";
|
|
8
|
+
import * as path from "node:path";
|
|
9
|
+
import { logger } from "@utils";
|
|
10
|
+
/**
|
|
11
|
+
* Strip JSON comments (single-line // and multi-line)
|
|
12
|
+
*/
|
|
13
|
+
function stripJsonComments(json) {
|
|
14
|
+
let result = "";
|
|
15
|
+
let inString = false;
|
|
16
|
+
let inSingleLineComment = false;
|
|
17
|
+
let inMultiLineComment = false;
|
|
18
|
+
for (let i = 0; i < json.length; i++) {
|
|
19
|
+
const char = json.charAt(i);
|
|
20
|
+
const nextChar = json.charAt(i + 1);
|
|
21
|
+
if (inSingleLineComment) {
|
|
22
|
+
if (char === "\n") {
|
|
23
|
+
inSingleLineComment = false;
|
|
24
|
+
result += char;
|
|
25
|
+
}
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (inMultiLineComment) {
|
|
29
|
+
if (char === "*" && nextChar === "/") {
|
|
30
|
+
inMultiLineComment = false;
|
|
31
|
+
i++; // Skip the '/'
|
|
32
|
+
}
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (inString) {
|
|
36
|
+
result += char;
|
|
37
|
+
if (char === '"' && json.charAt(i - 1) !== "\\") {
|
|
38
|
+
inString = false;
|
|
39
|
+
}
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
// Not in string or comment
|
|
43
|
+
if (char === '"') {
|
|
44
|
+
inString = true;
|
|
45
|
+
result += char;
|
|
46
|
+
}
|
|
47
|
+
else if (char === "/" && nextChar === "/") {
|
|
48
|
+
inSingleLineComment = true;
|
|
49
|
+
i++; // Skip the second '/'
|
|
50
|
+
}
|
|
51
|
+
else if (char === "/" && nextChar === "*") {
|
|
52
|
+
inMultiLineComment = true;
|
|
53
|
+
i++; // Skip the '*'
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
result += char;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Parse tsconfig.json content
|
|
63
|
+
*/
|
|
64
|
+
function parseTsConfig(content) {
|
|
65
|
+
try {
|
|
66
|
+
const strippedContent = stripJsonComments(content);
|
|
67
|
+
return JSON.parse(strippedContent);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
logger.debug(`Failed to parse tsconfig.json: ${error instanceof Error ? error.message : String(error)}`);
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Convert tsconfig paths to simple path aliases format
|
|
76
|
+
*
|
|
77
|
+
* TSConfig format:
|
|
78
|
+
* "@core": ["src/core"]
|
|
79
|
+
* "@core/*": ["src/core/*"]
|
|
80
|
+
*
|
|
81
|
+
* Output format:
|
|
82
|
+
* "@core": "src/core"
|
|
83
|
+
* "@core/": "src/core/"
|
|
84
|
+
*/
|
|
85
|
+
function convertPaths(paths, baseUrl, projectRoot) {
|
|
86
|
+
const aliases = {};
|
|
87
|
+
for (const [pattern, targets] of Object.entries(paths)) {
|
|
88
|
+
const target = targets[0];
|
|
89
|
+
if (!target) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
// Handle wildcard patterns like "@core/*" -> ["src/core/*"]
|
|
93
|
+
if (pattern.endsWith("/*") && target.endsWith("/*")) {
|
|
94
|
+
// Remove the /* from both pattern and target
|
|
95
|
+
const aliasPrefix = pattern.slice(0, -2) + "/";
|
|
96
|
+
const targetPath = target.slice(0, -2) + "/";
|
|
97
|
+
// Resolve relative to baseUrl
|
|
98
|
+
const resolvedTarget = path.join(projectRoot, baseUrl, targetPath);
|
|
99
|
+
const relativeTarget = path.relative(projectRoot, resolvedTarget);
|
|
100
|
+
aliases[aliasPrefix] = relativeTarget.replace(/\\/g, "/") + "/";
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// Handle exact matches like "@core" -> ["src/core"]
|
|
104
|
+
const resolvedTarget = path.join(projectRoot, baseUrl, target);
|
|
105
|
+
const relativeTarget = path.relative(projectRoot, resolvedTarget);
|
|
106
|
+
aliases[pattern] = relativeTarget.replace(/\\/g, "/");
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return aliases;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Read tsconfig.json and extract path aliases
|
|
113
|
+
*
|
|
114
|
+
* Handles:
|
|
115
|
+
* - Comments in tsconfig (// and /* *\/)
|
|
116
|
+
* - baseUrl relative paths
|
|
117
|
+
* - Wildcard patterns (@core/* -> src/core/*)
|
|
118
|
+
* - Exact patterns (@core -> src/core)
|
|
119
|
+
*
|
|
120
|
+
* @param projectRoot - The project root directory containing tsconfig.json
|
|
121
|
+
* @returns Path aliases in simple format, or empty object if not found/invalid
|
|
122
|
+
*/
|
|
123
|
+
export function readPathAliases(projectRoot) {
|
|
124
|
+
const tsconfigPath = path.join(projectRoot, "tsconfig.json");
|
|
125
|
+
if (!fs.existsSync(tsconfigPath)) {
|
|
126
|
+
logger.debug(`No tsconfig.json found at ${tsconfigPath}`);
|
|
127
|
+
return {};
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
const content = fs.readFileSync(tsconfigPath, "utf-8");
|
|
131
|
+
const tsconfig = parseTsConfig(content);
|
|
132
|
+
if (!tsconfig) {
|
|
133
|
+
return {};
|
|
134
|
+
}
|
|
135
|
+
const paths = tsconfig.compilerOptions?.paths;
|
|
136
|
+
const baseUrl = tsconfig.compilerOptions?.baseUrl ?? ".";
|
|
137
|
+
if (!paths || Object.keys(paths).length === 0) {
|
|
138
|
+
logger.debug("No paths defined in tsconfig.json");
|
|
139
|
+
return {};
|
|
140
|
+
}
|
|
141
|
+
const aliases = convertPaths(paths, baseUrl, projectRoot);
|
|
142
|
+
logger.debug(`Loaded ${String(Object.keys(aliases).length)} path aliases from tsconfig.json`);
|
|
143
|
+
return aliases;
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
logger.debug(`Failed to read tsconfig.json: ${error instanceof Error ? error.message : String(error)}`);
|
|
147
|
+
return {};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get cache key for memoization
|
|
152
|
+
*/
|
|
153
|
+
const pathAliasCache = new Map();
|
|
154
|
+
/**
|
|
155
|
+
* Read path aliases with caching
|
|
156
|
+
*/
|
|
157
|
+
export function readPathAliasesCached(projectRoot) {
|
|
158
|
+
const normalizedRoot = path.normalize(projectRoot);
|
|
159
|
+
const cached = pathAliasCache.get(normalizedRoot);
|
|
160
|
+
if (cached !== undefined) {
|
|
161
|
+
return cached;
|
|
162
|
+
}
|
|
163
|
+
const aliases = readPathAliases(projectRoot);
|
|
164
|
+
pathAliasCache.set(normalizedRoot, aliases);
|
|
165
|
+
return aliases;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Clear the path aliases cache
|
|
169
|
+
*/
|
|
170
|
+
export function clearPathAliasCache() {
|
|
171
|
+
pathAliasCache.clear();
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=tsconfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsconfig.js","sourceRoot":"","sources":["../../../src/core/utils/tsconfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { Feature, FeatureResult } from "@features/types";
|
|
3
|
+
export declare const analyzeFileSchema: z.ZodObject<{
|
|
4
|
+
file_path: z.ZodString;
|
|
5
|
+
include_ast: z.ZodDefault<z.ZodBoolean>;
|
|
6
|
+
include_symbols: z.ZodDefault<z.ZodBoolean>;
|
|
7
|
+
include_imports: z.ZodDefault<z.ZodBoolean>;
|
|
8
|
+
include_exports: z.ZodDefault<z.ZodBoolean>;
|
|
9
|
+
ast_max_depth: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
include_chunks: z.ZodDefault<z.ZodBoolean>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
export type AnalyzeFileInput = z.input<typeof analyzeFileSchema>;
|
|
13
|
+
export declare function execute(rawInput: AnalyzeFileInput): Promise<FeatureResult>;
|
|
14
|
+
export declare const analyzeFileFeature: Feature<typeof analyzeFileSchema>;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/analyze-file/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE9D,eAAO,MAAM,iBAAiB;;;;;;;;iBA4B5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,aAAa,CAAC,CA8JxB;AAED,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,OAAO,iBAAiB,CAMhE,CAAC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getASTRoot } from "@core/parser";
|
|
3
|
+
import { extractCodeInfo } from "@core/symbols";
|
|
4
|
+
import { canParse, extractSymbols, getParsingCapabilities, parseFile, } from "@core/unified";
|
|
5
|
+
export const analyzeFileSchema = z.object({
|
|
6
|
+
file_path: z.string().describe("Path to the file to analyze"),
|
|
7
|
+
include_ast: z
|
|
8
|
+
.boolean()
|
|
9
|
+
.default(false)
|
|
10
|
+
.describe("Include full AST in response (default: false, can be verbose)"),
|
|
11
|
+
include_symbols: z
|
|
12
|
+
.boolean()
|
|
13
|
+
.default(true)
|
|
14
|
+
.describe("Include extracted symbols (default: true)"),
|
|
15
|
+
include_imports: z
|
|
16
|
+
.boolean()
|
|
17
|
+
.default(true)
|
|
18
|
+
.describe("Include import statements (default: true)"),
|
|
19
|
+
include_exports: z
|
|
20
|
+
.boolean()
|
|
21
|
+
.default(true)
|
|
22
|
+
.describe("Include export statements (default: true)"),
|
|
23
|
+
ast_max_depth: z
|
|
24
|
+
.number()
|
|
25
|
+
.int()
|
|
26
|
+
.positive()
|
|
27
|
+
.optional()
|
|
28
|
+
.describe("Maximum depth for AST if included"),
|
|
29
|
+
include_chunks: z
|
|
30
|
+
.boolean()
|
|
31
|
+
.default(false)
|
|
32
|
+
.describe("Include text chunks for fallback parsing (default: false)"),
|
|
33
|
+
});
|
|
34
|
+
export async function execute(rawInput) {
|
|
35
|
+
// Parse with defaults applied
|
|
36
|
+
const input = analyzeFileSchema.parse(rawInput);
|
|
37
|
+
const { file_path, include_ast, include_symbols, include_imports, include_exports, ast_max_depth, include_chunks, } = input;
|
|
38
|
+
try {
|
|
39
|
+
// Check if file can be parsed
|
|
40
|
+
if (!canParse(file_path)) {
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
error: `Cannot parse binary file: ${file_path}`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Get parsing capabilities for this file
|
|
47
|
+
const capabilities = getParsingCapabilities(file_path);
|
|
48
|
+
// Parse the file with automatic fallback
|
|
49
|
+
const parseResult = await parseFile(file_path, {
|
|
50
|
+
includeAst: include_ast,
|
|
51
|
+
astMaxDepth: ast_max_depth,
|
|
52
|
+
});
|
|
53
|
+
// If parsing failed (unsupported file type), return error
|
|
54
|
+
if (!parseResult) {
|
|
55
|
+
return {
|
|
56
|
+
success: false,
|
|
57
|
+
error: `Cannot parse file: ${file_path}. Unsupported or unreadable file type.`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Build response based on parsing method
|
|
61
|
+
const response = {
|
|
62
|
+
file_path,
|
|
63
|
+
language: parseResult.language,
|
|
64
|
+
parsing_method: parseResult.method,
|
|
65
|
+
capabilities: capabilities.features,
|
|
66
|
+
metrics: {
|
|
67
|
+
lines: parseResult.lineCount,
|
|
68
|
+
functions: 0,
|
|
69
|
+
classes: 0,
|
|
70
|
+
imports: 0,
|
|
71
|
+
exports: 0,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
// Tree-sitter path - full analysis
|
|
75
|
+
if (parseResult.method === "tree-sitter" &&
|
|
76
|
+
parseResult.tree &&
|
|
77
|
+
parseResult.languageInstance) {
|
|
78
|
+
const codeInfo = extractCodeInfo(parseResult.tree, parseResult.languageInstance, parseResult.language);
|
|
79
|
+
response.metrics = {
|
|
80
|
+
lines: parseResult.lineCount,
|
|
81
|
+
functions: codeInfo.symbols.summary.functions,
|
|
82
|
+
classes: codeInfo.symbols.summary.classes,
|
|
83
|
+
imports: codeInfo.imports.length,
|
|
84
|
+
exports: codeInfo.exports.length,
|
|
85
|
+
};
|
|
86
|
+
if (include_symbols) {
|
|
87
|
+
response.symbols = codeInfo.symbols.symbols;
|
|
88
|
+
}
|
|
89
|
+
if (include_imports) {
|
|
90
|
+
response.imports = codeInfo.imports;
|
|
91
|
+
}
|
|
92
|
+
if (include_exports) {
|
|
93
|
+
response.exports = codeInfo.exports;
|
|
94
|
+
}
|
|
95
|
+
if (include_ast) {
|
|
96
|
+
response.ast = getASTRoot({
|
|
97
|
+
tree: parseResult.tree,
|
|
98
|
+
language: parseResult.language,
|
|
99
|
+
parser: null,
|
|
100
|
+
languageInstance: parseResult.languageInstance,
|
|
101
|
+
}, ast_max_depth);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
// Fallback path - limited analysis
|
|
106
|
+
const symbols = extractSymbols(parseResult);
|
|
107
|
+
response.metrics = {
|
|
108
|
+
lines: parseResult.lineCount,
|
|
109
|
+
functions: symbols.functions.length,
|
|
110
|
+
classes: symbols.classes.length,
|
|
111
|
+
imports: 0, // Not available in fallback
|
|
112
|
+
exports: 0, // Not available in fallback
|
|
113
|
+
};
|
|
114
|
+
if (include_symbols) {
|
|
115
|
+
response.symbols = symbols.all;
|
|
116
|
+
response.symbol_extraction_method = symbols.method;
|
|
117
|
+
}
|
|
118
|
+
if (include_chunks && parseResult.chunks) {
|
|
119
|
+
response.chunks = parseResult.chunks.map((chunk) => ({
|
|
120
|
+
index: chunk.index,
|
|
121
|
+
startLine: chunk.startLine,
|
|
122
|
+
endLine: chunk.endLine,
|
|
123
|
+
preview: chunk.content.slice(0, 100) +
|
|
124
|
+
(chunk.content.length > 100 ? "..." : ""),
|
|
125
|
+
}));
|
|
126
|
+
response.chunk_count = parseResult.chunks.length;
|
|
127
|
+
}
|
|
128
|
+
// Note about limited analysis
|
|
129
|
+
response.note = `File parsed using ${parseResult.method} fallback. Some features (imports, exports, full AST) are not available.`;
|
|
130
|
+
}
|
|
131
|
+
// Build summary message
|
|
132
|
+
const metrics = response.metrics;
|
|
133
|
+
const methodNote = parseResult.method !== "tree-sitter" ? ` [${parseResult.method}]` : "";
|
|
134
|
+
const summary = [
|
|
135
|
+
`${parseResult.language} file${methodNote}`,
|
|
136
|
+
`${String(metrics.lines)} lines`,
|
|
137
|
+
`${String(metrics.functions)} functions`,
|
|
138
|
+
`${String(metrics.classes)} classes`,
|
|
139
|
+
];
|
|
140
|
+
if (parseResult.method === "tree-sitter") {
|
|
141
|
+
summary.push(`${String(metrics.imports)} imports`);
|
|
142
|
+
summary.push(`${String(metrics.exports)} exports`);
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
success: true,
|
|
146
|
+
data: response,
|
|
147
|
+
message: `Analyzed ${file_path}: ${summary.join(", ")}`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
152
|
+
return {
|
|
153
|
+
success: false,
|
|
154
|
+
error: `Failed to analyze file: ${message}`,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
export const analyzeFileFeature = {
|
|
159
|
+
name: "analyze_file",
|
|
160
|
+
description: "Perform a comprehensive analysis of a source code file. Returns symbols, imports, exports, and code metrics. Optionally includes the full AST.",
|
|
161
|
+
schema: analyzeFileSchema,
|
|
162
|
+
execute,
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/analyze-file/index.ts"],"names":[],"mappings":"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"}
|