seer-mcp 0.1.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/.vscode/settings.json +3 -0
- package/LICENSE +176 -0
- package/README.md +272 -0
- package/README_dev.md +199 -0
- package/dist/bundle/ci.d.ts +47 -0
- package/dist/bundle/ci.d.ts.map +1 -0
- package/dist/bundle/ci.js +113 -0
- package/dist/bundle/ci.js.map +1 -0
- package/dist/bundle/contract.d.ts +111 -0
- package/dist/bundle/contract.d.ts.map +1 -0
- package/dist/bundle/contract.js +352 -0
- package/dist/bundle/contract.js.map +1 -0
- package/dist/bundle/export.d.ts +36 -0
- package/dist/bundle/export.d.ts.map +1 -0
- package/dist/bundle/export.js +152 -0
- package/dist/bundle/export.js.map +1 -0
- package/dist/bundle/external.d.ts +66 -0
- package/dist/bundle/external.d.ts.map +1 -0
- package/dist/bundle/external.js +238 -0
- package/dist/bundle/external.js.map +1 -0
- package/dist/bundle/format.d.ts +94 -0
- package/dist/bundle/format.d.ts.map +1 -0
- package/dist/bundle/format.js +42 -0
- package/dist/bundle/format.js.map +1 -0
- package/dist/bundle/import.d.ts +49 -0
- package/dist/bundle/import.d.ts.map +1 -0
- package/dist/bundle/import.js +116 -0
- package/dist/bundle/import.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +1402 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +48 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +284 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/db/schema.d.ts +3 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +616 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/store.d.ts +1011 -0
- package/dist/db/store.d.ts.map +1 -0
- package/dist/db/store.js +3888 -0
- package/dist/db/store.js.map +1 -0
- package/dist/graph/pagerank.d.ts +9 -0
- package/dist/graph/pagerank.d.ts.map +1 -0
- package/dist/graph/pagerank.js +47 -0
- package/dist/graph/pagerank.js.map +1 -0
- package/dist/indexer/architecture.d.ts +72 -0
- package/dist/indexer/architecture.d.ts.map +1 -0
- package/dist/indexer/architecture.js +112 -0
- package/dist/indexer/architecture.js.map +1 -0
- package/dist/indexer/behavior.d.ts +75 -0
- package/dist/indexer/behavior.d.ts.map +1 -0
- package/dist/indexer/behavior.js +395 -0
- package/dist/indexer/behavior.js.map +1 -0
- package/dist/indexer/boundaries.d.ts +60 -0
- package/dist/indexer/boundaries.d.ts.map +1 -0
- package/dist/indexer/boundaries.js +366 -0
- package/dist/indexer/boundaries.js.map +1 -0
- package/dist/indexer/churn.d.ts +15 -0
- package/dist/indexer/churn.d.ts.map +1 -0
- package/dist/indexer/churn.js +49 -0
- package/dist/indexer/churn.js.map +1 -0
- package/dist/indexer/classify.d.ts +9 -0
- package/dist/indexer/classify.d.ts.map +1 -0
- package/dist/indexer/classify.js +90 -0
- package/dist/indexer/classify.js.map +1 -0
- package/dist/indexer/context.d.ts +176 -0
- package/dist/indexer/context.d.ts.map +1 -0
- package/dist/indexer/context.js +193 -0
- package/dist/indexer/context.js.map +1 -0
- package/dist/indexer/continuity.d.ts +67 -0
- package/dist/indexer/continuity.d.ts.map +1 -0
- package/dist/indexer/continuity.js +288 -0
- package/dist/indexer/continuity.js.map +1 -0
- package/dist/indexer/detectchanges.d.ts +32 -0
- package/dist/indexer/detectchanges.d.ts.map +1 -0
- package/dist/indexer/detectchanges.js +74 -0
- package/dist/indexer/detectchanges.js.map +1 -0
- package/dist/indexer/discovery.d.ts +37 -0
- package/dist/indexer/discovery.d.ts.map +1 -0
- package/dist/indexer/discovery.js +136 -0
- package/dist/indexer/discovery.js.map +1 -0
- package/dist/indexer/externaldeps.d.ts +18 -0
- package/dist/indexer/externaldeps.d.ts.map +1 -0
- package/dist/indexer/externaldeps.js +288 -0
- package/dist/indexer/externaldeps.js.map +1 -0
- package/dist/indexer/freshness.d.ts +48 -0
- package/dist/indexer/freshness.d.ts.map +1 -0
- package/dist/indexer/freshness.js +128 -0
- package/dist/indexer/freshness.js.map +1 -0
- package/dist/indexer/git.d.ts +144 -0
- package/dist/indexer/git.d.ts.map +1 -0
- package/dist/indexer/git.js +444 -0
- package/dist/indexer/git.js.map +1 -0
- package/dist/indexer/index.d.ts +145 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +930 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/modules.d.ts +62 -0
- package/dist/indexer/modules.d.ts.map +1 -0
- package/dist/indexer/modules.js +293 -0
- package/dist/indexer/modules.js.map +1 -0
- package/dist/indexer/preflight.d.ts +154 -0
- package/dist/indexer/preflight.d.ts.map +1 -0
- package/dist/indexer/preflight.js +399 -0
- package/dist/indexer/preflight.js.map +1 -0
- package/dist/indexer/protoScanner.d.ts +34 -0
- package/dist/indexer/protoScanner.d.ts.map +1 -0
- package/dist/indexer/protoScanner.js +133 -0
- package/dist/indexer/protoScanner.js.map +1 -0
- package/dist/indexer/risk.d.ts +115 -0
- package/dist/indexer/risk.d.ts.map +1 -0
- package/dist/indexer/risk.js +194 -0
- package/dist/indexer/risk.js.map +1 -0
- package/dist/indexer/serviceHostScanner.d.ts +25 -0
- package/dist/indexer/serviceHostScanner.d.ts.map +1 -0
- package/dist/indexer/serviceHostScanner.js +95 -0
- package/dist/indexer/serviceHostScanner.js.map +1 -0
- package/dist/indexer/serviceLinks.d.ts +105 -0
- package/dist/indexer/serviceLinks.d.ts.map +1 -0
- package/dist/indexer/serviceLinks.js +509 -0
- package/dist/indexer/serviceLinks.js.map +1 -0
- package/dist/indexer/shapehash.d.ts +98 -0
- package/dist/indexer/shapehash.d.ts.map +1 -0
- package/dist/indexer/shapehash.js +354 -0
- package/dist/indexer/shapehash.js.map +1 -0
- package/dist/indexer/skeleton.d.ts +15 -0
- package/dist/indexer/skeleton.d.ts.map +1 -0
- package/dist/indexer/skeleton.js +136 -0
- package/dist/indexer/skeleton.js.map +1 -0
- package/dist/indexer/symbolhistory.d.ts +41 -0
- package/dist/indexer/symbolhistory.d.ts.map +1 -0
- package/dist/indexer/symbolhistory.js +124 -0
- package/dist/indexer/symbolhistory.js.map +1 -0
- package/dist/indexer/watcher.d.ts +68 -0
- package/dist/indexer/watcher.d.ts.map +1 -0
- package/dist/indexer/watcher.js +179 -0
- package/dist/indexer/watcher.js.map +1 -0
- package/dist/mcp/server.d.ts +80 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +1610 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/parser/index.d.ts +8 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +33 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/languages/cpp.d.ts +3 -0
- package/dist/parser/languages/cpp.d.ts.map +1 -0
- package/dist/parser/languages/cpp.js +350 -0
- package/dist/parser/languages/cpp.js.map +1 -0
- package/dist/parser/languages/csharp.d.ts +3 -0
- package/dist/parser/languages/csharp.d.ts.map +1 -0
- package/dist/parser/languages/csharp.js +239 -0
- package/dist/parser/languages/csharp.js.map +1 -0
- package/dist/parser/languages/go.d.ts +3 -0
- package/dist/parser/languages/go.d.ts.map +1 -0
- package/dist/parser/languages/go.js +259 -0
- package/dist/parser/languages/go.js.map +1 -0
- package/dist/parser/languages/java.d.ts +3 -0
- package/dist/parser/languages/java.d.ts.map +1 -0
- package/dist/parser/languages/java.js +391 -0
- package/dist/parser/languages/java.js.map +1 -0
- package/dist/parser/languages/python.d.ts +3 -0
- package/dist/parser/languages/python.d.ts.map +1 -0
- package/dist/parser/languages/python.js +396 -0
- package/dist/parser/languages/python.js.map +1 -0
- package/dist/parser/languages/rust.d.ts +3 -0
- package/dist/parser/languages/rust.d.ts.map +1 -0
- package/dist/parser/languages/rust.js +159 -0
- package/dist/parser/languages/rust.js.map +1 -0
- package/dist/parser/languages/typescript.d.ts +3 -0
- package/dist/parser/languages/typescript.d.ts.map +1 -0
- package/dist/parser/languages/typescript.js +1442 -0
- package/dist/parser/languages/typescript.js.map +1 -0
- package/dist/parser/parserContext.d.ts +77 -0
- package/dist/parser/parserContext.d.ts.map +1 -0
- package/dist/parser/parserContext.js +354 -0
- package/dist/parser/parserContext.js.map +1 -0
- package/dist/parser/walker.d.ts +81 -0
- package/dist/parser/walker.d.ts.map +1 -0
- package/dist/parser/walker.js +217 -0
- package/dist/parser/walker.js.map +1 -0
- package/dist/parser/worker.d.ts +66 -0
- package/dist/parser/worker.d.ts.map +1 -0
- package/dist/parser/worker.js +129 -0
- package/dist/parser/worker.js.map +1 -0
- package/dist/parser/workerpool.d.ts +107 -0
- package/dist/parser/workerpool.d.ts.map +1 -0
- package/dist/parser/workerpool.js +383 -0
- package/dist/parser/workerpool.js.map +1 -0
- package/dist/scip/format.d.ts +87 -0
- package/dist/scip/format.d.ts.map +1 -0
- package/dist/scip/format.js +31 -0
- package/dist/scip/format.js.map +1 -0
- package/dist/scip/import.d.ts +37 -0
- package/dist/scip/import.d.ts.map +1 -0
- package/dist/scip/import.js +180 -0
- package/dist/scip/import.js.map +1 -0
- package/dist/types.d.ts +392 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/docs/architecture.md +105 -0
- package/docs/benchmarks/methodology.md +134 -0
- package/docs/benchmarks/raw-results.md +71 -0
- package/docs/benchmarks.md +74 -0
- package/docs/cli.md +148 -0
- package/docs/examples/behavior-tests.md +70 -0
- package/docs/examples/change-history.md +85 -0
- package/docs/examples/pre-edit-context.md +81 -0
- package/docs/examples/service-links.md +88 -0
- package/docs/examples.md +80 -0
- package/docs/faq.md +70 -0
- package/docs/internals.md +104 -0
- package/docs/languages.md +70 -0
- package/docs/limits.md +52 -0
- package/docs/mcp.md +199 -0
- package/docs/quickstart.md +119 -0
- package/docs/testing.md +123 -0
- package/docs/tools.md +115 -0
- package/package.json +52 -0
- package/research-codebase.md +578 -0
- package/seer-cli-docs.md +326 -0
- package/seer-master-guide.md +246 -0
- package/src/bundle/ci.ts +141 -0
- package/src/bundle/contract.ts +387 -0
- package/src/bundle/export.ts +175 -0
- package/src/bundle/external.ts +285 -0
- package/src/bundle/format.ts +92 -0
- package/src/bundle/import.ts +157 -0
- package/src/cli/index.ts +1249 -0
- package/src/cli/init.ts +389 -0
- package/src/db/schema.ts +614 -0
- package/src/db/store.ts +4306 -0
- package/src/graph/pagerank.ts +53 -0
- package/src/indexer/architecture.ts +148 -0
- package/src/indexer/behavior.ts +466 -0
- package/src/indexer/boundaries.ts +374 -0
- package/src/indexer/churn.ts +58 -0
- package/src/indexer/classify.ts +96 -0
- package/src/indexer/context.ts +340 -0
- package/src/indexer/continuity.ts +322 -0
- package/src/indexer/detectchanges.ts +94 -0
- package/src/indexer/discovery.ts +176 -0
- package/src/indexer/externaldeps.ts +243 -0
- package/src/indexer/freshness.ts +166 -0
- package/src/indexer/git.ts +453 -0
- package/src/indexer/index.ts +1092 -0
- package/src/indexer/modules.ts +358 -0
- package/src/indexer/preflight.ts +548 -0
- package/src/indexer/protoScanner.ts +147 -0
- package/src/indexer/risk.ts +304 -0
- package/src/indexer/serviceHostScanner.ts +92 -0
- package/src/indexer/serviceLinks.ts +543 -0
- package/src/indexer/shapehash.ts +370 -0
- package/src/indexer/skeleton.ts +169 -0
- package/src/indexer/symbolhistory.ts +172 -0
- package/src/indexer/watcher.ts +206 -0
- package/src/mcp/server.ts +1659 -0
- package/src/parser/index.ts +37 -0
- package/src/parser/languages/cpp.ts +361 -0
- package/src/parser/languages/csharp.ts +235 -0
- package/src/parser/languages/go.ts +259 -0
- package/src/parser/languages/java.ts +382 -0
- package/src/parser/languages/python.ts +370 -0
- package/src/parser/languages/rust.ts +164 -0
- package/src/parser/languages/typescript.ts +1435 -0
- package/src/parser/parserContext.ts +392 -0
- package/src/parser/walker.ts +306 -0
- package/src/parser/worker.ts +181 -0
- package/src/parser/workerpool.ts +448 -0
- package/src/scip/format.ts +83 -0
- package/src/scip/import.ts +216 -0
- package/src/types.ts +457 -0
- package/tests/benchmark-service-links.ts +244 -0
- package/tests/bug-regressions.ts +626 -0
- package/tests/filters.ts +264 -0
- package/tests/fixtures/Counter.tsx +38 -0
- package/tests/fixtures/caller.ts +7 -0
- package/tests/fixtures/collisions.ts +23 -0
- package/tests/fixtures/local_helper.ts +5 -0
- package/tests/fixtures/overloads.java +17 -0
- package/tests/fixtures/remote_helper.ts +4 -0
- package/tests/fixtures/sample.c +15 -0
- package/tests/fixtures/sample.cpp +47 -0
- package/tests/fixtures/sample.cs +62 -0
- package/tests/fixtures/sample.go +68 -0
- package/tests/fixtures/sample.h +30 -0
- package/tests/fixtures/sample.java +85 -0
- package/tests/fixtures/sample.py +46 -0
- package/tests/fixtures/sample.rs +78 -0
- package/tests/fixtures/sample.ts +76 -0
- package/tests/fixtures-service/HttpClients.cs +30 -0
- package/tests/fixtures-service/HttpClients.java +24 -0
- package/tests/fixtures-service/billing.ts +15 -0
- package/tests/fixtures-service/docker-compose.yml +15 -0
- package/tests/fixtures-service/gateway.ts +10 -0
- package/tests/fixtures-service/get_user.ts +11 -0
- package/tests/fixtures-service/graphql_client.ts +63 -0
- package/tests/fixtures-service/graphql_server.ts +30 -0
- package/tests/fixtures-service/grpc_client.go +30 -0
- package/tests/fixtures-service/http_clients.go +23 -0
- package/tests/fixtures-service/http_clients.py +38 -0
- package/tests/fixtures-service/http_clients.ts +49 -0
- package/tests/fixtures-service/k8s/payment-service.yaml +22 -0
- package/tests/fixtures-service/k8s_calls.ts +20 -0
- package/tests/fixtures-service/messaging.ts +87 -0
- package/tests/fixtures-service/trpc_client.ts +39 -0
- package/tests/fixtures-service/trpc_server.ts +39 -0
- package/tests/fixtures-service/user_service.proto +33 -0
- package/tests/fixtures-trackcd/Cargo.toml +11 -0
- package/tests/fixtures-trackcd/SpringController.java +36 -0
- package/tests/fixtures-trackcd/auth_service.ts +19 -0
- package/tests/fixtures-trackcd/complex_module.py +50 -0
- package/tests/fixtures-trackcd/express_app.js +30 -0
- package/tests/fixtures-trackcd/fastapi_app.py +49 -0
- package/tests/fixtures-trackcd/fastify_object_routes.js +32 -0
- package/tests/fixtures-trackcd/go.mod +8 -0
- package/tests/fixtures-trackcd/package.json +15 -0
- package/tests/fixtures-trackcd/requirements.txt +4 -0
- package/tests/fixtures-trackcd/tests/auth_service.test.ts +13 -0
- package/tests/fixtures-tracke/auth/AuthService.ts +23 -0
- package/tests/fixtures-tracke/auth/crypto.ts +7 -0
- package/tests/fixtures-tracke/billing/Billing.ts +20 -0
- package/tests/fixtures-tracke/billing/Invoice.ts +10 -0
- package/tests/fixtures-tracke/billing/server.ts +17 -0
- package/tests/fixtures-tracke/package.json +7 -0
- package/tests/fixtures-tracke/tests/auth.test.ts +23 -0
- package/tests/fixtures-tracke/tests/billing.test.ts +14 -0
- package/tests/fixtures-trackf/package.json +5 -0
- package/tests/fixtures-trackf/src/auth.ts +26 -0
- package/tests/fixtures-trackf/src/handlers.ts +35 -0
- package/tests/fixtures-tracki/billing/routes.ts +12 -0
- package/tests/fixtures-tracki/gateway/client.ts +13 -0
- package/tests/git-features.ts +267 -0
- package/tests/init.ts +141 -0
- package/tests/mcp-jit.ts +130 -0
- package/tests/mcp-smoke.ts +191 -0
- package/tests/mcp-trackcd.ts +169 -0
- package/tests/mcp-tracke.ts +229 -0
- package/tests/mcp-trackf.ts +330 -0
- package/tests/mcp-trackg.ts +219 -0
- package/tests/mcp-tracki.ts +174 -0
- package/tests/mcp-watcher.ts +126 -0
- package/tests/optspec.ts +194 -0
- package/tests/parallel-index.ts +333 -0
- package/tests/parallel-read.ts +125 -0
- package/tests/parallel-recovery.ts +241 -0
- package/tests/perf-callers.ts +145 -0
- package/tests/query-parity.ts +184 -0
- package/tests/query-perf.ts +55 -0
- package/tests/scale-parallel-parity.ts +225 -0
- package/tests/scale-test.ts +523 -0
- package/tests/smoke.ts +396 -0
- package/tests/trackcd.ts +325 -0
- package/tests/tracke-collisions.ts +255 -0
- package/tests/tracke.ts +314 -0
- package/tests/trackf-bugs.ts +406 -0
- package/tests/trackf.ts +390 -0
- package/tests/trackg.ts +1372 -0
- package/tests/tracki-boundaries.ts +202 -0
- package/tests/tracki-continuity.ts +253 -0
- package/tests/tracki-contract-diff.ts +249 -0
- package/tests/tracki-external-bundles.ts +341 -0
- package/tests/tracki-preflight.ts +251 -0
- package/tests/verify-roles.ts +51 -0
- package/tests/worker-parity.ts +286 -0
- package/tests/worker-pool.ts +262 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/parser/languages/typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { FileExtraction, Language } from '../types.js';
|
|
2
|
+
import type { LanguageExtractor } from './walker.js';
|
|
3
|
+
export declare const EXT_TO_LANGUAGE: Record<string, Language>;
|
|
4
|
+
export declare function detectLanguage(filePath: string): Language | null;
|
|
5
|
+
export declare const EXTRACTORS: Record<Language, LanguageExtractor>;
|
|
6
|
+
export declare const GRAMMAR_NAME: Record<Language, string>;
|
|
7
|
+
/**
|
|
8
|
+
* Map a file extension to the specific WASM grammar to load. Most languages
|
|
9
|
+
* have one grammar, but TS/JS are split:
|
|
10
|
+
* .tsx → tsx grammar (typescript + JSX)
|
|
11
|
+
* .jsx → javascript grammar (which handles JSX natively)
|
|
12
|
+
* .ts → typescript grammar (no JSX)
|
|
13
|
+
*/
|
|
14
|
+
export declare function grammarForExtension(ext: string): string | null;
|
|
15
|
+
export declare function isLanguageString(s: string): boolean;
|
|
16
|
+
export interface ParserContextOptions {
|
|
17
|
+
/**
|
|
18
|
+
* Force the baseline walker for every parse, skipping the candidate-query
|
|
19
|
+
* fast path. Defaults to reading the `SEER_USE_CANDIDATE_QUERY` env var
|
|
20
|
+
* (`'0'` ⇒ force baseline). Used by the parity tests to A/B the two paths.
|
|
21
|
+
*/
|
|
22
|
+
forceBaselineWalker?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare class ParserContext {
|
|
25
|
+
private _initialized;
|
|
26
|
+
private _parser;
|
|
27
|
+
private _languages;
|
|
28
|
+
private _candidateQueries;
|
|
29
|
+
private _wasmResets;
|
|
30
|
+
private _consecutiveFailures;
|
|
31
|
+
private static readonly RESET_AFTER_N_FAILURES;
|
|
32
|
+
private _forceBaselineWalker;
|
|
33
|
+
constructor(options?: ParserContextOptions);
|
|
34
|
+
setForceBaselineWalker(force: boolean): void;
|
|
35
|
+
/** How many times the WASM module had to be hard-reset. Exposed for stats. */
|
|
36
|
+
wasmResetCount(): number;
|
|
37
|
+
private ensureReady;
|
|
38
|
+
private getParser;
|
|
39
|
+
private loadLanguage;
|
|
40
|
+
private noteParseSuccess;
|
|
41
|
+
private noteParseFailureMaybeReset;
|
|
42
|
+
private resetWasmRuntime;
|
|
43
|
+
/**
|
|
44
|
+
* Compile (and cache) the candidate-collection query for one grammar +
|
|
45
|
+
* extractor pair. Returns null if the extractor declares no candidate types
|
|
46
|
+
* OR if every type in the list was rejected by the grammar.
|
|
47
|
+
*
|
|
48
|
+
* Strategy:
|
|
49
|
+
* 1. Try the full combined query first (cheapest path).
|
|
50
|
+
* 2. If that throws — typically because one node type is unknown to the
|
|
51
|
+
* grammar (e.g. `class_specifier` doesn't exist in tree-sitter-c) —
|
|
52
|
+
* retry node types one at a time, keep only the ones that compile,
|
|
53
|
+
* then build a final combined query from the survivors.
|
|
54
|
+
* 3. If even individual probes fail, cache null and the parser falls back
|
|
55
|
+
* to the baseline walker for that grammar permanently.
|
|
56
|
+
*
|
|
57
|
+
* The query captures every candidate node under `@c` so the walker only has
|
|
58
|
+
* to check membership in a single Set; categorization is left to the
|
|
59
|
+
* extractor's `tryExtract*` callbacks (which retain all semantic authority).
|
|
60
|
+
*/
|
|
61
|
+
private getOrCompileCandidateQuery;
|
|
62
|
+
/**
|
|
63
|
+
* Run the candidate query against a parsed tree and collect captured node
|
|
64
|
+
* ids into a Set. Returns null if the query fails at runtime — caller falls
|
|
65
|
+
* back to the baseline walker.
|
|
66
|
+
*/
|
|
67
|
+
private collectCandidateNodeIds;
|
|
68
|
+
/**
|
|
69
|
+
* Parse a file and return the extracted symbols, references, and imports.
|
|
70
|
+
* Returns null on parse failure (caller decides whether to warn).
|
|
71
|
+
*
|
|
72
|
+
* Takes the file path (not just the language) so we can route .tsx → the tsx
|
|
73
|
+
* grammar variant, which is required to parse JSX.
|
|
74
|
+
*/
|
|
75
|
+
parseFile(content: string, filePathOrLanguage: string, languageOverride?: Language): Promise<FileExtraction | null>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=parserContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parserContext.d.ts","sourceRoot":"","sources":["../../src/parser/parserContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAYrD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAcpD,CAAC;AAEF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAGhE;AAeD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAW1D,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAYjD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnD;AA2BD,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAAsC;IAIxD,OAAO,CAAC,iBAAiB,CAA0C;IACnE,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAK;IASnD,OAAO,CAAC,oBAAoB,CAAU;gBAE1B,OAAO,GAAE,oBAAyB;IAO9C,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI5C,8EAA8E;IAC9E,cAAc,IAAI,MAAM;YAIV,WAAW;IAMzB,OAAO,CAAC,SAAS;YAKH,YAAY;IAc1B,OAAO,CAAC,gBAAgB;YAIV,0BAA0B;YAQ1B,gBAAgB;IAY9B;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,0BAA0B;IA8ClC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;;;;;OAMG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,CAAC,EAAE,QAAQ,GAC1B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CA8ElC"}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ParserContext = exports.GRAMMAR_NAME = exports.EXTRACTORS = exports.EXT_TO_LANGUAGE = void 0;
|
|
7
|
+
exports.detectLanguage = detectLanguage;
|
|
8
|
+
exports.grammarForExtension = grammarForExtension;
|
|
9
|
+
exports.isLanguageString = isLanguageString;
|
|
10
|
+
const web_tree_sitter_1 = __importDefault(require("web-tree-sitter"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const walker_js_1 = require("./walker.js");
|
|
13
|
+
const python_js_1 = require("./languages/python.js");
|
|
14
|
+
const typescript_js_1 = require("./languages/typescript.js");
|
|
15
|
+
const go_js_1 = require("./languages/go.js");
|
|
16
|
+
const java_js_1 = require("./languages/java.js");
|
|
17
|
+
const rust_js_1 = require("./languages/rust.js");
|
|
18
|
+
const cpp_js_1 = require("./languages/cpp.js");
|
|
19
|
+
const csharp_js_1 = require("./languages/csharp.js");
|
|
20
|
+
// ── Extension → language mapping ───────────────────────────────────────────────
|
|
21
|
+
exports.EXT_TO_LANGUAGE = {
|
|
22
|
+
'.py': 'python', '.pyw': 'python',
|
|
23
|
+
'.ts': 'typescript', '.tsx': 'typescript',
|
|
24
|
+
'.js': 'javascript', '.jsx': 'javascript', '.mjs': 'javascript', '.cjs': 'javascript',
|
|
25
|
+
'.go': 'go',
|
|
26
|
+
'.java': 'java',
|
|
27
|
+
'.rs': 'rust',
|
|
28
|
+
// C source files use the dedicated C grammar with the C++ extractor's shared
|
|
29
|
+
// C-family symbol logic. `.h` remains ambiguous between C and C++, so we keep
|
|
30
|
+
// headers on the C++ grammar by default.
|
|
31
|
+
'.c': 'c',
|
|
32
|
+
'.cpp': 'cpp', '.cc': 'cpp', '.cxx': 'cpp', '.c++': 'cpp',
|
|
33
|
+
'.hpp': 'cpp', '.hh': 'cpp', '.h++': 'cpp', '.h': 'cpp',
|
|
34
|
+
'.cs': 'csharp',
|
|
35
|
+
};
|
|
36
|
+
function detectLanguage(filePath) {
|
|
37
|
+
const ext = path_1.default.extname(filePath).toLowerCase();
|
|
38
|
+
return exports.EXT_TO_LANGUAGE[ext] ?? null;
|
|
39
|
+
}
|
|
40
|
+
// v9 Track-H — placeholder extractor for .proto files. Proto files don't go
|
|
41
|
+
// through tree-sitter; the proto scanner in protoScanner.ts handles them. The
|
|
42
|
+
// entry exists so the Record<Language, LanguageExtractor> contract is met.
|
|
43
|
+
const noopProtoExtractor = {
|
|
44
|
+
languageName: 'proto',
|
|
45
|
+
extensions: ['.proto'],
|
|
46
|
+
tryExtractDefinition() { return null; },
|
|
47
|
+
tryExtractCallName() { return null; },
|
|
48
|
+
tryExtractImport() { return null; },
|
|
49
|
+
};
|
|
50
|
+
// JavaScript and TypeScript share the TypeScript extractor but need different
|
|
51
|
+
// WASM grammars (and .tsx needs the tsx variant).
|
|
52
|
+
exports.EXTRACTORS = {
|
|
53
|
+
python: python_js_1.pythonExtractor,
|
|
54
|
+
typescript: typescript_js_1.typescriptExtractor,
|
|
55
|
+
javascript: { ...typescript_js_1.typescriptExtractor, languageName: 'javascript' },
|
|
56
|
+
go: go_js_1.goExtractor,
|
|
57
|
+
java: java_js_1.javaExtractor,
|
|
58
|
+
rust: rust_js_1.rustExtractor,
|
|
59
|
+
c: { ...cpp_js_1.cppExtractor, languageName: 'c', extensions: ['.c'] },
|
|
60
|
+
cpp: cpp_js_1.cppExtractor,
|
|
61
|
+
csharp: csharp_js_1.csharpExtractor,
|
|
62
|
+
proto: noopProtoExtractor,
|
|
63
|
+
};
|
|
64
|
+
// Default grammar for each language (used when there's no per-extension override
|
|
65
|
+
// in `grammarForExtension`). Note the underscore in `c_sharp` matches the WASM
|
|
66
|
+
// filename `tree-sitter-c_sharp.wasm`.
|
|
67
|
+
exports.GRAMMAR_NAME = {
|
|
68
|
+
python: 'python',
|
|
69
|
+
typescript: 'typescript',
|
|
70
|
+
javascript: 'javascript',
|
|
71
|
+
go: 'go',
|
|
72
|
+
java: 'java',
|
|
73
|
+
rust: 'rust',
|
|
74
|
+
c: 'c',
|
|
75
|
+
cpp: 'cpp',
|
|
76
|
+
csharp: 'c_sharp',
|
|
77
|
+
// proto files never enter the tree-sitter pipeline; this is unused.
|
|
78
|
+
proto: 'proto',
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Map a file extension to the specific WASM grammar to load. Most languages
|
|
82
|
+
* have one grammar, but TS/JS are split:
|
|
83
|
+
* .tsx → tsx grammar (typescript + JSX)
|
|
84
|
+
* .jsx → javascript grammar (which handles JSX natively)
|
|
85
|
+
* .ts → typescript grammar (no JSX)
|
|
86
|
+
*/
|
|
87
|
+
function grammarForExtension(ext) {
|
|
88
|
+
if (ext === '.tsx')
|
|
89
|
+
return 'tsx';
|
|
90
|
+
if (ext === '.jsx' || ext === '.mjs' || ext === '.cjs' || ext === '.js')
|
|
91
|
+
return 'javascript';
|
|
92
|
+
if (ext === '.ts')
|
|
93
|
+
return 'typescript';
|
|
94
|
+
const lang = exports.EXT_TO_LANGUAGE[ext];
|
|
95
|
+
if (!lang)
|
|
96
|
+
return null;
|
|
97
|
+
return exports.GRAMMAR_NAME[lang];
|
|
98
|
+
}
|
|
99
|
+
function isLanguageString(s) {
|
|
100
|
+
return s in exports.GRAMMAR_NAME;
|
|
101
|
+
}
|
|
102
|
+
class ParserContext {
|
|
103
|
+
_initialized = false;
|
|
104
|
+
_parser = null;
|
|
105
|
+
_languages = new Map();
|
|
106
|
+
// Per-grammar compiled candidate Query, or null if compilation failed (in
|
|
107
|
+
// which case we permanently fall back to the baseline walker for that grammar).
|
|
108
|
+
// Cache key matches `loadLanguage`'s grammar name.
|
|
109
|
+
_candidateQueries = new Map();
|
|
110
|
+
_wasmResets = 0;
|
|
111
|
+
_consecutiveFailures = 0;
|
|
112
|
+
static RESET_AFTER_N_FAILURES = 3;
|
|
113
|
+
// Test/diagnostic override: when true, every parseFile() call uses the
|
|
114
|
+
// baseline walker even if the extractor has candidateNodeTypes. The parity
|
|
115
|
+
// test in tests/query-parity.ts flips this to compare both paths on the same
|
|
116
|
+
// fixtures. The env var SEER_USE_CANDIDATE_QUERY=0 has the same effect for
|
|
117
|
+
// users who want to skip the query path system-wide (e.g. if a future
|
|
118
|
+
// web-tree-sitter regression makes query.captures() expensive on their
|
|
119
|
+
// workload).
|
|
120
|
+
_forceBaselineWalker;
|
|
121
|
+
constructor(options = {}) {
|
|
122
|
+
this._forceBaselineWalker = options.forceBaselineWalker ??
|
|
123
|
+
(typeof process !== 'undefined' &&
|
|
124
|
+
process.env != null &&
|
|
125
|
+
process.env.SEER_USE_CANDIDATE_QUERY === '0');
|
|
126
|
+
}
|
|
127
|
+
setForceBaselineWalker(force) {
|
|
128
|
+
this._forceBaselineWalker = force;
|
|
129
|
+
}
|
|
130
|
+
/** How many times the WASM module had to be hard-reset. Exposed for stats. */
|
|
131
|
+
wasmResetCount() {
|
|
132
|
+
return this._wasmResets;
|
|
133
|
+
}
|
|
134
|
+
async ensureReady() {
|
|
135
|
+
if (this._initialized)
|
|
136
|
+
return;
|
|
137
|
+
await web_tree_sitter_1.default.init();
|
|
138
|
+
this._initialized = true;
|
|
139
|
+
}
|
|
140
|
+
getParser() {
|
|
141
|
+
if (!this._parser)
|
|
142
|
+
this._parser = new web_tree_sitter_1.default();
|
|
143
|
+
return this._parser;
|
|
144
|
+
}
|
|
145
|
+
async loadLanguage(grammarName) {
|
|
146
|
+
await this.ensureReady();
|
|
147
|
+
const cached = this._languages.get(grammarName);
|
|
148
|
+
if (cached)
|
|
149
|
+
return cached;
|
|
150
|
+
// tree-sitter-wasms uses underscores in some filenames (e.g. c_sharp). The
|
|
151
|
+
// `grammarName` we pass through is the canonical WASM-filename suffix.
|
|
152
|
+
const wasmDir = path_1.default.dirname(require.resolve('tree-sitter-wasms/package.json'));
|
|
153
|
+
const wasmPath = path_1.default.join(wasmDir, 'out', `tree-sitter-${grammarName}.wasm`);
|
|
154
|
+
const lang = await web_tree_sitter_1.default.Language.load(wasmPath);
|
|
155
|
+
this._languages.set(grammarName, lang);
|
|
156
|
+
return lang;
|
|
157
|
+
}
|
|
158
|
+
noteParseSuccess() {
|
|
159
|
+
this._consecutiveFailures = 0;
|
|
160
|
+
}
|
|
161
|
+
async noteParseFailureMaybeReset() {
|
|
162
|
+
this._consecutiveFailures++;
|
|
163
|
+
if (this._consecutiveFailures >= ParserContext.RESET_AFTER_N_FAILURES) {
|
|
164
|
+
this._consecutiveFailures = 0;
|
|
165
|
+
try {
|
|
166
|
+
await this.resetWasmRuntime();
|
|
167
|
+
}
|
|
168
|
+
catch { /* best effort */ }
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async resetWasmRuntime() {
|
|
172
|
+
this._wasmResets++;
|
|
173
|
+
const grammarNames = Array.from(this._languages.keys());
|
|
174
|
+
this._initialized = false;
|
|
175
|
+
this._parser = null;
|
|
176
|
+
this._languages.clear();
|
|
177
|
+
await this.ensureReady();
|
|
178
|
+
for (const name of grammarNames) {
|
|
179
|
+
await this.loadLanguage(name);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Compile (and cache) the candidate-collection query for one grammar +
|
|
184
|
+
* extractor pair. Returns null if the extractor declares no candidate types
|
|
185
|
+
* OR if every type in the list was rejected by the grammar.
|
|
186
|
+
*
|
|
187
|
+
* Strategy:
|
|
188
|
+
* 1. Try the full combined query first (cheapest path).
|
|
189
|
+
* 2. If that throws — typically because one node type is unknown to the
|
|
190
|
+
* grammar (e.g. `class_specifier` doesn't exist in tree-sitter-c) —
|
|
191
|
+
* retry node types one at a time, keep only the ones that compile,
|
|
192
|
+
* then build a final combined query from the survivors.
|
|
193
|
+
* 3. If even individual probes fail, cache null and the parser falls back
|
|
194
|
+
* to the baseline walker for that grammar permanently.
|
|
195
|
+
*
|
|
196
|
+
* The query captures every candidate node under `@c` so the walker only has
|
|
197
|
+
* to check membership in a single Set; categorization is left to the
|
|
198
|
+
* extractor's `tryExtract*` callbacks (which retain all semantic authority).
|
|
199
|
+
*/
|
|
200
|
+
getOrCompileCandidateQuery(grammarName, lang, candidateNodeTypes) {
|
|
201
|
+
if (this._candidateQueries.has(grammarName)) {
|
|
202
|
+
return this._candidateQueries.get(grammarName) ?? null;
|
|
203
|
+
}
|
|
204
|
+
if (candidateNodeTypes.length === 0) {
|
|
205
|
+
this._candidateQueries.set(grammarName, null);
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
const buildSource = (types) => types.map(t => `(${t}) @c`).join('\n');
|
|
209
|
+
// Pass 1: try the combined query.
|
|
210
|
+
try {
|
|
211
|
+
const q = lang.query(buildSource(candidateNodeTypes));
|
|
212
|
+
this._candidateQueries.set(grammarName, q);
|
|
213
|
+
return q;
|
|
214
|
+
}
|
|
215
|
+
catch { /* fall through to per-type probe */ }
|
|
216
|
+
// Pass 2: probe each type individually, keep only the survivors.
|
|
217
|
+
const survivors = [];
|
|
218
|
+
for (const t of candidateNodeTypes) {
|
|
219
|
+
try {
|
|
220
|
+
const probe = lang.query(`(${t}) @c`);
|
|
221
|
+
try {
|
|
222
|
+
probe.delete();
|
|
223
|
+
}
|
|
224
|
+
catch { /* */ }
|
|
225
|
+
survivors.push(t);
|
|
226
|
+
}
|
|
227
|
+
catch { /* type not in this grammar; skip */ }
|
|
228
|
+
}
|
|
229
|
+
if (survivors.length === 0) {
|
|
230
|
+
this._candidateQueries.set(grammarName, null);
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
try {
|
|
234
|
+
const q = lang.query(buildSource(survivors));
|
|
235
|
+
this._candidateQueries.set(grammarName, q);
|
|
236
|
+
return q;
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
this._candidateQueries.set(grammarName, null);
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Run the candidate query against a parsed tree and collect captured node
|
|
245
|
+
* ids into a Set. Returns null if the query fails at runtime — caller falls
|
|
246
|
+
* back to the baseline walker.
|
|
247
|
+
*/
|
|
248
|
+
collectCandidateNodeIds(query, rootNode) {
|
|
249
|
+
try {
|
|
250
|
+
const caps = query.captures(rootNode);
|
|
251
|
+
const ids = new Set();
|
|
252
|
+
for (const c of caps)
|
|
253
|
+
ids.add(c.node.id);
|
|
254
|
+
return ids;
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Parse a file and return the extracted symbols, references, and imports.
|
|
262
|
+
* Returns null on parse failure (caller decides whether to warn).
|
|
263
|
+
*
|
|
264
|
+
* Takes the file path (not just the language) so we can route .tsx → the tsx
|
|
265
|
+
* grammar variant, which is required to parse JSX.
|
|
266
|
+
*/
|
|
267
|
+
async parseFile(content, filePathOrLanguage, languageOverride) {
|
|
268
|
+
try {
|
|
269
|
+
// Back-compat: callers used to pass (content, language). New callers pass
|
|
270
|
+
// (content, filePath). We detect by checking if it's a known Language.
|
|
271
|
+
let language;
|
|
272
|
+
let ext;
|
|
273
|
+
if (languageOverride) {
|
|
274
|
+
language = languageOverride;
|
|
275
|
+
ext = path_1.default.extname(filePathOrLanguage).toLowerCase();
|
|
276
|
+
}
|
|
277
|
+
else if (isLanguageString(filePathOrLanguage)) {
|
|
278
|
+
// Legacy two-arg form: parseFile(content, language)
|
|
279
|
+
language = filePathOrLanguage;
|
|
280
|
+
// No file path → use the language's default grammar
|
|
281
|
+
ext = '';
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
language = detectLanguage(filePathOrLanguage);
|
|
285
|
+
ext = path_1.default.extname(filePathOrLanguage).toLowerCase();
|
|
286
|
+
}
|
|
287
|
+
if (!language)
|
|
288
|
+
return null;
|
|
289
|
+
const grammarName = ext ? grammarForExtension(ext) ?? exports.GRAMMAR_NAME[language] : exports.GRAMMAR_NAME[language];
|
|
290
|
+
const lang = await this.loadLanguage(grammarName);
|
|
291
|
+
const parser = this.getParser();
|
|
292
|
+
parser.setLanguage(lang);
|
|
293
|
+
// Cap parse time at 10s per file. tree-sitter aborts internally on
|
|
294
|
+
// truly pathological inputs (returning null without poisoning), which
|
|
295
|
+
// we'd much rather have than the WASM heap exhaustion that comes from
|
|
296
|
+
// letting it run indefinitely.
|
|
297
|
+
try {
|
|
298
|
+
// setTimeoutMicros may not exist on older web-tree-sitter versions.
|
|
299
|
+
parser
|
|
300
|
+
.setTimeoutMicros?.(10_000_000);
|
|
301
|
+
}
|
|
302
|
+
catch { /* best effort */ }
|
|
303
|
+
const tree = parser.parse(content);
|
|
304
|
+
if (!tree) {
|
|
305
|
+
await this.noteParseFailureMaybeReset();
|
|
306
|
+
return null;
|
|
307
|
+
}
|
|
308
|
+
const extractor = exports.EXTRACTORS[language];
|
|
309
|
+
try {
|
|
310
|
+
// Query-assisted candidate collection: when the extractor declares its
|
|
311
|
+
// candidate node types we compile a Tree-Sitter Query for the grammar,
|
|
312
|
+
// gather candidate node ids in one pass, and pass them to the walker so
|
|
313
|
+
// it can skip the per-node tryExtract* calls on the vast majority of
|
|
314
|
+
// structural nodes (binary_expression, parenthesized_expression, etc.).
|
|
315
|
+
// If query compilation or evaluation fails for any reason we fall back
|
|
316
|
+
// to the baseline walker, which still produces correct results.
|
|
317
|
+
let candidateIds = null;
|
|
318
|
+
if (!this._forceBaselineWalker && extractor.candidateNodeTypes && extractor.candidateNodeTypes.length > 0) {
|
|
319
|
+
const q = this.getOrCompileCandidateQuery(grammarName, lang, extractor.candidateNodeTypes);
|
|
320
|
+
if (q) {
|
|
321
|
+
candidateIds = this.collectCandidateNodeIds(q, tree.rootNode);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
const result = candidateIds
|
|
325
|
+
? (0, walker_js_1.walkTree)(tree.rootNode, extractor, candidateIds)
|
|
326
|
+
: (0, walker_js_1.walkTree)(tree.rootNode, extractor);
|
|
327
|
+
this.noteParseSuccess();
|
|
328
|
+
return result;
|
|
329
|
+
}
|
|
330
|
+
finally {
|
|
331
|
+
// CRITICAL: tree-sitter trees hold WASM-allocated memory. If we don't
|
|
332
|
+
// explicitly delete them, every parse leaks and the WASM heap fills up.
|
|
333
|
+
// At small scale this is invisible; on a 100k+ file codebase like
|
|
334
|
+
// Unreal it cascades into the heap aborting and poisoning all
|
|
335
|
+
// subsequent parses. This single line is the difference between
|
|
336
|
+
// "indexer works" and "indexer falls over on big codebases."
|
|
337
|
+
try {
|
|
338
|
+
tree.delete?.();
|
|
339
|
+
}
|
|
340
|
+
catch { /* */ }
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
catch (err) {
|
|
344
|
+
// After a WASM Abort the entire shared WASM module may be poisoned, not
|
|
345
|
+
// just our Parser instance. Reset is opportunistic — only kicks in after
|
|
346
|
+
// a few failures in a row, so single legit parse errors don't trigger
|
|
347
|
+
// an expensive reload.
|
|
348
|
+
await this.noteParseFailureMaybeReset();
|
|
349
|
+
return null;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
exports.ParserContext = ParserContext;
|
|
354
|
+
//# sourceMappingURL=parserContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parserContext.js","sourceRoot":"","sources":["../../src/parser/parserContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type Parser from 'web-tree-sitter';
|
|
2
|
+
import type { SymbolDef, FileExtraction, RouteDef, ConfigKeyRead, ServiceCallDef } from '../types.js';
|
|
3
|
+
export interface LanguageExtractor {
|
|
4
|
+
/** tree-sitter language name (used to load the WASM grammar) */
|
|
5
|
+
languageName: string;
|
|
6
|
+
extensions: string[];
|
|
7
|
+
/** Return a SymbolDef if this node is a top-level definition, else null */
|
|
8
|
+
tryExtractDefinition(node: Parser.SyntaxNode): SymbolDef | null;
|
|
9
|
+
/** Return the callee name if this node is a call/reference, else null */
|
|
10
|
+
tryExtractCallName(node: Parser.SyntaxNode): string | null;
|
|
11
|
+
/** Return the imported module/path if this node is an import, else null */
|
|
12
|
+
tryExtractImport(node: Parser.SyntaxNode): string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Optional: return a name for nodes that supply naming context but are not
|
|
15
|
+
* themselves symbols (e.g. Rust `impl AuthService { ... }`).
|
|
16
|
+
*/
|
|
17
|
+
tryExtractContextName?(node: Parser.SyntaxNode): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Optional: extract one or more HTTP routes from a node. Languages return
|
|
20
|
+
* different shapes (Python decorators vs JS call_expression on app), so the
|
|
21
|
+
* extractor owns the recognizer.
|
|
22
|
+
*/
|
|
23
|
+
tryExtractRoute?(node: Parser.SyntaxNode): RouteDef[] | null;
|
|
24
|
+
/** Optional: extract a config/env key read from a node. */
|
|
25
|
+
tryExtractConfigKey?(node: Parser.SyntaxNode): ConfigKeyRead | null;
|
|
26
|
+
/**
|
|
27
|
+
* Optional: extract zero-or-more outbound service calls from a node.
|
|
28
|
+
* Languages return different shapes for clients (Python `requests.get('/x')`
|
|
29
|
+
* vs JS `fetch('/x')` vs Go `http.Get('/x')`), so the extractor owns the
|
|
30
|
+
* recognizer. Returns null when the node is not a service-call site.
|
|
31
|
+
*/
|
|
32
|
+
tryExtractServiceCalls?(node: Parser.SyntaxNode): ServiceCallDef[] | null;
|
|
33
|
+
/**
|
|
34
|
+
* Set of tree-sitter node types that count as control-flow branches for
|
|
35
|
+
* cyclomatic/cognitive complexity. Optional; languages that omit this
|
|
36
|
+
* leave complexity at null on every symbol.
|
|
37
|
+
*/
|
|
38
|
+
branchNodeTypes?: ReadonlySet<string>;
|
|
39
|
+
/**
|
|
40
|
+
* Optional set of node types that increase nesting depth for cognitive
|
|
41
|
+
* complexity. If omitted, defaults to `branchNodeTypes` minus the
|
|
42
|
+
* "non-nesting" branches (logical operators, ternaries).
|
|
43
|
+
*/
|
|
44
|
+
nestingNodeTypes?: ReadonlySet<string>;
|
|
45
|
+
/**
|
|
46
|
+
* Optional: list of tree-sitter node types that may produce a
|
|
47
|
+
* definition / call / import / route / config-key / context name on this
|
|
48
|
+
* extractor. Used by the parser to compile a Tree-Sitter Query that bulk-
|
|
49
|
+
* collects candidate nodes in one tree pass, so the walker can skip the
|
|
50
|
+
* `tryExtract*` calls on the ~95% of nodes that can never match anything.
|
|
51
|
+
*
|
|
52
|
+
* This is purely a performance optimization — the extractor's `tryExtract*`
|
|
53
|
+
* functions still own all semantic decisions (body gates, qualified-name
|
|
54
|
+
* resolution, overload disambiguation, route vs prefix, etc.). The list
|
|
55
|
+
* must be a SUPERSET of every node type any `tryExtract*` may accept;
|
|
56
|
+
* missing a type means whole categories of extracted things go silently
|
|
57
|
+
* unindexed. The fallback walker (`walkTree` with no candidate set) stays
|
|
58
|
+
* available for languages that omit this list or for diagnostics.
|
|
59
|
+
*/
|
|
60
|
+
candidateNodeTypes?: readonly string[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Walk the tree, tracking the enclosing definition stack so that calls can
|
|
64
|
+
* be attributed to their containing function/method.
|
|
65
|
+
*
|
|
66
|
+
* v4 additions:
|
|
67
|
+
* - For function/method/constructor symbols, computes cyclomatic + cognitive
|
|
68
|
+
* complexity + max nesting depth + LOC by walking the def's subtree once.
|
|
69
|
+
* - Calls `tryExtractRoute` / `tryExtractConfigKey` per node and threads the
|
|
70
|
+
* results back through `FileExtraction.routes` / `.configKeys`.
|
|
71
|
+
*
|
|
72
|
+
* Optional `candidates` parameter: when provided, the walker only invokes the
|
|
73
|
+
* extractor's `tryExtract*` callbacks on nodes whose id is in the set. Tree
|
|
74
|
+
* structure is still fully traversed so the def-stack stays accurate; we just
|
|
75
|
+
* skip the per-node switch on non-candidates. Pass `undefined` (the default)
|
|
76
|
+
* to run as a full baseline walker.
|
|
77
|
+
*/
|
|
78
|
+
export declare function walkTree(root: Parser.SyntaxNode, extractor: LanguageExtractor, candidates?: ReadonlySet<number>): FileExtraction;
|
|
79
|
+
export declare function fieldText(node: Parser.SyntaxNode, fieldName: string): string | null;
|
|
80
|
+
export declare function firstLine(node: Parser.SyntaxNode, maxLen?: number): string;
|
|
81
|
+
//# sourceMappingURL=walker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../src/parser/walker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAa,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjH,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,2EAA2E;IAC3E,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAChE,yEAAyE;IACzE,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3D,2EAA2E;IAC3E,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IACzD;;;OAGG;IACH,qBAAqB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAE/D;;;;OAIG;IACH,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE7D,2DAA2D;IAC3D,mBAAmB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC;IAEpE;;;;;OAKG;IACH,sBAAsB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC;IAE1E;;;;OAIG;IACH,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvC;;;;;;;;;;;;;;OAcG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,SAAS,EAAE,iBAAiB,EAC5B,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,cAAc,CA4IhB;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAEf;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,SAAM,GAAG,MAAM,CAKvE"}
|