@vue/language-core
Advanced tools
Comparing version 1.7.8 to 1.7.9
@@ -59,3 +59,3 @@ "use strict"; | ||
}; | ||
codes.push('/* __vue_virtual_code_placeholder__ */\n'); | ||
codes.push(`/* ${Object.entries(vueCompilerOptions).map(([key, value]) => `${key}: ${JSON.stringify(value)}`).join(', ')} */\n`); | ||
let generatedTemplate = false; | ||
@@ -285,69 +285,58 @@ generateSrc(); | ||
//#region props | ||
if (scriptSetupRanges.propsRuntimeArg | ||
|| scriptSetupRanges.defineProp.length) { | ||
if (scriptSetupRanges.propsRuntimeArg) { | ||
codes.push(`const __VLS_props = (new __VLS_publicComponent()).$props;\n`); | ||
} | ||
else if (scriptSetupRanges.defineProp.length) { | ||
codes.push(`const __VLS_defaults = {\n`); | ||
for (const defineProp of scriptSetupRanges.defineProp) { | ||
if (defineProp.defaultValue) { | ||
if (defineProp.name) { | ||
codes.push(sfc.scriptSetup.content.substring(defineProp.name.start, defineProp.name.end)); | ||
} | ||
else { | ||
codes.push('modelValue'); | ||
} | ||
codes.push(`: `); | ||
codes.push(sfc.scriptSetup.content.substring(defineProp.defaultValue.start, defineProp.defaultValue.end)); | ||
codes.push(`,\n`); | ||
} | ||
} | ||
codes.push(`};\n`); | ||
codes.push(`let __VLS_props!: {\n`); | ||
for (const defineProp of scriptSetupRanges.defineProp) { | ||
let propName = 'modelValue'; | ||
if (scriptSetupRanges.defineProp.length) { | ||
codes.push(`const __VLS_defaults = {\n`); | ||
for (const defineProp of scriptSetupRanges.defineProp) { | ||
if (defineProp.defaultValue) { | ||
if (defineProp.name) { | ||
propName = sfc.scriptSetup.content.substring(defineProp.name.start, defineProp.name.end); | ||
const propMirrorStart = muggle.getLength(codes); | ||
definePropMirrors[propName] = [propMirrorStart, propMirrorStart + propName.length]; | ||
codes.push(sfc.scriptSetup.content.substring(defineProp.name.start, defineProp.name.end)); | ||
} | ||
codes.push(`${propName}${defineProp.required ? '' : '?'}: `); | ||
if (defineProp.type) { | ||
codes.push(sfc.scriptSetup.content.substring(defineProp.type.start, defineProp.type.end)); | ||
} | ||
else if (defineProp.defaultValue) { | ||
codes.push(`typeof __VLS_defaults['`); | ||
codes.push(propName); | ||
codes.push(`']`); | ||
} | ||
else { | ||
codes.push(`any`); | ||
codes.push('modelValue'); | ||
} | ||
codes.push(',\n'); | ||
codes.push(`: `); | ||
codes.push(sfc.scriptSetup.content.substring(defineProp.defaultValue.start, defineProp.defaultValue.end)); | ||
codes.push(`,\n`); | ||
} | ||
codes.push(`};\n`); | ||
} | ||
if (scriptSetupRanges.slotsTypeArg && vueCompilerOptions.jsxSlots) { | ||
usedHelperTypes.PropsChildren = true; | ||
codes.push(` & __VLS_PropsChildren<`); | ||
addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.slotsTypeArg.start, scriptSetupRanges.slotsTypeArg.end); | ||
codes.push(`>`); | ||
} | ||
codes.push(`;\n`); | ||
codes.push(`};\n`); | ||
} | ||
else { | ||
codes.push(`const __VLS_props: {}`); | ||
if (scriptSetupRanges.slotsTypeArg && vueCompilerOptions.jsxSlots) { | ||
usedHelperTypes.PropsChildren = true; | ||
codes.push(` & __VLS_PropsChildren<`); | ||
addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.slotsTypeArg.start, scriptSetupRanges.slotsTypeArg.end); | ||
codes.push(`>`); | ||
codes.push(`let __VLS_props!: {}`); | ||
if (scriptSetupRanges.propsRuntimeArg) { | ||
codes.push(` & InstanceType<typeof __VLS_publicComponent>['$props']`); | ||
} | ||
if (scriptSetupRanges.propsTypeArg) { | ||
codes.push(` & `); | ||
addVirtualCode('scriptSetup', scriptSetupRanges.propsTypeArg.start, scriptSetupRanges.propsTypeArg.end); | ||
} | ||
if (scriptSetupRanges.defineProp.length) { | ||
codes.push(` & {\n`); | ||
for (const defineProp of scriptSetupRanges.defineProp) { | ||
let propName = 'modelValue'; | ||
if (defineProp.name) { | ||
propName = sfc.scriptSetup.content.substring(defineProp.name.start, defineProp.name.end); | ||
const propMirrorStart = muggle.getLength(codes); | ||
definePropMirrors[propName] = [propMirrorStart, propMirrorStart + propName.length]; | ||
} | ||
codes.push(`${propName}${defineProp.required ? '' : '?'}: `); | ||
if (defineProp.type) { | ||
codes.push(sfc.scriptSetup.content.substring(defineProp.type.start, defineProp.type.end)); | ||
} | ||
else if (defineProp.defaultValue) { | ||
codes.push(`typeof __VLS_defaults['`); | ||
codes.push(propName); | ||
codes.push(`']`); | ||
} | ||
else { | ||
codes.push(`any`); | ||
} | ||
codes.push(',\n'); | ||
} | ||
if (scriptSetupRanges.propsTypeArg) { | ||
codes.push(' & '); | ||
addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.propsTypeArg.start, scriptSetupRanges.propsTypeArg.end); | ||
} | ||
codes.push(`;\n`); | ||
codes.push(`}`); | ||
} | ||
if (scriptSetupRanges.slotsTypeArg && vueCompilerOptions.jsxSlots) { | ||
usedHelperTypes.PropsChildren = true; | ||
codes.push(` & __VLS_PropsChildren<`); | ||
addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.slotsTypeArg.start, scriptSetupRanges.slotsTypeArg.end); | ||
} | ||
codes.push(`;\n`); | ||
//#endregion | ||
@@ -444,13 +433,4 @@ //#region emits | ||
} | ||
if (scriptRanges?.exportDefault && scriptRanges.exportDefault.expression.start !== scriptRanges.exportDefault.args.start) { | ||
// use defineComponent() from user space code if it exist | ||
codes.push(`const __VLS_publicComponent = `); | ||
addVirtualCode('script', scriptRanges.exportDefault.expression.start, scriptRanges.exportDefault.args.start); | ||
codes.push(`{\n`); | ||
} | ||
else { | ||
codes.push(`const __VLS_publicComponent = (await import('${vueCompilerOptions.lib}')).defineComponent({\n`); | ||
} | ||
if (scriptSetupRanges.defineProp.length) { | ||
codes.push(`props: {} as {\n`); | ||
if (!functional && scriptSetupRanges.defineProp.length) { | ||
codes.push(`let __VLS_propsOption_defineProp!: {\n`); | ||
for (const defineProp of scriptSetupRanges.defineProp) { | ||
@@ -486,10 +466,24 @@ let propName = 'modelValue'; | ||
} | ||
codes.push(`},\n`); | ||
codes.push(`};\n`); | ||
} | ||
if (scriptRanges?.exportDefault && scriptRanges.exportDefault.expression.start !== scriptRanges.exportDefault.args.start) { | ||
// use defineComponent() from user space code if it exist | ||
codes.push(`const __VLS_publicComponent = `); | ||
addVirtualCode('script', scriptRanges.exportDefault.expression.start, scriptRanges.exportDefault.args.start); | ||
codes.push(`{\n`); | ||
} | ||
else { | ||
codes.push(`const __VLS_publicComponent = (await import('${vueCompilerOptions.lib}')).defineComponent({\n`); | ||
} | ||
if (!bypassDefineComponent) { | ||
if (scriptSetupRanges.propsRuntimeArg || scriptSetupRanges.propsTypeArg) { | ||
codes.push(`props: (`); | ||
if (scriptSetupRanges.propsRuntimeArg || scriptSetupRanges.propsTypeArg || (!functional && scriptSetupRanges.defineProp.length)) { | ||
codes.push(`props: {\n`); | ||
if (scriptSetupRanges.propsRuntimeArg) { | ||
codes.push('...'); | ||
addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.propsRuntimeArg.start, scriptSetupRanges.propsRuntimeArg.end); | ||
codes.push(',\n'); | ||
} | ||
if (scriptSetupRanges.propsTypeArg) { | ||
usedHelperTypes.DefinePropsToOptions = true; | ||
codes.push(`{} as `); | ||
codes.push('...{} as '); | ||
if (scriptSetupRanges.withDefaultsArg) { | ||
@@ -511,7 +505,8 @@ usedHelperTypes.mergePropDefaults = true; | ||
} | ||
codes.push(',\n'); | ||
} | ||
else if (scriptSetupRanges.propsRuntimeArg) { | ||
addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.propsRuntimeArg.start, scriptSetupRanges.propsRuntimeArg.end); | ||
if (!functional && scriptSetupRanges.defineProp.length) { | ||
codes.push(`...__VLS_propsOption_defineProp,\n`); | ||
} | ||
codes.push(`),\n`); | ||
codes.push(`},\n`); | ||
} | ||
@@ -518,0 +513,0 @@ if (scriptSetupRanges.emitsTypeArg) { |
import type { Language } from '@volar/language-core'; | ||
import { VueFile } from './sourceFile'; | ||
import { VueCompilerOptions } from './types'; | ||
import type * as ts from 'typescript/lib/tsserverlibrary'; | ||
export declare function createLanguage(compilerOptions?: ts.CompilerOptions, _vueCompilerOptions?: Partial<VueCompilerOptions>, ts?: typeof import('typescript/lib/tsserverlibrary'), codegenStack?: boolean): Language; | ||
export declare function createLanguage(compilerOptions?: ts.CompilerOptions, _vueCompilerOptions?: Partial<VueCompilerOptions>, ts?: typeof import('typescript/lib/tsserverlibrary'), codegenStack?: boolean): Language<VueFile>; | ||
export declare function createLanguages(compilerOptions?: ts.CompilerOptions, vueCompilerOptions?: Partial<VueCompilerOptions>, ts?: typeof import('typescript/lib/tsserverlibrary'), codegenStack?: boolean): Language[]; |
@@ -13,3 +13,2 @@ "use strict"; | ||
const vueLanguagePlugin = (0, plugins_1.getDefaultVueLanguagePlugins)(ts, compilerOptions, vueCompilerOptions, codegenStack); | ||
const sharedTypesSnapshot = ts.ScriptSnapshot.fromString(sharedTypes.getTypesCode(vueCompilerOptions)); | ||
const languageModule = { | ||
@@ -27,27 +26,14 @@ createVirtualFile(fileName, snapshot, languageId) { | ||
resolveHost(host) { | ||
const sharedTypesSnapshot = ts.ScriptSnapshot.fromString(sharedTypes.getTypesCode(vueCompilerOptions)); | ||
const sharedTypesFileName = path_1.posix.join(host.getCurrentDirectory(), sharedTypes.baseName); | ||
return { | ||
...host, | ||
fileExists(fileName) { | ||
const basename = path_1.posix.basename(fileName); | ||
if (basename === sharedTypes.baseName) { | ||
return true; | ||
} | ||
return host.fileExists(fileName); | ||
}, | ||
getScriptFileNames() { | ||
return [ | ||
path_1.posix.join(host.getCurrentDirectory(), sharedTypes.baseName), | ||
sharedTypesFileName, | ||
...host.getScriptFileNames(), | ||
]; | ||
}, | ||
getScriptVersion(fileName) { | ||
const basename = path_1.posix.basename(fileName); | ||
if (basename === sharedTypes.baseName) { | ||
return ''; | ||
} | ||
return host.getScriptVersion(fileName); | ||
}, | ||
getScriptSnapshot(fileName) { | ||
const basename = path_1.posix.basename(fileName); | ||
if (basename === sharedTypes.baseName) { | ||
if (fileName === sharedTypesFileName) { | ||
return sharedTypesSnapshot; | ||
@@ -54,0 +40,0 @@ } |
@@ -65,8 +65,6 @@ "use strict"; | ||
type __VLS_WithComponent<N0 extends string, Components, N1 extends string, N2 extends string, N3 extends string> = | ||
__VLS_IsAny<__VLS_IntrinsicElements[N0]> extends true ? ( | ||
N1 extends keyof Components ? N1 extends N0 ? Pick<Components, N0> : { [K in N0]: Components[N1] } : | ||
N2 extends keyof Components ? N2 extends N0 ? Pick<Components, N0> : { [K in N0]: Components[N2] } : | ||
N3 extends keyof Components ? N3 extends N0 ? Pick<Components, N0> : { [K in N0]: Components[N3] } : | ||
${vueCompilerOptions.strictTemplates ? '{}' : '{ [K in N0]: any }'} | ||
) : Pick<__VLS_IntrinsicElements, N0>; | ||
N1 extends keyof Components ? N1 extends N0 ? Pick<Components, N0> : { [K in N0]: Components[N1] } : | ||
N2 extends keyof Components ? N2 extends N0 ? Pick<Components, N0> : { [K in N0]: Components[N2] } : | ||
N3 extends keyof Components ? N3 extends N0 ? Pick<Components, N0> : { [K in N0]: Components[N3] } : | ||
${vueCompilerOptions.strictTemplates ? '{}' : '{ [K in N0]: unknown }'} | ||
@@ -104,3 +102,3 @@ type __VLS_FillingEventArg_ParametersLength<E extends (...args: any) => any> = __VLS_IsAny<Parameters<E>> extends true ? -1 : Parameters<E>['length']; | ||
: T extends (...args: any) => any ? T | ||
: (_: T extends import('${vueCompilerOptions.lib}').VNode | import('${vueCompilerOptions.lib}').VNode[] | string ? {}: T & Record<string, unknown>, ctx?: any) => { __ctx?: { attrs?: unknown, expose?: unknown, slots?: unknown, emit?: unknown, props?: T & Record<string, unknown> } }; // IntrinsicElement | ||
: (_: T extends import('${vueCompilerOptions.lib}').VNode | import('${vueCompilerOptions.lib}').VNode[] | string ? {}: T${vueCompilerOptions.strictTemplates ? '' : ' & Record<string, unknown>'}, ctx?: any) => { __ctx?: { attrs?: any, expose?: any, slots?: any, emit?: any, props?: T${vueCompilerOptions.strictTemplates ? '' : ' & Record<string, unknown>'} } }; // IntrinsicElement | ||
declare function __VLS_functionalComponentArgsRest<T extends (...args: any) => any>(t: T): Parameters<T>['length'] extends 2 ? [any] : []; | ||
@@ -107,0 +105,0 @@ declare function __VLS_pickEvent<Emit, K, E>(emit: Emit, emitKey: K, event: E): __VLS_FillingEventArg< |
@@ -6,5 +6,4 @@ "use strict"; | ||
function createParsedCommandLineByJson(ts, parseConfigHost, rootDir, json) { | ||
const tsConfigPath = path.join(rootDir, 'jsconfig.json'); | ||
const proxyHost = proxyParseConfigHostForExtendConfigPaths(parseConfigHost); | ||
ts.parseJsonConfigFileContent(json, proxyHost.host, rootDir, {}, tsConfigPath); | ||
ts.parseJsonConfigFileContent(json, proxyHost.host, rootDir, {}, rootDir + '/jsconfig.json'); | ||
let vueOptions = {}; | ||
@@ -20,3 +19,3 @@ for (const extendPath of proxyHost.extendConfigPaths.reverse()) { | ||
} | ||
const parsed = ts.parseJsonConfigFileContent(json, proxyHost.host, path.dirname(tsConfigPath), {}, tsConfigPath, undefined, (vueOptions.extensions ?? ['.vue']).map(extension => ({ | ||
const parsed = ts.parseJsonConfigFileContent(json, proxyHost.host, rootDir, {}, rootDir + '/jsconfig.json', undefined, (vueOptions.extensions ?? ['.vue']).map(extension => ({ | ||
extension: extension.slice(1), | ||
@@ -23,0 +22,0 @@ isMixedContent: true, |
{ | ||
"name": "@vue/language-core", | ||
"version": "1.7.8", | ||
"version": "1.7.9", | ||
"main": "out/index.js", | ||
@@ -16,4 +16,4 @@ "license": "MIT", | ||
"dependencies": { | ||
"@volar/language-core": "1.6.9", | ||
"@volar/source-map": "1.6.9", | ||
"@volar/language-core": "1.7.3", | ||
"@volar/source-map": "1.7.3", | ||
"@vue/compiler-dom": "^3.3.0", | ||
@@ -38,3 +38,3 @@ "@vue/reactivity": "^3.3.0", | ||
}, | ||
"gitHead": "9841dc5c7b19c2b1d24fcc95a808f29af39710b8" | ||
"gitHead": "70f9ebedbc55a8d342ec425cc483dfe39c4b7489" | ||
} |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
234658
5147
+ Added@volar/language-core@1.7.3(transitive)
+ Added@volar/source-map@1.7.3(transitive)
- Removed@volar/language-core@1.6.9(transitive)
- Removed@volar/source-map@1.6.9(transitive)
Updated@volar/language-core@1.7.3
Updated@volar/source-map@1.7.3