diff --git a/gitnexus-shared/src/language-detection.ts b/gitnexus-shared/src/language-detection.ts index 0b3b778f8..d31f9d58d 100644 --- a/gitnexus-shared/src/language-detection.ts +++ b/gitnexus-shared/src/language-detection.ts @@ -41,6 +41,7 @@ const EXTENSION_MAP: Record = { [SupportedLanguages.Kotlin]: ['.kt', '.kts'], [SupportedLanguages.Swift]: ['.swift'], [SupportedLanguages.Dart]: ['.dart'], + [SupportedLanguages.Vue]: ['.vue'], [SupportedLanguages.Cobol]: ['.cbl', '.cob', '.cpy', '.cobol'], } satisfies Record; // Ensure exhaustiveness @@ -98,6 +99,7 @@ const SYNTAX_MAP: Record = { [SupportedLanguages.Kotlin]: 'kotlin', [SupportedLanguages.Swift]: 'swift', [SupportedLanguages.Dart]: 'dart', + [SupportedLanguages.Vue]: 'typescript', [SupportedLanguages.Cobol]: 'cobol', } satisfies Record; // Ensure exhaustiveness diff --git a/gitnexus-shared/src/languages.ts b/gitnexus-shared/src/languages.ts index 6d645fbf5..29edb8d1e 100644 --- a/gitnexus-shared/src/languages.ts +++ b/gitnexus-shared/src/languages.ts @@ -19,6 +19,7 @@ export enum SupportedLanguages { Kotlin = 'kotlin', Swift = 'swift', Dart = 'dart', + Vue = 'vue', /** Standalone regex processor — no tree-sitter, no LanguageProvider. */ Cobol = 'cobol', } diff --git a/gitnexus/src/core/ingestion/call-processor.ts b/gitnexus/src/core/ingestion/call-processor.ts index 620a71181..f2b1fc2d7 100644 --- a/gitnexus/src/core/ingestion/call-processor.ts +++ b/gitnexus/src/core/ingestion/call-processor.ts @@ -7,7 +7,7 @@ import { TIER_CONFIDENCE, type ResolutionTier } from './resolution-context.js'; import { isLanguageAvailable, loadParser, loadLanguage } from '../tree-sitter/parser-loader.js'; import { getProvider } from './languages/index.js'; import { generateId } from '../../lib/utils.js'; -import { getLanguageFromFilename } from 'gitnexus-shared'; +import { getLanguageFromFilename, SupportedLanguages } from 'gitnexus-shared'; import { isVerboseIngestionEnabled } from './utils/verbose.js'; import { yieldToEventLoop } from './utils/event-loop.js'; import { @@ -37,6 +37,7 @@ import type { FileConstructorBindings, } from './workers/parse-worker.js'; import { normalizeFetchURL, routeMatches } from './route-extractors/nextjs.js'; +import { extractTemplateComponents } from './vue-sfc-extractor.js'; import { extractReturnTypeName, stripNullable } from './type-extractors/shared.js'; import type { LiteralTypeInferrer } from './type-extractors/types.js'; import type { SyntaxNode } from './utils/ast-helpers.js'; @@ -962,6 +963,41 @@ export const processCalls = async ( } }); + // Vue: emit CALLS edges for PascalCase components used in