gitnexus 1.6.2-rc.8 → 1.6.2
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/dist/_shared/lbug/schema-constants.d.ts +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +1 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/mro-strategy.d.ts +38 -16
- package/dist/_shared/mro-strategy.d.ts.map +1 -1
- package/dist/cli/ai-context.js +0 -58
- package/dist/cli/analyze.js +3 -0
- package/dist/core/embeddings/ast-utils.d.ts +22 -0
- package/dist/core/embeddings/ast-utils.js +105 -0
- package/dist/core/embeddings/character-chunk.d.ts +12 -0
- package/dist/core/embeddings/character-chunk.js +43 -0
- package/dist/core/embeddings/chunker.d.ts +14 -0
- package/dist/core/embeddings/chunker.js +234 -0
- package/dist/core/embeddings/embedder.js +5 -0
- package/dist/core/embeddings/embedding-pipeline.d.ts +20 -24
- package/dist/core/embeddings/embedding-pipeline.js +176 -107
- package/dist/core/embeddings/line-index.d.ts +7 -0
- package/dist/core/embeddings/line-index.js +42 -0
- package/dist/core/embeddings/server-mapping.d.ts +15 -0
- package/dist/core/embeddings/server-mapping.js +33 -0
- package/dist/core/embeddings/structural-extractor.d.ts +15 -0
- package/dist/core/embeddings/structural-extractor.js +58 -0
- package/dist/core/embeddings/text-generator.d.ts +20 -13
- package/dist/core/embeddings/text-generator.js +151 -119
- package/dist/core/embeddings/types.d.ts +81 -3
- package/dist/core/embeddings/types.js +105 -3
- package/dist/core/group/extractors/http-patterns/node.js +130 -0
- package/dist/core/ingestion/call-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/call-extractors/configs/c-cpp.js +8 -0
- package/dist/core/ingestion/call-extractors/configs/csharp.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/csharp.js +6 -0
- package/dist/core/ingestion/call-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/dart.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/go.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/jvm.d.ts +3 -0
- package/dist/core/ingestion/call-extractors/configs/jvm.js +51 -0
- package/dist/core/ingestion/call-extractors/configs/php.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/php.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/python.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/ruby.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/ruby.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/rust.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/swift.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/typescript-javascript.d.ts +3 -0
- package/dist/core/ingestion/call-extractors/configs/typescript-javascript.js +8 -0
- package/dist/core/ingestion/call-extractors/generic.d.ts +5 -0
- package/dist/core/ingestion/call-extractors/generic.js +59 -0
- package/dist/core/ingestion/call-processor.d.ts +2 -4
- package/dist/core/ingestion/call-processor.js +221 -89
- package/dist/core/ingestion/call-routing.d.ts +8 -12
- package/dist/core/ingestion/call-routing.js +13 -34
- package/dist/core/ingestion/call-types.d.ts +135 -0
- package/dist/core/ingestion/call-types.js +2 -0
- package/dist/core/ingestion/class-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/class-extractors/configs/c-cpp.js +11 -0
- package/dist/core/ingestion/class-extractors/configs/csharp.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/csharp.js +21 -0
- package/dist/core/ingestion/class-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/dart.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/go.js +20 -0
- package/dist/core/ingestion/class-extractors/configs/jvm.d.ts +3 -0
- package/dist/core/ingestion/class-extractors/configs/jvm.js +35 -0
- package/dist/core/ingestion/class-extractors/configs/php.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/php.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/python.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/ruby.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/ruby.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/rust.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/swift.js +18 -0
- package/dist/core/ingestion/class-extractors/configs/typescript-javascript.d.ts +4 -0
- package/dist/core/ingestion/class-extractors/configs/typescript-javascript.js +28 -0
- package/dist/core/ingestion/field-types.d.ts +1 -1
- package/dist/core/ingestion/heritage-extractors/configs/go.d.ts +13 -0
- package/dist/core/ingestion/heritage-extractors/configs/go.js +20 -0
- package/dist/core/ingestion/heritage-extractors/configs/ruby.d.ts +18 -0
- package/dist/core/ingestion/heritage-extractors/configs/ruby.js +65 -0
- package/dist/core/ingestion/heritage-extractors/generic.d.ts +23 -0
- package/dist/core/ingestion/heritage-extractors/generic.js +47 -0
- package/dist/core/ingestion/heritage-processor.d.ts +9 -0
- package/dist/core/ingestion/heritage-processor.js +120 -85
- package/dist/core/ingestion/heritage-types.d.ts +73 -0
- package/dist/core/ingestion/heritage-types.js +2 -0
- package/dist/core/ingestion/import-resolvers/configs/c-cpp.d.ts +7 -0
- package/dist/core/ingestion/import-resolvers/configs/c-cpp.js +14 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.js +27 -0
- package/dist/core/ingestion/import-resolvers/configs/dart.d.ts +17 -0
- package/dist/core/ingestion/import-resolvers/{dart.js → configs/dart.js} +26 -16
- package/dist/core/ingestion/import-resolvers/configs/go.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/go.js +26 -0
- package/dist/core/ingestion/import-resolvers/configs/jvm.d.ts +13 -0
- package/dist/core/ingestion/import-resolvers/configs/jvm.js +68 -0
- package/dist/core/ingestion/import-resolvers/configs/php.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/php.js +15 -0
- package/dist/core/ingestion/import-resolvers/configs/python.d.ts +12 -0
- package/dist/core/ingestion/import-resolvers/configs/python.js +41 -0
- package/dist/core/ingestion/import-resolvers/configs/ruby.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/ruby.js +16 -0
- package/dist/core/ingestion/import-resolvers/configs/rust.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/rust.js +54 -0
- package/dist/core/ingestion/import-resolvers/configs/swift.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/{swift.js → configs/swift.js} +10 -5
- package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.d.ts +9 -0
- package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.js +23 -0
- package/dist/core/ingestion/import-resolvers/csharp.d.ts +4 -5
- package/dist/core/ingestion/import-resolvers/csharp.js +4 -20
- package/dist/core/ingestion/import-resolvers/go.d.ts +4 -5
- package/dist/core/ingestion/import-resolvers/go.js +4 -19
- package/dist/core/ingestion/import-resolvers/jvm.d.ts +5 -10
- package/dist/core/ingestion/import-resolvers/jvm.js +5 -58
- package/dist/core/ingestion/import-resolvers/php.d.ts +4 -5
- package/dist/core/ingestion/import-resolvers/php.js +4 -7
- package/dist/core/ingestion/import-resolvers/python.d.ts +3 -6
- package/dist/core/ingestion/import-resolvers/python.js +3 -18
- package/dist/core/ingestion/import-resolvers/resolver-factory.d.ts +24 -0
- package/dist/core/ingestion/import-resolvers/resolver-factory.js +33 -0
- package/dist/core/ingestion/import-resolvers/ruby.d.ts +4 -5
- package/dist/core/ingestion/import-resolvers/ruby.js +4 -7
- package/dist/core/ingestion/import-resolvers/rust.d.ts +4 -5
- package/dist/core/ingestion/import-resolvers/rust.js +4 -47
- package/dist/core/ingestion/import-resolvers/standard.d.ts +3 -9
- package/dist/core/ingestion/import-resolvers/standard.js +7 -8
- package/dist/core/ingestion/import-resolvers/types.d.ts +24 -0
- package/dist/core/ingestion/language-provider.d.ts +80 -0
- package/dist/core/ingestion/languages/c-cpp.js +18 -12
- package/dist/core/ingestion/languages/csharp.js +13 -21
- package/dist/core/ingestion/languages/dart.js +13 -7
- package/dist/core/ingestion/languages/go.js +14 -20
- package/dist/core/ingestion/languages/java.js +13 -18
- package/dist/core/ingestion/languages/kotlin.js +13 -13
- package/dist/core/ingestion/languages/php.js +13 -7
- package/dist/core/ingestion/languages/python.js +13 -7
- package/dist/core/ingestion/languages/ruby.js +103 -22
- package/dist/core/ingestion/languages/rust.js +13 -7
- package/dist/core/ingestion/languages/swift.js +13 -18
- package/dist/core/ingestion/languages/typescript.js +18 -23
- package/dist/core/ingestion/languages/vue.js +13 -17
- package/dist/core/ingestion/model/heritage-map.d.ts +35 -0
- package/dist/core/ingestion/model/heritage-map.js +110 -9
- package/dist/core/ingestion/model/index.d.ts +2 -2
- package/dist/core/ingestion/model/index.js +1 -1
- package/dist/core/ingestion/model/resolve.d.ts +33 -28
- package/dist/core/ingestion/model/resolve.js +111 -27
- package/dist/core/ingestion/parsing-processor.d.ts +1 -2
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +1 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +9 -3
- package/dist/core/ingestion/pipeline-phases/parse.d.ts +7 -0
- package/dist/core/ingestion/pipeline.d.ts +11 -0
- package/dist/core/ingestion/pipeline.js +9 -2
- package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
- package/dist/core/ingestion/tree-sitter-queries.js +81 -0
- package/dist/core/ingestion/type-env.d.ts +1 -1
- package/dist/core/ingestion/utils/ast-helpers.d.ts +1 -1
- package/dist/core/ingestion/utils/ast-helpers.js +22 -2
- package/dist/core/ingestion/utils/ruby-self-call.d.ts +52 -0
- package/dist/core/ingestion/utils/ruby-self-call.js +59 -0
- package/dist/core/ingestion/variable-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/variable-extractors/configs/c-cpp.js +81 -0
- package/dist/core/ingestion/variable-extractors/configs/csharp.d.ts +9 -0
- package/dist/core/ingestion/variable-extractors/configs/csharp.js +63 -0
- package/dist/core/ingestion/variable-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/dart.js +94 -0
- package/dist/core/ingestion/variable-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/go.js +83 -0
- package/dist/core/ingestion/variable-extractors/configs/jvm.d.ts +18 -0
- package/dist/core/ingestion/variable-extractors/configs/jvm.js +115 -0
- package/dist/core/ingestion/variable-extractors/configs/php.d.ts +14 -0
- package/dist/core/ingestion/variable-extractors/configs/php.js +58 -0
- package/dist/core/ingestion/variable-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/python.js +101 -0
- package/dist/core/ingestion/variable-extractors/configs/ruby.d.ts +11 -0
- package/dist/core/ingestion/variable-extractors/configs/ruby.js +52 -0
- package/dist/core/ingestion/variable-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/rust.js +76 -0
- package/dist/core/ingestion/variable-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/swift.js +88 -0
- package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.d.ts +3 -0
- package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.js +83 -0
- package/dist/core/ingestion/variable-extractors/generic.d.ts +5 -0
- package/dist/core/ingestion/variable-extractors/generic.js +80 -0
- package/dist/core/ingestion/variable-types.d.ts +82 -0
- package/dist/core/ingestion/variable-types.js +2 -0
- package/dist/core/ingestion/workers/parse-worker.js +244 -217
- package/dist/core/ingestion/workers/worker-pool.js +3 -0
- package/dist/core/lbug/csv-generator.js +1 -0
- package/dist/core/lbug/lbug-adapter.d.ts +4 -5
- package/dist/core/lbug/lbug-adapter.js +38 -14
- package/dist/core/lbug/schema.d.ts +2 -1
- package/dist/core/lbug/schema.js +10 -1
- package/dist/core/run-analyze.js +6 -7
- package/dist/core/tree-sitter/parser-loader.d.ts +3 -0
- package/dist/core/tree-sitter/parser-loader.js +17 -8
- package/dist/mcp/core/embedder.js +5 -0
- package/dist/mcp/local/local-backend.js +29 -19
- package/dist/server/api.js +2 -0
- package/dist/types/pipeline.d.ts +6 -0
- package/package.json +8 -7
- package/scripts/build-tree-sitter-proto.cjs +82 -0
- package/vendor/node_modules/node-addon-api/node_addon_api.Makefile +6 -0
- package/vendor/node_modules/node-addon-api/node_addon_api.target.mk +104 -0
- package/vendor/node_modules/node-addon-api/node_addon_api_except.target.mk +108 -0
- package/vendor/node_modules/node-addon-api/node_addon_api_except_all.target.mk +104 -0
- package/vendor/node_modules/node-addon-api/node_addon_api_maybe.target.mk +104 -0
- package/vendor/tree-sitter-proto/package.json +1 -7
- package/dist/core/ingestion/call-sites/extract-language-call-site.d.ts +0 -10
- package/dist/core/ingestion/call-sites/extract-language-call-site.js +0 -22
- package/dist/core/ingestion/call-sites/java.d.ts +0 -9
- package/dist/core/ingestion/call-sites/java.js +0 -30
- package/dist/core/ingestion/import-resolvers/dart.d.ts +0 -7
- package/dist/core/ingestion/import-resolvers/swift.d.ts +0 -7
- package/dist/core/ingestion/import-resolvers/vue.d.ts +0 -8
- package/dist/core/ingestion/import-resolvers/vue.js +0 -9
- package/scripts/preinstall-cleanup.cjs +0 -34
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
9
9
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
10
|
+
import { phpClassConfig } from '../class-extractors/configs/php.js';
|
|
10
11
|
import { defineLanguage } from '../language-provider.js';
|
|
11
12
|
import { typeConfig as phpConfig } from '../type-extractors/php.js';
|
|
12
13
|
import { phpExportChecker } from '../export-detection.js';
|
|
13
|
-
import {
|
|
14
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
15
|
+
import { phpImportConfig } from '../import-resolvers/configs/php.js';
|
|
14
16
|
import { extractPhpNamedBindings } from '../named-bindings/php.js';
|
|
15
17
|
import { PHP_QUERIES } from '../tree-sitter-queries.js';
|
|
16
18
|
import { findDescendant, extractStringContent } from '../utils/ast-helpers.js';
|
|
@@ -18,6 +20,11 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
|
18
20
|
import { phpConfig as phpFieldConfig } from '../field-extractors/configs/php.js';
|
|
19
21
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
20
22
|
import { phpMethodConfig } from '../method-extractors/configs/php.js';
|
|
23
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
24
|
+
import { phpVariableConfig } from '../variable-extractors/configs/php.js';
|
|
25
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
26
|
+
import { phpCallConfig } from '../call-extractors/configs/php.js';
|
|
27
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
21
28
|
const BUILT_INS = new Set([
|
|
22
29
|
'echo',
|
|
23
30
|
'isset',
|
|
@@ -219,15 +226,14 @@ export const phpProvider = defineLanguage({
|
|
|
219
226
|
treeSitterQueries: PHP_QUERIES,
|
|
220
227
|
typeConfig: phpConfig,
|
|
221
228
|
exportChecker: phpExportChecker,
|
|
222
|
-
importResolver:
|
|
229
|
+
importResolver: createImportResolver(phpImportConfig),
|
|
223
230
|
namedBindingExtractor: extractPhpNamedBindings,
|
|
231
|
+
callExtractor: createCallExtractor(phpCallConfig),
|
|
224
232
|
fieldExtractor: createFieldExtractor(phpFieldConfig),
|
|
225
233
|
methodExtractor: createMethodExtractor(phpMethodConfig),
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
ancestorScopeNodeTypes: ['namespace_definition'],
|
|
230
|
-
}),
|
|
234
|
+
variableExtractor: createVariableExtractor(phpVariableConfig),
|
|
235
|
+
classExtractor: createClassExtractor(phpClassConfig),
|
|
236
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.PHP),
|
|
231
237
|
descriptionExtractor: phpDescriptionExtractor,
|
|
232
238
|
isRouteFile: isPhpRouteFile,
|
|
233
239
|
builtInNames: BUILT_INS,
|
|
@@ -11,16 +11,23 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
13
13
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
14
|
+
import { pythonClassConfig } from '../class-extractors/configs/python.js';
|
|
14
15
|
import { defineLanguage } from '../language-provider.js';
|
|
15
16
|
import { typeConfig as pythonConfig } from '../type-extractors/python.js';
|
|
16
17
|
import { pythonExportChecker } from '../export-detection.js';
|
|
17
|
-
import {
|
|
18
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
19
|
+
import { pythonImportConfig } from '../import-resolvers/configs/python.js';
|
|
18
20
|
import { extractPythonNamedBindings } from '../named-bindings/python.js';
|
|
19
21
|
import { PYTHON_QUERIES } from '../tree-sitter-queries.js';
|
|
20
22
|
import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
21
23
|
import { pythonConfig as pythonFieldConfig } from '../field-extractors/configs/python.js';
|
|
22
24
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
23
25
|
import { pythonMethodConfig } from '../method-extractors/configs/python.js';
|
|
26
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
27
|
+
import { pythonVariableConfig } from '../variable-extractors/configs/python.js';
|
|
28
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
29
|
+
import { pythonCallConfig } from '../call-extractors/configs/python.js';
|
|
30
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
24
31
|
const BUILT_INS = new Set([
|
|
25
32
|
'print',
|
|
26
33
|
'len',
|
|
@@ -56,16 +63,15 @@ export const pythonProvider = defineLanguage({
|
|
|
56
63
|
treeSitterQueries: PYTHON_QUERIES,
|
|
57
64
|
typeConfig: pythonConfig,
|
|
58
65
|
exportChecker: pythonExportChecker,
|
|
59
|
-
importResolver:
|
|
66
|
+
importResolver: createImportResolver(pythonImportConfig),
|
|
60
67
|
namedBindingExtractor: extractPythonNamedBindings,
|
|
61
68
|
importSemantics: 'namespace',
|
|
62
69
|
mroStrategy: 'c3',
|
|
70
|
+
callExtractor: createCallExtractor(pythonCallConfig),
|
|
63
71
|
fieldExtractor: createFieldExtractor(pythonFieldConfig),
|
|
64
72
|
methodExtractor: createMethodExtractor(pythonMethodConfig),
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
ancestorScopeNodeTypes: ['class_definition'],
|
|
69
|
-
}),
|
|
73
|
+
variableExtractor: createVariableExtractor(pythonVariableConfig),
|
|
74
|
+
classExtractor: createClassExtractor(pythonClassConfig),
|
|
75
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.Python),
|
|
70
76
|
builtInNames: BUILT_INS,
|
|
71
77
|
});
|
|
@@ -8,16 +8,43 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
10
10
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
11
|
+
import { rubyClassConfig } from '../class-extractors/configs/ruby.js';
|
|
11
12
|
import { defineLanguage } from '../language-provider.js';
|
|
12
13
|
import { typeConfig as rubyConfig } from '../type-extractors/ruby.js';
|
|
13
14
|
import { routeRubyCall } from '../call-routing.js';
|
|
14
15
|
import { rubyExportChecker } from '../export-detection.js';
|
|
15
|
-
import {
|
|
16
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
17
|
+
import { rubyImportConfig } from '../import-resolvers/configs/ruby.js';
|
|
16
18
|
import { RUBY_QUERIES } from '../tree-sitter-queries.js';
|
|
17
19
|
import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
18
20
|
import { rubyConfig as rubyFieldConfig } from '../field-extractors/configs/ruby.js';
|
|
19
21
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
20
22
|
import { rubyMethodConfig } from '../method-extractors/configs/ruby.js';
|
|
23
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
24
|
+
import { rubyVariableConfig } from '../variable-extractors/configs/ruby.js';
|
|
25
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
26
|
+
import { rubyCallConfig } from '../call-extractors/configs/ruby.js';
|
|
27
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
28
|
+
import { rubyHeritageConfig } from '../heritage-extractors/configs/ruby.js';
|
|
29
|
+
import { maybeRewriteRubyBareCallToSelf } from '../utils/ruby-self-call.js';
|
|
30
|
+
import { findEnclosingClassInfo } from '../utils/ast-helpers.js';
|
|
31
|
+
/**
|
|
32
|
+
* Ruby label override. Applied to:
|
|
33
|
+
* - `definition.module` captures in the structure phase — remaps to `Trait`
|
|
34
|
+
* so Ruby modules are registered in the class-like type registry and are
|
|
35
|
+
* therefore resolvable by `lookupClassByName` during mixin heritage
|
|
36
|
+
* resolution (`include`/`extend`/`prepend`).
|
|
37
|
+
* - `definition.function` captures — Ruby has no bare "function" construct
|
|
38
|
+
* (top-level `def` is a method on `main`); return the default so generic
|
|
39
|
+
* logic continues to apply.
|
|
40
|
+
*
|
|
41
|
+
* Returning `null` means "skip this definition"; we never do that here.
|
|
42
|
+
*/
|
|
43
|
+
const rubyLabelOverride = (_node, defaultLabel) => {
|
|
44
|
+
if (defaultLabel === 'Module')
|
|
45
|
+
return 'Trait';
|
|
46
|
+
return defaultLabel;
|
|
47
|
+
};
|
|
21
48
|
/** Ruby method/singleton_method: extract name from 'name' field, label as Method. */
|
|
22
49
|
const rubyExtractFunctionName = (node) => {
|
|
23
50
|
if (node.type !== 'method' && node.type !== 'singleton_method')
|
|
@@ -91,39 +118,93 @@ const BUILT_INS = new Set([
|
|
|
91
118
|
'flatten',
|
|
92
119
|
'uniq',
|
|
93
120
|
]);
|
|
121
|
+
/**
|
|
122
|
+
* Remaps `class << self` (singleton_class) to its enclosing class/module for
|
|
123
|
+
* receiver inference. A `singleton_class` node is not itself a type — walking
|
|
124
|
+
* up to the real owner lets `inferImplicitReceiver` set `hint='singleton'`.
|
|
125
|
+
* Returns null for orphaned singleton_class (no enclosing class/module found).
|
|
126
|
+
* All other container types are returned as-is.
|
|
127
|
+
*/
|
|
128
|
+
const rubyResolveEnclosingOwner = (node) => {
|
|
129
|
+
if (node.type === 'singleton_class') {
|
|
130
|
+
let ancestor = node.parent;
|
|
131
|
+
while (ancestor) {
|
|
132
|
+
if (ancestor.type === 'class' || ancestor.type === 'module') {
|
|
133
|
+
return ancestor;
|
|
134
|
+
}
|
|
135
|
+
ancestor = ancestor.parent;
|
|
136
|
+
}
|
|
137
|
+
return null; // no enclosing class/module — skip
|
|
138
|
+
}
|
|
139
|
+
return node; // use as-is for all other container types
|
|
140
|
+
};
|
|
94
141
|
export const rubyProvider = defineLanguage({
|
|
95
142
|
id: SupportedLanguages.Ruby,
|
|
96
143
|
extensions: ['.rb', '.rake', '.gemspec'],
|
|
97
144
|
treeSitterQueries: RUBY_QUERIES,
|
|
98
145
|
typeConfig: rubyConfig,
|
|
99
146
|
exportChecker: rubyExportChecker,
|
|
100
|
-
importResolver:
|
|
147
|
+
importResolver: createImportResolver(rubyImportConfig),
|
|
101
148
|
callRouter: routeRubyCall,
|
|
102
149
|
importSemantics: 'wildcard-leaf',
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
// class or module for owner/container resolution (HAS_METHOD edges, class IDs).
|
|
106
|
-
if (node.type === 'singleton_class') {
|
|
107
|
-
let ancestor = node.parent;
|
|
108
|
-
while (ancestor) {
|
|
109
|
-
if (ancestor.type === 'class' || ancestor.type === 'module') {
|
|
110
|
-
return ancestor;
|
|
111
|
-
}
|
|
112
|
-
ancestor = ancestor.parent;
|
|
113
|
-
}
|
|
114
|
-
return null; // no enclosing class/module — skip
|
|
115
|
-
}
|
|
116
|
-
return node; // use as-is for all other container types
|
|
117
|
-
},
|
|
150
|
+
callExtractor: createCallExtractor(rubyCallConfig),
|
|
151
|
+
resolveEnclosingOwner: rubyResolveEnclosingOwner,
|
|
118
152
|
fieldExtractor: createFieldExtractor(rubyFieldConfig),
|
|
119
153
|
methodExtractor: createMethodExtractor({
|
|
120
154
|
...rubyMethodConfig,
|
|
121
155
|
extractFunctionName: rubyExtractFunctionName,
|
|
122
156
|
}),
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
157
|
+
variableExtractor: createVariableExtractor(rubyVariableConfig),
|
|
158
|
+
classExtractor: createClassExtractor(rubyClassConfig),
|
|
159
|
+
heritageExtractor: createHeritageExtractor(rubyHeritageConfig),
|
|
160
|
+
labelOverride: rubyLabelOverride,
|
|
161
|
+
// Ruby MRO is kind-aware: prepend providers beat the class's own method,
|
|
162
|
+
// which in turn beats include providers. See `lookupMethodByOwnerWithMRO`
|
|
163
|
+
// in `model/resolve.ts` for the walk order.
|
|
164
|
+
mroStrategy: 'ruby-mixin',
|
|
165
|
+
// ── DAG hooks ────────────────────────────────────────────────────
|
|
166
|
+
//
|
|
167
|
+
// DAG stage 3: rewrite bare calls (e.g. `serialize` in Account#call_serialize)
|
|
168
|
+
// as `self.serialize` so they route through owner-scoped MRO instead of
|
|
169
|
+
// global free-call lookup. `dispatchKind` goes into `hint` for stage 4.
|
|
170
|
+
inferImplicitReceiver: ({ calledName, callForm, receiverName, receiverTypeName, callNode, filePath, }) => {
|
|
171
|
+
// Only fire when no receiver has been resolved already.
|
|
172
|
+
if (receiverName || receiverTypeName)
|
|
173
|
+
return null;
|
|
174
|
+
const enclosing = findEnclosingClassInfo(callNode, filePath, rubyResolveEnclosingOwner);
|
|
175
|
+
const rewrite = maybeRewriteRubyBareCallToSelf(calledName, callForm, callNode, enclosing?.className ?? null, { isBuiltInName: (n) => BUILT_INS.has(n), mroStrategy: 'ruby-mixin' });
|
|
176
|
+
if (!rewrite)
|
|
177
|
+
return null;
|
|
178
|
+
return {
|
|
179
|
+
callForm: rewrite.callForm,
|
|
180
|
+
receiverName: rewrite.receiverName,
|
|
181
|
+
receiverTypeName: rewrite.receiverTypeName,
|
|
182
|
+
receiverSource: 'implicit-self',
|
|
183
|
+
hint: rewrite.dispatchKind, // 'instance' | 'singleton'
|
|
184
|
+
};
|
|
185
|
+
},
|
|
186
|
+
// DAG stage 4: two Ruby dispatch overrides —
|
|
187
|
+
// implicit-self: MRO walk first, fallback to free-arity-narrowed on miss.
|
|
188
|
+
// class-as-receiver: singleton ancestry (extend providers only); miss null-routes.
|
|
189
|
+
selectDispatch: ({ receiverSource, hint }) => {
|
|
190
|
+
if (receiverSource === 'implicit-self') {
|
|
191
|
+
// hint='instance' → instance ancestry (prepend→direct→include, see mro-strategy.ts § 'ruby-mixin')
|
|
192
|
+
// hint='singleton' → singleton ancestry (extend providers only; miss null-routes)
|
|
193
|
+
const ancestryView = hint === 'singleton' ? 'singleton' : 'instance';
|
|
194
|
+
return {
|
|
195
|
+
primary: 'owner-scoped',
|
|
196
|
+
fallback: 'free-arity-narrowed',
|
|
197
|
+
ancestryView,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
if (receiverSource === 'class-as-receiver') {
|
|
201
|
+
// Class constant receiver (e.g. Account.log): singleton ancestry only; miss null-routes.
|
|
202
|
+
return {
|
|
203
|
+
primary: 'owner-scoped',
|
|
204
|
+
ancestryView: 'singleton',
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
return null;
|
|
208
|
+
},
|
|
128
209
|
builtInNames: BUILT_INS,
|
|
129
210
|
});
|
|
@@ -11,16 +11,23 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
13
13
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
14
|
+
import { rustClassConfig } from '../class-extractors/configs/rust.js';
|
|
14
15
|
import { defineLanguage } from '../language-provider.js';
|
|
15
16
|
import { typeConfig as rustConfig } from '../type-extractors/rust.js';
|
|
16
17
|
import { rustExportChecker } from '../export-detection.js';
|
|
17
|
-
import {
|
|
18
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
19
|
+
import { rustImportConfig } from '../import-resolvers/configs/rust.js';
|
|
18
20
|
import { extractRustNamedBindings } from '../named-bindings/rust.js';
|
|
19
21
|
import { RUST_QUERIES } from '../tree-sitter-queries.js';
|
|
20
22
|
import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
21
23
|
import { rustConfig as rustFieldConfig } from '../field-extractors/configs/rust.js';
|
|
22
24
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
23
25
|
import { rustMethodConfig } from '../method-extractors/configs/rust.js';
|
|
26
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
27
|
+
import { rustVariableConfig } from '../variable-extractors/configs/rust.js';
|
|
28
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
29
|
+
import { rustCallConfig } from '../call-extractors/configs/rust.js';
|
|
30
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
24
31
|
/** Rust impl_item: find the function_item child and extract its name as a Method. */
|
|
25
32
|
const rustExtractFunctionName = (node) => {
|
|
26
33
|
if (node.type !== 'impl_item')
|
|
@@ -109,18 +116,17 @@ export const rustProvider = defineLanguage({
|
|
|
109
116
|
treeSitterQueries: RUST_QUERIES,
|
|
110
117
|
typeConfig: rustConfig,
|
|
111
118
|
exportChecker: rustExportChecker,
|
|
112
|
-
importResolver:
|
|
119
|
+
importResolver: createImportResolver(rustImportConfig),
|
|
113
120
|
namedBindingExtractor: extractRustNamedBindings,
|
|
114
121
|
mroStrategy: 'qualified-syntax',
|
|
122
|
+
callExtractor: createCallExtractor(rustCallConfig),
|
|
115
123
|
fieldExtractor: createFieldExtractor(rustFieldConfig),
|
|
116
124
|
methodExtractor: createMethodExtractor({
|
|
117
125
|
...rustMethodConfig,
|
|
118
126
|
extractFunctionName: rustExtractFunctionName,
|
|
119
127
|
}),
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
ancestorScopeNodeTypes: ['mod_item', 'struct_item', 'enum_item'],
|
|
124
|
-
}),
|
|
128
|
+
variableExtractor: createVariableExtractor(rustVariableConfig),
|
|
129
|
+
classExtractor: createClassExtractor(rustClassConfig),
|
|
130
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.Rust),
|
|
125
131
|
builtInNames: BUILT_INS,
|
|
126
132
|
});
|
|
@@ -11,15 +11,22 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
13
13
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
14
|
+
import { swiftClassConfig } from '../class-extractors/configs/swift.js';
|
|
14
15
|
import { defineLanguage } from '../language-provider.js';
|
|
15
16
|
import { typeConfig as swiftConfig } from '../type-extractors/swift.js';
|
|
16
17
|
import { swiftExportChecker } from '../export-detection.js';
|
|
17
|
-
import {
|
|
18
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
19
|
+
import { swiftImportConfig } from '../import-resolvers/configs/swift.js';
|
|
18
20
|
import { SWIFT_QUERIES } from '../tree-sitter-queries.js';
|
|
19
21
|
import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
20
22
|
import { swiftConfig as swiftFieldConfig } from '../field-extractors/configs/swift.js';
|
|
21
23
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
22
24
|
import { swiftMethodConfig } from '../method-extractors/configs/swift.js';
|
|
25
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
26
|
+
import { swiftVariableConfig } from '../variable-extractors/configs/swift.js';
|
|
27
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
28
|
+
import { swiftCallConfig } from '../call-extractors/configs/swift.js';
|
|
29
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
23
30
|
/**
|
|
24
31
|
* Group Swift files by SPM target for implicit module visibility.
|
|
25
32
|
* If SwiftPackageConfig is available, use target -> directory mappings.
|
|
@@ -220,30 +227,18 @@ export const swiftProvider = defineLanguage({
|
|
|
220
227
|
treeSitterQueries: SWIFT_QUERIES,
|
|
221
228
|
typeConfig: swiftConfig,
|
|
222
229
|
exportChecker: swiftExportChecker,
|
|
223
|
-
importResolver:
|
|
230
|
+
importResolver: createImportResolver(swiftImportConfig),
|
|
224
231
|
importSemantics: 'wildcard-leaf',
|
|
225
232
|
heritageDefaultEdge: 'IMPLEMENTS',
|
|
233
|
+
callExtractor: createCallExtractor(swiftCallConfig),
|
|
226
234
|
fieldExtractor: createFieldExtractor(swiftFieldConfig),
|
|
227
235
|
methodExtractor: createMethodExtractor({
|
|
228
236
|
...swiftMethodConfig,
|
|
229
237
|
extractFunctionName: swiftExtractFunctionName,
|
|
230
238
|
}),
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
ancestorScopeNodeTypes: ['class_declaration', 'protocol_declaration'],
|
|
235
|
-
extractType(node) {
|
|
236
|
-
if (node.type === 'protocol_declaration')
|
|
237
|
-
return 'Interface';
|
|
238
|
-
if (node.type !== 'class_declaration')
|
|
239
|
-
return undefined;
|
|
240
|
-
if (node.children.some((child) => child?.text === 'struct'))
|
|
241
|
-
return 'Struct';
|
|
242
|
-
if (node.children.some((child) => child?.text === 'enum'))
|
|
243
|
-
return 'Enum';
|
|
244
|
-
return 'Class';
|
|
245
|
-
},
|
|
246
|
-
}),
|
|
239
|
+
variableExtractor: createVariableExtractor(swiftVariableConfig),
|
|
240
|
+
classExtractor: createClassExtractor(swiftClassConfig),
|
|
241
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.Swift),
|
|
247
242
|
implicitImportWirer: wireSwiftImplicitImports,
|
|
248
243
|
builtInNames: BUILT_INS,
|
|
249
244
|
});
|
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
10
10
|
import { defineLanguage } from '../language-provider.js';
|
|
11
11
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
12
|
+
import { typescriptClassConfig, javascriptClassConfig, } from '../class-extractors/configs/typescript-javascript.js';
|
|
12
13
|
import { typeConfig as typescriptConfig } from '../type-extractors/typescript.js';
|
|
13
14
|
import { tsExportChecker } from '../export-detection.js';
|
|
14
|
-
import {
|
|
15
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
16
|
+
import { typescriptImportConfig, javascriptImportConfig, } from '../import-resolvers/configs/typescript-javascript.js';
|
|
15
17
|
import { extractTsNamedBindings } from '../named-bindings/typescript.js';
|
|
16
18
|
import { TYPESCRIPT_QUERIES, JAVASCRIPT_QUERIES } from '../tree-sitter-queries.js';
|
|
17
19
|
import { typescriptFieldExtractor } from '../field-extractors/typescript.js';
|
|
@@ -19,6 +21,11 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
|
19
21
|
import { javascriptConfig } from '../field-extractors/configs/typescript-javascript.js';
|
|
20
22
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
21
23
|
import { typescriptMethodConfig, javascriptMethodConfig, } from '../method-extractors/configs/typescript-javascript.js';
|
|
24
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
25
|
+
import { typescriptVariableConfig, javascriptVariableConfig, } from '../variable-extractors/configs/typescript-javascript.js';
|
|
26
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
27
|
+
import { typescriptCallConfig, javascriptCallConfig, } from '../call-extractors/configs/typescript-javascript.js';
|
|
28
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
22
29
|
/**
|
|
23
30
|
* TypeScript/JavaScript: arrow_function and function_expression get their name
|
|
24
31
|
* from the parent variable_declarator (e.g. `const foo = () => {}`).
|
|
@@ -137,35 +144,23 @@ export const BUILT_INS = new Set([
|
|
|
137
144
|
'toString',
|
|
138
145
|
'valueOf',
|
|
139
146
|
]);
|
|
140
|
-
const tsJsClassConfig = {
|
|
141
|
-
language: SupportedLanguages.TypeScript,
|
|
142
|
-
typeDeclarationNodes: [
|
|
143
|
-
'class_declaration',
|
|
144
|
-
'abstract_class_declaration',
|
|
145
|
-
'interface_declaration',
|
|
146
|
-
'enum_declaration',
|
|
147
|
-
],
|
|
148
|
-
ancestorScopeNodeTypes: [
|
|
149
|
-
'class_declaration',
|
|
150
|
-
'abstract_class_declaration',
|
|
151
|
-
'interface_declaration',
|
|
152
|
-
'enum_declaration',
|
|
153
|
-
],
|
|
154
|
-
};
|
|
155
147
|
export const typescriptProvider = defineLanguage({
|
|
156
148
|
id: SupportedLanguages.TypeScript,
|
|
157
149
|
extensions: ['.ts', '.tsx'],
|
|
158
150
|
treeSitterQueries: TYPESCRIPT_QUERIES,
|
|
159
151
|
typeConfig: typescriptConfig,
|
|
160
152
|
exportChecker: tsExportChecker,
|
|
161
|
-
importResolver:
|
|
153
|
+
importResolver: createImportResolver(typescriptImportConfig),
|
|
162
154
|
namedBindingExtractor: extractTsNamedBindings,
|
|
155
|
+
callExtractor: createCallExtractor(typescriptCallConfig),
|
|
163
156
|
fieldExtractor: typescriptFieldExtractor,
|
|
164
157
|
methodExtractor: createMethodExtractor({
|
|
165
158
|
...typescriptMethodConfig,
|
|
166
159
|
extractFunctionName: tsExtractFunctionName,
|
|
167
160
|
}),
|
|
168
|
-
|
|
161
|
+
variableExtractor: createVariableExtractor(typescriptVariableConfig),
|
|
162
|
+
classExtractor: createClassExtractor(typescriptClassConfig),
|
|
163
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.TypeScript),
|
|
169
164
|
builtInNames: BUILT_INS,
|
|
170
165
|
});
|
|
171
166
|
export const javascriptProvider = defineLanguage({
|
|
@@ -174,16 +169,16 @@ export const javascriptProvider = defineLanguage({
|
|
|
174
169
|
treeSitterQueries: JAVASCRIPT_QUERIES,
|
|
175
170
|
typeConfig: typescriptConfig,
|
|
176
171
|
exportChecker: tsExportChecker,
|
|
177
|
-
importResolver:
|
|
172
|
+
importResolver: createImportResolver(javascriptImportConfig),
|
|
178
173
|
namedBindingExtractor: extractTsNamedBindings,
|
|
174
|
+
callExtractor: createCallExtractor(javascriptCallConfig),
|
|
179
175
|
fieldExtractor: createFieldExtractor(javascriptConfig),
|
|
180
176
|
methodExtractor: createMethodExtractor({
|
|
181
177
|
...javascriptMethodConfig,
|
|
182
178
|
extractFunctionName: tsExtractFunctionName,
|
|
183
179
|
}),
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}),
|
|
180
|
+
variableExtractor: createVariableExtractor(javascriptVariableConfig),
|
|
181
|
+
classExtractor: createClassExtractor(javascriptClassConfig),
|
|
182
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.JavaScript),
|
|
188
183
|
builtInNames: BUILT_INS,
|
|
189
184
|
});
|
|
@@ -12,14 +12,21 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
14
14
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
15
|
+
import { vueClassConfig } from '../class-extractors/configs/typescript-javascript.js';
|
|
15
16
|
import { defineLanguage } from '../language-provider.js';
|
|
16
17
|
import { typeConfig as typescriptConfig } from '../type-extractors/typescript.js';
|
|
17
18
|
import { tsExportChecker } from '../export-detection.js';
|
|
18
|
-
import {
|
|
19
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
20
|
+
import { vueImportConfig } from '../import-resolvers/configs/typescript-javascript.js';
|
|
19
21
|
import { extractTsNamedBindings } from '../named-bindings/typescript.js';
|
|
20
22
|
import { TYPESCRIPT_QUERIES } from '../tree-sitter-queries.js';
|
|
21
23
|
import { typescriptFieldExtractor } from '../field-extractors/typescript.js';
|
|
22
24
|
import { BUILT_INS as TS_BUILT_INS } from './typescript.js';
|
|
25
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
26
|
+
import { typescriptVariableConfig } from '../variable-extractors/configs/typescript-javascript.js';
|
|
27
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
28
|
+
import { typescriptCallConfig } from '../call-extractors/configs/typescript-javascript.js';
|
|
29
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
23
30
|
const VUE_SPECIFIC_BUILT_INS = [
|
|
24
31
|
'ref',
|
|
25
32
|
'reactive',
|
|
@@ -52,30 +59,19 @@ const VUE_SPECIFIC_BUILT_INS = [
|
|
|
52
59
|
'useAttrs',
|
|
53
60
|
];
|
|
54
61
|
const VUE_BUILT_INS = new Set([...TS_BUILT_INS, ...VUE_SPECIFIC_BUILT_INS]);
|
|
55
|
-
const vueClassExtractor = createClassExtractor(
|
|
56
|
-
language: SupportedLanguages.Vue,
|
|
57
|
-
typeDeclarationNodes: [
|
|
58
|
-
'class_declaration',
|
|
59
|
-
'abstract_class_declaration',
|
|
60
|
-
'interface_declaration',
|
|
61
|
-
'enum_declaration',
|
|
62
|
-
],
|
|
63
|
-
ancestorScopeNodeTypes: [
|
|
64
|
-
'class_declaration',
|
|
65
|
-
'abstract_class_declaration',
|
|
66
|
-
'interface_declaration',
|
|
67
|
-
'enum_declaration',
|
|
68
|
-
],
|
|
69
|
-
});
|
|
62
|
+
const vueClassExtractor = createClassExtractor(vueClassConfig);
|
|
70
63
|
export const vueProvider = defineLanguage({
|
|
71
64
|
id: SupportedLanguages.Vue,
|
|
72
65
|
extensions: ['.vue'],
|
|
73
66
|
treeSitterQueries: TYPESCRIPT_QUERIES,
|
|
74
67
|
typeConfig: typescriptConfig,
|
|
75
68
|
exportChecker: tsExportChecker,
|
|
76
|
-
importResolver:
|
|
69
|
+
importResolver: createImportResolver(vueImportConfig),
|
|
77
70
|
namedBindingExtractor: extractTsNamedBindings,
|
|
71
|
+
callExtractor: createCallExtractor(typescriptCallConfig),
|
|
78
72
|
fieldExtractor: typescriptFieldExtractor,
|
|
73
|
+
variableExtractor: createVariableExtractor(typescriptVariableConfig),
|
|
79
74
|
classExtractor: vueClassExtractor,
|
|
75
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.TypeScript),
|
|
80
76
|
builtInNames: VUE_BUILT_INS,
|
|
81
77
|
});
|
|
@@ -43,11 +43,46 @@ export declare const resolveExtendsType: (parentName: string, currentFilePath: s
|
|
|
43
43
|
type: "EXTENDS" | "IMPLEMENTS";
|
|
44
44
|
idPrefix: string;
|
|
45
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* Direct parent entry with the heritage kind that produced it. Preserved
|
|
48
|
+
* so kind-aware consumers (Ruby MRO, see `lookupMethodByOwnerWithMRO`) can
|
|
49
|
+
* walk prepend/include providers in the correct order. Flat-string consumers
|
|
50
|
+
* use `getParents` / `getAncestors` and see only the parent nodeIds.
|
|
51
|
+
*/
|
|
52
|
+
export interface ParentEntry {
|
|
53
|
+
readonly parentId: string;
|
|
54
|
+
/** 'extends' | 'implements' | 'trait-impl' | 'include' | 'extend' | 'prepend' */
|
|
55
|
+
readonly kind: string;
|
|
56
|
+
}
|
|
46
57
|
export interface HeritageMap {
|
|
47
58
|
/** Direct parents of `childNodeId` (extends + implements + trait-impl). */
|
|
48
59
|
getParents(childNodeId: string): string[];
|
|
49
60
|
/** Full ancestor chain (BFS, bounded depth, cycle-safe). */
|
|
50
61
|
getAncestors(childNodeId: string): string[];
|
|
62
|
+
/**
|
|
63
|
+
* Direct parents with heritage kind preserved, insertion-ordered. Used by
|
|
64
|
+
* kind-aware consumers (Ruby MRO) that need to distinguish prepend /
|
|
65
|
+
* include / extend / extends for walk-order decisions.
|
|
66
|
+
*
|
|
67
|
+
* Insertion order mirrors the order `ExtractedHeritage` records were fed
|
|
68
|
+
* into `buildHeritageMap`, which in turn mirrors tree-sitter match order.
|
|
69
|
+
* For Ruby, this matches source declaration order for `prepend` / `include`
|
|
70
|
+
* statements — the MRO walk reverses this (last-declared-first) at the
|
|
71
|
+
* consumer side.
|
|
72
|
+
*/
|
|
73
|
+
getParentEntries(childNodeId: string): readonly ParentEntry[];
|
|
74
|
+
/**
|
|
75
|
+
* Ordered ancestry for instance method dispatch (Ruby-aware): includes
|
|
76
|
+
* `extends`, `implements`, `trait-impl`, `include`, `prepend` kinds.
|
|
77
|
+
* Excludes `extend` (singleton-only). Order is caller-determined in Unit 3.
|
|
78
|
+
* For non-Ruby callers (first-wins, c3, etc.), this matches `getAncestors`.
|
|
79
|
+
*/
|
|
80
|
+
getInstanceAncestry(childNodeId: string): readonly ParentEntry[];
|
|
81
|
+
/**
|
|
82
|
+
* Ordered ancestry for singleton / class-method dispatch (Ruby-aware):
|
|
83
|
+
* only `extend` kind parents. For non-Ruby languages this is always empty.
|
|
84
|
+
*/
|
|
85
|
+
getSingletonAncestry(childNodeId: string): readonly ParentEntry[];
|
|
51
86
|
/**
|
|
52
87
|
* File paths of classes that directly implement or extend-as-interface the
|
|
53
88
|
* given interface/abstract-class **name**. Replaces the standalone
|