@selvakumaresra/specship 0.1.3 → 0.3.0
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/README.md +2 -2
- package/commands/ss-design-implement.md +79 -0
- package/commands/{cg-drifted.md → ss-drifted.md} +2 -2
- package/commands/{cg-fix.md → ss-fix.md} +1 -1
- package/commands/{cg-implement.md → ss-implement.md} +1 -1
- package/commands/ss-spec-author.md +43 -0
- package/commands/ss-spec-review.md +48 -0
- package/dist/bin/node-version-check.d.ts +37 -0
- package/dist/bin/node-version-check.d.ts.map +1 -0
- package/dist/bin/node-version-check.js +79 -0
- package/dist/bin/node-version-check.js.map +1 -0
- package/dist/bin/specship.d.ts +25 -0
- package/dist/bin/specship.d.ts.map +1 -0
- package/dist/bin/specship.js +2019 -0
- package/dist/bin/specship.js.map +1 -0
- package/dist/bin/uninstall.d.ts +13 -0
- package/dist/bin/uninstall.d.ts.map +1 -0
- package/dist/bin/uninstall.js +35 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/context/formatter.d.ts +30 -0
- package/dist/context/formatter.d.ts.map +1 -0
- package/dist/context/formatter.js +263 -0
- package/dist/context/formatter.js.map +1 -0
- package/dist/context/index.d.ts +119 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +1289 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/markers.d.ts +19 -0
- package/dist/context/markers.d.ts.map +1 -0
- package/dist/context/markers.js +22 -0
- package/dist/context/markers.js.map +1 -0
- package/dist/db/index.d.ts +103 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +279 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +44 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +462 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +357 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +1504 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.sql +419 -0
- package/dist/db/spec-queries.d.ts +101 -0
- package/dist/db/spec-queries.d.ts.map +1 -0
- package/dist/db/spec-queries.js +675 -0
- package/dist/db/spec-queries.js.map +1 -0
- package/dist/db/sqlite-adapter.d.ts +65 -0
- package/dist/db/sqlite-adapter.d.ts.map +1 -0
- package/dist/db/sqlite-adapter.js +214 -0
- package/dist/db/sqlite-adapter.js.map +1 -0
- package/dist/directory.d.ts +67 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +267 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +136 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +219 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction/dfm-extractor.d.ts +31 -0
- package/dist/extraction/dfm-extractor.d.ts.map +1 -0
- package/dist/extraction/dfm-extractor.js +151 -0
- package/dist/extraction/dfm-extractor.js.map +1 -0
- package/dist/extraction/generated-detection.d.ts +30 -0
- package/dist/extraction/generated-detection.d.ts.map +1 -0
- package/dist/extraction/generated-detection.js +80 -0
- package/dist/extraction/generated-detection.js.map +1 -0
- package/dist/extraction/grammars.d.ts +100 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +426 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +138 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +1394 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/languages/c-cpp.d.ts +4 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
- package/dist/extraction/languages/c-cpp.js +171 -0
- package/dist/extraction/languages/c-cpp.js.map +1 -0
- package/dist/extraction/languages/csharp.d.ts +3 -0
- package/dist/extraction/languages/csharp.d.ts.map +1 -0
- package/dist/extraction/languages/csharp.js +73 -0
- package/dist/extraction/languages/csharp.js.map +1 -0
- package/dist/extraction/languages/dart.d.ts +3 -0
- package/dist/extraction/languages/dart.d.ts.map +1 -0
- package/dist/extraction/languages/dart.js +192 -0
- package/dist/extraction/languages/dart.js.map +1 -0
- package/dist/extraction/languages/go.d.ts +3 -0
- package/dist/extraction/languages/go.d.ts.map +1 -0
- package/dist/extraction/languages/go.js +74 -0
- package/dist/extraction/languages/go.js.map +1 -0
- package/dist/extraction/languages/index.d.ts +10 -0
- package/dist/extraction/languages/index.d.ts.map +1 -0
- package/dist/extraction/languages/index.js +51 -0
- package/dist/extraction/languages/index.js.map +1 -0
- package/dist/extraction/languages/java.d.ts +3 -0
- package/dist/extraction/languages/java.d.ts.map +1 -0
- package/dist/extraction/languages/java.js +70 -0
- package/dist/extraction/languages/java.js.map +1 -0
- package/dist/extraction/languages/javascript.d.ts +3 -0
- package/dist/extraction/languages/javascript.d.ts.map +1 -0
- package/dist/extraction/languages/javascript.js +90 -0
- package/dist/extraction/languages/javascript.js.map +1 -0
- package/dist/extraction/languages/kotlin.d.ts +3 -0
- package/dist/extraction/languages/kotlin.d.ts.map +1 -0
- package/dist/extraction/languages/kotlin.js +259 -0
- package/dist/extraction/languages/kotlin.js.map +1 -0
- package/dist/extraction/languages/lua.d.ts +3 -0
- package/dist/extraction/languages/lua.d.ts.map +1 -0
- package/dist/extraction/languages/lua.js +150 -0
- package/dist/extraction/languages/lua.js.map +1 -0
- package/dist/extraction/languages/luau.d.ts +3 -0
- package/dist/extraction/languages/luau.d.ts.map +1 -0
- package/dist/extraction/languages/luau.js +37 -0
- package/dist/extraction/languages/luau.js.map +1 -0
- package/dist/extraction/languages/objc.d.ts +3 -0
- package/dist/extraction/languages/objc.d.ts.map +1 -0
- package/dist/extraction/languages/objc.js +133 -0
- package/dist/extraction/languages/objc.js.map +1 -0
- package/dist/extraction/languages/pascal.d.ts +3 -0
- package/dist/extraction/languages/pascal.d.ts.map +1 -0
- package/dist/extraction/languages/pascal.js +66 -0
- package/dist/extraction/languages/pascal.js.map +1 -0
- package/dist/extraction/languages/php.d.ts +3 -0
- package/dist/extraction/languages/php.d.ts.map +1 -0
- package/dist/extraction/languages/php.js +107 -0
- package/dist/extraction/languages/php.js.map +1 -0
- package/dist/extraction/languages/python.d.ts +3 -0
- package/dist/extraction/languages/python.d.ts.map +1 -0
- package/dist/extraction/languages/python.js +56 -0
- package/dist/extraction/languages/python.js.map +1 -0
- package/dist/extraction/languages/ruby.d.ts +3 -0
- package/dist/extraction/languages/ruby.d.ts.map +1 -0
- package/dist/extraction/languages/ruby.js +114 -0
- package/dist/extraction/languages/ruby.js.map +1 -0
- package/dist/extraction/languages/rust.d.ts +3 -0
- package/dist/extraction/languages/rust.d.ts.map +1 -0
- package/dist/extraction/languages/rust.js +109 -0
- package/dist/extraction/languages/rust.js.map +1 -0
- package/dist/extraction/languages/scala.d.ts +3 -0
- package/dist/extraction/languages/scala.d.ts.map +1 -0
- package/dist/extraction/languages/scala.js +139 -0
- package/dist/extraction/languages/scala.js.map +1 -0
- package/dist/extraction/languages/swift.d.ts +3 -0
- package/dist/extraction/languages/swift.d.ts.map +1 -0
- package/dist/extraction/languages/swift.js +91 -0
- package/dist/extraction/languages/swift.js.map +1 -0
- package/dist/extraction/languages/typescript.d.ts +3 -0
- package/dist/extraction/languages/typescript.d.ts.map +1 -0
- package/dist/extraction/languages/typescript.js +129 -0
- package/dist/extraction/languages/typescript.js.map +1 -0
- package/dist/extraction/liquid-extractor.d.ts +52 -0
- package/dist/extraction/liquid-extractor.d.ts.map +1 -0
- package/dist/extraction/liquid-extractor.js +313 -0
- package/dist/extraction/liquid-extractor.js.map +1 -0
- package/dist/extraction/mybatis-extractor.d.ts +48 -0
- package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
- package/dist/extraction/mybatis-extractor.js +198 -0
- package/dist/extraction/mybatis-extractor.js.map +1 -0
- package/dist/extraction/parse-worker.d.ts +8 -0
- package/dist/extraction/parse-worker.d.ts.map +1 -0
- package/dist/extraction/parse-worker.js +94 -0
- package/dist/extraction/parse-worker.js.map +1 -0
- package/dist/extraction/specs/markdown-spec-extractor.d.ts +59 -0
- package/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -0
- package/dist/extraction/specs/markdown-spec-extractor.js +327 -0
- package/dist/extraction/specs/markdown-spec-extractor.js.map +1 -0
- package/dist/extraction/specs/types.d.ts +39 -0
- package/dist/extraction/specs/types.d.ts.map +1 -0
- package/dist/extraction/specs/types.js +8 -0
- package/dist/extraction/specs/types.js.map +1 -0
- package/dist/extraction/svelte-extractor.d.ts +56 -0
- package/dist/extraction/svelte-extractor.d.ts.map +1 -0
- package/dist/extraction/svelte-extractor.js +272 -0
- package/dist/extraction/svelte-extractor.js.map +1 -0
- package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-helpers.js +103 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -0
- package/dist/extraction/tree-sitter-types.d.ts +193 -0
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-types.js +10 -0
- package/dist/extraction/tree-sitter-types.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +317 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +3092 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/extraction/vue-extractor.d.ts +51 -0
- package/dist/extraction/vue-extractor.d.ts.map +1 -0
- package/dist/extraction/vue-extractor.js +251 -0
- package/dist/extraction/vue-extractor.js.map +1 -0
- package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
- package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
- package/dist/extraction/wasm-runtime-flags.js +106 -0
- package/dist/extraction/wasm-runtime-flags.js.map +1 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/queries.d.ts +106 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +366 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/traversal.d.ts +127 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +531 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/index.d.ts +551 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1165 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/config-writer.d.ts +28 -0
- package/dist/installer/config-writer.d.ts.map +1 -0
- package/dist/installer/config-writer.js +91 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +87 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +415 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/installer/instructions-template.d.ts +18 -0
- package/dist/installer/instructions-template.d.ts.map +1 -0
- package/dist/installer/instructions-template.js +21 -0
- package/dist/installer/instructions-template.js.map +1 -0
- package/dist/installer/targets/claude.d.ts +98 -0
- package/dist/installer/targets/claude.d.ts.map +1 -0
- package/dist/installer/targets/claude.js +639 -0
- package/dist/installer/targets/claude.js.map +1 -0
- package/dist/installer/targets/registry.d.ts +19 -0
- package/dist/installer/targets/registry.d.ts.map +1 -0
- package/dist/installer/targets/registry.js +31 -0
- package/dist/installer/targets/registry.js.map +1 -0
- package/dist/installer/targets/shared.d.ts +62 -0
- package/dist/installer/targets/shared.d.ts.map +1 -0
- package/dist/installer/targets/shared.js +207 -0
- package/dist/installer/targets/shared.js.map +1 -0
- package/dist/installer/targets/types.d.ts +76 -0
- package/dist/installer/targets/types.d.ts.map +1 -0
- package/dist/installer/targets/types.js +12 -0
- package/dist/installer/targets/types.js.map +1 -0
- package/dist/isolation/worktree.d.ts +65 -0
- package/dist/isolation/worktree.d.ts.map +1 -0
- package/dist/isolation/worktree.js +231 -0
- package/dist/isolation/worktree.js.map +1 -0
- package/dist/mcp/daemon-paths.d.ts +46 -0
- package/dist/mcp/daemon-paths.d.ts.map +1 -0
- package/dist/mcp/daemon-paths.js +125 -0
- package/dist/mcp/daemon-paths.js.map +1 -0
- package/dist/mcp/daemon.d.ts +161 -0
- package/dist/mcp/daemon.d.ts.map +1 -0
- package/dist/mcp/daemon.js +403 -0
- package/dist/mcp/daemon.js.map +1 -0
- package/dist/mcp/engine.d.ts +105 -0
- package/dist/mcp/engine.d.ts.map +1 -0
- package/dist/mcp/engine.js +270 -0
- package/dist/mcp/engine.js.map +1 -0
- package/dist/mcp/index.d.ts +112 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +477 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/proxy.d.ts +81 -0
- package/dist/mcp/proxy.d.ts.map +1 -0
- package/dist/mcp/proxy.js +510 -0
- package/dist/mcp/proxy.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +18 -0
- package/dist/mcp/server-instructions.d.ts.map +1 -0
- package/dist/mcp/server-instructions.js +77 -0
- package/dist/mcp/server-instructions.js.map +1 -0
- package/dist/mcp/session.d.ts +77 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +294 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/spec-tools.d.ts +39 -0
- package/dist/mcp/spec-tools.d.ts.map +1 -0
- package/dist/mcp/spec-tools.js +326 -0
- package/dist/mcp/spec-tools.js.map +1 -0
- package/dist/mcp/tools.d.ts +404 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +3066 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/transport.d.ts +188 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +343 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/mcp/version.d.ts +19 -0
- package/dist/mcp/version.d.ts.map +1 -0
- package/dist/mcp/version.js +71 -0
- package/dist/mcp/version.js.map +1 -0
- package/dist/resolution/callback-synthesizer.d.ts +10 -0
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
- package/dist/resolution/callback-synthesizer.js +1300 -0
- package/dist/resolution/callback-synthesizer.js.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.js +225 -0
- package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
- package/dist/resolution/frameworks/csharp.d.ts +8 -0
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
- package/dist/resolution/frameworks/csharp.js +241 -0
- package/dist/resolution/frameworks/csharp.js.map +1 -0
- package/dist/resolution/frameworks/drupal.d.ts +51 -0
- package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
- package/dist/resolution/frameworks/drupal.js +367 -0
- package/dist/resolution/frameworks/drupal.js.map +1 -0
- package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
- package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
- package/dist/resolution/frameworks/expo-modules.js +143 -0
- package/dist/resolution/frameworks/expo-modules.js.map +1 -0
- package/dist/resolution/frameworks/express.d.ts +8 -0
- package/dist/resolution/frameworks/express.d.ts.map +1 -0
- package/dist/resolution/frameworks/express.js +308 -0
- package/dist/resolution/frameworks/express.js.map +1 -0
- package/dist/resolution/frameworks/fabric.d.ts +3 -0
- package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
- package/dist/resolution/frameworks/fabric.js +354 -0
- package/dist/resolution/frameworks/fabric.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts +8 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -0
- package/dist/resolution/frameworks/go.js +161 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +48 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +161 -0
- package/dist/resolution/frameworks/index.js.map +1 -0
- package/dist/resolution/frameworks/java.d.ts +8 -0
- package/dist/resolution/frameworks/java.d.ts.map +1 -0
- package/dist/resolution/frameworks/java.js +504 -0
- package/dist/resolution/frameworks/java.js.map +1 -0
- package/dist/resolution/frameworks/laravel.d.ts +13 -0
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
- package/dist/resolution/frameworks/laravel.js +257 -0
- package/dist/resolution/frameworks/laravel.js.map +1 -0
- package/dist/resolution/frameworks/nestjs.d.ts +26 -0
- package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
- package/dist/resolution/frameworks/nestjs.js +698 -0
- package/dist/resolution/frameworks/nestjs.js.map +1 -0
- package/dist/resolution/frameworks/play.d.ts +19 -0
- package/dist/resolution/frameworks/play.d.ts.map +1 -0
- package/dist/resolution/frameworks/play.js +111 -0
- package/dist/resolution/frameworks/play.js.map +1 -0
- package/dist/resolution/frameworks/python.d.ts +10 -0
- package/dist/resolution/frameworks/python.d.ts.map +1 -0
- package/dist/resolution/frameworks/python.js +396 -0
- package/dist/resolution/frameworks/python.js.map +1 -0
- package/dist/resolution/frameworks/react-native.d.ts +3 -0
- package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
- package/dist/resolution/frameworks/react-native.js +360 -0
- package/dist/resolution/frameworks/react-native.js.map +1 -0
- package/dist/resolution/frameworks/react.d.ts +8 -0
- package/dist/resolution/frameworks/react.d.ts.map +1 -0
- package/dist/resolution/frameworks/react.js +365 -0
- package/dist/resolution/frameworks/react.js.map +1 -0
- package/dist/resolution/frameworks/ruby.d.ts +8 -0
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
- package/dist/resolution/frameworks/ruby.js +302 -0
- package/dist/resolution/frameworks/ruby.js.map +1 -0
- package/dist/resolution/frameworks/rust.d.ts +8 -0
- package/dist/resolution/frameworks/rust.d.ts.map +1 -0
- package/dist/resolution/frameworks/rust.js +304 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/svelte.d.ts +9 -0
- package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
- package/dist/resolution/frameworks/svelte.js +249 -0
- package/dist/resolution/frameworks/svelte.js.map +1 -0
- package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
- package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift-objc.js +252 -0
- package/dist/resolution/frameworks/swift-objc.js.map +1 -0
- package/dist/resolution/frameworks/swift.d.ts +10 -0
- package/dist/resolution/frameworks/swift.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift.js +400 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/frameworks/vue.d.ts +9 -0
- package/dist/resolution/frameworks/vue.d.ts.map +1 -0
- package/dist/resolution/frameworks/vue.js +306 -0
- package/dist/resolution/frameworks/vue.js.map +1 -0
- package/dist/resolution/go-module.d.ts +26 -0
- package/dist/resolution/go-module.d.ts.map +1 -0
- package/dist/resolution/go-module.js +78 -0
- package/dist/resolution/go-module.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +68 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +1275 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +117 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +895 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/lru-cache.d.ts +24 -0
- package/dist/resolution/lru-cache.d.ts.map +1 -0
- package/dist/resolution/lru-cache.js +62 -0
- package/dist/resolution/lru-cache.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +32 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +596 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/path-aliases.d.ts +68 -0
- package/dist/resolution/path-aliases.d.ts.map +1 -0
- package/dist/resolution/path-aliases.js +238 -0
- package/dist/resolution/path-aliases.js.map +1 -0
- package/dist/resolution/spec-link-resolver.d.ts +103 -0
- package/dist/resolution/spec-link-resolver.d.ts.map +1 -0
- package/dist/resolution/spec-link-resolver.js +259 -0
- package/dist/resolution/spec-link-resolver.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +27 -0
- package/dist/resolution/strip-comments.d.ts.map +1 -0
- package/dist/resolution/strip-comments.js +441 -0
- package/dist/resolution/strip-comments.js.map +1 -0
- package/dist/resolution/swift-objc-bridge.d.ts +134 -0
- package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
- package/dist/resolution/swift-objc-bridge.js +256 -0
- package/dist/resolution/swift-objc-bridge.js.map +1 -0
- package/dist/resolution/types.d.ts +216 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +8 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/resolution/workspace-packages.d.ts +48 -0
- package/dist/resolution/workspace-packages.d.ts.map +1 -0
- package/dist/resolution/workspace-packages.js +208 -0
- package/dist/resolution/workspace-packages.js.map +1 -0
- package/dist/search/query-parser.d.ts +57 -0
- package/dist/search/query-parser.d.ts.map +1 -0
- package/dist/search/query-parser.js +177 -0
- package/dist/search/query-parser.js.map +1 -0
- package/dist/search/query-utils.d.ts +71 -0
- package/dist/search/query-utils.d.ts.map +1 -0
- package/dist/search/query-utils.js +380 -0
- package/dist/search/query-utils.js.map +1 -0
- package/dist/server/cli.js +152 -0
- package/dist/server/index.js +12 -0
- package/dist/server/ingest/index.js +18 -0
- package/dist/server/ingest/ingestor.js +506 -0
- package/dist/server/ingest/parser.js +104 -0
- package/dist/server/ingest/pricing.js +78 -0
- package/dist/server/ingest/types.js +9 -0
- package/dist/server/ingest/watcher.js +77 -0
- package/dist/server/package.json +3 -0
- package/dist/server/project-registry.js +101 -0
- package/dist/server/routes/claude.js +868 -0
- package/dist/server/routes/graph.js +211 -0
- package/dist/server/routes/memory.js +272 -0
- package/dist/server/routes/projects.js +197 -0
- package/dist/server/routes/spec.js +265 -0
- package/dist/server/routes/status.js +112 -0
- package/dist/server/routes/workflow.js +212 -0
- package/dist/server/server.js +206 -0
- package/dist/server/static-handler.js +87 -0
- package/dist/sync/git-hooks.d.ts +45 -0
- package/dist/sync/git-hooks.d.ts.map +1 -0
- package/dist/sync/git-hooks.js +225 -0
- package/dist/sync/git-hooks.js.map +1 -0
- package/dist/sync/index.d.ts +19 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +35 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/watch-policy.d.ts +48 -0
- package/dist/sync/watch-policy.d.ts.map +1 -0
- package/dist/sync/watch-policy.js +124 -0
- package/dist/sync/watch-policy.js.map +1 -0
- package/dist/sync/watcher.d.ts +283 -0
- package/dist/sync/watcher.d.ts.map +1 -0
- package/dist/sync/watcher.js +606 -0
- package/dist/sync/watcher.js.map +1 -0
- package/dist/sync/worktree.d.ts +54 -0
- package/dist/sync/worktree.d.ts.map +1 -0
- package/dist/sync/worktree.js +137 -0
- package/dist/sync/worktree.js.map +1 -0
- package/dist/types.d.ts +623 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +108 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/glyphs.d.ts +42 -0
- package/dist/ui/glyphs.d.ts.map +1 -0
- package/dist/ui/glyphs.js +78 -0
- package/dist/ui/glyphs.js.map +1 -0
- package/dist/ui/shimmer-progress.d.ts +11 -0
- package/dist/ui/shimmer-progress.d.ts.map +1 -0
- package/dist/ui/shimmer-progress.js +90 -0
- package/dist/ui/shimmer-progress.js.map +1 -0
- package/dist/ui/shimmer-worker.d.ts +2 -0
- package/dist/ui/shimmer-worker.d.ts.map +1 -0
- package/dist/ui/shimmer-worker.js +118 -0
- package/dist/ui/shimmer-worker.js.map +1 -0
- package/dist/ui/types.d.ts +17 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +3 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/utils.d.ts +205 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +549 -0
- package/dist/utils.js.map +1 -0
- package/dist/web/chunk-2AJCHB7P.js +1 -0
- package/dist/web/chunk-2CPLUFCH.js +2 -0
- package/dist/web/chunk-2DHIGIOI.js +1 -0
- package/dist/web/chunk-2GBEK2GM.js +1 -0
- package/dist/web/chunk-2I7L37NS.js +1 -0
- package/dist/web/chunk-2NAWAJB5.js +1 -0
- package/dist/web/chunk-2OJBIPE4.js +1 -0
- package/dist/web/chunk-2OKMB4KX.js +2 -0
- package/dist/web/chunk-3E2WB6D5.js +1 -0
- package/dist/web/chunk-3EBFYSCH.js +2 -0
- package/dist/web/chunk-3QCQ4BXS.js +1 -0
- package/dist/web/chunk-3SEJX2BK.js +1 -0
- package/dist/web/chunk-42XVAQ6I.js +1 -0
- package/dist/web/chunk-4IMMPEYM.js +1 -0
- package/dist/web/chunk-4N5DWG46.js +1 -0
- package/dist/web/chunk-4TJQJPCZ.js +1 -0
- package/dist/web/chunk-4WZIHTPC.js +1 -0
- package/dist/web/chunk-4YVSYOSD.js +1 -0
- package/dist/web/chunk-5BQIOYKW.js +1 -0
- package/dist/web/chunk-5HGWHUJA.js +1 -0
- package/dist/web/chunk-5Y244R4G.js +1 -0
- package/dist/web/chunk-6RRDPT5Z.js +1 -0
- package/dist/web/chunk-6VKB2ZWM.js +1 -0
- package/dist/web/chunk-7DMFVTU4.js +1 -0
- package/dist/web/chunk-7RNS77UP.js +1 -0
- package/dist/web/chunk-7SMPKVEP.js +1 -0
- package/dist/web/chunk-AZJVTPLU.js +1 -0
- package/dist/web/chunk-BCZM5AXU.js +1 -0
- package/dist/web/chunk-BLBRMCN2.js +1 -0
- package/dist/web/chunk-BMIAXD2V.js +2 -0
- package/dist/web/chunk-BPECIDVO.js +1 -0
- package/dist/web/chunk-BUXWEHIY.js +1 -0
- package/dist/web/chunk-BYZFQSM6.js +1 -0
- package/dist/web/chunk-DA6SNNAF.js +1 -0
- package/dist/web/chunk-DLQPZWSI.css +1 -0
- package/dist/web/chunk-DTRN7FZR.js +1 -0
- package/dist/web/chunk-DYRFLPJA.js +1 -0
- package/dist/web/chunk-E3J3CXR5.js +1 -0
- package/dist/web/chunk-E44X4RH2.js +1 -0
- package/dist/web/chunk-E73OX2P7.js +1 -0
- package/dist/web/chunk-EAXRKDLV.js +1 -0
- package/dist/web/chunk-EBKKDHYI.js +1 -0
- package/dist/web/chunk-EE7V7Q5P.js +1 -0
- package/dist/web/chunk-EKY2FUHU.js +1 -0
- package/dist/web/chunk-EMGMOEVR.js +1 -0
- package/dist/web/chunk-EP6XOPXH.js +1 -0
- package/dist/web/chunk-ESGDLJOJ.js +1 -0
- package/dist/web/chunk-ETJG7NCY.js +1 -0
- package/dist/web/chunk-EUUEFEDI.js +1 -0
- package/dist/web/chunk-FGNZDHTL.js +11 -0
- package/dist/web/chunk-FIJW2UNJ.js +1 -0
- package/dist/web/chunk-FMV5PXRC.js +5 -0
- package/dist/web/chunk-G7VZT5KB.js +3 -0
- package/dist/web/chunk-GRZYXPSO.js +7 -0
- package/dist/web/chunk-GYGPS3AN.js +1 -0
- package/dist/web/chunk-H7AF7YS4.js +1 -0
- package/dist/web/chunk-HDZDQILN.js +1 -0
- package/dist/web/chunk-HMK6UO6N.js +1 -0
- package/dist/web/chunk-HZA6NEAB.js +1 -0
- package/dist/web/chunk-IHEE5NYJ.js +1 -0
- package/dist/web/chunk-ISNEBICW.js +1 -0
- package/dist/web/chunk-J2GZVLHH.js +1 -0
- package/dist/web/chunk-JFYVCXK3.js +1 -0
- package/dist/web/chunk-JN6W7HCN.js +17 -0
- package/dist/web/chunk-JT7P3DEK.js +6 -0
- package/dist/web/chunk-JTFXTIPE.js +903 -0
- package/dist/web/chunk-L37MTFSG.js +3 -0
- package/dist/web/chunk-LB6JPLX2.js +1 -0
- package/dist/web/chunk-LNSVDHCI.js +1 -0
- package/dist/web/chunk-LV4G6QFG.js +2 -0
- package/dist/web/chunk-LVGIY3SO.js +1 -0
- package/dist/web/chunk-LXLHIHEN.js +1 -0
- package/dist/web/chunk-MC4DFIHG.js +1 -0
- package/dist/web/chunk-MVOMVPYB.js +1 -0
- package/dist/web/chunk-N6SS4G6S.js +1 -0
- package/dist/web/chunk-NTBJG6SJ.js +1 -0
- package/dist/web/chunk-NUDB3Q2Y.js +3 -0
- package/dist/web/chunk-OXEF5E3E.js +1 -0
- package/dist/web/chunk-PDN6QYGJ.js +4 -0
- package/dist/web/chunk-PGGJPDJG.js +1 -0
- package/dist/web/chunk-PUYSJNJR.js +1 -0
- package/dist/web/chunk-Q2RVFS45.js +1 -0
- package/dist/web/chunk-Q7L6LLAK.js +1 -0
- package/dist/web/chunk-QCMKJIWY.js +1 -0
- package/dist/web/chunk-QH6CF3M3.js +1 -0
- package/dist/web/chunk-QQ5LD7PI.js +1 -0
- package/dist/web/chunk-QR6L3KAC.js +1 -0
- package/dist/web/chunk-R2DLK4HO.js +1 -0
- package/dist/web/chunk-R5W2MDZN.js +1 -0
- package/dist/web/chunk-RAAMPHPJ.js +1 -0
- package/dist/web/chunk-RD6TVPOT.js +1 -0
- package/dist/web/chunk-RKY4EJYJ.js +1 -0
- package/dist/web/chunk-RONYWVY7.js +1 -0
- package/dist/web/chunk-RXKXYF2C.js +1 -0
- package/dist/web/chunk-SBWU7JFC.js +1 -0
- package/dist/web/chunk-SEXBRGYK.js +1 -0
- package/dist/web/chunk-SHPTC4RL.js +1 -0
- package/dist/web/chunk-SUZYBYDW.js +1 -0
- package/dist/web/chunk-SWKJRNYY.js +1 -0
- package/dist/web/chunk-T66XVKGB.js +1 -0
- package/dist/web/chunk-T7AZ65JP.js +1 -0
- package/dist/web/chunk-TCZDVOHD.js +1 -0
- package/dist/web/chunk-TPTITA3V.js +1 -0
- package/dist/web/chunk-TR335633.js +1 -0
- package/dist/web/chunk-TWXZK6XM.js +1 -0
- package/dist/web/chunk-UR5KDXPX.js +1 -0
- package/dist/web/chunk-UR6O2GEH.js +1 -0
- package/dist/web/chunk-UTNMGWTP.js +1 -0
- package/dist/web/chunk-UYC52MBC.js +1 -0
- package/dist/web/chunk-VECWMHJP.js +1 -0
- package/dist/web/chunk-VUACT35R.js +3 -0
- package/dist/web/chunk-VZI7H4SZ.js +1 -0
- package/dist/web/chunk-WAI2JMZP.js +1 -0
- package/dist/web/chunk-WB6YHOD4.js +1 -0
- package/dist/web/chunk-WBT64AWV.js +1 -0
- package/dist/web/chunk-WDU3WICG.js +1 -0
- package/dist/web/chunk-WFXJIXZE.js +4 -0
- package/dist/web/chunk-WTGYRH3Z.js +298 -0
- package/dist/web/chunk-WXTCVDTP.js +1 -0
- package/dist/web/chunk-X2HTISHL.js +1 -0
- package/dist/web/chunk-XCDHWLVH.js +1 -0
- package/dist/web/chunk-Y3H6FFUZ.js +1 -0
- package/dist/web/chunk-Y4F5ULGJ.js +1 -0
- package/dist/web/chunk-YAWCRPHV.js +1 -0
- package/dist/web/chunk-YEGKAAEE.js +1 -0
- package/dist/web/chunk-YM2KU57F.js +1 -0
- package/dist/web/chunk-YRERBP6T.js +1 -0
- package/dist/web/chunk-ZLV4VCDG.js +3 -0
- package/dist/web/chunk-ZTVI5KFF.js +1 -0
- package/dist/web/favicon-16.png +0 -0
- package/dist/web/favicon-180.png +0 -0
- package/dist/web/favicon-32.png +0 -0
- package/dist/web/favicon-512.png +0 -0
- package/dist/web/favicon-small.svg +15 -0
- package/dist/web/favicon.ico +0 -0
- package/dist/web/favicon.svg +20 -0
- package/dist/web/index.html +145 -0
- package/dist/web/main-ESADRXN2.css +1 -0
- package/dist/web/main-WVI3YTDU.js +1 -0
- package/dist/web/media/codicon-LN6W7LCM.ttf +0 -0
- package/dist/web/styles-KSOPUVDA.css +1 -0
- package/dist/workflows/condition-evaluator.d.ts +75 -0
- package/dist/workflows/condition-evaluator.d.ts.map +1 -0
- package/dist/workflows/condition-evaluator.js +282 -0
- package/dist/workflows/condition-evaluator.js.map +1 -0
- package/dist/workflows/defaults/claude-design-implement.yaml +247 -0
- package/dist/workflows/defaults/index.d.ts +26 -0
- package/dist/workflows/defaults/index.d.ts.map +1 -0
- package/dist/workflows/defaults/index.js +94 -0
- package/dist/workflows/defaults/index.js.map +1 -0
- package/dist/workflows/defaults/spec-author.yaml +214 -0
- package/dist/workflows/defaults/spec-fix.yaml +110 -0
- package/dist/workflows/defaults/spec-implement.yaml +150 -0
- package/dist/workflows/defaults/spec-relink.yaml +81 -0
- package/dist/workflows/defaults/spec-verify.yaml +51 -0
- package/dist/workflows/discovery.d.ts +46 -0
- package/dist/workflows/discovery.d.ts.map +1 -0
- package/dist/workflows/discovery.js +193 -0
- package/dist/workflows/discovery.js.map +1 -0
- package/dist/workflows/executor.d.ts +83 -0
- package/dist/workflows/executor.d.ts.map +1 -0
- package/dist/workflows/executor.js +624 -0
- package/dist/workflows/executor.js.map +1 -0
- package/dist/workflows/runners/approval.d.ts +18 -0
- package/dist/workflows/runners/approval.d.ts.map +1 -0
- package/dist/workflows/runners/approval.js +34 -0
- package/dist/workflows/runners/approval.js.map +1 -0
- package/dist/workflows/runners/bash.d.ts +13 -0
- package/dist/workflows/runners/bash.d.ts.map +1 -0
- package/dist/workflows/runners/bash.js +143 -0
- package/dist/workflows/runners/bash.js.map +1 -0
- package/dist/workflows/runners/cancel.d.ts +10 -0
- package/dist/workflows/runners/cancel.d.ts.map +1 -0
- package/dist/workflows/runners/cancel.js +19 -0
- package/dist/workflows/runners/cancel.js.map +1 -0
- package/dist/workflows/runners/prompt.d.ts +28 -0
- package/dist/workflows/runners/prompt.d.ts.map +1 -0
- package/dist/workflows/runners/prompt.js +212 -0
- package/dist/workflows/runners/prompt.js.map +1 -0
- package/dist/workflows/runners/script.d.ts +17 -0
- package/dist/workflows/runners/script.d.ts.map +1 -0
- package/dist/workflows/runners/script.js +155 -0
- package/dist/workflows/runners/script.js.map +1 -0
- package/dist/workflows/runners/types.d.ts +51 -0
- package/dist/workflows/runners/types.d.ts.map +1 -0
- package/dist/workflows/runners/types.js +13 -0
- package/dist/workflows/runners/types.js.map +1 -0
- package/dist/workflows/schemas/workflow.d.ts +166 -0
- package/dist/workflows/schemas/workflow.d.ts.map +1 -0
- package/dist/workflows/schemas/workflow.js +437 -0
- package/dist/workflows/schemas/workflow.js.map +1 -0
- package/package.json +1 -1
- package/scripts/offline-install.sh +19 -6
- /package/commands/{cg-explore.md → ss-explore.md} +0 -0
- /package/commands/{cg-impact.md → ss-impact.md} +0 -0
- /package/commands/{cg-relink.md → ss-relink.md} +0 -0
- /package/commands/{cg-spec.md → ss-spec.md} +0 -0
- /package/commands/{cg-sync.md → ss-sync.md} +0 -0
- /package/commands/{cg-trace.md → ss-trace.md} +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Generated-file detection for symbol-disambiguation down-ranking.
|
|
4
|
+
*
|
|
5
|
+
* When a query like "Send" matches 17 symbols across protobuf scaffolding,
|
|
6
|
+
* test mocks, and the hand-written implementation, the FTS ranker often
|
|
7
|
+
* surfaces the generated stubs first because their names are identical
|
|
8
|
+
* to the implementation's name (validated empirically on cosmos-sdk —
|
|
9
|
+
* see project_go_multi_module_audit memory). Generated stubs frequently
|
|
10
|
+
* have no body to trace from, so the agent ends up reading source anyway.
|
|
11
|
+
*
|
|
12
|
+
* This helper is a pure path-based classifier consulted at disambiguation
|
|
13
|
+
* time (findSymbol / findAllSymbols / specship_search formatting), NOT
|
|
14
|
+
* a hard filter — generated nodes are still in the graph and remain
|
|
15
|
+
* reachable; they just rank LAST when there's a real implementation
|
|
16
|
+
* with the same name.
|
|
17
|
+
*
|
|
18
|
+
* Scope: suffix patterns only. Most generated files follow the
|
|
19
|
+
* `<basename>.<tool>.<ext>` convention (`.pb.go`, `_grpc.pb.go`,
|
|
20
|
+
* `.g.dart`, `_pb2.py`), and that covers ~all of what we saw in the
|
|
21
|
+
* Go audit. A future addition would be scanning for the canonical
|
|
22
|
+
* `// Code generated by` header during extraction, for the rare files
|
|
23
|
+
* that defy the suffix convention.
|
|
24
|
+
*/
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.isGeneratedFile = isGeneratedFile;
|
|
27
|
+
const GENERATED_PATTERNS = [
|
|
28
|
+
// Go — protobuf / gRPC / pulsar
|
|
29
|
+
/\.pb\.go$/,
|
|
30
|
+
/\.pulsar\.go$/,
|
|
31
|
+
/_grpc\.pb\.go$/,
|
|
32
|
+
// Go — mockgen output. Default emits `mock_<src>.go`; many projects
|
|
33
|
+
// (cosmos-sdk uses `expected_*_mocks.go`) rename to `*_mock.go` /
|
|
34
|
+
// `*_mocks.go`. Matching either suffix catches both conventions
|
|
35
|
+
// without false-positive risk on hand-written sources.
|
|
36
|
+
/_mock\.go$/,
|
|
37
|
+
/_mocks\.go$/,
|
|
38
|
+
/^mock_[^/]+\.go$/,
|
|
39
|
+
// TypeScript / JavaScript — common codegen suffixes (Apollo / GraphQL
|
|
40
|
+
// codegen, Prisma, Hasura, ts-proto, gRPC-web, swagger-codegen).
|
|
41
|
+
/\.generated\.[jt]sx?$/,
|
|
42
|
+
/\.gen\.[jt]sx?$/,
|
|
43
|
+
/\.pb\.[jt]s$/,
|
|
44
|
+
/_pb\.[jt]s$/,
|
|
45
|
+
/_grpc_pb\.[jt]s$/,
|
|
46
|
+
// Python — protobuf / gRPC / openapi-codegen
|
|
47
|
+
/_pb2(_grpc)?\.py$/,
|
|
48
|
+
/_pb2\.pyi$/,
|
|
49
|
+
// C++ — protobuf
|
|
50
|
+
/\.pb\.(cc|h)$/,
|
|
51
|
+
// C# — protobuf / gRPC (protoc-gen-csharp puts output under obj/ but
|
|
52
|
+
// many projects also commit *.g.cs and *Grpc.cs siblings)
|
|
53
|
+
/\.g\.cs$/,
|
|
54
|
+
/Grpc\.cs$/,
|
|
55
|
+
// Java — protobuf / gRPC: protoc-gen-java emits `*OuterClass.java`,
|
|
56
|
+
// protoc-gen-grpc-java emits `*Grpc.java`. The XxxImplBase abstract
|
|
57
|
+
// class lives inside Xxx*Grpc.java.
|
|
58
|
+
/OuterClass\.java$/,
|
|
59
|
+
/Grpc\.java$/,
|
|
60
|
+
// Swift — protobuf
|
|
61
|
+
/\.pb\.swift$/,
|
|
62
|
+
// Dart — build_runner / freezed / json_serializable / chopper
|
|
63
|
+
/\.g\.dart$/,
|
|
64
|
+
/\.freezed\.dart$/,
|
|
65
|
+
/\.pb\.dart$/,
|
|
66
|
+
/\.pbgrpc\.dart$/,
|
|
67
|
+
/\.chopper\.dart$/,
|
|
68
|
+
// Rust — common build.rs OUT_DIR outputs are usually outside the source
|
|
69
|
+
// tree, but in-tree generated files often use `*.generated.rs`.
|
|
70
|
+
/\.generated\.rs$/,
|
|
71
|
+
];
|
|
72
|
+
/**
|
|
73
|
+
* Whether `filePath` looks like a tool-generated source file based on
|
|
74
|
+
* its filename. Path-only — does not read content. The result is a
|
|
75
|
+
* relevance hint for disambiguation, not a hard claim.
|
|
76
|
+
*/
|
|
77
|
+
function isGeneratedFile(filePath) {
|
|
78
|
+
return GENERATED_PATTERNS.some((p) => p.test(filePath));
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=generated-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-detection.js","sourceRoot":"","sources":["../../src/extraction/generated-detection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;AAqDH,0CAEC;AArDD,MAAM,kBAAkB,GAA0B;IAChD,gCAAgC;IAChC,WAAW;IACX,eAAe;IACf,gBAAgB;IAChB,oEAAoE;IACpE,kEAAkE;IAClE,gEAAgE;IAChE,uDAAuD;IACvD,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,sEAAsE;IACtE,iEAAiE;IACjE,uBAAuB;IACvB,iBAAiB;IACjB,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,6CAA6C;IAC7C,mBAAmB;IACnB,YAAY;IACZ,iBAAiB;IACjB,eAAe;IACf,qEAAqE;IACrE,0DAA0D;IAC1D,UAAU;IACV,WAAW;IACX,oEAAoE;IACpE,oEAAoE;IACpE,oCAAoC;IACpC,mBAAmB;IACnB,aAAa;IACb,mBAAmB;IACnB,cAAc;IACd,8DAA8D;IAC9D,YAAY;IACZ,kBAAkB;IAClB,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB,wEAAwE;IACxE,gEAAgE;IAChE,kBAAkB;CACnB,CAAC;AAEF;;;;GAIG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grammar Loading and Caching
|
|
3
|
+
*
|
|
4
|
+
* Uses web-tree-sitter (WASM) for universal cross-platform support.
|
|
5
|
+
* Grammars are loaded lazily — only languages actually present in the project
|
|
6
|
+
* are compiled, keeping V8 WASM memory pressure low on large codebases.
|
|
7
|
+
*/
|
|
8
|
+
import { Parser } from 'web-tree-sitter';
|
|
9
|
+
import { Language } from '../types';
|
|
10
|
+
export type GrammarLanguage = Exclude<Language, 'svelte' | 'vue' | 'liquid' | 'yaml' | 'twig' | 'xml' | 'properties' | 'unknown'>;
|
|
11
|
+
/**
|
|
12
|
+
* File extension to Language mapping
|
|
13
|
+
*/
|
|
14
|
+
export declare const EXTENSION_MAP: Record<string, Language>;
|
|
15
|
+
/**
|
|
16
|
+
* Whether a file is one SpecShip can parse, based purely on its extension.
|
|
17
|
+
* This is the single source of truth for "should we index this file" — derived
|
|
18
|
+
* from EXTENSION_MAP so parser support and indexing selection never drift.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isSourceFile(filePath: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Play Framework routes file: the extensionless `conf/routes` (and included
|
|
23
|
+
* `conf/*.routes`). No grammar — route extraction is done by the Play framework
|
|
24
|
+
* resolver, so it's processed through the no-grammar (`yaml`-style) path.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isPlayRoutesFile(filePath: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Initialize the tree-sitter WASM runtime. Must be called before loading grammars.
|
|
29
|
+
* Does NOT load any grammar WASM files — use loadGrammarsForLanguages() for that.
|
|
30
|
+
* Idempotent — safe to call multiple times.
|
|
31
|
+
*/
|
|
32
|
+
export declare function initGrammars(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Load grammar WASM files for specific languages only.
|
|
35
|
+
* Skips languages that are already loaded or have no WASM grammar.
|
|
36
|
+
* Must be called after initGrammars().
|
|
37
|
+
*/
|
|
38
|
+
export declare function loadGrammarsForLanguages(languages: Language[]): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Load ALL grammar WASM files. Convenience function for tests and
|
|
41
|
+
* backward compatibility. Prefer loadGrammarsForLanguages() in production.
|
|
42
|
+
*/
|
|
43
|
+
export declare function loadAllGrammars(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Check if grammars have been initialized
|
|
46
|
+
*/
|
|
47
|
+
export declare function isGrammarsInitialized(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Get a parser for the specified language.
|
|
50
|
+
* Returns synchronously from pre-loaded cache.
|
|
51
|
+
*/
|
|
52
|
+
export declare function getParser(language: Language): Parser | null;
|
|
53
|
+
/**
|
|
54
|
+
* Detect language from file extension
|
|
55
|
+
*/
|
|
56
|
+
export declare function detectLanguage(filePath: string, source?: string): Language;
|
|
57
|
+
/**
|
|
58
|
+
* Check if a language is supported (has a grammar defined).
|
|
59
|
+
* Returns true if the grammar exists, even if not yet loaded.
|
|
60
|
+
*/
|
|
61
|
+
export declare function isLanguageSupported(language: Language): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Check if a grammar has been loaded and is ready for parsing.
|
|
64
|
+
*/
|
|
65
|
+
export declare function isGrammarLoaded(language: Language): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Languages tracked at the file-record level only: parsing emits zero symbol
|
|
68
|
+
* nodes, but the file is still stored (and framework resolvers may add per-file
|
|
69
|
+
* references later, e.g. Drupal routing yml, Spring `@Value` against
|
|
70
|
+
* application.properties). This is the canonical set behind the no-symbol
|
|
71
|
+
* branch in `tree-sitter.ts`; `xml` is intentionally excluded because its
|
|
72
|
+
* MyBatis extractor emits a file node. Callers use this to count such files as
|
|
73
|
+
* indexed rather than skipped, so it must stay in sync with that branch.
|
|
74
|
+
*/
|
|
75
|
+
export declare function isFileLevelOnlyLanguage(language: Language): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Get all supported languages (those with grammar definitions).
|
|
78
|
+
*/
|
|
79
|
+
export declare function getSupportedLanguages(): Language[];
|
|
80
|
+
/**
|
|
81
|
+
* Reset the cached parser for a language to reclaim WASM heap memory.
|
|
82
|
+
* The tree-sitter WASM runtime accumulates fragmented memory over thousands
|
|
83
|
+
* of parses. Deleting and recreating the Parser instance forces the WASM
|
|
84
|
+
* heap to reset, preventing "memory access out of bounds" crashes in
|
|
85
|
+
* large repos.
|
|
86
|
+
*/
|
|
87
|
+
export declare function resetParser(language: Language): void;
|
|
88
|
+
/**
|
|
89
|
+
* Clear parser/grammar caches (useful for testing)
|
|
90
|
+
*/
|
|
91
|
+
export declare function clearParserCache(): void;
|
|
92
|
+
/**
|
|
93
|
+
* Report grammars that failed to load.
|
|
94
|
+
*/
|
|
95
|
+
export declare function getUnavailableGrammarErrors(): Partial<Record<Language, string>>;
|
|
96
|
+
/**
|
|
97
|
+
* Get language display name
|
|
98
|
+
*/
|
|
99
|
+
export declare function getLanguageDisplayName(language: Language): string;
|
|
100
|
+
//# sourceMappingURL=grammars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grammars.d.ts","sourceRoot":"","sources":["../../src/extraction/grammars.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,MAAM,EAA4B,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,SAAS,CAAC,CAAC;AA8BlI;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAiElD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKtD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAM1D;AAWD;;;;GAIG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAMlD;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCnF;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAGrD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAc3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAc1E;AAmBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAU/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAK3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,EAAE,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAMpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAQvC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAM/E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAiCjE"}
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Grammar Loading and Caching
|
|
4
|
+
*
|
|
5
|
+
* Uses web-tree-sitter (WASM) for universal cross-platform support.
|
|
6
|
+
* Grammars are loaded lazily — only languages actually present in the project
|
|
7
|
+
* are compiled, keeping V8 WASM memory pressure low on large codebases.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.EXTENSION_MAP = void 0;
|
|
44
|
+
exports.isSourceFile = isSourceFile;
|
|
45
|
+
exports.isPlayRoutesFile = isPlayRoutesFile;
|
|
46
|
+
exports.initGrammars = initGrammars;
|
|
47
|
+
exports.loadGrammarsForLanguages = loadGrammarsForLanguages;
|
|
48
|
+
exports.loadAllGrammars = loadAllGrammars;
|
|
49
|
+
exports.isGrammarsInitialized = isGrammarsInitialized;
|
|
50
|
+
exports.getParser = getParser;
|
|
51
|
+
exports.detectLanguage = detectLanguage;
|
|
52
|
+
exports.isLanguageSupported = isLanguageSupported;
|
|
53
|
+
exports.isGrammarLoaded = isGrammarLoaded;
|
|
54
|
+
exports.isFileLevelOnlyLanguage = isFileLevelOnlyLanguage;
|
|
55
|
+
exports.getSupportedLanguages = getSupportedLanguages;
|
|
56
|
+
exports.resetParser = resetParser;
|
|
57
|
+
exports.clearParserCache = clearParserCache;
|
|
58
|
+
exports.getUnavailableGrammarErrors = getUnavailableGrammarErrors;
|
|
59
|
+
exports.getLanguageDisplayName = getLanguageDisplayName;
|
|
60
|
+
const path = __importStar(require("path"));
|
|
61
|
+
const web_tree_sitter_1 = require("web-tree-sitter");
|
|
62
|
+
/**
|
|
63
|
+
* WASM filename map — maps each language to its .wasm grammar file
|
|
64
|
+
* in the tree-sitter-wasms package.
|
|
65
|
+
*/
|
|
66
|
+
const WASM_GRAMMAR_FILES = {
|
|
67
|
+
typescript: 'tree-sitter-typescript.wasm',
|
|
68
|
+
tsx: 'tree-sitter-tsx.wasm',
|
|
69
|
+
javascript: 'tree-sitter-javascript.wasm',
|
|
70
|
+
jsx: 'tree-sitter-javascript.wasm',
|
|
71
|
+
python: 'tree-sitter-python.wasm',
|
|
72
|
+
go: 'tree-sitter-go.wasm',
|
|
73
|
+
rust: 'tree-sitter-rust.wasm',
|
|
74
|
+
java: 'tree-sitter-java.wasm',
|
|
75
|
+
c: 'tree-sitter-c.wasm',
|
|
76
|
+
cpp: 'tree-sitter-cpp.wasm',
|
|
77
|
+
csharp: 'tree-sitter-c_sharp.wasm',
|
|
78
|
+
php: 'tree-sitter-php.wasm',
|
|
79
|
+
ruby: 'tree-sitter-ruby.wasm',
|
|
80
|
+
swift: 'tree-sitter-swift.wasm',
|
|
81
|
+
kotlin: 'tree-sitter-kotlin.wasm',
|
|
82
|
+
dart: 'tree-sitter-dart.wasm',
|
|
83
|
+
pascal: 'tree-sitter-pascal.wasm',
|
|
84
|
+
scala: 'tree-sitter-scala.wasm',
|
|
85
|
+
lua: 'tree-sitter-lua.wasm',
|
|
86
|
+
luau: 'tree-sitter-luau.wasm',
|
|
87
|
+
objc: 'tree-sitter-objc.wasm',
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* File extension to Language mapping
|
|
91
|
+
*/
|
|
92
|
+
exports.EXTENSION_MAP = {
|
|
93
|
+
'.ts': 'typescript',
|
|
94
|
+
'.tsx': 'tsx',
|
|
95
|
+
// ESM/CJS TypeScript module extensions — parsed as TS (no JSX). (#366)
|
|
96
|
+
'.mts': 'typescript',
|
|
97
|
+
'.cts': 'typescript',
|
|
98
|
+
'.js': 'javascript',
|
|
99
|
+
'.mjs': 'javascript',
|
|
100
|
+
'.cjs': 'javascript',
|
|
101
|
+
// SAP HANA XS Classic server-side JavaScript. (#556)
|
|
102
|
+
'.xsjs': 'javascript',
|
|
103
|
+
'.xsjslib': 'javascript',
|
|
104
|
+
'.jsx': 'jsx',
|
|
105
|
+
'.py': 'python',
|
|
106
|
+
'.pyw': 'python',
|
|
107
|
+
'.go': 'go',
|
|
108
|
+
'.rs': 'rust',
|
|
109
|
+
'.java': 'java',
|
|
110
|
+
'.c': 'c',
|
|
111
|
+
'.h': 'c', // Could also be C++, defaulting to C
|
|
112
|
+
'.cpp': 'cpp',
|
|
113
|
+
'.cc': 'cpp',
|
|
114
|
+
'.cxx': 'cpp',
|
|
115
|
+
'.hpp': 'cpp',
|
|
116
|
+
'.hxx': 'cpp',
|
|
117
|
+
'.cs': 'csharp',
|
|
118
|
+
'.php': 'php',
|
|
119
|
+
// Drupal-specific PHP file extensions
|
|
120
|
+
'.module': 'php',
|
|
121
|
+
'.install': 'php',
|
|
122
|
+
'.theme': 'php',
|
|
123
|
+
'.inc': 'php',
|
|
124
|
+
// YAML (used for Drupal routing files; no symbol extraction, file-level tracking only)
|
|
125
|
+
'.yml': 'yaml',
|
|
126
|
+
'.yaml': 'yaml',
|
|
127
|
+
// Twig templates (file-level tracking only, no symbol extraction)
|
|
128
|
+
'.twig': 'twig',
|
|
129
|
+
'.rb': 'ruby',
|
|
130
|
+
'.rake': 'ruby',
|
|
131
|
+
'.swift': 'swift',
|
|
132
|
+
'.kt': 'kotlin',
|
|
133
|
+
'.kts': 'kotlin',
|
|
134
|
+
'.dart': 'dart',
|
|
135
|
+
'.liquid': 'liquid',
|
|
136
|
+
'.svelte': 'svelte',
|
|
137
|
+
'.vue': 'vue',
|
|
138
|
+
'.pas': 'pascal',
|
|
139
|
+
'.dpr': 'pascal',
|
|
140
|
+
'.dpk': 'pascal',
|
|
141
|
+
'.lpr': 'pascal',
|
|
142
|
+
'.dfm': 'pascal',
|
|
143
|
+
'.fmx': 'pascal',
|
|
144
|
+
'.scala': 'scala',
|
|
145
|
+
'.sc': 'scala',
|
|
146
|
+
'.lua': 'lua',
|
|
147
|
+
'.luau': 'luau',
|
|
148
|
+
'.m': 'objc',
|
|
149
|
+
'.mm': 'objc',
|
|
150
|
+
// XML: file-level tracking; the MyBatis extractor matches `<mapper namespace="...">`
|
|
151
|
+
// shape and emits SQL-statement nodes (other XML returns empty).
|
|
152
|
+
'.xml': 'xml',
|
|
153
|
+
// Spring config: `application.properties` / `application-*.properties`. Same
|
|
154
|
+
// shape as the `.yml` variants — the YAML/properties extractor emits one node
|
|
155
|
+
// per leaf key, and the Spring resolver links `@Value("${k}")` references.
|
|
156
|
+
'.properties': 'properties',
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Whether a file is one SpecShip can parse, based purely on its extension.
|
|
160
|
+
* This is the single source of truth for "should we index this file" — derived
|
|
161
|
+
* from EXTENSION_MAP so parser support and indexing selection never drift.
|
|
162
|
+
*/
|
|
163
|
+
function isSourceFile(filePath) {
|
|
164
|
+
if (isPlayRoutesFile(filePath))
|
|
165
|
+
return true; // Play `conf/routes` is extensionless
|
|
166
|
+
const dot = filePath.lastIndexOf('.');
|
|
167
|
+
if (dot < 0)
|
|
168
|
+
return false;
|
|
169
|
+
return filePath.slice(dot).toLowerCase() in exports.EXTENSION_MAP;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Play Framework routes file: the extensionless `conf/routes` (and included
|
|
173
|
+
* `conf/*.routes`). No grammar — route extraction is done by the Play framework
|
|
174
|
+
* resolver, so it's processed through the no-grammar (`yaml`-style) path.
|
|
175
|
+
*/
|
|
176
|
+
function isPlayRoutesFile(filePath) {
|
|
177
|
+
return (filePath === 'conf/routes' ||
|
|
178
|
+
filePath.endsWith('/conf/routes') ||
|
|
179
|
+
filePath.endsWith('.routes'));
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Caches for loaded grammars and parsers
|
|
183
|
+
*/
|
|
184
|
+
const parserCache = new Map();
|
|
185
|
+
const languageCache = new Map();
|
|
186
|
+
const unavailableGrammarErrors = new Map();
|
|
187
|
+
let parserInitialized = false;
|
|
188
|
+
/**
|
|
189
|
+
* Initialize the tree-sitter WASM runtime. Must be called before loading grammars.
|
|
190
|
+
* Does NOT load any grammar WASM files — use loadGrammarsForLanguages() for that.
|
|
191
|
+
* Idempotent — safe to call multiple times.
|
|
192
|
+
*/
|
|
193
|
+
async function initGrammars() {
|
|
194
|
+
if (parserInitialized)
|
|
195
|
+
return;
|
|
196
|
+
await web_tree_sitter_1.Parser.init();
|
|
197
|
+
parserInitialized = true;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Load grammar WASM files for specific languages only.
|
|
201
|
+
* Skips languages that are already loaded or have no WASM grammar.
|
|
202
|
+
* Must be called after initGrammars().
|
|
203
|
+
*/
|
|
204
|
+
async function loadGrammarsForLanguages(languages) {
|
|
205
|
+
if (!parserInitialized) {
|
|
206
|
+
await initGrammars();
|
|
207
|
+
}
|
|
208
|
+
// Deduplicate and filter to languages that have WASM grammars and aren't already loaded
|
|
209
|
+
const toLoad = [...new Set(languages)].filter((lang) => lang in WASM_GRAMMAR_FILES &&
|
|
210
|
+
!languageCache.has(lang) &&
|
|
211
|
+
!unavailableGrammarErrors.has(lang));
|
|
212
|
+
// Load grammars sequentially to avoid web-tree-sitter WASM race condition on Node 20+
|
|
213
|
+
// See: https://github.com/tree-sitter/tree-sitter/issues/2338
|
|
214
|
+
for (const lang of toLoad) {
|
|
215
|
+
const wasmFile = WASM_GRAMMAR_FILES[lang];
|
|
216
|
+
try {
|
|
217
|
+
// Some grammars ship their own WASMs (not in tree-sitter-wasms, or the
|
|
218
|
+
// tree-sitter-wasms build is too old). Lua: tree-sitter-wasms ships an
|
|
219
|
+
// ABI-13 build that corrupts the shared WASM heap under web-tree-sitter
|
|
220
|
+
// 0.25 (drops nested calls/imports on every file after the first); we
|
|
221
|
+
// vendor the upstream ABI-15 wasm instead.
|
|
222
|
+
const wasmPath = (lang === 'pascal' || lang === 'scala' || lang === 'lua' || lang === 'luau')
|
|
223
|
+
? path.join(__dirname, 'wasm', wasmFile)
|
|
224
|
+
: require.resolve(`tree-sitter-wasms/out/${wasmFile}`);
|
|
225
|
+
const language = await web_tree_sitter_1.Language.load(wasmPath);
|
|
226
|
+
languageCache.set(lang, language);
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
230
|
+
console.warn(`[SpecShip] Failed to load ${lang} grammar — parsing will be unavailable: ${message}`);
|
|
231
|
+
unavailableGrammarErrors.set(lang, message);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Load ALL grammar WASM files. Convenience function for tests and
|
|
237
|
+
* backward compatibility. Prefer loadGrammarsForLanguages() in production.
|
|
238
|
+
*/
|
|
239
|
+
async function loadAllGrammars() {
|
|
240
|
+
const allLanguages = Object.keys(WASM_GRAMMAR_FILES);
|
|
241
|
+
await loadGrammarsForLanguages(allLanguages);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Check if grammars have been initialized
|
|
245
|
+
*/
|
|
246
|
+
function isGrammarsInitialized() {
|
|
247
|
+
return parserInitialized;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get a parser for the specified language.
|
|
251
|
+
* Returns synchronously from pre-loaded cache.
|
|
252
|
+
*/
|
|
253
|
+
function getParser(language) {
|
|
254
|
+
if (parserCache.has(language)) {
|
|
255
|
+
return parserCache.get(language);
|
|
256
|
+
}
|
|
257
|
+
const lang = languageCache.get(language);
|
|
258
|
+
if (!lang) {
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
const parser = new web_tree_sitter_1.Parser();
|
|
262
|
+
parser.setLanguage(lang);
|
|
263
|
+
parserCache.set(language, parser);
|
|
264
|
+
return parser;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Detect language from file extension
|
|
268
|
+
*/
|
|
269
|
+
function detectLanguage(filePath, source) {
|
|
270
|
+
// Play `conf/routes` has no grammar — route through the no-symbol path; the
|
|
271
|
+
// Play framework resolver extracts route nodes from it.
|
|
272
|
+
if (isPlayRoutesFile(filePath))
|
|
273
|
+
return 'yaml';
|
|
274
|
+
const ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase();
|
|
275
|
+
const lang = exports.EXTENSION_MAP[ext] || 'unknown';
|
|
276
|
+
// .h files could be C, C++, or Objective-C — check source content
|
|
277
|
+
if (lang === 'c' && ext === '.h' && source) {
|
|
278
|
+
if (looksLikeCpp(source))
|
|
279
|
+
return 'cpp';
|
|
280
|
+
if (looksLikeObjc(source))
|
|
281
|
+
return 'objc';
|
|
282
|
+
}
|
|
283
|
+
return lang;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Heuristic: does a .h file contain C++ constructs?
|
|
287
|
+
* Checks the first ~8KB for patterns that are unique to C++ and never valid C.
|
|
288
|
+
*/
|
|
289
|
+
function looksLikeCpp(source) {
|
|
290
|
+
const sample = source.substring(0, 8192);
|
|
291
|
+
return /\bnamespace\b|\bclass\s+\w+\s*[:{]|\btemplate\s*<|\b(?:public|private|protected)\s*:|\bvirtual\b|\busing\s+(?:namespace\b|\w+\s*=)/.test(sample);
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Heuristic: does a .h file contain Objective-C constructs?
|
|
295
|
+
*/
|
|
296
|
+
function looksLikeObjc(source) {
|
|
297
|
+
const sample = source.substring(0, 8192);
|
|
298
|
+
return /@(?:interface|implementation|protocol|synthesize)\b/.test(sample);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Check if a language is supported (has a grammar defined).
|
|
302
|
+
* Returns true if the grammar exists, even if not yet loaded.
|
|
303
|
+
*/
|
|
304
|
+
function isLanguageSupported(language) {
|
|
305
|
+
if (language === 'svelte')
|
|
306
|
+
return true; // custom extractor (script block delegation)
|
|
307
|
+
if (language === 'vue')
|
|
308
|
+
return true; // custom extractor (script block delegation)
|
|
309
|
+
if (language === 'liquid')
|
|
310
|
+
return true; // custom regex extractor
|
|
311
|
+
if (language === 'yaml')
|
|
312
|
+
return true; // file-level tracking only; Drupal routing extraction via framework resolver
|
|
313
|
+
if (language === 'twig')
|
|
314
|
+
return true; // file-level tracking only
|
|
315
|
+
if (language === 'xml')
|
|
316
|
+
return true; // MyBatis mapper extractor
|
|
317
|
+
if (language === 'properties')
|
|
318
|
+
return true; // Spring config keys
|
|
319
|
+
if (language === 'unknown')
|
|
320
|
+
return false;
|
|
321
|
+
return language in WASM_GRAMMAR_FILES;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Check if a grammar has been loaded and is ready for parsing.
|
|
325
|
+
*/
|
|
326
|
+
function isGrammarLoaded(language) {
|
|
327
|
+
if (language === 'svelte' || language === 'vue' || language === 'liquid')
|
|
328
|
+
return true;
|
|
329
|
+
if (language === 'yaml' || language === 'twig')
|
|
330
|
+
return true; // no WASM grammar needed
|
|
331
|
+
if (language === 'xml' || language === 'properties')
|
|
332
|
+
return true; // no WASM grammar needed
|
|
333
|
+
return languageCache.has(language);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Languages tracked at the file-record level only: parsing emits zero symbol
|
|
337
|
+
* nodes, but the file is still stored (and framework resolvers may add per-file
|
|
338
|
+
* references later, e.g. Drupal routing yml, Spring `@Value` against
|
|
339
|
+
* application.properties). This is the canonical set behind the no-symbol
|
|
340
|
+
* branch in `tree-sitter.ts`; `xml` is intentionally excluded because its
|
|
341
|
+
* MyBatis extractor emits a file node. Callers use this to count such files as
|
|
342
|
+
* indexed rather than skipped, so it must stay in sync with that branch.
|
|
343
|
+
*/
|
|
344
|
+
function isFileLevelOnlyLanguage(language) {
|
|
345
|
+
return language === 'yaml' || language === 'twig' || language === 'properties';
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Get all supported languages (those with grammar definitions).
|
|
349
|
+
*/
|
|
350
|
+
function getSupportedLanguages() {
|
|
351
|
+
return [...Object.keys(WASM_GRAMMAR_FILES), 'svelte', 'vue', 'liquid'];
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Reset the cached parser for a language to reclaim WASM heap memory.
|
|
355
|
+
* The tree-sitter WASM runtime accumulates fragmented memory over thousands
|
|
356
|
+
* of parses. Deleting and recreating the Parser instance forces the WASM
|
|
357
|
+
* heap to reset, preventing "memory access out of bounds" crashes in
|
|
358
|
+
* large repos.
|
|
359
|
+
*/
|
|
360
|
+
function resetParser(language) {
|
|
361
|
+
const old = parserCache.get(language);
|
|
362
|
+
if (old) {
|
|
363
|
+
old.delete();
|
|
364
|
+
parserCache.delete(language);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Clear parser/grammar caches (useful for testing)
|
|
369
|
+
*/
|
|
370
|
+
function clearParserCache() {
|
|
371
|
+
for (const parser of parserCache.values()) {
|
|
372
|
+
parser.delete();
|
|
373
|
+
}
|
|
374
|
+
parserCache.clear();
|
|
375
|
+
// Note: languageCache is NOT cleared — WASM languages persist.
|
|
376
|
+
// To fully re-init, set parserInitialized = false and call initGrammars() again.
|
|
377
|
+
unavailableGrammarErrors.clear();
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Report grammars that failed to load.
|
|
381
|
+
*/
|
|
382
|
+
function getUnavailableGrammarErrors() {
|
|
383
|
+
const out = {};
|
|
384
|
+
for (const [language, message] of unavailableGrammarErrors.entries()) {
|
|
385
|
+
out[language] = message;
|
|
386
|
+
}
|
|
387
|
+
return out;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Get language display name
|
|
391
|
+
*/
|
|
392
|
+
function getLanguageDisplayName(language) {
|
|
393
|
+
const names = {
|
|
394
|
+
typescript: 'TypeScript',
|
|
395
|
+
javascript: 'JavaScript',
|
|
396
|
+
tsx: 'TypeScript (TSX)',
|
|
397
|
+
jsx: 'JavaScript (JSX)',
|
|
398
|
+
python: 'Python',
|
|
399
|
+
go: 'Go',
|
|
400
|
+
rust: 'Rust',
|
|
401
|
+
java: 'Java',
|
|
402
|
+
c: 'C',
|
|
403
|
+
cpp: 'C++',
|
|
404
|
+
csharp: 'C#',
|
|
405
|
+
php: 'PHP',
|
|
406
|
+
ruby: 'Ruby',
|
|
407
|
+
swift: 'Swift',
|
|
408
|
+
kotlin: 'Kotlin',
|
|
409
|
+
dart: 'Dart',
|
|
410
|
+
svelte: 'Svelte',
|
|
411
|
+
vue: 'Vue',
|
|
412
|
+
liquid: 'Liquid',
|
|
413
|
+
pascal: 'Pascal / Delphi',
|
|
414
|
+
scala: 'Scala',
|
|
415
|
+
lua: 'Lua',
|
|
416
|
+
luau: 'Luau',
|
|
417
|
+
objc: 'Objective-C',
|
|
418
|
+
yaml: 'YAML',
|
|
419
|
+
twig: 'Twig',
|
|
420
|
+
xml: 'XML',
|
|
421
|
+
properties: 'Java properties',
|
|
422
|
+
unknown: 'Unknown',
|
|
423
|
+
};
|
|
424
|
+
return names[language] || language;
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=grammars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grammars.js","sourceRoot":"","sources":["../../src/extraction/grammars.ts"],"names":[],"mappings":"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"}
|