gitnexus 1.6.2-rc.9 → 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/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/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
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Rust module import resolution.
|
|
3
|
-
*
|
|
2
|
+
* Rust module import resolution — internal helpers.
|
|
3
|
+
*
|
|
4
|
+
* Strategy lives in configs/rust.ts.
|
|
5
|
+
* This file contains shared helpers used by the strategy and standard.ts.
|
|
4
6
|
*/
|
|
5
|
-
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
6
|
-
import { resolveStandard } from './standard.js';
|
|
7
7
|
/**
|
|
8
8
|
* Resolve Rust use-path to a file (low-level helper).
|
|
9
9
|
* Handles crate::, super::, self:: prefixes and :: path separators.
|
|
@@ -73,46 +73,3 @@ export function tryRustModulePath(modulePath, allFiles) {
|
|
|
73
73
|
}
|
|
74
74
|
return null;
|
|
75
75
|
}
|
|
76
|
-
/** Rust: expand grouped imports: use {crate::a, crate::b} and use crate::models::{User, Repo}. */
|
|
77
|
-
export function resolveRustImport(rawImportPath, filePath, ctx) {
|
|
78
|
-
// Top-level grouped: use {crate::a, crate::b}
|
|
79
|
-
if (rawImportPath.startsWith('{') && rawImportPath.endsWith('}')) {
|
|
80
|
-
const inner = rawImportPath.slice(1, -1);
|
|
81
|
-
const parts = inner
|
|
82
|
-
.split(',')
|
|
83
|
-
.map((p) => p.trim())
|
|
84
|
-
.filter(Boolean);
|
|
85
|
-
const resolved = [];
|
|
86
|
-
for (const part of parts) {
|
|
87
|
-
const r = resolveRustImportInternal(filePath, part, ctx.allFilePaths);
|
|
88
|
-
if (r)
|
|
89
|
-
resolved.push(r);
|
|
90
|
-
}
|
|
91
|
-
return resolved.length > 0 ? { kind: 'files', files: resolved } : null;
|
|
92
|
-
}
|
|
93
|
-
// Scoped grouped: use crate::models::{User, Repo}
|
|
94
|
-
const braceIdx = rawImportPath.indexOf('::{');
|
|
95
|
-
if (braceIdx !== -1 && rawImportPath.endsWith('}')) {
|
|
96
|
-
const pathPrefix = rawImportPath.substring(0, braceIdx);
|
|
97
|
-
const braceContent = rawImportPath.substring(braceIdx + 3, rawImportPath.length - 1);
|
|
98
|
-
const items = braceContent
|
|
99
|
-
.split(',')
|
|
100
|
-
.map((s) => s.trim())
|
|
101
|
-
.filter(Boolean);
|
|
102
|
-
const resolved = [];
|
|
103
|
-
for (const item of items) {
|
|
104
|
-
// Handle `use crate::models::{User, Repo as R}` — strip alias for resolution
|
|
105
|
-
const itemName = item.includes(' as ') ? item.split(' as ')[0].trim() : item;
|
|
106
|
-
const r = resolveRustImportInternal(filePath, `${pathPrefix}::${itemName}`, ctx.allFilePaths);
|
|
107
|
-
if (r)
|
|
108
|
-
resolved.push(r);
|
|
109
|
-
}
|
|
110
|
-
if (resolved.length > 0)
|
|
111
|
-
return { kind: 'files', files: resolved };
|
|
112
|
-
// Fallback: resolve the prefix path itself (e.g. crate::models -> models.rs)
|
|
113
|
-
const prefixResult = resolveRustImportInternal(filePath, pathPrefix, ctx.allFilePaths);
|
|
114
|
-
if (prefixResult)
|
|
115
|
-
return { kind: 'files', files: [prefixResult] };
|
|
116
|
-
}
|
|
117
|
-
return resolveStandard(rawImportPath, filePath, ctx, SupportedLanguages.Rust);
|
|
118
|
-
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { SuffixIndex } from './utils.js';
|
|
7
7
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
8
|
-
import type { ImportResult,
|
|
8
|
+
import type { ImportResult, ImportResolverStrategy, ResolveCtx } from './types.js';
|
|
9
9
|
import type { TsconfigPaths } from '../language-config.js';
|
|
10
10
|
/** Max entries in the resolve cache. Beyond this, entries are evicted.
|
|
11
11
|
* 100K entries ≈ 15MB — covers the most common import patterns. */
|
|
@@ -26,11 +26,5 @@ export declare const resolveImportPath: (currentFile: string, importPath: string
|
|
|
26
26
|
* Handles relative imports, tsconfig path aliases, and suffix matching.
|
|
27
27
|
*/
|
|
28
28
|
export declare function resolveStandard(rawImportPath: string, filePath: string, ctx: ResolveCtx, language: SupportedLanguages): ImportResult;
|
|
29
|
-
/**
|
|
30
|
-
export declare
|
|
31
|
-
/** TypeScript: standard single-file resolution. */
|
|
32
|
-
export declare const resolveTypescriptImport: ImportResolverFn;
|
|
33
|
-
/** C: standard single-file resolution for #include directives. */
|
|
34
|
-
export declare const resolveCImport: ImportResolverFn;
|
|
35
|
-
/** C++: standard single-file resolution for #include directives. */
|
|
36
|
-
export declare const resolveCppImport: ImportResolverFn;
|
|
29
|
+
/** Create a reusable standard-resolution strategy for a given language. */
|
|
30
|
+
export declare function createStandardStrategy(language: SupportedLanguages): ImportResolverStrategy;
|
|
@@ -133,11 +133,10 @@ export function resolveStandard(rawImportPath, filePath, ctx, language) {
|
|
|
133
133
|
const resolvedPath = resolveImportPath(filePath, rawImportPath, ctx.allFilePaths, ctx.allFileList, ctx.normalizedFileList, ctx.resolveCache, language, ctx.configs.tsconfigPaths, ctx.index);
|
|
134
134
|
return resolvedPath ? { kind: 'files', files: [resolvedPath] } : null;
|
|
135
135
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
export const resolveCppImport = (raw, fp, ctx) => resolveStandard(raw, fp, ctx, SupportedLanguages.CPlusPlus);
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// Strategy factory — composable hook for ImportResolutionConfig
|
|
138
|
+
// ============================================================================
|
|
139
|
+
/** Create a reusable standard-resolution strategy for a given language. */
|
|
140
|
+
export function createStandardStrategy(language) {
|
|
141
|
+
return (raw, fp, ctx) => resolveStandard(raw, fp, ctx, language);
|
|
142
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import type { TsconfigPaths, GoModuleConfig, CSharpProjectConfig, ComposerConfig } from '../language-config.js';
|
|
7
7
|
import type { SwiftPackageConfig } from '../language-config.js';
|
|
8
8
|
import type { SuffixIndex } from './utils.js';
|
|
9
|
+
import type { SupportedLanguages } from '../../../_shared/index.js';
|
|
9
10
|
/**
|
|
10
11
|
* Result of resolving an import via language-specific dispatch.
|
|
11
12
|
* - 'files': resolved to one or more files -> add to ImportMap
|
|
@@ -42,3 +43,26 @@ export interface ResolveCtx extends ImportResolutionContext {
|
|
|
42
43
|
}
|
|
43
44
|
/** Per-language import resolver -- function alias matching ExportChecker/CallRouter pattern. */
|
|
44
45
|
export type ImportResolverFn = (rawImportPath: string, filePath: string, resolveCtx: ResolveCtx) => ImportResult;
|
|
46
|
+
/**
|
|
47
|
+
* A single import resolution strategy — one step in a composable chain.
|
|
48
|
+
* Same signature as ImportResolverFn. Returns null to let the next strategy
|
|
49
|
+
* in the chain try; returns a result (even with empty files) to stop the chain.
|
|
50
|
+
*/
|
|
51
|
+
export type ImportResolverStrategy = ImportResolverFn;
|
|
52
|
+
/**
|
|
53
|
+
* Declarative config for composable import resolution — mirrors the
|
|
54
|
+
* MethodExtractionConfig / CallExtractionConfig pattern.
|
|
55
|
+
*
|
|
56
|
+
* Each language declares an ordered list of strategies to try.
|
|
57
|
+
* The factory (`createImportResolver`) chains them: first non-null result wins.
|
|
58
|
+
*/
|
|
59
|
+
export interface ImportResolutionConfig {
|
|
60
|
+
/**
|
|
61
|
+
* Documentation-only metadata identifying which language this config serves.
|
|
62
|
+
* **Not used by `createImportResolver`** — the factory only iterates `strategies`.
|
|
63
|
+
* Useful for logging, debugging, and compile-time exhaustiveness checks when
|
|
64
|
+
* mapping `SupportedLanguages → ImportResolutionConfig` in language providers.
|
|
65
|
+
*/
|
|
66
|
+
readonly language: SupportedLanguages;
|
|
67
|
+
readonly strategies: readonly ImportResolverStrategy[];
|
|
68
|
+
}
|
|
@@ -11,10 +11,13 @@
|
|
|
11
11
|
import type { SupportedLanguages, MroStrategy } from '../../_shared/index.js';
|
|
12
12
|
import type { LanguageTypeConfig } from './type-extractors/types.js';
|
|
13
13
|
import type { CallRouter } from './call-routing.js';
|
|
14
|
+
import type { CallExtractor, DispatchDecision, ImplicitReceiverOverride, ReceiverEnriched } from './call-types.js';
|
|
14
15
|
import type { ClassExtractor } from './class-types.js';
|
|
15
16
|
import type { ExportChecker } from './export-detection.js';
|
|
16
17
|
import type { FieldExtractor } from './field-extractor.js';
|
|
18
|
+
import type { HeritageExtractor } from './heritage-types.js';
|
|
17
19
|
import type { MethodExtractor } from './method-types.js';
|
|
20
|
+
import type { VariableExtractor } from './variable-types.js';
|
|
18
21
|
import type { ImportResolverFn } from './import-resolvers/types.js';
|
|
19
22
|
import type { NamedBindingExtractorFn } from './named-bindings/types.js';
|
|
20
23
|
import type { SyntaxNode } from './utils/ast-helpers.js';
|
|
@@ -119,6 +122,12 @@ interface LanguageProviderConfig {
|
|
|
119
122
|
/** MRO strategy for multiple inheritance resolution.
|
|
120
123
|
* Default: 'first-wins'. */
|
|
121
124
|
readonly mroStrategy?: MroStrategy;
|
|
125
|
+
/** Call extractor for extracting call site information (calledName, callForm,
|
|
126
|
+
* receiverName, argCount, mixed chains) from @call / @call.name captures.
|
|
127
|
+
* Produced by createCallExtractor() with a per-language CallExtractionConfig.
|
|
128
|
+
* Default: undefined — if unset, no calls are extracted for this language.
|
|
129
|
+
* All tree-sitter providers MUST supply this. */
|
|
130
|
+
readonly callExtractor?: CallExtractor;
|
|
122
131
|
/** Field extractor for extracting field/property definitions from class/struct
|
|
123
132
|
* declarations. Produces FieldInfo[] with name, type, visibility, static,
|
|
124
133
|
* readonly metadata. Default: undefined (no field extraction). */
|
|
@@ -127,10 +136,21 @@ interface LanguageProviderConfig {
|
|
|
127
136
|
* declarations. Produces MethodInfo[] with name, parameters, visibility, isAbstract,
|
|
128
137
|
* isFinal, annotations metadata. Default: undefined (no method extraction). */
|
|
129
138
|
readonly methodExtractor?: MethodExtractor;
|
|
139
|
+
/** Variable extractor for extracting metadata from module/file-scoped variable,
|
|
140
|
+
* constant, and static declarations. Produces VariableInfo with type, visibility,
|
|
141
|
+
* isConst, isStatic, isMutable metadata. Default: undefined (no variable extraction). */
|
|
142
|
+
readonly variableExtractor?: VariableExtractor;
|
|
130
143
|
/** Class/type extractor for deriving canonical qualified names for class-like symbols.
|
|
131
144
|
* Uses the same provider-driven strategy pattern as method/field extraction so
|
|
132
145
|
* namespace/package/module rules stay language-specific. */
|
|
133
146
|
readonly classExtractor?: ClassExtractor;
|
|
147
|
+
/** Heritage extractor for extracting extends/implements/trait-impl relationships
|
|
148
|
+
* from tree-sitter @heritage.* captures and call-based heritage (e.g., Ruby
|
|
149
|
+
* include/extend/prepend). Produced by createHeritageExtractor() — pass a
|
|
150
|
+
* SupportedLanguages value for default behaviour or a full
|
|
151
|
+
* HeritageExtractionConfig for languages with custom hooks (Go, Ruby).
|
|
152
|
+
* All tree-sitter providers MUST supply this. */
|
|
153
|
+
readonly heritageExtractor?: HeritageExtractor;
|
|
134
154
|
/** Extract a semantic description for a definition node (e.g., PHP Eloquent
|
|
135
155
|
* property arrays, relation method descriptions).
|
|
136
156
|
* Default: undefined (no description extraction). */
|
|
@@ -139,6 +159,66 @@ interface LanguageProviderConfig {
|
|
|
139
159
|
* When true, the worker extracts routes via the language's route extraction logic.
|
|
140
160
|
* Default: undefined (no route files). */
|
|
141
161
|
readonly isRouteFile?: (filePath: string) => boolean;
|
|
162
|
+
/**
|
|
163
|
+
* DAG stage 3 hook: synthesize an implicit receiver when the call site omits one.
|
|
164
|
+
*
|
|
165
|
+
* Runs after shared inference (TypeEnv → constructor-map → class-as-receiver →
|
|
166
|
+
* mixed-chain). Return an `ImplicitReceiverOverride` to overlay all fields onto
|
|
167
|
+
* `ReceiverEnriched`; return null to keep current state and proceed to stage 4.
|
|
168
|
+
*
|
|
169
|
+
* Constraints: MUST return null when an explicit receiver is already set, at
|
|
170
|
+
* top-level scope, or for built-in methods. Do not mutate input params.
|
|
171
|
+
* `hint` is opaque to shared stages; consumed by this language's `selectDispatch`.
|
|
172
|
+
*
|
|
173
|
+
* Ruby example: bare `serialize` in `Account#call_serialize` →
|
|
174
|
+
* `{ callForm: 'member', receiverName: 'self', receiverTypeName: 'Account',
|
|
175
|
+
* receiverSource: 'implicit-self', hint: 'instance' }`
|
|
176
|
+
*
|
|
177
|
+
* @see call-types.ts § ImplicitReceiverOverride
|
|
178
|
+
* @see selectDispatch (stage 4, reads the hint)
|
|
179
|
+
*
|
|
180
|
+
* Default: undefined (no implicit-receiver inference).
|
|
181
|
+
*/
|
|
182
|
+
readonly inferImplicitReceiver?: (params: {
|
|
183
|
+
readonly calledName: string;
|
|
184
|
+
readonly callForm: 'free' | 'member' | 'constructor' | undefined;
|
|
185
|
+
readonly receiverName: string | undefined;
|
|
186
|
+
readonly receiverTypeName: string | undefined;
|
|
187
|
+
readonly callNode: SyntaxNode;
|
|
188
|
+
readonly filePath: string;
|
|
189
|
+
}) => ImplicitReceiverOverride | null;
|
|
190
|
+
/**
|
|
191
|
+
* DAG stage 4 hook: decide dispatch strategy (primary path, fallback, MRO view).
|
|
192
|
+
*
|
|
193
|
+
* Runs after stage 3. Return a `DispatchDecision` to override shared defaults;
|
|
194
|
+
* return null to use `defaultDispatchDecision` (constructor→`'constructor'`,
|
|
195
|
+
* member→`'owner-scoped'`, free→`'free'`). Most languages return null.
|
|
196
|
+
*
|
|
197
|
+
* The hook is responsible for its own gating. `ancestryView` only affects
|
|
198
|
+
* `'ruby-mixin'` strategy. Singleton-ancestry miss NEVER falls through to
|
|
199
|
+
* file-scoped fallback in stage 5 (enforced in resolveCallTarget).
|
|
200
|
+
*
|
|
201
|
+
* Ruby examples:
|
|
202
|
+
* - `receiverSource='implicit-self', hint='instance'` →
|
|
203
|
+
* `{primary: 'owner-scoped', fallback: 'free-arity-narrowed', ancestryView: 'instance'}`
|
|
204
|
+
* - `receiverSource='class-as-receiver'` →
|
|
205
|
+
* `{primary: 'owner-scoped', ancestryView: 'singleton'}` (miss null-routes)
|
|
206
|
+
* - `receiverSource='implicit-self', hint='singleton'` →
|
|
207
|
+
* `{primary: 'owner-scoped', fallback: 'free-arity-narrowed', ancestryView: 'singleton'}`
|
|
208
|
+
*
|
|
209
|
+
* @see call-types.ts § DispatchDecision
|
|
210
|
+
* @see call-processor.ts § defaultDispatchDecision, resolveCallTarget
|
|
211
|
+
*
|
|
212
|
+
* Default: undefined (use `defaultDispatchDecision`).
|
|
213
|
+
*/
|
|
214
|
+
readonly selectDispatch?: (params: {
|
|
215
|
+
readonly calledName: string;
|
|
216
|
+
readonly callForm: 'free' | 'member' | 'constructor' | undefined;
|
|
217
|
+
readonly receiverName: string | undefined;
|
|
218
|
+
readonly receiverTypeName: string | undefined;
|
|
219
|
+
readonly receiverSource: ReceiverEnriched['receiverSource'];
|
|
220
|
+
readonly hint: string | undefined;
|
|
221
|
+
}) => DispatchDecision | null;
|
|
142
222
|
/** Built-in/stdlib names that should be filtered from the call graph for this language.
|
|
143
223
|
* Default: undefined (no language-specific filtering). */
|
|
144
224
|
readonly builtInNames?: ReadonlySet<string>;
|
|
@@ -9,10 +9,12 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
11
11
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
12
|
+
import { cClassConfig, cppClassConfig } from '../class-extractors/configs/c-cpp.js';
|
|
12
13
|
import { defineLanguage } from '../language-provider.js';
|
|
13
14
|
import { typeConfig as cCppConfig } from '../type-extractors/c-cpp.js';
|
|
14
15
|
import { cCppExportChecker } from '../export-detection.js';
|
|
15
|
-
import {
|
|
16
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
17
|
+
import { cImportConfig, cppImportConfig } from '../import-resolvers/configs/c-cpp.js';
|
|
16
18
|
import { C_QUERIES, CPP_QUERIES } from '../tree-sitter-queries.js';
|
|
17
19
|
/**
|
|
18
20
|
* Node types for standard function declarations that need C/C++ declarator handling.
|
|
@@ -29,6 +31,11 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
|
29
31
|
import { cConfig as cFieldConfig, cppConfig as cppFieldConfig, } from '../field-extractors/configs/c-cpp.js';
|
|
30
32
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
31
33
|
import { cMethodConfig, cppMethodConfig } from '../method-extractors/configs/c-cpp.js';
|
|
34
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
35
|
+
import { cVariableConfig, cppVariableConfig } from '../variable-extractors/configs/c-cpp.js';
|
|
36
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
37
|
+
import { cCallConfig, cppCallConfig } from '../call-extractors/configs/c-cpp.js';
|
|
38
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
32
39
|
const C_BUILT_INS = new Set([
|
|
33
40
|
'printf',
|
|
34
41
|
'fprintf',
|
|
@@ -135,15 +142,8 @@ const C_BUILT_INS = new Set([
|
|
|
135
142
|
'get',
|
|
136
143
|
'put',
|
|
137
144
|
]);
|
|
138
|
-
const cClassExtractor = createClassExtractor(
|
|
139
|
-
|
|
140
|
-
typeDeclarationNodes: ['struct_specifier', 'enum_specifier'],
|
|
141
|
-
});
|
|
142
|
-
const cppClassExtractor = createClassExtractor({
|
|
143
|
-
language: SupportedLanguages.CPlusPlus,
|
|
144
|
-
typeDeclarationNodes: ['class_specifier', 'struct_specifier', 'enum_specifier'],
|
|
145
|
-
ancestorScopeNodeTypes: ['namespace_definition', 'class_specifier', 'struct_specifier'],
|
|
146
|
-
});
|
|
145
|
+
const cClassExtractor = createClassExtractor(cClassConfig);
|
|
146
|
+
const cppClassExtractor = createClassExtractor(cppClassConfig);
|
|
147
147
|
/**
|
|
148
148
|
* C/C++ function name extraction — unwraps pointer_declarator / reference_declarator /
|
|
149
149
|
* function_declarator / qualified_identifier chains to find the actual function name.
|
|
@@ -292,14 +292,17 @@ export const cProvider = defineLanguage({
|
|
|
292
292
|
treeSitterQueries: C_QUERIES,
|
|
293
293
|
typeConfig: cCppConfig,
|
|
294
294
|
exportChecker: cCppExportChecker,
|
|
295
|
-
importResolver:
|
|
295
|
+
importResolver: createImportResolver(cImportConfig),
|
|
296
296
|
importSemantics: 'wildcard-transitive',
|
|
297
|
+
callExtractor: createCallExtractor(cCallConfig),
|
|
297
298
|
fieldExtractor: createFieldExtractor(cFieldConfig),
|
|
298
299
|
methodExtractor: createMethodExtractor({
|
|
299
300
|
...cMethodConfig,
|
|
300
301
|
extractFunctionName: cCppExtractFunctionName,
|
|
301
302
|
}),
|
|
303
|
+
variableExtractor: createVariableExtractor(cVariableConfig),
|
|
302
304
|
classExtractor: cClassExtractor,
|
|
305
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.C),
|
|
303
306
|
labelOverride: cppLabelOverride,
|
|
304
307
|
builtInNames: C_BUILT_INS,
|
|
305
308
|
});
|
|
@@ -309,15 +312,18 @@ export const cppProvider = defineLanguage({
|
|
|
309
312
|
treeSitterQueries: CPP_QUERIES,
|
|
310
313
|
typeConfig: cCppConfig,
|
|
311
314
|
exportChecker: cCppExportChecker,
|
|
312
|
-
importResolver:
|
|
315
|
+
importResolver: createImportResolver(cppImportConfig),
|
|
313
316
|
importSemantics: 'wildcard-transitive',
|
|
314
317
|
mroStrategy: 'leftmost-base',
|
|
318
|
+
callExtractor: createCallExtractor(cppCallConfig),
|
|
315
319
|
fieldExtractor: createFieldExtractor(cppFieldConfig),
|
|
316
320
|
methodExtractor: createMethodExtractor({
|
|
317
321
|
...cppMethodConfig,
|
|
318
322
|
extractFunctionName: cCppExtractFunctionName,
|
|
319
323
|
}),
|
|
324
|
+
variableExtractor: createVariableExtractor(cppVariableConfig),
|
|
320
325
|
classExtractor: cppClassExtractor,
|
|
326
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.CPlusPlus),
|
|
321
327
|
labelOverride: cppLabelOverride,
|
|
322
328
|
builtInNames: C_BUILT_INS,
|
|
323
329
|
});
|
|
@@ -7,16 +7,23 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
9
9
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
10
|
+
import { csharpClassConfig } from '../class-extractors/configs/csharp.js';
|
|
10
11
|
import { defineLanguage } from '../language-provider.js';
|
|
11
12
|
import { typeConfig as csharpConfig } from '../type-extractors/csharp.js';
|
|
12
13
|
import { csharpExportChecker } from '../export-detection.js';
|
|
13
|
-
import {
|
|
14
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
15
|
+
import { csharpImportConfig } from '../import-resolvers/configs/csharp.js';
|
|
14
16
|
import { extractCSharpNamedBindings } from '../named-bindings/csharp.js';
|
|
15
17
|
import { CSHARP_QUERIES } from '../tree-sitter-queries.js';
|
|
18
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
19
|
+
import { csharpCallConfig } from '../call-extractors/configs/csharp.js';
|
|
16
20
|
import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
17
21
|
import { csharpConfig as csharpFieldConfig } from '../field-extractors/configs/csharp.js';
|
|
18
22
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
19
23
|
import { csharpMethodConfig } from '../method-extractors/configs/csharp.js';
|
|
24
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
25
|
+
import { csharpVariableConfig } from '../variable-extractors/configs/csharp.js';
|
|
26
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
20
27
|
const BUILT_INS = new Set([
|
|
21
28
|
'Console',
|
|
22
29
|
'WriteLine',
|
|
@@ -117,30 +124,15 @@ export const csharpProvider = defineLanguage({
|
|
|
117
124
|
treeSitterQueries: CSHARP_QUERIES,
|
|
118
125
|
typeConfig: csharpConfig,
|
|
119
126
|
exportChecker: csharpExportChecker,
|
|
120
|
-
importResolver:
|
|
127
|
+
importResolver: createImportResolver(csharpImportConfig),
|
|
121
128
|
namedBindingExtractor: extractCSharpNamedBindings,
|
|
122
129
|
interfaceNamePattern: /^I[A-Z]/,
|
|
123
130
|
mroStrategy: 'implements-split',
|
|
131
|
+
callExtractor: createCallExtractor(csharpCallConfig),
|
|
124
132
|
fieldExtractor: createFieldExtractor(csharpFieldConfig),
|
|
125
133
|
methodExtractor: createMethodExtractor(csharpMethodConfig),
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
'class_declaration',
|
|
130
|
-
'interface_declaration',
|
|
131
|
-
'struct_declaration',
|
|
132
|
-
'enum_declaration',
|
|
133
|
-
'record_declaration',
|
|
134
|
-
],
|
|
135
|
-
fileScopeNodeTypes: ['file_scoped_namespace_declaration'],
|
|
136
|
-
ancestorScopeNodeTypes: [
|
|
137
|
-
'namespace_declaration',
|
|
138
|
-
'class_declaration',
|
|
139
|
-
'interface_declaration',
|
|
140
|
-
'struct_declaration',
|
|
141
|
-
'enum_declaration',
|
|
142
|
-
'record_declaration',
|
|
143
|
-
],
|
|
144
|
-
}),
|
|
134
|
+
variableExtractor: createVariableExtractor(csharpVariableConfig),
|
|
135
|
+
classExtractor: createClassExtractor(csharpClassConfig),
|
|
136
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.CSharp),
|
|
145
137
|
builtInNames: BUILT_INS,
|
|
146
138
|
});
|
|
@@ -12,15 +12,22 @@
|
|
|
12
12
|
import { FUNCTION_NODE_TYPES } from '../utils/ast-helpers.js';
|
|
13
13
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
14
14
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
15
|
+
import { dartClassConfig } from '../class-extractors/configs/dart.js';
|
|
15
16
|
import { defineLanguage } from '../language-provider.js';
|
|
16
17
|
import { typeConfig as dartConfig } from '../type-extractors/dart.js';
|
|
17
18
|
import { dartExportChecker } from '../export-detection.js';
|
|
18
|
-
import {
|
|
19
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
20
|
+
import { dartImportConfig } from '../import-resolvers/configs/dart.js';
|
|
19
21
|
import { DART_QUERIES } from '../tree-sitter-queries.js';
|
|
20
22
|
import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
21
23
|
import { dartConfig as dartFieldConfig } from '../field-extractors/configs/dart.js';
|
|
22
24
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
23
25
|
import { dartMethodConfig } from '../method-extractors/configs/dart.js';
|
|
26
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
27
|
+
import { dartVariableConfig } from '../variable-extractors/configs/dart.js';
|
|
28
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
29
|
+
import { dartCallConfig } from '../call-extractors/configs/dart.js';
|
|
30
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
24
31
|
/**
|
|
25
32
|
* Resolve the enclosing function from a `function_body` node by looking at its
|
|
26
33
|
* previous sibling. In Dart's tree-sitter grammar, function_signature and
|
|
@@ -82,15 +89,14 @@ export const dartProvider = defineLanguage({
|
|
|
82
89
|
treeSitterQueries: DART_QUERIES,
|
|
83
90
|
typeConfig: dartConfig,
|
|
84
91
|
exportChecker: dartExportChecker,
|
|
85
|
-
importResolver:
|
|
92
|
+
importResolver: createImportResolver(dartImportConfig),
|
|
86
93
|
importSemantics: 'wildcard-leaf',
|
|
94
|
+
callExtractor: createCallExtractor(dartCallConfig),
|
|
87
95
|
fieldExtractor: createFieldExtractor(dartFieldConfig),
|
|
88
96
|
methodExtractor: createMethodExtractor(dartMethodConfig),
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
ancestorScopeNodeTypes: ['class_definition', 'extension_declaration', 'enum_declaration'],
|
|
93
|
-
}),
|
|
97
|
+
variableExtractor: createVariableExtractor(dartVariableConfig),
|
|
98
|
+
classExtractor: createClassExtractor(dartClassConfig),
|
|
99
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.Dart),
|
|
94
100
|
enclosingFunctionFinder: dartEnclosingFunctionFinder,
|
|
95
101
|
builtInNames: BUILT_INS,
|
|
96
102
|
});
|
|
@@ -10,41 +10,35 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
12
12
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
13
|
+
import { goClassConfig } from '../class-extractors/configs/go.js';
|
|
13
14
|
import { defineLanguage } from '../language-provider.js';
|
|
14
15
|
import { typeConfig as goConfig } from '../type-extractors/go.js';
|
|
15
16
|
import { goExportChecker } from '../export-detection.js';
|
|
16
|
-
import {
|
|
17
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
18
|
+
import { goImportConfig } from '../import-resolvers/configs/go.js';
|
|
17
19
|
import { GO_QUERIES } from '../tree-sitter-queries.js';
|
|
18
20
|
import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
19
21
|
import { goConfig as goFieldConfig } from '../field-extractors/configs/go.js';
|
|
20
22
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
21
23
|
import { goMethodConfig } from '../method-extractors/configs/go.js';
|
|
24
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
25
|
+
import { goVariableConfig } from '../variable-extractors/configs/go.js';
|
|
26
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
27
|
+
import { goCallConfig } from '../call-extractors/configs/go.js';
|
|
28
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
29
|
+
import { goHeritageConfig } from '../heritage-extractors/configs/go.js';
|
|
22
30
|
export const goProvider = defineLanguage({
|
|
23
31
|
id: SupportedLanguages.Go,
|
|
24
32
|
extensions: ['.go'],
|
|
25
33
|
treeSitterQueries: GO_QUERIES,
|
|
26
34
|
typeConfig: goConfig,
|
|
27
35
|
exportChecker: goExportChecker,
|
|
28
|
-
importResolver:
|
|
36
|
+
importResolver: createImportResolver(goImportConfig),
|
|
29
37
|
importSemantics: 'wildcard-leaf',
|
|
38
|
+
callExtractor: createCallExtractor(goCallConfig),
|
|
30
39
|
fieldExtractor: createFieldExtractor(goFieldConfig),
|
|
31
40
|
methodExtractor: createMethodExtractor(goMethodConfig),
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
fileScopeNodeTypes: ['package_clause'],
|
|
36
|
-
extractName(node) {
|
|
37
|
-
const typeSpec = node.namedChildren.find((child) => child.type === 'type_spec');
|
|
38
|
-
return typeSpec?.childForFieldName('name')?.text;
|
|
39
|
-
},
|
|
40
|
-
extractType(node) {
|
|
41
|
-
const typeSpec = node.namedChildren.find((child) => child.type === 'type_spec');
|
|
42
|
-
const typeNode = typeSpec?.childForFieldName('type');
|
|
43
|
-
if (typeNode?.type === 'struct_type')
|
|
44
|
-
return 'Struct';
|
|
45
|
-
if (typeNode?.type === 'interface_type')
|
|
46
|
-
return 'Interface';
|
|
47
|
-
return undefined;
|
|
48
|
-
},
|
|
49
|
-
}),
|
|
41
|
+
variableExtractor: createVariableExtractor(goVariableConfig),
|
|
42
|
+
classExtractor: createClassExtractor(goClassConfig),
|
|
43
|
+
heritageExtractor: createHeritageExtractor(goHeritageConfig),
|
|
50
44
|
});
|
|
@@ -8,42 +8,37 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
10
10
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
11
|
+
import { javaClassConfig } from '../class-extractors/configs/jvm.js';
|
|
11
12
|
import { defineLanguage } from '../language-provider.js';
|
|
12
13
|
import { javaTypeConfig } from '../type-extractors/jvm.js';
|
|
13
14
|
import { javaExportChecker } from '../export-detection.js';
|
|
14
|
-
import {
|
|
15
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
16
|
+
import { javaImportConfig } from '../import-resolvers/configs/jvm.js';
|
|
15
17
|
import { extractJavaNamedBindings } from '../named-bindings/java.js';
|
|
16
18
|
import { JAVA_QUERIES } from '../tree-sitter-queries.js';
|
|
19
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
20
|
+
import { javaCallConfig } from '../call-extractors/configs/jvm.js';
|
|
17
21
|
import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
18
22
|
import { javaConfig } from '../field-extractors/configs/jvm.js';
|
|
19
23
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
20
24
|
import { javaMethodConfig } from '../method-extractors/configs/jvm.js';
|
|
25
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
26
|
+
import { javaVariableConfig } from '../variable-extractors/configs/jvm.js';
|
|
27
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
21
28
|
export const javaProvider = defineLanguage({
|
|
22
29
|
id: SupportedLanguages.Java,
|
|
23
30
|
extensions: ['.java'],
|
|
24
31
|
treeSitterQueries: JAVA_QUERIES,
|
|
25
32
|
typeConfig: javaTypeConfig,
|
|
26
33
|
exportChecker: javaExportChecker,
|
|
27
|
-
importResolver:
|
|
34
|
+
importResolver: createImportResolver(javaImportConfig),
|
|
28
35
|
namedBindingExtractor: extractJavaNamedBindings,
|
|
29
36
|
interfaceNamePattern: /^I[A-Z]/,
|
|
30
37
|
mroStrategy: 'implements-split',
|
|
38
|
+
callExtractor: createCallExtractor(javaCallConfig),
|
|
31
39
|
fieldExtractor: createFieldExtractor(javaConfig),
|
|
32
40
|
methodExtractor: createMethodExtractor(javaMethodConfig),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
'class_declaration',
|
|
37
|
-
'interface_declaration',
|
|
38
|
-
'enum_declaration',
|
|
39
|
-
'record_declaration',
|
|
40
|
-
],
|
|
41
|
-
fileScopeNodeTypes: ['package_declaration'],
|
|
42
|
-
ancestorScopeNodeTypes: [
|
|
43
|
-
'class_declaration',
|
|
44
|
-
'interface_declaration',
|
|
45
|
-
'enum_declaration',
|
|
46
|
-
'record_declaration',
|
|
47
|
-
],
|
|
48
|
-
}),
|
|
41
|
+
variableExtractor: createVariableExtractor(javaVariableConfig),
|
|
42
|
+
classExtractor: createClassExtractor(javaClassConfig),
|
|
43
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.Java),
|
|
49
44
|
});
|
|
@@ -8,17 +8,24 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
10
10
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
11
|
+
import { kotlinClassConfig } from '../class-extractors/configs/jvm.js';
|
|
11
12
|
import { defineLanguage } from '../language-provider.js';
|
|
12
13
|
import { kotlinTypeConfig } from '../type-extractors/jvm.js';
|
|
13
14
|
import { kotlinExportChecker } from '../export-detection.js';
|
|
14
|
-
import {
|
|
15
|
+
import { createImportResolver } from '../import-resolvers/resolver-factory.js';
|
|
16
|
+
import { kotlinImportConfig } from '../import-resolvers/configs/jvm.js';
|
|
15
17
|
import { extractKotlinNamedBindings } from '../named-bindings/kotlin.js';
|
|
16
18
|
import { appendKotlinWildcard } from '../import-resolvers/jvm.js';
|
|
17
19
|
import { KOTLIN_QUERIES } from '../tree-sitter-queries.js';
|
|
20
|
+
import { createCallExtractor } from '../call-extractors/generic.js';
|
|
21
|
+
import { kotlinCallConfig } from '../call-extractors/configs/jvm.js';
|
|
18
22
|
import { createFieldExtractor } from '../field-extractors/generic.js';
|
|
19
23
|
import { kotlinConfig } from '../field-extractors/configs/jvm.js';
|
|
20
24
|
import { createMethodExtractor } from '../method-extractors/generic.js';
|
|
21
25
|
import { kotlinMethodConfig } from '../method-extractors/configs/jvm.js';
|
|
26
|
+
import { createVariableExtractor } from '../variable-extractors/generic.js';
|
|
27
|
+
import { kotlinVariableConfig } from '../variable-extractors/configs/jvm.js';
|
|
28
|
+
import { createHeritageExtractor } from '../heritage-extractors/generic.js';
|
|
22
29
|
/** Check if a Kotlin function_declaration capture is inside a class_body (i.e., a method).
|
|
23
30
|
* Kotlin grammar uses function_declaration for both top-level functions and class methods.
|
|
24
31
|
* Returns true when the captured definition node has a class_body ancestor. */
|
|
@@ -95,23 +102,16 @@ export const kotlinProvider = defineLanguage({
|
|
|
95
102
|
treeSitterQueries: KOTLIN_QUERIES,
|
|
96
103
|
typeConfig: kotlinTypeConfig,
|
|
97
104
|
exportChecker: kotlinExportChecker,
|
|
98
|
-
importResolver:
|
|
105
|
+
importResolver: createImportResolver(kotlinImportConfig),
|
|
99
106
|
namedBindingExtractor: extractKotlinNamedBindings,
|
|
100
107
|
importPathPreprocessor: appendKotlinWildcard,
|
|
101
108
|
mroStrategy: 'implements-split',
|
|
109
|
+
callExtractor: createCallExtractor(kotlinCallConfig),
|
|
102
110
|
fieldExtractor: createFieldExtractor(kotlinConfig),
|
|
103
111
|
methodExtractor: createMethodExtractor(kotlinMethodConfig),
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
fileScopeNodeTypes: ['package_header'],
|
|
108
|
-
ancestorScopeNodeTypes: ['class_declaration', 'object_declaration', 'companion_object'],
|
|
109
|
-
extractType(node) {
|
|
110
|
-
if (node.type !== 'class_declaration')
|
|
111
|
-
return undefined;
|
|
112
|
-
return node.children.some((child) => child?.text === 'interface') ? 'Interface' : 'Class';
|
|
113
|
-
},
|
|
114
|
-
}),
|
|
112
|
+
variableExtractor: createVariableExtractor(kotlinVariableConfig),
|
|
113
|
+
classExtractor: createClassExtractor(kotlinClassConfig),
|
|
114
|
+
heritageExtractor: createHeritageExtractor(SupportedLanguages.Kotlin),
|
|
115
115
|
builtInNames: BUILT_INS,
|
|
116
116
|
labelOverride: (functionNode, defaultLabel) => {
|
|
117
117
|
if (defaultLabel !== 'Function')
|