@vue/typescript-plugin
Advanced tools
+5
-5
@@ -56,3 +56,3 @@ "use strict"; | ||
| let _language; | ||
| (0, common_1.preprocessLanguageService)(info.languageService, () => _language); | ||
| info.languageService = (0, common_1.preprocessLanguageService)(info.languageService, () => _language); | ||
| return { | ||
@@ -223,5 +223,5 @@ languagePlugins: [languagePlugin], | ||
| session.addProtocolHandler('_vue:getElementAttrs', request => { | ||
| const [fileName, tag] = request.arguments; | ||
| const [fileName, ...args] = request.arguments; | ||
| const { program } = getProject(fileName); | ||
| return createResponse((0, getElementAttrs_1.getElementAttrs)(ts, program, fileName, tag)); | ||
| return createResponse((0, getElementAttrs_1.getElementAttrs)(ts, program, fileName, ...args)); | ||
| }); | ||
@@ -234,4 +234,4 @@ session.addProtocolHandler('_vue:getElementNames', request => { | ||
| session.addProtocolHandler('_vue:resolveModuleName', request => { | ||
| const [fileName, moduleName] = request.arguments; | ||
| return createResponse((0, resolveModuleName_1.resolveModuleName)(ts, info.languageServiceHost, fileName, moduleName)); | ||
| const [fileName, ...args] = request.arguments; | ||
| return createResponse((0, resolveModuleName_1.resolveModuleName)(ts, info.languageServiceHost, fileName, ...args)); | ||
| }); | ||
@@ -238,0 +238,0 @@ projectService.logger.info('Vue specific commands are successfully added.'); |
+1
-1
| import { type Language, type VueCompilerOptions } from '@vue/language-core'; | ||
| import type * as ts from 'typescript'; | ||
| export declare function preprocessLanguageService(languageService: ts.LanguageService, getLanguage: () => Language<any> | undefined): void; | ||
| export declare function preprocessLanguageService(languageService: ts.LanguageService, getLanguage: () => Language<any> | undefined): ts.LanguageService; | ||
| export declare function postprocessLanguageService<T>(ts: typeof import('typescript'), language: Language<T>, languageService: ts.LanguageService, vueOptions: VueCompilerOptions, asScriptId: (fileName: string) => T): ts.LanguageService; | ||
@@ -5,0 +5,0 @@ export declare function resolveCompletionResult<T>(ts: typeof import('typescript'), language: Language<T>, asScriptId: (fileName: string) => T, vueOptions: VueCompilerOptions, fileName: string, position: number, result: ts.CompletionInfo): void; |
+189
-156
@@ -13,89 +13,121 @@ "use strict"; | ||
| function preprocessLanguageService(languageService, getLanguage) { | ||
| const { getQuickInfoAtPosition, getSuggestionDiagnostics, getCompletionsAtPosition, getCodeFixesAtPosition, findRenameLocations, } = languageService; | ||
| languageService.getQuickInfoAtPosition = (fileName, position, ...rests) => { | ||
| const result = getQuickInfoAtPosition(fileName, position, ...rests); | ||
| if (!result || result.tags?.length) { | ||
| return result; | ||
| const proxyCache = new Map(); | ||
| const getProxyMethod = (target, p) => { | ||
| switch (p) { | ||
| case 'getQuickInfoAtPosition': | ||
| return getQuickInfoAtPosition(target[p]); | ||
| case 'getCompletionsAtPosition': | ||
| return getCompletionsAtPosition(target[p]); | ||
| case 'getSuggestionDiagnostics': | ||
| return getSuggestionDiagnostics(target[p]); | ||
| case 'getCodeFixesAtPosition': | ||
| return getCodeFixesAtPosition(target[p]); | ||
| case 'findRenameLocations': | ||
| return findRenameLocations(target[p]); | ||
| } | ||
| const language = getLanguage(); | ||
| if (!language) { | ||
| return result; | ||
| } | ||
| const [serviceScript, , sourceScript] = (0, utils_1.getServiceScript)(language, fileName); | ||
| if (!serviceScript || !(sourceScript?.generated?.root instanceof language_core_1.VueVirtualCode)) { | ||
| return result; | ||
| } | ||
| const codegen = language_core_1.tsCodegen.get(sourceScript.generated.root.sfc); | ||
| const leadingOffset = sourceScript.snapshot.getLength(); | ||
| for (const sourceRange of (0, transform_1.toSourceRanges)(sourceScript, language, serviceScript, result.textSpan.start, result.textSpan.start + result.textSpan.length, true, () => true)) { | ||
| const generateRange2 = (0, transform_1.toGeneratedRange)(language, serviceScript, sourceScript, sourceRange[1], sourceRange[2], (data) => !!data.__importCompletion); | ||
| if (generateRange2 !== undefined) { | ||
| const variableName = serviceScript.code.snapshot.getText(generateRange2[0] - leadingOffset, generateRange2[1] - leadingOffset); | ||
| if (codegen?.getSetupExposed().has(variableName)) { | ||
| const extraInfo = getQuickInfoAtPosition(fileName, generateRange2[0], ...rests); | ||
| result.tags = extraInfo?.tags; | ||
| } | ||
| }; | ||
| return new Proxy(languageService, { | ||
| get(target, p, receiver) { | ||
| if (!proxyCache.has(p)) { | ||
| proxyCache.set(p, getProxyMethod(target, p)); | ||
| } | ||
| } | ||
| return result; | ||
| }; | ||
| languageService.getSuggestionDiagnostics = (fileName, ...rests) => { | ||
| const result = getSuggestionDiagnostics(fileName, ...rests); | ||
| const language = getLanguage(); | ||
| if (!language) { | ||
| return result; | ||
| } | ||
| const [serviceScript, , sourceScript] = (0, utils_1.getServiceScript)(language, fileName); | ||
| if (!serviceScript || !(sourceScript?.generated?.root instanceof language_core_1.VueVirtualCode)) { | ||
| return result; | ||
| } | ||
| const codegen = language_core_1.tsCodegen.get(sourceScript.generated.root.sfc); | ||
| const leadingOffset = sourceScript.snapshot.getLength(); | ||
| for (const diagnostic of result) { | ||
| for (const sourceRange of (0, transform_1.toSourceRanges)(sourceScript, language, serviceScript, diagnostic.start, diagnostic.start + diagnostic.length, true, (data) => !!data.__importCompletion)) { | ||
| const generateRange2 = (0, transform_1.toGeneratedRange)(language, serviceScript, sourceScript, sourceRange[1], sourceRange[2], (data) => !data.__importCompletion); | ||
| const proxyMethod = proxyCache.get(p); | ||
| if (proxyMethod) { | ||
| return proxyMethod; | ||
| } | ||
| return Reflect.get(target, p, receiver); | ||
| }, | ||
| }); | ||
| function getQuickInfoAtPosition(getQuickInfoAtPosition) { | ||
| return (fileName, position, ...rests) => { | ||
| const result = getQuickInfoAtPosition(fileName, position, ...rests); | ||
| if (!result || result.tags?.length) { | ||
| return result; | ||
| } | ||
| const language = getLanguage(); | ||
| if (!language) { | ||
| return result; | ||
| } | ||
| const [serviceScript, , sourceScript] = (0, utils_1.getServiceScript)(language, fileName); | ||
| if (!serviceScript || !(sourceScript?.generated?.root instanceof language_core_1.VueVirtualCode)) { | ||
| return result; | ||
| } | ||
| const codegen = language_core_1.tsCodegen.get(sourceScript.generated.root.sfc); | ||
| const leadingOffset = sourceScript.snapshot.getLength(); | ||
| for (const sourceRange of (0, transform_1.toSourceRanges)(sourceScript, language, serviceScript, result.textSpan.start, result.textSpan.start + result.textSpan.length, true, () => true)) { | ||
| const generateRange2 = (0, transform_1.toGeneratedRange)(language, serviceScript, sourceScript, sourceRange[1], sourceRange[2], (data) => !!data.__importCompletion); | ||
| if (generateRange2 !== undefined) { | ||
| const variableName = serviceScript.code.snapshot.getText(generateRange2[0] - leadingOffset, generateRange2[1] - leadingOffset); | ||
| if (codegen?.getSetupExposed().has(variableName)) { | ||
| diagnostic.start = generateRange2[0]; | ||
| diagnostic.length = generateRange2[1] - generateRange2[0]; | ||
| break; | ||
| const extraInfo = getQuickInfoAtPosition(fileName, generateRange2[0], ...rests); | ||
| result.tags = extraInfo?.tags; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| return result; | ||
| }; | ||
| languageService.getCompletionsAtPosition = (fileName, position, ...rests) => { | ||
| const result = getCompletionsAtPosition(fileName, position, ...rests); | ||
| if (!result) { | ||
| return result; | ||
| } | ||
| const language = getLanguage(); | ||
| if (!language) { | ||
| return result; | ||
| } | ||
| const [serviceScript, _targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName); | ||
| if (!serviceScript || !(sourceScript?.generated?.root instanceof language_core_1.VueVirtualCode)) { | ||
| return result; | ||
| } | ||
| for (const sourceOffset of (0, transform_1.toSourceOffsets)(sourceScript, language, serviceScript, position, () => true)) { | ||
| const generatedOffset2 = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, sourceOffset[1], (data) => !!data.__importCompletion); | ||
| if (generatedOffset2 !== undefined) { | ||
| const completion2 = getCompletionsAtPosition(fileName, generatedOffset2, ...rests); | ||
| if (completion2) { | ||
| const nameToIndex = new Map(result.entries.map((entry, index) => [entry.name, index])); | ||
| for (const entry of completion2.entries) { | ||
| if (entry.kind === 'warning') { | ||
| continue; | ||
| } | ||
| if (nameToIndex.has(entry.name)) { | ||
| const index = nameToIndex.get(entry.name); | ||
| const existingEntry = result.entries[index]; | ||
| if (existingEntry.kind === 'warning') { | ||
| result.entries[index] = entry; | ||
| }; | ||
| } | ||
| function getCompletionsAtPosition(getCompletionsAtPosition) { | ||
| return (fileName, position, ...rests) => { | ||
| const result = getCompletionsAtPosition(fileName, position, ...rests); | ||
| if (!result) { | ||
| return result; | ||
| } | ||
| const language = getLanguage(); | ||
| if (!language) { | ||
| return result; | ||
| } | ||
| const [serviceScript, _targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName); | ||
| if (!serviceScript || !(sourceScript?.generated?.root instanceof language_core_1.VueVirtualCode)) { | ||
| return result; | ||
| } | ||
| for (const sourceOffset of (0, transform_1.toSourceOffsets)(sourceScript, language, serviceScript, position, () => true)) { | ||
| const generatedOffset2 = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, sourceOffset[1], (data) => !!data.__importCompletion); | ||
| if (generatedOffset2 !== undefined) { | ||
| const completion2 = getCompletionsAtPosition(fileName, generatedOffset2, ...rests); | ||
| if (completion2) { | ||
| const nameToIndex = new Map(result.entries.map((entry, index) => [entry.name, index])); | ||
| for (const entry of completion2.entries) { | ||
| if (entry.kind === 'warning') { | ||
| continue; | ||
| } | ||
| if (nameToIndex.has(entry.name)) { | ||
| const index = nameToIndex.get(entry.name); | ||
| const existingEntry = result.entries[index]; | ||
| if (existingEntry.kind === 'warning') { | ||
| result.entries[index] = entry; | ||
| } | ||
| } | ||
| else { | ||
| result.entries.push(entry); | ||
| } | ||
| } | ||
| else { | ||
| result.entries.push(entry); | ||
| } | ||
| } | ||
| } | ||
| return result; | ||
| }; | ||
| } | ||
| function getSuggestionDiagnostics(getSuggestionDiagnostics) { | ||
| return (fileName, ...rests) => { | ||
| const result = getSuggestionDiagnostics(fileName, ...rests); | ||
| const language = getLanguage(); | ||
| if (!language) { | ||
| return result; | ||
| } | ||
| const [serviceScript, , sourceScript] = (0, utils_1.getServiceScript)(language, fileName); | ||
| if (!serviceScript || !(sourceScript?.generated?.root instanceof language_core_1.VueVirtualCode)) { | ||
| return result; | ||
| } | ||
| const codegen = language_core_1.tsCodegen.get(sourceScript.generated.root.sfc); | ||
| const leadingOffset = sourceScript.snapshot.getLength(); | ||
| for (const diagnostic of result) { | ||
| for (const sourceRange of (0, transform_1.toSourceRanges)(sourceScript, language, serviceScript, diagnostic.start, diagnostic.start + diagnostic.length, true, (data) => !!data.__importCompletion)) { | ||
| const generateRange2 = (0, transform_1.toGeneratedRange)(language, serviceScript, sourceScript, sourceRange[1], sourceRange[2], (data) => !data.__importCompletion); | ||
| if (generateRange2 !== undefined) { | ||
| const variableName = serviceScript.code.snapshot.getText(generateRange2[0] - leadingOffset, generateRange2[1] - leadingOffset); | ||
| if (codegen?.getSetupExposed().has(variableName)) { | ||
| diagnostic.start = generateRange2[0]; | ||
| diagnostic.length = generateRange2[1] - generateRange2[0]; | ||
| break; | ||
| } | ||
@@ -105,92 +137,96 @@ } | ||
| } | ||
| } | ||
| return result; | ||
| }; | ||
| languageService.getCodeFixesAtPosition = (fileName, start, end, errorCodes, ...rests) => { | ||
| let result = getCodeFixesAtPosition(fileName, start, end, errorCodes, ...rests); | ||
| // Property 'xxx' does not exist on type 'yyy'.ts(2339) | ||
| if (!errorCodes.includes(2339)) { | ||
| return result; | ||
| } | ||
| const language = getLanguage(); | ||
| if (!language) { | ||
| return result; | ||
| } | ||
| const [serviceScript, _targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName); | ||
| if (!serviceScript || !(sourceScript?.generated?.root instanceof language_core_1.VueVirtualCode)) { | ||
| return result; | ||
| } | ||
| for (const sourceRange of (0, transform_1.toSourceRanges)(sourceScript, language, serviceScript, start, end, true, () => true)) { | ||
| const generateRange2 = (0, transform_1.toGeneratedRange)(language, serviceScript, sourceScript, sourceRange[1], sourceRange[2], (data) => !!data.__importCompletion); | ||
| if (generateRange2 !== undefined) { | ||
| let importFixes = getCodeFixesAtPosition(fileName, generateRange2[0], generateRange2[1], [2304], // Cannot find name 'xxx'.ts(2304) | ||
| ...rests); | ||
| importFixes = importFixes.filter(fix => fix.fixName === 'import'); | ||
| result = result.concat(importFixes); | ||
| }; | ||
| } | ||
| function getCodeFixesAtPosition(getCodeFixesAtPosition) { | ||
| return (fileName, start, end, errorCodes, ...rests) => { | ||
| let result = getCodeFixesAtPosition(fileName, start, end, errorCodes, ...rests); | ||
| // Property 'xxx' does not exist on type 'yyy'.ts(2339) | ||
| if (!errorCodes.includes(2339)) { | ||
| return result; | ||
| } | ||
| } | ||
| return result; | ||
| }; | ||
| languageService.findRenameLocations = (fileName, position, ...rests) => { | ||
| // @ts-expect-error | ||
| const result = findRenameLocations(fileName, position, ...rests); | ||
| if (!result?.length) { | ||
| return result; | ||
| } | ||
| const language = getLanguage(); | ||
| if (!language) { | ||
| return result; | ||
| } | ||
| const [serviceScript, _targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName); | ||
| if (!serviceScript || !(sourceScript?.generated?.root instanceof language_core_1.VueVirtualCode)) { | ||
| return result; | ||
| } | ||
| const map = language.maps.get(serviceScript.code, sourceScript); | ||
| const leadingOffset = sourceScript.snapshot.getLength(); | ||
| const isShorthand = (data) => !!data.__shorthandExpression; | ||
| // { foo: __VLS_ctx.foo } | ||
| // ^^^ ^^^ | ||
| // if the rename is triggered directly on the shorthand, | ||
| // skip the entire request on the generated property name | ||
| if ([...map.toSourceLocation(position - leadingOffset, isShorthand)].length === 0) { | ||
| for (const [offset] of map.toSourceLocation(position - leadingOffset, () => true)) { | ||
| for (const _ of map.toGeneratedLocation(offset, isShorthand)) { | ||
| return; | ||
| const language = getLanguage(); | ||
| if (!language) { | ||
| return result; | ||
| } | ||
| const [serviceScript, _targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName); | ||
| if (!serviceScript || !(sourceScript?.generated?.root instanceof language_core_1.VueVirtualCode)) { | ||
| return result; | ||
| } | ||
| for (const sourceRange of (0, transform_1.toSourceRanges)(sourceScript, language, serviceScript, start, end, true, () => true)) { | ||
| const generateRange2 = (0, transform_1.toGeneratedRange)(language, serviceScript, sourceScript, sourceRange[1], sourceRange[2], (data) => !!data.__importCompletion); | ||
| if (generateRange2 !== undefined) { | ||
| let importFixes = getCodeFixesAtPosition(fileName, generateRange2[0], generateRange2[1], [2304], // Cannot find name 'xxx'.ts(2304) | ||
| ...rests); | ||
| importFixes = importFixes.filter(fix => fix.fixName === 'import'); | ||
| result = result.concat(importFixes); | ||
| } | ||
| } | ||
| } | ||
| const preferAlias = typeof rests[2] === 'boolean' | ||
| ? rests[2] | ||
| : rests[2]?.providePrefixAndSuffixTextForRename ?? true; | ||
| if (!preferAlias) { | ||
| return result; | ||
| } | ||
| const locations = [...result]; | ||
| outer: for (let i = 0; i < locations.length; i++) { | ||
| const { textSpan } = locations[i]; | ||
| const generatedLeft = textSpan.start - leadingOffset; | ||
| const generatedRight = textSpan.start + textSpan.length - leadingOffset; | ||
| }; | ||
| } | ||
| function findRenameLocations(findRenameLocations) { | ||
| return (fileName, position, ...rests) => { | ||
| // @ts-expect-error | ||
| const result = findRenameLocations(fileName, position, ...rests); | ||
| if (!result?.length) { | ||
| return result; | ||
| } | ||
| const language = getLanguage(); | ||
| if (!language) { | ||
| return result; | ||
| } | ||
| const [serviceScript, _targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName); | ||
| if (!serviceScript || !(sourceScript?.generated?.root instanceof language_core_1.VueVirtualCode)) { | ||
| return result; | ||
| } | ||
| const map = language.maps.get(serviceScript.code, sourceScript); | ||
| const leadingOffset = sourceScript.snapshot.getLength(); | ||
| const isShorthand = (data) => !!data.__shorthandExpression; | ||
| // { foo: __VLS_ctx.foo } | ||
| // ^^^ | ||
| for (const [start, end, { data }] of map.toSourceRange(generatedLeft, generatedRight, true, isShorthand)) { | ||
| locations.splice(i, 1, { | ||
| ...locations[i], | ||
| ...getPrefixAndSuffixForShorthandRename(data.__shorthandExpression, 'right', sourceScript.snapshot.getText(start, end)), | ||
| }); | ||
| continue outer; | ||
| // ^^^ ^^^ | ||
| // if the rename is triggered directly on the shorthand, | ||
| // skip the entire request on the generated property name | ||
| if ([...map.toSourceLocation(position - leadingOffset, isShorthand)].length === 0) { | ||
| for (const [offset] of map.toSourceLocation(position - leadingOffset, () => true)) { | ||
| for (const _ of map.toGeneratedLocation(offset, isShorthand)) { | ||
| return; | ||
| } | ||
| } | ||
| } | ||
| // { foo: __VLS_ctx.foo } | ||
| // ^^^ | ||
| for (const [start, end] of map.toSourceRange(generatedLeft, generatedRight, true, () => true)) { | ||
| for (const [, , { data }] of map.toGeneratedRange(start, end, true, isShorthand)) { | ||
| const preferAlias = typeof rests[2] === 'boolean' | ||
| ? rests[2] | ||
| : rests[2]?.providePrefixAndSuffixTextForRename ?? true; | ||
| if (!preferAlias) { | ||
| return result; | ||
| } | ||
| const locations = [...result]; | ||
| outer: for (let i = 0; i < locations.length; i++) { | ||
| const { textSpan } = locations[i]; | ||
| const generatedLeft = textSpan.start - leadingOffset; | ||
| const generatedRight = textSpan.start + textSpan.length - leadingOffset; | ||
| // { foo: __VLS_ctx.foo } | ||
| // ^^^ | ||
| for (const [start, end, { data }] of map.toSourceRange(generatedLeft, generatedRight, true, isShorthand)) { | ||
| locations.splice(i, 1, { | ||
| ...locations[i], | ||
| ...getPrefixAndSuffixForShorthandRename(data.__shorthandExpression, 'left', sourceScript.snapshot.getText(start, end)), | ||
| ...getPrefixAndSuffixForShorthandRename(data.__shorthandExpression, 'right', sourceScript.snapshot.getText(start, end)), | ||
| }); | ||
| continue outer; | ||
| } | ||
| // { foo: __VLS_ctx.foo } | ||
| // ^^^ | ||
| for (const [start, end] of map.toSourceRange(generatedLeft, generatedRight, true, () => true)) { | ||
| for (const [, , { data }] of map.toGeneratedRange(start, end, true, isShorthand)) { | ||
| locations.splice(i, 1, { | ||
| ...locations[i], | ||
| ...getPrefixAndSuffixForShorthandRename(data.__shorthandExpression, 'left', sourceScript.snapshot.getText(start, end)), | ||
| }); | ||
| continue outer; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| return locations; | ||
| }; | ||
| return locations; | ||
| }; | ||
| } | ||
| } | ||
@@ -251,5 +287,2 @@ function getPrefixAndSuffixForShorthandRename(type, target, originalText) { | ||
| }, | ||
| set(target, p, value, receiver) { | ||
| return Reflect.set(target, p, value, receiver); | ||
| }, | ||
| }); | ||
@@ -256,0 +289,0 @@ function findReferences(findReferences) { |
@@ -14,3 +14,3 @@ import type * as ts from 'typescript'; | ||
| getElementNames(fileName: string): Response<ReturnType<typeof import('./getElementNames.js')['getElementNames']>>; | ||
| resolveModuleName(fileName: string, moduleName: string): Response<ReturnType<typeof import('./resolveModuleName.js')['resolveModuleName']>>; | ||
| resolveModuleName(fileName: string, moduleName: string, allowNonExistent?: boolean): Response<ReturnType<typeof import('./resolveModuleName.js')['resolveModuleName']>>; | ||
| getDocumentHighlights(fileName: string, position: number): Response<ts.DocumentHighlights[]>; | ||
@@ -17,0 +17,0 @@ getEncodedSemanticClassifications(fileName: string, span: ts.TextSpan): Response<ts.Classifications>; |
| import type * as ts from 'typescript'; | ||
| export declare function resolveModuleName(ts: typeof import('typescript'), languageServiceHost: ts.LanguageServiceHost, fileName: string, moduleName: string): string | undefined; | ||
| export declare function resolveModuleName(ts: typeof import('typescript'), languageServiceHost: ts.LanguageServiceHost, fileName: string, moduleName: string, allowNonExistent?: boolean): string | undefined; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.resolveModuleName = resolveModuleName; | ||
| function resolveModuleName(ts, languageServiceHost, fileName, moduleName) { | ||
| const path_browserify_1 = require("path-browserify"); | ||
| function resolveModuleName(ts, languageServiceHost, fileName, moduleName, allowNonExistent) { | ||
| const compilerOptions = languageServiceHost.getCompilationSettings(); | ||
@@ -12,10 +13,16 @@ const ext = moduleName.split('.').pop(); | ||
| fileExists(fileName) { | ||
| fileName = transformFileName(fileName, ext); | ||
| return languageServiceHost.fileExists(fileName); | ||
| return languageServiceHost.fileExists(transformFileName(fileName, ext)); | ||
| }, | ||
| readFile: languageServiceHost.readFile.bind(languageServiceHost), | ||
| }); | ||
| const resolveFileName = result.resolvedModule?.resolvedFileName; | ||
| if (resolveFileName) { | ||
| return transformFileName(resolveFileName, ext); | ||
| const resolved = result.resolvedModule?.resolvedFileName; | ||
| if (resolved) { | ||
| return transformFileName(resolved, ext); | ||
| } | ||
| if (allowNonExistent && 'failedLookupLocations' in result) { | ||
| const alternative = result.failedLookupLocations?.[0]; | ||
| if (alternative) { | ||
| return path_browserify_1.posix.join(alternative, '..', path_browserify_1.posix.basename(moduleName)); | ||
| } | ||
| } | ||
| } | ||
@@ -22,0 +29,0 @@ function transformFileName(fileName, ext) { |
@@ -84,3 +84,3 @@ "use strict"; | ||
| if (name === (0, shared_1.capitalize)((0, shared_1.camelize)(tag))) { | ||
| return getVariableType(ts, checker, sourceFile, language_core_1.names._export); | ||
| return getVariableType(ts, checker, sourceFile, language_core_1.names.export); | ||
| } | ||
@@ -91,3 +91,3 @@ } | ||
| if (testNames.has(selfName)) { | ||
| return getVariableType(ts, checker, sourceFile, language_core_1.names._export); | ||
| return getVariableType(ts, checker, sourceFile, language_core_1.names.export); | ||
| } | ||
@@ -94,0 +94,0 @@ } |
+4
-4
| { | ||
| "name": "@vue/typescript-plugin", | ||
| "version": "3.2.7", | ||
| "version": "3.2.8", | ||
| "license": "MIT", | ||
@@ -17,6 +17,6 @@ "files": [ | ||
| "@volar/typescript": "2.4.28", | ||
| "@vue/language-core": "3.2.7", | ||
| "@vue/language-core": "3.2.8", | ||
| "@vue/shared": "^3.5.0", | ||
| "path-browserify": "^1.0.1", | ||
| "vue-component-meta": "3.2.7" | ||
| "vue-component-meta": "3.2.8" | ||
| }, | ||
@@ -27,3 +27,3 @@ "devDependencies": { | ||
| }, | ||
| "gitHead": "a7092edf12862f0db8e39bd2afbda3d54aa26506" | ||
| "gitHead": "618bd6bfb19729726787df7b52fccda72c888c95" | ||
| } |
69000
3.15%1310
3.15%+ Added
+ Added
- Removed
- Removed
Updated
Updated