@untangle-code/parser-registry 0.0.0-stage → 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/LICENSE +661 -0
- package/NOTICE +90 -0
- package/README.md +352 -2
- package/THIRD_PARTY_LICENSES.md +91 -0
- package/dist/boundaries/expression.d.ts +10 -0
- package/dist/boundaries/expression.d.ts.map +1 -0
- package/dist/boundaries/expression.js +95 -0
- package/dist/boundaries/expression.js.map +1 -0
- package/dist/boundaries/extract.d.ts +12 -0
- package/dist/boundaries/extract.d.ts.map +1 -0
- package/dist/boundaries/extract.js +259 -0
- package/dist/boundaries/extract.js.map +1 -0
- package/dist/boundaries/python.d.ts +6 -0
- package/dist/boundaries/python.d.ts.map +1 -0
- package/dist/boundaries/python.js +154 -0
- package/dist/boundaries/python.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/languages/astgrep-backend/adapter.d.ts +101 -0
- package/dist/languages/astgrep-backend/adapter.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/adapter.js +130 -0
- package/dist/languages/astgrep-backend/adapter.js.map +1 -0
- package/dist/languages/astgrep-backend/index.d.ts +29 -0
- package/dist/languages/astgrep-backend/index.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/index.js +28 -0
- package/dist/languages/astgrep-backend/index.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/bash.d.ts +38 -0
- package/dist/languages/astgrep-backend/lang/bash.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/bash.js +42 -0
- package/dist/languages/astgrep-backend/lang/bash.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/c.d.ts +33 -0
- package/dist/languages/astgrep-backend/lang/c.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/c.js +85 -0
- package/dist/languages/astgrep-backend/lang/c.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/cpp.d.ts +27 -0
- package/dist/languages/astgrep-backend/lang/cpp.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/cpp.js +38 -0
- package/dist/languages/astgrep-backend/lang/cpp.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/csharp.d.ts +24 -0
- package/dist/languages/astgrep-backend/lang/csharp.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/csharp.js +102 -0
- package/dist/languages/astgrep-backend/lang/csharp.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/index.d.ts +29 -0
- package/dist/languages/astgrep-backend/lang/index.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/index.js +22 -0
- package/dist/languages/astgrep-backend/lang/index.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/java.d.ts +26 -0
- package/dist/languages/astgrep-backend/lang/java.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/java.js +89 -0
- package/dist/languages/astgrep-backend/lang/java.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/kotlin.d.ts +44 -0
- package/dist/languages/astgrep-backend/lang/kotlin.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/kotlin.js +94 -0
- package/dist/languages/astgrep-backend/lang/kotlin.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/php.d.ts +23 -0
- package/dist/languages/astgrep-backend/lang/php.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/php.js +80 -0
- package/dist/languages/astgrep-backend/lang/php.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/ruby.d.ts +37 -0
- package/dist/languages/astgrep-backend/lang/ruby.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/ruby.js +70 -0
- package/dist/languages/astgrep-backend/lang/ruby.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/swift.d.ts +34 -0
- package/dist/languages/astgrep-backend/lang/swift.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/swift.js +86 -0
- package/dist/languages/astgrep-backend/lang/swift.js.map +1 -0
- package/dist/languages/astgrep-backend/languages.d.ts +55 -0
- package/dist/languages/astgrep-backend/languages.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/languages.js +214 -0
- package/dist/languages/astgrep-backend/languages.js.map +1 -0
- package/dist/languages/astgrep-backend/napi.d.ts +71 -0
- package/dist/languages/astgrep-backend/napi.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/napi.js +176 -0
- package/dist/languages/astgrep-backend/napi.js.map +1 -0
- package/dist/languages/astgrep-backend/syntax.d.ts +88 -0
- package/dist/languages/astgrep-backend/syntax.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/syntax.js +180 -0
- package/dist/languages/astgrep-backend/syntax.js.map +1 -0
- package/dist/languages/index.d.ts +14 -0
- package/dist/languages/index.d.ts.map +1 -0
- package/dist/languages/index.js +37 -0
- package/dist/languages/index.js.map +1 -0
- package/dist/languages/javascript/index.d.ts +4 -0
- package/dist/languages/javascript/index.d.ts.map +1 -0
- package/dist/languages/javascript/index.js +7 -0
- package/dist/languages/javascript/index.js.map +1 -0
- package/dist/languages/jsx/index.d.ts +4 -0
- package/dist/languages/jsx/index.d.ts.map +1 -0
- package/dist/languages/jsx/index.js +7 -0
- package/dist/languages/jsx/index.js.map +1 -0
- package/dist/languages/prose/index.d.ts +53 -0
- package/dist/languages/prose/index.d.ts.map +1 -0
- package/dist/languages/prose/index.js +172 -0
- package/dist/languages/prose/index.js.map +1 -0
- package/dist/languages/prose/line-bytes.d.ts +31 -0
- package/dist/languages/prose/line-bytes.d.ts.map +1 -0
- package/dist/languages/prose/line-bytes.js +39 -0
- package/dist/languages/prose/line-bytes.js.map +1 -0
- package/dist/languages/python/create-adapter.d.ts +20 -0
- package/dist/languages/python/create-adapter.d.ts.map +1 -0
- package/dist/languages/python/create-adapter.js +9 -0
- package/dist/languages/python/create-adapter.js.map +1 -0
- package/dist/languages/python/index.d.ts +4 -0
- package/dist/languages/python/index.d.ts.map +1 -0
- package/dist/languages/python/index.js +6 -0
- package/dist/languages/python/index.js.map +1 -0
- package/dist/languages/python/profile.d.ts +36 -0
- package/dist/languages/python/profile.d.ts.map +1 -0
- package/dist/languages/python/profile.js +282 -0
- package/dist/languages/python/profile.js.map +1 -0
- package/dist/languages/python/signature.d.ts +53 -0
- package/dist/languages/python/signature.d.ts.map +1 -0
- package/dist/languages/python/signature.js +188 -0
- package/dist/languages/python/signature.js.map +1 -0
- package/dist/languages/python/table.d.ts +46 -0
- package/dist/languages/python/table.d.ts.map +1 -0
- package/dist/languages/python/table.js +88 -0
- package/dist/languages/python/table.js.map +1 -0
- package/dist/languages/shared/call-detection.d.ts +17 -0
- package/dist/languages/shared/call-detection.d.ts.map +1 -0
- package/dist/languages/shared/call-detection.js +86 -0
- package/dist/languages/shared/call-detection.js.map +1 -0
- package/dist/languages/shared/chunks.d.ts +28 -0
- package/dist/languages/shared/chunks.d.ts.map +1 -0
- package/dist/languages/shared/chunks.js +181 -0
- package/dist/languages/shared/chunks.js.map +1 -0
- package/dist/languages/shared/create-adapter.d.ts +11 -0
- package/dist/languages/shared/create-adapter.d.ts.map +1 -0
- package/dist/languages/shared/create-adapter.js +90 -0
- package/dist/languages/shared/create-adapter.js.map +1 -0
- package/dist/languages/shared/decisions.d.ts +45 -0
- package/dist/languages/shared/decisions.d.ts.map +1 -0
- package/dist/languages/shared/decisions.js +141 -0
- package/dist/languages/shared/decisions.js.map +1 -0
- package/dist/languages/shared/dialect.d.ts +18 -0
- package/dist/languages/shared/dialect.d.ts.map +1 -0
- package/dist/languages/shared/dialect.js +37 -0
- package/dist/languages/shared/dialect.js.map +1 -0
- package/dist/languages/shared/doc-binding.d.ts +26 -0
- package/dist/languages/shared/doc-binding.d.ts.map +1 -0
- package/dist/languages/shared/doc-binding.js +50 -0
- package/dist/languages/shared/doc-binding.js.map +1 -0
- package/dist/languages/shared/engine.d.ts +49 -0
- package/dist/languages/shared/engine.d.ts.map +1 -0
- package/dist/languages/shared/engine.js +317 -0
- package/dist/languages/shared/engine.js.map +1 -0
- package/dist/languages/shared/extract-symbols.d.ts +5 -0
- package/dist/languages/shared/extract-symbols.d.ts.map +1 -0
- package/dist/languages/shared/extract-symbols.js +31 -0
- package/dist/languages/shared/extract-symbols.js.map +1 -0
- package/dist/languages/shared/fingerprint.d.ts +7 -0
- package/dist/languages/shared/fingerprint.d.ts.map +1 -0
- package/dist/languages/shared/fingerprint.js +95 -0
- package/dist/languages/shared/fingerprint.js.map +1 -0
- package/dist/languages/shared/grammar-loader.d.ts +15 -0
- package/dist/languages/shared/grammar-loader.d.ts.map +1 -0
- package/dist/languages/shared/grammar-loader.js +48 -0
- package/dist/languages/shared/grammar-loader.js.map +1 -0
- package/dist/languages/shared/import-detection.d.ts +24 -0
- package/dist/languages/shared/import-detection.d.ts.map +1 -0
- package/dist/languages/shared/import-detection.js +138 -0
- package/dist/languages/shared/import-detection.js.map +1 -0
- package/dist/languages/shared/js-family-profile.d.ts +5 -0
- package/dist/languages/shared/js-family-profile.d.ts.map +1 -0
- package/dist/languages/shared/js-family-profile.js +179 -0
- package/dist/languages/shared/js-family-profile.js.map +1 -0
- package/dist/languages/shared/node-kinds.d.ts +78 -0
- package/dist/languages/shared/node-kinds.d.ts.map +1 -0
- package/dist/languages/shared/node-kinds.js +141 -0
- package/dist/languages/shared/node-kinds.js.map +1 -0
- package/dist/languages/shared/node-utils.d.ts +31 -0
- package/dist/languages/shared/node-utils.d.ts.map +1 -0
- package/dist/languages/shared/node-utils.js +89 -0
- package/dist/languages/shared/node-utils.js.map +1 -0
- package/dist/languages/shared/parse-diagnostics.d.ts +44 -0
- package/dist/languages/shared/parse-diagnostics.d.ts.map +1 -0
- package/dist/languages/shared/parse-diagnostics.js +64 -0
- package/dist/languages/shared/parse-diagnostics.js.map +1 -0
- package/dist/languages/shared/parse-limits.d.ts +24 -0
- package/dist/languages/shared/parse-limits.d.ts.map +1 -0
- package/dist/languages/shared/parse-limits.js +134 -0
- package/dist/languages/shared/parse-limits.js.map +1 -0
- package/dist/languages/shared/profile.d.ts +149 -0
- package/dist/languages/shared/profile.d.ts.map +1 -0
- package/dist/languages/shared/profile.js +9 -0
- package/dist/languages/shared/profile.js.map +1 -0
- package/dist/languages/shared/scope-model.d.ts +32 -0
- package/dist/languages/shared/scope-model.d.ts.map +1 -0
- package/dist/languages/shared/scope-model.js +2 -0
- package/dist/languages/shared/scope-model.js.map +1 -0
- package/dist/languages/shared/scope-naming.d.ts +20 -0
- package/dist/languages/shared/scope-naming.d.ts.map +1 -0
- package/dist/languages/shared/scope-naming.js +118 -0
- package/dist/languages/shared/scope-naming.js.map +1 -0
- package/dist/languages/shared/scope-signature.d.ts +14 -0
- package/dist/languages/shared/scope-signature.d.ts.map +1 -0
- package/dist/languages/shared/scope-signature.js +82 -0
- package/dist/languages/shared/scope-signature.js.map +1 -0
- package/dist/languages/shared/signature.d.ts +55 -0
- package/dist/languages/shared/signature.d.ts.map +1 -0
- package/dist/languages/shared/signature.js +147 -0
- package/dist/languages/shared/signature.js.map +1 -0
- package/dist/languages/shared/syntax.d.ts +115 -0
- package/dist/languages/shared/syntax.d.ts.map +1 -0
- package/dist/languages/shared/syntax.js +2 -0
- package/dist/languages/shared/syntax.js.map +1 -0
- package/dist/languages/shared/table-profile-decisions.d.ts +54 -0
- package/dist/languages/shared/table-profile-decisions.d.ts.map +1 -0
- package/dist/languages/shared/table-profile-decisions.js +245 -0
- package/dist/languages/shared/table-profile-decisions.js.map +1 -0
- package/dist/languages/shared/table-profile-module-facts.d.ts +29 -0
- package/dist/languages/shared/table-profile-module-facts.d.ts.map +1 -0
- package/dist/languages/shared/table-profile-module-facts.js +139 -0
- package/dist/languages/shared/table-profile-module-facts.js.map +1 -0
- package/dist/languages/shared/table-profile-queries.d.ts +27 -0
- package/dist/languages/shared/table-profile-queries.d.ts.map +1 -0
- package/dist/languages/shared/table-profile-queries.js +70 -0
- package/dist/languages/shared/table-profile-queries.js.map +1 -0
- package/dist/languages/shared/table-profile-scopes.d.ts +46 -0
- package/dist/languages/shared/table-profile-scopes.d.ts.map +1 -0
- package/dist/languages/shared/table-profile-scopes.js +180 -0
- package/dist/languages/shared/table-profile-scopes.js.map +1 -0
- package/dist/languages/shared/table-profile.d.ts +302 -0
- package/dist/languages/shared/table-profile.d.ts.map +1 -0
- package/dist/languages/shared/table-profile.js +125 -0
- package/dist/languages/shared/table-profile.js.map +1 -0
- package/dist/languages/shared/tree-sitter-types.d.ts +44 -0
- package/dist/languages/shared/tree-sitter-types.d.ts.map +1 -0
- package/dist/languages/shared/tree-sitter-types.js +2 -0
- package/dist/languages/shared/tree-sitter-types.js.map +1 -0
- package/dist/languages/structured-text/index.d.ts +48 -0
- package/dist/languages/structured-text/index.d.ts.map +1 -0
- package/dist/languages/structured-text/index.js +120 -0
- package/dist/languages/structured-text/index.js.map +1 -0
- package/dist/languages/tsx/index.d.ts +4 -0
- package/dist/languages/tsx/index.d.ts.map +1 -0
- package/dist/languages/tsx/index.js +7 -0
- package/dist/languages/tsx/index.js.map +1 -0
- package/dist/languages/typescript/index.d.ts +4 -0
- package/dist/languages/typescript/index.d.ts.map +1 -0
- package/dist/languages/typescript/index.js +7 -0
- package/dist/languages/typescript/index.js.map +1 -0
- package/dist/languages/vue/index.d.ts +21 -0
- package/dist/languages/vue/index.d.ts.map +1 -0
- package/dist/languages/vue/index.js +234 -0
- package/dist/languages/vue/index.js.map +1 -0
- package/dist/languages/vue/mapping.d.ts +11 -0
- package/dist/languages/vue/mapping.d.ts.map +1 -0
- package/dist/languages/vue/mapping.js +77 -0
- package/dist/languages/vue/mapping.js.map +1 -0
- package/dist/registry.d.ts +24 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +42 -0
- package/dist/registry.js.map +1 -0
- package/dist/text/byte-offset-table.d.ts +27 -0
- package/dist/text/byte-offset-table.d.ts.map +1 -0
- package/dist/text/byte-offset-table.js +39 -0
- package/dist/text/byte-offset-table.js.map +1 -0
- package/package.json +125 -3
- package/src/boundaries/expression.ts +95 -0
- package/src/boundaries/extract.ts +307 -0
- package/src/boundaries/python.ts +181 -0
- package/src/index.ts +51 -0
- package/src/languages/__golden__/javascript-basic.json +32 -0
- package/src/languages/__golden__/tsx-basic.json +19 -0
- package/src/languages/__golden__/typescript-basic.json +37 -0
- package/src/languages/astgrep-backend/GRAMMARS.md +86 -0
- package/src/languages/astgrep-backend/README.md +112 -0
- package/src/languages/astgrep-backend/__golden__/bash-basic.sh +53 -0
- package/src/languages/astgrep-backend/__golden__/c-basic.c +64 -0
- package/src/languages/astgrep-backend/__golden__/cpp-basic.cpp +65 -0
- package/src/languages/astgrep-backend/__golden__/csharp-basic.cs +73 -0
- package/src/languages/astgrep-backend/__golden__/go-basic.go +93 -0
- package/src/languages/astgrep-backend/__golden__/java-basic.java +62 -0
- package/src/languages/astgrep-backend/__golden__/kotlin-basic.kt +58 -0
- package/src/languages/astgrep-backend/__golden__/php-basic.php +72 -0
- package/src/languages/astgrep-backend/__golden__/ruby-basic.rb +62 -0
- package/src/languages/astgrep-backend/__golden__/rust-basic.rs +82 -0
- package/src/languages/astgrep-backend/__golden__/swift-basic.swift +73 -0
- package/src/languages/astgrep-backend/adapter.ts +240 -0
- package/src/languages/astgrep-backend/index.ts +44 -0
- package/src/languages/astgrep-backend/lang/README.md +115 -0
- package/src/languages/astgrep-backend/lang/bash.ts +78 -0
- package/src/languages/astgrep-backend/lang/c.ts +119 -0
- package/src/languages/astgrep-backend/lang/cpp.ts +65 -0
- package/src/languages/astgrep-backend/lang/csharp.ts +125 -0
- package/src/languages/astgrep-backend/lang/index.ts +61 -0
- package/src/languages/astgrep-backend/lang/java.ts +115 -0
- package/src/languages/astgrep-backend/lang/kotlin.ts +136 -0
- package/src/languages/astgrep-backend/lang/php.ts +105 -0
- package/src/languages/astgrep-backend/lang/ruby.ts +105 -0
- package/src/languages/astgrep-backend/lang/swift.ts +118 -0
- package/src/languages/astgrep-backend/languages.ts +238 -0
- package/src/languages/astgrep-backend/napi.ts +261 -0
- package/src/languages/astgrep-backend/syntax.ts +242 -0
- package/src/languages/index.ts +53 -0
- package/src/languages/javascript/index.ts +9 -0
- package/src/languages/jsx/index.ts +9 -0
- package/src/languages/prose/index.ts +270 -0
- package/src/languages/prose/line-bytes.ts +52 -0
- package/src/languages/python/README.md +246 -0
- package/src/languages/python/__golden__/python-basic.json +44 -0
- package/src/languages/python/create-adapter.ts +29 -0
- package/src/languages/python/index.ts +8 -0
- package/src/languages/python/profile.ts +341 -0
- package/src/languages/python/signature.ts +183 -0
- package/src/languages/python/table.ts +135 -0
- package/src/languages/shared/__fixtures__/large-over-32kib.ts.txt +1207 -0
- package/src/languages/shared/call-detection.ts +112 -0
- package/src/languages/shared/chunks.ts +255 -0
- package/src/languages/shared/create-adapter.ts +136 -0
- package/src/languages/shared/decisions.ts +204 -0
- package/src/languages/shared/dialect.ts +55 -0
- package/src/languages/shared/doc-binding.ts +78 -0
- package/src/languages/shared/engine.ts +461 -0
- package/src/languages/shared/extract-symbols.ts +35 -0
- package/src/languages/shared/fingerprint.ts +99 -0
- package/src/languages/shared/grammar-loader.ts +67 -0
- package/src/languages/shared/import-detection.ts +154 -0
- package/src/languages/shared/js-family-profile.ts +246 -0
- package/src/languages/shared/node-kinds.ts +153 -0
- package/src/languages/shared/node-utils.ts +120 -0
- package/src/languages/shared/parse-diagnostics.ts +125 -0
- package/src/languages/shared/parse-limits.ts +147 -0
- package/src/languages/shared/profile.ts +184 -0
- package/src/languages/shared/scope-model.ts +43 -0
- package/src/languages/shared/scope-naming.ts +124 -0
- package/src/languages/shared/scope-signature.ts +108 -0
- package/src/languages/shared/signature.ts +149 -0
- package/src/languages/shared/syntax.ts +116 -0
- package/src/languages/shared/table-profile-decisions.ts +251 -0
- package/src/languages/shared/table-profile-module-facts.ts +177 -0
- package/src/languages/shared/table-profile-queries.ts +85 -0
- package/src/languages/shared/table-profile-scopes.ts +198 -0
- package/src/languages/shared/table-profile.ts +427 -0
- package/src/languages/shared/tree-sitter-types.ts +46 -0
- package/src/languages/structured-text/index.ts +192 -0
- package/src/languages/tsx/index.ts +9 -0
- package/src/languages/typescript/index.ts +9 -0
- package/src/languages/vue/index.ts +312 -0
- package/src/languages/vue/mapping.ts +93 -0
- package/src/registry.ts +61 -0
- package/src/text/byte-offset-table.ts +63 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazy loader for the native `tree-sitter` runtime and its grammars.
|
|
3
|
+
*
|
|
4
|
+
* architecture.md §6.5 / the WP-06 mandate require that the CLI NOT load
|
|
5
|
+
* every grammar at startup. We satisfy that with plain lazy `require`
|
|
6
|
+
* (via `node:module#createRequire`, since this package is ESM and the
|
|
7
|
+
* native bindings are CommonJS) cached in module-level maps: nothing here
|
|
8
|
+
* runs until `getParser()`/`loadGrammar()` is first called for a given
|
|
9
|
+
* language, and each grammar is required at most once per process.
|
|
10
|
+
*
|
|
11
|
+
* `require` (not dynamic `import()`) is deliberate: `LanguageAdapter.parse`
|
|
12
|
+
* (domain `analysis.ts`) is a SYNCHRONOUS method, so grammar acquisition on
|
|
13
|
+
* first use must be synchronous too. `createRequire` gives us a synchronous
|
|
14
|
+
* CJS `require` from inside an ESM module without violating
|
|
15
|
+
* `verbatimModuleSyntax`.
|
|
16
|
+
*/
|
|
17
|
+
import { createRequire } from "node:module";
|
|
18
|
+
const require = createRequire(import.meta.url);
|
|
19
|
+
let cachedParserCtor;
|
|
20
|
+
/** Lazily requires the native `tree-sitter` Parser constructor (once per process). */
|
|
21
|
+
export function loadParserCtor() {
|
|
22
|
+
if (cachedParserCtor === undefined) {
|
|
23
|
+
cachedParserCtor = require("tree-sitter");
|
|
24
|
+
}
|
|
25
|
+
return cachedParserCtor;
|
|
26
|
+
}
|
|
27
|
+
const grammarCache = new Map();
|
|
28
|
+
function grammarCacheKey(source) {
|
|
29
|
+
return `${source.moduleName}::${source.exportName ?? "default"}`;
|
|
30
|
+
}
|
|
31
|
+
/** Lazily requires and caches a single grammar `Language` handle. */
|
|
32
|
+
export function loadGrammar(source) {
|
|
33
|
+
const key = grammarCacheKey(source);
|
|
34
|
+
const cached = grammarCache.get(key);
|
|
35
|
+
if (cached !== undefined) {
|
|
36
|
+
return cached;
|
|
37
|
+
}
|
|
38
|
+
const loadedModule = require(source.moduleName);
|
|
39
|
+
const language = (source.exportName === undefined ? loadedModule : loadedModule[source.exportName]);
|
|
40
|
+
grammarCache.set(key, language);
|
|
41
|
+
return language;
|
|
42
|
+
}
|
|
43
|
+
/** Test-only: clears caches so grammar-loading behavior can be re-exercised. */
|
|
44
|
+
export function resetGrammarCachesForTests() {
|
|
45
|
+
cachedParserCtor = undefined;
|
|
46
|
+
grammarCache.clear();
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=grammar-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grammar-loader.js","sourceRoot":"","sources":["../../../src/languages/shared/grammar-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,IAAI,gBAA0C,CAAC;AAE/C,sFAAsF;AACtF,MAAM,UAAU,cAAc;IAC5B,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAiB,CAAC;IAC5D,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAUD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;AAEnD,SAAS,eAAe,CAAC,MAAqB;IAC5C,OAAO,GAAG,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC;AACnE,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,MAAqB;IAC/C,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAA4B,CAAC;IAC3E,MAAM,QAAQ,GAAG,CACf,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CACnE,CAAC;IAChB,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,0BAA0B;IACxC,gBAAgB,GAAG,SAAS,CAAC;IAC7B,YAAY,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import/re-export/require/dynamic-import detection (spec.md §14.2).
|
|
3
|
+
*
|
|
4
|
+
* `RawImportKind` (domain `analysis.ts`) has exactly four members: `import`,
|
|
5
|
+
* `re_export`, `dynamic_import`, `package_dependency`. CommonJS
|
|
6
|
+
* `require("x")` has no dedicated member — it is mapped to `"import"`
|
|
7
|
+
* (documented WP-06 decision, README "Entscheidungen"): a `require` call is
|
|
8
|
+
* functionally a synchronous import of the same specifier space, and
|
|
9
|
+
* `"package_dependency"` is reserved for a resolved (not source-level)
|
|
10
|
+
* cross-package edge produced downstream by the import resolver / file
|
|
11
|
+
* graph, not by this adapter.
|
|
12
|
+
*/
|
|
13
|
+
import type { RawImport } from "@untangle-code/domain";
|
|
14
|
+
import type { FileTextContext } from "./node-utils.js";
|
|
15
|
+
import type { SyntaxNode } from "./syntax.js";
|
|
16
|
+
/** Detects a static `import ...` / TS `import x = require(...)` statement. */
|
|
17
|
+
export declare function detectStaticImport(node: SyntaxNode, ctx: FileTextContext): RawImport | null;
|
|
18
|
+
/** Detects a re-export (`export { x } from "y"`, `export * from "y"`, `export * as ns from "y"`). */
|
|
19
|
+
export declare function detectReExport(node: SyntaxNode, ctx: FileTextContext): RawImport | null;
|
|
20
|
+
/** Detects `import("specifier")` (dynamic import) given its enclosing `call_expression`. */
|
|
21
|
+
export declare function detectDynamicImport(callNode: SyntaxNode, ctx: FileTextContext): RawImport | null;
|
|
22
|
+
/** Detects `require("specifier")` given its enclosing `call_expression`. Mapped to `importKind: "import"` (see file doc). */
|
|
23
|
+
export declare function detectRequireCall(callNode: SyntaxNode, ctx: FileTextContext): RawImport | null;
|
|
24
|
+
//# sourceMappingURL=import-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-detection.d.ts","sourceRoot":"","sources":["../../../src/languages/shared/import-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,uBAAuB,CAAC;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA6C9C,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CA2B3F;AAED,qGAAqG;AACrG,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CA6BvF;AAED,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAahG;AAED,6HAA6H;AAC7H,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAa9F"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { unquote, rangeOf } from "./node-utils.js";
|
|
2
|
+
/**
|
|
3
|
+
* Zerlegt eine Importklausel in ihre BINDUNGEN — lokaler Name UND Name im
|
|
4
|
+
* Zielmodul. Der lokale Name allein genuegt nicht: bei
|
|
5
|
+
* `import { run as go } from "./lib"` ist `go` lokal und `run` der Export.
|
|
6
|
+
* Wer die Zuordnung hier wegwirft, kann sie nirgends mehr herstellen
|
|
7
|
+
* (`RawImportBinding` in domain `analysis.ts`).
|
|
8
|
+
*/
|
|
9
|
+
function extractImportBindings(clauseOrSpecifierHolder) {
|
|
10
|
+
const bindings = [];
|
|
11
|
+
for (const child of clauseOrSpecifierHolder.children) {
|
|
12
|
+
if (child.type === "identifier") {
|
|
13
|
+
// Direkter Bezeichner der Importklausel: der Vorgabeexport.
|
|
14
|
+
bindings.push({ localName: child.text, importedName: "default", kind: "default" });
|
|
15
|
+
}
|
|
16
|
+
else if (child.type === "namespace_import") {
|
|
17
|
+
const inner = child.children.find((c) => c.type === "identifier");
|
|
18
|
+
if (inner !== undefined)
|
|
19
|
+
bindings.push({ localName: inner.text, kind: "namespace" });
|
|
20
|
+
}
|
|
21
|
+
else if (child.type === "named_imports") {
|
|
22
|
+
for (const specifier of child.children) {
|
|
23
|
+
if (specifier.type !== "import_specifier")
|
|
24
|
+
continue;
|
|
25
|
+
const alias = specifier.childForFieldName("alias");
|
|
26
|
+
const name = specifier.childForFieldName("name");
|
|
27
|
+
if (name === null)
|
|
28
|
+
continue;
|
|
29
|
+
const importedName = unquote(name.text);
|
|
30
|
+
bindings.push({
|
|
31
|
+
localName: alias === null ? importedName : unquote(alias.text),
|
|
32
|
+
importedName,
|
|
33
|
+
kind: importedName === "default" ? "default" : "named",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return bindings;
|
|
39
|
+
}
|
|
40
|
+
/** Lokale Namen der Bindungen, in Quelltextreihenfolge. */
|
|
41
|
+
function localNamesOf(bindings) {
|
|
42
|
+
return bindings.map((binding) => binding.localName);
|
|
43
|
+
}
|
|
44
|
+
function hasDirectTypeModifier(node) {
|
|
45
|
+
return node.children.some((child) => child.type === "type");
|
|
46
|
+
}
|
|
47
|
+
/** Detects a static `import ...` / TS `import x = require(...)` statement. */
|
|
48
|
+
export function detectStaticImport(node, ctx) {
|
|
49
|
+
const range = rangeOf(node, ctx);
|
|
50
|
+
const requireClause = node.children.find((child) => child.type === "import_require_clause");
|
|
51
|
+
if (requireClause !== undefined) {
|
|
52
|
+
const source = requireClause.childForFieldName("source");
|
|
53
|
+
if (source === null)
|
|
54
|
+
return null;
|
|
55
|
+
return {
|
|
56
|
+
specifier: unquote(source.text),
|
|
57
|
+
importKind: "import",
|
|
58
|
+
range,
|
|
59
|
+
typeOnly: hasDirectTypeModifier(node),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const source = node.childForFieldName("source");
|
|
63
|
+
if (source === null)
|
|
64
|
+
return null;
|
|
65
|
+
const importClause = node.children.find((child) => child.type === "import_clause");
|
|
66
|
+
const bindings = importClause !== undefined ? extractImportBindings(importClause) : [];
|
|
67
|
+
const importedNames = localNamesOf(bindings);
|
|
68
|
+
return {
|
|
69
|
+
specifier: unquote(source.text),
|
|
70
|
+
importKind: "import",
|
|
71
|
+
range,
|
|
72
|
+
...(importedNames.length > 0 ? { importedNames, bindings } : {}),
|
|
73
|
+
typeOnly: hasDirectTypeModifier(node),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/** Detects a re-export (`export { x } from "y"`, `export * from "y"`, `export * as ns from "y"`). */
|
|
77
|
+
export function detectReExport(node, ctx) {
|
|
78
|
+
const source = node.childForFieldName("source");
|
|
79
|
+
if (source === null)
|
|
80
|
+
return null;
|
|
81
|
+
const exportClause = node.children.find((child) => child.type === "export_clause");
|
|
82
|
+
const bindings = [];
|
|
83
|
+
if (exportClause !== undefined) {
|
|
84
|
+
for (const specifier of exportClause.children) {
|
|
85
|
+
if (specifier.type !== "export_specifier")
|
|
86
|
+
continue;
|
|
87
|
+
const alias = specifier.childForFieldName("alias");
|
|
88
|
+
const name = specifier.childForFieldName("name");
|
|
89
|
+
if (name === null)
|
|
90
|
+
continue;
|
|
91
|
+
// Bei `export { run as go } from "m"` ist `run` der Name IM Zielmodul
|
|
92
|
+
// und `go` der hier weitergereichte Name.
|
|
93
|
+
const importedName = unquote(name.text);
|
|
94
|
+
bindings.push({
|
|
95
|
+
localName: alias === null ? importedName : unquote(alias.text),
|
|
96
|
+
importedName,
|
|
97
|
+
kind: importedName === "default" ? "default" : "named",
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const importedNames = localNamesOf(bindings);
|
|
102
|
+
return {
|
|
103
|
+
specifier: unquote(source.text),
|
|
104
|
+
importKind: "re_export",
|
|
105
|
+
range: rangeOf(node, ctx),
|
|
106
|
+
...(importedNames.length > 0 ? { importedNames, bindings } : {}),
|
|
107
|
+
typeOnly: hasDirectTypeModifier(node),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/** Detects `import("specifier")` (dynamic import) given its enclosing `call_expression`. */
|
|
111
|
+
export function detectDynamicImport(callNode, ctx) {
|
|
112
|
+
const args = callNode.childForFieldName("arguments");
|
|
113
|
+
const firstArg = args?.namedChild(0) ?? null;
|
|
114
|
+
const specifier = firstArg !== null && firstArg.type === "string"
|
|
115
|
+
? unquote(firstArg.text)
|
|
116
|
+
: (firstArg?.text ?? "");
|
|
117
|
+
return {
|
|
118
|
+
specifier,
|
|
119
|
+
importKind: "dynamic_import",
|
|
120
|
+
range: rangeOf(callNode, ctx),
|
|
121
|
+
typeOnly: false,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/** Detects `require("specifier")` given its enclosing `call_expression`. Mapped to `importKind: "import"` (see file doc). */
|
|
125
|
+
export function detectRequireCall(callNode, ctx) {
|
|
126
|
+
const args = callNode.childForFieldName("arguments");
|
|
127
|
+
const firstArg = args?.namedChild(0) ?? null;
|
|
128
|
+
const specifier = firstArg !== null && firstArg.type === "string"
|
|
129
|
+
? unquote(firstArg.text)
|
|
130
|
+
: (firstArg?.text ?? "");
|
|
131
|
+
return {
|
|
132
|
+
specifier,
|
|
133
|
+
importKind: "import",
|
|
134
|
+
range: rangeOf(callNode, ctx),
|
|
135
|
+
typeOnly: false,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=import-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-detection.js","sourceRoot":"","sources":["../../../src/languages/shared/import-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Dialect } from "./dialect.js";
|
|
2
|
+
import type { LanguageProfile } from "./profile.js";
|
|
3
|
+
/** Baut das Profil einer der vier JS/TS-Dialekte. */
|
|
4
|
+
export declare function createJsFamilyProfile(dialect: Dialect): LanguageProfile;
|
|
5
|
+
//# sourceMappingURL=js-family-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js-family-profile.d.ts","sourceRoot":"","sources":["../../../src/languages/shared/js-family-profile.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA+B5C,OAAO,KAAK,EAAE,eAAe,EAAgD,MAAM,cAAc,CAAC;AAoFlG,qDAAqD;AACrD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CA0GvE"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { detectCallExpression, detectNewExpression } from "./call-detection.js";
|
|
2
|
+
import { detectDecisionAndNesting, mayCarryDecisionOrNesting } from "./decisions.js";
|
|
3
|
+
import { resolveDocRange } from "./doc-binding.js";
|
|
4
|
+
import { detectDynamicImport, detectReExport, detectRequireCall, detectStaticImport, } from "./import-detection.js";
|
|
5
|
+
import { CALL_EXPRESSION, CLASS_STATIC_BLOCK_TYPE, CLASS_TYPES, COMMENT_TYPE, ENUM_TYPE, EXPORT_STATEMENT, FIELD_TYPES, FUNCTION_LIKE_TYPES, IDENTIFIER_LEAF_TYPES, IGNORED_PUNCTUATION_TYPES, IMPORT_STATEMENT, INTERFACE_TYPE, LITERAL_CONTAINER_STOP_TYPES, METHOD_TYPE, NAMESPACE_TYPE, NEW_EXPRESSION, SCOPE_OPENING_TYPES, SIMPLE_LITERAL_LEAF_TYPES, TEMPLATE_TEXT_LEAF_TYPES, TYPE_ALIAS_TYPE, } from "./node-kinds.js";
|
|
6
|
+
import { rangeOf } from "./node-utils.js";
|
|
7
|
+
import { fieldDelegatesToFunctionValue, resolveExportedNames, resolveScopeName, resolveVisibility, } from "./scope-naming.js";
|
|
8
|
+
import { buildFunctionSignature, buildHeaderSignature, buildPropertySignature, isFunctionLikeScope, } from "./scope-signature.js";
|
|
9
|
+
/** Der TS-Knoten, dessen Blaetter reine Typsyntax sind (`string`, `number`, `void`, ...). */
|
|
10
|
+
const PREDEFINED_TYPE = "predefined_type";
|
|
11
|
+
/**
|
|
12
|
+
* Die Knotenarten, fuer die der Walk einen Knotenwrapper braucht: Scopeoeffner,
|
|
13
|
+
* Entscheidungstraeger, Import/Export, Aufruf. Fuer alles andere bleibt der
|
|
14
|
+
* Cursor unter sich (WP-95).
|
|
15
|
+
*/
|
|
16
|
+
function needsNodeFor(kind) {
|
|
17
|
+
return (SCOPE_OPENING_TYPES.has(kind) ||
|
|
18
|
+
mayCarryDecisionOrNesting(kind) ||
|
|
19
|
+
kind === IMPORT_STATEMENT ||
|
|
20
|
+
kind === EXPORT_STATEMENT ||
|
|
21
|
+
kind === CALL_EXPRESSION ||
|
|
22
|
+
kind === NEW_EXPRESSION);
|
|
23
|
+
}
|
|
24
|
+
function simpleLiteralKind(kind) {
|
|
25
|
+
switch (kind) {
|
|
26
|
+
case "number":
|
|
27
|
+
return "number";
|
|
28
|
+
case "true":
|
|
29
|
+
case "false":
|
|
30
|
+
return "boolean";
|
|
31
|
+
case "null":
|
|
32
|
+
return "null";
|
|
33
|
+
default:
|
|
34
|
+
return "other";
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Deklaration oder Verweis? Aus `cursor.currentFieldName` und der Elternart —
|
|
39
|
+
* unveraendert aus `engine.ts` uebernommen.
|
|
40
|
+
*/
|
|
41
|
+
function identifierRole(fieldName, parentKind) {
|
|
42
|
+
if (fieldName === "name") {
|
|
43
|
+
if (parentKind === "variable_declarator" ||
|
|
44
|
+
parentKind === "function_declaration" ||
|
|
45
|
+
parentKind === "class_declaration" ||
|
|
46
|
+
parentKind === "abstract_class_declaration" ||
|
|
47
|
+
parentKind === "interface_declaration" ||
|
|
48
|
+
parentKind === "type_alias_declaration" ||
|
|
49
|
+
parentKind === "enum_declaration" ||
|
|
50
|
+
parentKind === "method_definition" ||
|
|
51
|
+
parentKind === "required_parameter" ||
|
|
52
|
+
parentKind === "optional_parameter" ||
|
|
53
|
+
parentKind === "import_specifier" ||
|
|
54
|
+
parentKind === "namespace_import") {
|
|
55
|
+
return "declaration";
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (fieldName === "property" &&
|
|
59
|
+
(parentKind === "field_definition" || parentKind === "public_field_definition")) {
|
|
60
|
+
return "declaration";
|
|
61
|
+
}
|
|
62
|
+
return "reference";
|
|
63
|
+
}
|
|
64
|
+
/** Baut das Profil einer der vier JS/TS-Dialekte. */
|
|
65
|
+
export function createJsFamilyProfile(dialect) {
|
|
66
|
+
const supportLevel = dialect.supportLevel;
|
|
67
|
+
return {
|
|
68
|
+
languageId: dialect.languageId,
|
|
69
|
+
extensions: dialect.extensions,
|
|
70
|
+
supportLevel,
|
|
71
|
+
commentKinds: new Set([COMMENT_TYPE]),
|
|
72
|
+
literalContainerKinds: LITERAL_CONTAINER_STOP_TYPES,
|
|
73
|
+
identifierLeafKinds: IDENTIFIER_LEAF_TYPES,
|
|
74
|
+
simpleLiteralLeafKinds: SIMPLE_LITERAL_LEAF_TYPES,
|
|
75
|
+
templateTextLeafKinds: TEMPLATE_TEXT_LEAF_TYPES,
|
|
76
|
+
ignoredPunctuationKinds: IGNORED_PUNCTUATION_TYPES,
|
|
77
|
+
typeKeywordParentKinds: new Set([PREDEFINED_TYPE]),
|
|
78
|
+
functionLikeKinds: FUNCTION_LIKE_TYPES,
|
|
79
|
+
exportWrapperKinds: new Set([EXPORT_STATEMENT]),
|
|
80
|
+
containerLiteralKind: (kind) => (kind === "regex" ? "regex" : "string"),
|
|
81
|
+
simpleLiteralKind,
|
|
82
|
+
identifierRole,
|
|
83
|
+
needsNode: needsNodeFor,
|
|
84
|
+
scopeKindOf(node) {
|
|
85
|
+
if (FUNCTION_LIKE_TYPES.has(node.type))
|
|
86
|
+
return "function";
|
|
87
|
+
if (node.type === METHOD_TYPE) {
|
|
88
|
+
return resolveScopeName(node) === "constructor" ? "constructor" : "method";
|
|
89
|
+
}
|
|
90
|
+
if (CLASS_TYPES.has(node.type))
|
|
91
|
+
return "class";
|
|
92
|
+
if (node.type === INTERFACE_TYPE)
|
|
93
|
+
return "interface";
|
|
94
|
+
if (node.type === TYPE_ALIAS_TYPE)
|
|
95
|
+
return "type";
|
|
96
|
+
if (node.type === ENUM_TYPE)
|
|
97
|
+
return "enum";
|
|
98
|
+
if (node.type === NAMESPACE_TYPE)
|
|
99
|
+
return "namespace";
|
|
100
|
+
if (node.type === dialect.fieldDefinitionKind)
|
|
101
|
+
return "property";
|
|
102
|
+
return null;
|
|
103
|
+
},
|
|
104
|
+
suppressesScope(node) {
|
|
105
|
+
return FIELD_TYPES.has(node.type) && fieldDelegatesToFunctionValue(node);
|
|
106
|
+
},
|
|
107
|
+
scopeName: resolveScopeName,
|
|
108
|
+
scopeSignature(node, kind, name) {
|
|
109
|
+
return isFunctionLikeScope(node.type)
|
|
110
|
+
? buildFunctionSignature(node, name)
|
|
111
|
+
: kind === "property"
|
|
112
|
+
? buildPropertySignature(node, name)
|
|
113
|
+
: buildHeaderSignature(node);
|
|
114
|
+
},
|
|
115
|
+
docRange: resolveDocRange,
|
|
116
|
+
visibility: resolveVisibility,
|
|
117
|
+
exportedNames: resolveExportedNames,
|
|
118
|
+
detectDecisionAndNesting,
|
|
119
|
+
collectModuleFacts(node, kind, callerScopeId, ctx, sink) {
|
|
120
|
+
if (kind === IMPORT_STATEMENT) {
|
|
121
|
+
const detectedImport = detectStaticImport(node, ctx);
|
|
122
|
+
if (detectedImport !== null)
|
|
123
|
+
sink.imports.push(detectedImport);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (kind === EXPORT_STATEMENT) {
|
|
127
|
+
if (node.childForFieldName("source") !== null) {
|
|
128
|
+
const reExport = detectReExport(node, ctx);
|
|
129
|
+
if (reExport !== null)
|
|
130
|
+
sink.imports.push(reExport);
|
|
131
|
+
}
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (kind === CALL_EXPRESSION) {
|
|
135
|
+
const functionNode = node.childForFieldName("function");
|
|
136
|
+
if (functionNode?.type === "import") {
|
|
137
|
+
const dynamicImport = detectDynamicImport(node, ctx);
|
|
138
|
+
if (dynamicImport !== null)
|
|
139
|
+
sink.imports.push(dynamicImport);
|
|
140
|
+
}
|
|
141
|
+
else if (functionNode?.type === "identifier" && functionNode.text === "require") {
|
|
142
|
+
const requireImport = detectRequireCall(node, ctx);
|
|
143
|
+
if (requireImport !== null)
|
|
144
|
+
sink.imports.push(requireImport);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const call = detectCallExpression(node, callerScopeId, ctx);
|
|
148
|
+
if (call !== null)
|
|
149
|
+
sink.calls.push(call);
|
|
150
|
+
}
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (kind === NEW_EXPRESSION) {
|
|
154
|
+
const call = detectNewExpression(node, callerScopeId, ctx);
|
|
155
|
+
if (call !== null)
|
|
156
|
+
sink.calls.push(call);
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
memberRegions(node, parentScopeId, ctx) {
|
|
160
|
+
const body = node.childForFieldName("body");
|
|
161
|
+
if (body === null)
|
|
162
|
+
return [];
|
|
163
|
+
const regions = [];
|
|
164
|
+
let ordinal = 0;
|
|
165
|
+
for (const child of body.children) {
|
|
166
|
+
if (child.type !== CLASS_STATIC_BLOCK_TYPE)
|
|
167
|
+
continue;
|
|
168
|
+
regions.push({
|
|
169
|
+
range: rangeOf(child, ctx),
|
|
170
|
+
scopeId: `${parentScopeId}#static_block#${String(ordinal)}`,
|
|
171
|
+
headerText: "static initialization block",
|
|
172
|
+
});
|
|
173
|
+
ordinal += 1;
|
|
174
|
+
}
|
|
175
|
+
return regions;
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=js-family-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js-family-profile.js","sourceRoot":"","sources":["../../../src/languages/shared/js-family-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tree-sitter node `.type` string constants shared by the JS/TS grammar
|
|
3
|
+
* family (tree-sitter-javascript, tree-sitter-typescript `typescript` and
|
|
4
|
+
* `tsx` dialects). Verified against each grammar's `src/node-types.json`
|
|
5
|
+
* (see package README, "Grammatik-Wahl").
|
|
6
|
+
*
|
|
7
|
+
* A set may list a node kind that a particular dialect's grammar never
|
|
8
|
+
* actually produces (e.g. `public_field_definition` never appears in a
|
|
9
|
+
* plain JavaScript tree) — that is harmless: `Set#has` on a type string the
|
|
10
|
+
* grammar never emits simply never matches.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Nodes whose entire subtree collapses to ONE operand/literal token (do not
|
|
14
|
+
* recurse into children). `template_string` is deliberately EXCLUDED here
|
|
15
|
+
* even though it is a literal: `${expr}` interpolations can contain calls,
|
|
16
|
+
* identifiers and decisions that must still be walked (verified against the
|
|
17
|
+
* grammar: a `template_string` node's children are `` ` ``, `string_fragment`,
|
|
18
|
+
* `escape_sequence` and `template_substitution` — see `TEMPLATE_TEXT_LEAF_TYPES`
|
|
19
|
+
* below, and the `` ` ``/`${` delimiters folded into `IGNORED_PUNCTUATION_TYPES`,
|
|
20
|
+
* for how its non-substitution parts are classified instead).
|
|
21
|
+
*/
|
|
22
|
+
export declare const LITERAL_CONTAINER_STOP_TYPES: ReadonlySet<string>;
|
|
23
|
+
/** Static-text leaves inside a `template_string` (its non-`${}` content) — operands. */
|
|
24
|
+
export declare const TEMPLATE_TEXT_LEAF_TYPES: ReadonlySet<string>;
|
|
25
|
+
/** Leaf node types that are identifier occurrences (operands). */
|
|
26
|
+
export declare const IDENTIFIER_LEAF_TYPES: ReadonlySet<string>;
|
|
27
|
+
/** Leaf node types that are simple (non-container) literals. */
|
|
28
|
+
export declare const SIMPLE_LITERAL_LEAF_TYPES: ReadonlySet<string>;
|
|
29
|
+
/** Punctuation leaves that count neither as operator nor operand (pure structure). */
|
|
30
|
+
export declare const IGNORED_PUNCTUATION_TYPES: ReadonlySet<string>;
|
|
31
|
+
/** Function-shaped scope node types (produce ExtractedSymbol kind "function"). */
|
|
32
|
+
export declare const FUNCTION_LIKE_TYPES: ReadonlySet<string>;
|
|
33
|
+
export declare const METHOD_TYPE = "method_definition";
|
|
34
|
+
export declare const CLASS_TYPES: ReadonlySet<string>;
|
|
35
|
+
export declare const INTERFACE_TYPE = "interface_declaration";
|
|
36
|
+
export declare const TYPE_ALIAS_TYPE = "type_alias_declaration";
|
|
37
|
+
export declare const ENUM_TYPE = "enum_declaration";
|
|
38
|
+
export declare const NAMESPACE_TYPE = "internal_module";
|
|
39
|
+
export declare const FIELD_TYPES: ReadonlySet<string>;
|
|
40
|
+
/**
|
|
41
|
+
* `static { ... }` initialization block inside a class body. NOT a scope
|
|
42
|
+
* opener (it declares no symbol and has no name to build a stable scope id
|
|
43
|
+
* from) — but it carries executable content, so `chunks.ts` models it as an
|
|
44
|
+
* explicit child region of its class so its bytes become a real content
|
|
45
|
+
* chunk instead of falling through the chunker's member walk (spec.md §8.4:
|
|
46
|
+
* no silent data loss).
|
|
47
|
+
*/
|
|
48
|
+
export declare const CLASS_STATIC_BLOCK_TYPE = "class_static_block";
|
|
49
|
+
/** All node types that open a new symbol scope (superset across dialects). */
|
|
50
|
+
export declare const SCOPE_OPENING_TYPES: ReadonlySet<string>;
|
|
51
|
+
/** Decision-bearing node types (spec.md §16.2-16.3). */
|
|
52
|
+
export declare const IF_STATEMENT = "if_statement";
|
|
53
|
+
export declare const LOOP_TYPES: ReadonlySet<string>;
|
|
54
|
+
export declare const CATCH_CLAUSE = "catch_clause";
|
|
55
|
+
export declare const TERNARY_EXPRESSION = "ternary_expression";
|
|
56
|
+
export declare const SWITCH_CASE = "switch_case";
|
|
57
|
+
export declare const SWITCH_STATEMENT = "switch_statement";
|
|
58
|
+
export declare const BINARY_EXPRESSION = "binary_expression";
|
|
59
|
+
export declare const AUGMENTED_ASSIGNMENT = "augmented_assignment_expression";
|
|
60
|
+
/** Jump statements used by the guard-clause heuristic. */
|
|
61
|
+
export declare const JUMP_STATEMENT_TYPES: ReadonlySet<string>;
|
|
62
|
+
export declare const COMMENT_TYPE = "comment";
|
|
63
|
+
export declare const DECORATOR_TYPE = "decorator";
|
|
64
|
+
/** Import/export related node types (architecture.md §6.5, spec.md §14.2). */
|
|
65
|
+
export declare const IMPORT_STATEMENT = "import_statement";
|
|
66
|
+
export declare const IMPORT_CLAUSE = "import_clause";
|
|
67
|
+
export declare const IMPORT_REQUIRE_CLAUSE = "import_require_clause";
|
|
68
|
+
export declare const NAMED_IMPORTS = "named_imports";
|
|
69
|
+
export declare const NAMESPACE_IMPORT = "namespace_import";
|
|
70
|
+
export declare const IMPORT_SPECIFIER = "import_specifier";
|
|
71
|
+
export declare const EXPORT_STATEMENT = "export_statement";
|
|
72
|
+
export declare const EXPORT_CLAUSE = "export_clause";
|
|
73
|
+
export declare const EXPORT_SPECIFIER = "export_specifier";
|
|
74
|
+
export declare const CALL_EXPRESSION = "call_expression";
|
|
75
|
+
export declare const NEW_EXPRESSION = "new_expression";
|
|
76
|
+
export declare const MEMBER_EXPRESSION = "member_expression";
|
|
77
|
+
export declare const IMPORT_KEYWORD_NODE = "import";
|
|
78
|
+
//# sourceMappingURL=node-kinds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-kinds.d.ts","sourceRoot":"","sources":["../../../src/languages/shared/node-kinds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAAgC,CAAC;AAE9F,wFAAwF;AACxF,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAGvD,CAAC;AAEH,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAUpD,CAAC;AAEH,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAMxD,CAAC;AAEH,sFAAsF;AACtF,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAYxD,CAAC;AAEH,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAMlD,CAAC;AAEH,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,CAI1C,CAAC;AACH,eAAO,MAAM,cAAc,0BAA0B,CAAC;AACtD,eAAO,MAAM,eAAe,2BAA2B,CAAC;AACxD,eAAO,MAAM,SAAS,qBAAqB,CAAC;AAC5C,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAChD,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,CAG1C,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CASlD,CAAC;AAEH,wDAAwD;AACxD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,MAAM,CAKzC,CAAC;AACH,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,oBAAoB,oCAAoC,CAAC;AAEtE,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAKnD,CAAC;AAEH,eAAO,MAAM,YAAY,YAAY,CAAC;AACtC,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,mBAAmB,WAAW,CAAC"}
|