@vue/language-core
Advanced tools
Comparing version 2.0.15 to 2.0.16
@@ -101,6 +101,6 @@ "use strict"; | ||
if (scriptSetupRanges.props.define?.typeArg) { | ||
yield `__typeProps: typeof __VLS_typeProps,${common_1.newLine}`; | ||
yield `__typeProps: __VLS_typeProps,${common_1.newLine}`; | ||
} | ||
if (scriptSetupRanges.emits.define?.typeArg) { | ||
yield `__typeEmits: typeof ${scriptSetupRanges.emits.name ?? '__VLS_emit'},${common_1.newLine}`; | ||
yield `__typeEmits: ${scriptSetupRanges.emits.name ?? '__VLS_emit'},${common_1.newLine}`; | ||
} | ||
@@ -107,0 +107,0 @@ } |
@@ -145,6 +145,3 @@ "use strict"; | ||
if (scriptSetupRanges.slots.define) { | ||
if (!scriptSetupRanges.slots.name) { | ||
setupCodeModifies.push([[`const __VLS_slots = `], scriptSetupRanges.slots.define.start, scriptSetupRanges.slots.define.start]); | ||
} | ||
else if (scriptSetupRanges.slots.isObjectBindingPattern) { | ||
if (scriptSetupRanges.slots.isObjectBindingPattern) { | ||
setupCodeModifies.push([ | ||
@@ -156,2 +153,5 @@ [`__VLS_slots;\nconst __VLS_slots = `], | ||
} | ||
else if (!scriptSetupRanges.slots.name) { | ||
setupCodeModifies.push([[`const __VLS_slots = `], scriptSetupRanges.slots.define.start, scriptSetupRanges.slots.define.start]); | ||
} | ||
} | ||
@@ -158,0 +158,0 @@ if (scriptSetupRanges.emits.define && !scriptSetupRanges.emits.name) { |
@@ -16,3 +16,4 @@ "use strict"; | ||
// fix https://github.com/vuejs/language-tools/issues/932 | ||
if (!ctx.hasSlotElements.has(node) | ||
if (componentCtxVar | ||
&& !ctx.hasSlotElements.has(node) | ||
&& node.children.length | ||
@@ -19,0 +20,0 @@ && node.tagType !== CompilerDOM.ElementTypes.ELEMENT |
@@ -32,3 +32,2 @@ "use strict"; | ||
yield `)${common_1.endOfLine}`; | ||
return; | ||
} | ||
@@ -39,32 +38,32 @@ else { | ||
yield `}${common_1.endOfLine}`; | ||
if (nameProp?.type === CompilerDOM.NodeTypes.ATTRIBUTE | ||
&& nameProp.value) { | ||
ctx.slots.push({ | ||
name: nameProp.value.content, | ||
loc: nameProp.loc.start.offset + nameProp.loc.source.indexOf(nameProp.value.content, nameProp.name.length), | ||
tagRange: [startTagOffset, startTagOffset + node.tag.length], | ||
varName: varSlot, | ||
nodeLoc: node.loc, | ||
}); | ||
} | ||
else if (nameProp?.type === CompilerDOM.NodeTypes.DIRECTIVE | ||
&& nameProp.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION) { | ||
const slotExpVar = ctx.getInternalVariable(); | ||
yield `var ${slotExpVar} = `; | ||
yield* (0, interpolation_1.generateInterpolation)(options, ctx, nameProp.exp.content, nameProp.exp, nameProp.exp.loc.start.offset, ctx.codeFeatures.all, '(', ')'); | ||
yield ` as const${common_1.endOfLine}`; | ||
ctx.dynamicSlots.push({ | ||
expVar: slotExpVar, | ||
varName: varSlot, | ||
}); | ||
} | ||
else { | ||
ctx.slots.push({ | ||
name: 'default', | ||
tagRange: [startTagOffset, startTagOffset + node.tag.length], | ||
varName: varSlot, | ||
nodeLoc: node.loc, | ||
}); | ||
} | ||
} | ||
if (nameProp?.type === CompilerDOM.NodeTypes.ATTRIBUTE | ||
&& nameProp.value) { | ||
ctx.slots.push({ | ||
name: nameProp.value.content, | ||
loc: nameProp.loc.start.offset + nameProp.loc.source.indexOf(nameProp.value.content, nameProp.name.length), | ||
tagRange: [startTagOffset, startTagOffset + node.tag.length], | ||
varName: varSlot, | ||
nodeLoc: node.loc, | ||
}); | ||
} | ||
else if (nameProp?.type === CompilerDOM.NodeTypes.DIRECTIVE | ||
&& nameProp.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION) { | ||
const slotExpVar = ctx.getInternalVariable(); | ||
yield `var ${slotExpVar} = `; | ||
yield* (0, interpolation_1.generateInterpolation)(options, ctx, nameProp.exp.content, nameProp.exp, nameProp.exp.loc.start.offset, ctx.codeFeatures.all, '(', ')'); | ||
yield ` as const${common_1.endOfLine}`; | ||
ctx.dynamicSlots.push({ | ||
expVar: slotExpVar, | ||
varName: varSlot, | ||
}); | ||
} | ||
else { | ||
ctx.slots.push({ | ||
name: 'default', | ||
tagRange: [startTagOffset, startTagOffset + node.tag.length], | ||
varName: varSlot, | ||
nodeLoc: node.loc, | ||
}); | ||
} | ||
yield* ctx.generateAutoImportCompletion(); | ||
@@ -71,0 +70,0 @@ yield* (0, elementChildren_1.generateElementChildren)(options, ctx, node, currentComponent, componentCtxVar); |
@@ -25,3 +25,3 @@ import { type VueLanguagePlugin } from './types'; | ||
}[]; | ||
resolveEmbeddedCode?(fileName: string, sfc: import("./types").Sfc, embeddedFile: import("./virtualFile/embeddedFile").VueEmbeddedCode): void; | ||
resolveEmbeddedCode?(fileName: string, sfc: import("./types").Sfc, embeddedFile: import("./types").VueEmbeddedCode): void; | ||
}[]; |
@@ -7,2 +7,3 @@ import type * as CompilerDOM from '@vue/compiler-dom'; | ||
export type { SFCParseResult } from '@vue/compiler-sfc'; | ||
export { VueEmbeddedCode }; | ||
export type RawVueCompilerOptions = Partial<Omit<VueCompilerOptions, 'target' | 'plugins'>> & { | ||
@@ -9,0 +10,0 @@ target?: 'auto' | 2 | 2.7 | 3 | 3.3; |
@@ -27,3 +27,3 @@ "use strict"; | ||
}); | ||
const pluginsResult = plugins.map(plugin => computedPluginFiles(plugins, plugin, fileName, sfc, nameToBlock)); | ||
const pluginsResult = plugins.map(plugin => computedPluginEmbeddedCodes(plugins, plugin, fileName, sfc, nameToBlock)); | ||
const flatResult = (0, computeds_1.computed)(() => pluginsResult.map(r => r()).flat()); | ||
@@ -40,4 +40,4 @@ const structuredResult = (0, computeds_1.computed)(() => { | ||
} | ||
for (const { file } of remain) { | ||
console.error('Unable to resolve embedded: ' + file.parentCodeId + ' -> ' + file.id); | ||
for (const { code } of remain) { | ||
console.error('Unable to resolve embedded: ' + code.parentCodeId + ' -> ' + code.id); | ||
} | ||
@@ -47,8 +47,8 @@ return embeddedCodes; | ||
for (let i = remain.length - 1; i >= 0; i--) { | ||
const { file, snapshot, mappings } = remain[i]; | ||
if (!file.parentCodeId) { | ||
const { code, snapshot, mappings } = remain[i]; | ||
if (!code.parentCodeId) { | ||
embeddedCodes.push({ | ||
id: file.id, | ||
languageId: resolveCommonLanguageId(file.lang), | ||
linkedCodeMappings: file.linkedCodeMappings, | ||
id: code.id, | ||
languageId: resolveCommonLanguageId(code.lang), | ||
linkedCodeMappings: code.linkedCodeMappings, | ||
snapshot, | ||
@@ -61,9 +61,9 @@ mappings, | ||
else { | ||
const parent = findParentStructure(file.parentCodeId, embeddedCodes); | ||
const parent = findParentStructure(code.parentCodeId, embeddedCodes); | ||
if (parent) { | ||
parent.embeddedCodes ??= []; | ||
parent.embeddedCodes.push({ | ||
id: file.id, | ||
languageId: resolveCommonLanguageId(file.lang), | ||
linkedCodeMappings: file.linkedCodeMappings, | ||
id: code.id, | ||
languageId: resolveCommonLanguageId(code.lang), | ||
linkedCodeMappings: code.linkedCodeMappings, | ||
snapshot, | ||
@@ -93,20 +93,21 @@ mappings, | ||
exports.computedFiles = computedFiles; | ||
function computedPluginFiles(plugins, plugin, fileName, sfc, nameToBlock) { | ||
const embeddedFiles = {}; | ||
const files = (0, computeds_1.computed)(() => { | ||
function computedPluginEmbeddedCodes(plugins, plugin, fileName, sfc, nameToBlock) { | ||
const computeds = new Map(); | ||
const getComputedKey = (code) => code.id + '__' + code.lang; | ||
const codes = (0, computeds_1.computed)(() => { | ||
try { | ||
if (!plugin.getEmbeddedCodes) { | ||
return Object.values(embeddedFiles); | ||
return [...computeds.values()]; | ||
} | ||
const fileInfos = plugin.getEmbeddedCodes(fileName, sfc); | ||
for (const oldId of Object.keys(embeddedFiles)) { | ||
if (!fileInfos.some(file => file.id === oldId)) { | ||
delete embeddedFiles[oldId]; | ||
const embeddedCodeInfos = plugin.getEmbeddedCodes(fileName, sfc); | ||
for (const oldId of computeds.keys()) { | ||
if (!embeddedCodeInfos.some(code => getComputedKey(code) === oldId)) { | ||
computeds.delete(oldId); | ||
} | ||
} | ||
for (const fileInfo of fileInfos) { | ||
if (!embeddedFiles[fileInfo.id]) { | ||
embeddedFiles[fileInfo.id] = (0, computeds_1.computed)(() => { | ||
for (const codeInfo of embeddedCodeInfos) { | ||
if (!computeds.has(getComputedKey(codeInfo))) { | ||
computeds.set(getComputedKey(codeInfo), (0, computeds_1.computed)(() => { | ||
const content = []; | ||
const file = new embeddedFile_1.VueEmbeddedCode(fileInfo.id, fileInfo.lang, content); | ||
const code = new embeddedFile_1.VueEmbeddedCode(codeInfo.id, codeInfo.lang, content); | ||
for (const plugin of plugins) { | ||
@@ -117,3 +118,3 @@ if (!plugin.resolveEmbeddedCode) { | ||
try { | ||
plugin.resolveEmbeddedCode(fileName, sfc, file); | ||
plugin.resolveEmbeddedCode(fileName, sfc, code); | ||
} | ||
@@ -124,3 +125,3 @@ catch (e) { | ||
} | ||
const newText = (0, language_core_1.toString)(file.content); | ||
const newText = (0, language_core_1.toString)(code.content); | ||
const changeRanges = new Map(); | ||
@@ -143,6 +144,6 @@ const snapshot = { | ||
return { | ||
file, | ||
code, | ||
snapshot, | ||
}; | ||
}); | ||
})); | ||
} | ||
@@ -154,8 +155,8 @@ } | ||
} | ||
return Object.values(embeddedFiles); | ||
return [...computeds.values()]; | ||
}); | ||
return (0, computeds_1.computed)(() => { | ||
return files().map(_file => { | ||
const { file, snapshot } = _file(); | ||
const mappings = (0, language_core_1.buildMappings)(file.content); | ||
return codes().map(_file => { | ||
const { code, snapshot } = _file(); | ||
const mappings = (0, language_core_1.buildMappings)(code.content); | ||
const newMappings = []; | ||
@@ -197,3 +198,3 @@ let lastValidMapping; | ||
return { | ||
file, | ||
code, | ||
snapshot, | ||
@@ -200,0 +201,0 @@ mappings: newMappings, |
{ | ||
"name": "@vue/language-core", | ||
"version": "2.0.15", | ||
"version": "2.0.16", | ||
"license": "MIT", | ||
@@ -15,3 +15,3 @@ "files": [ | ||
"dependencies": { | ||
"@volar/language-core": "2.2.0-alpha.12", | ||
"@volar/language-core": "~2.2.0", | ||
"@vue/compiler-dom": "^3.4.0", | ||
@@ -38,3 +38,3 @@ "@vue/shared": "^3.4.0", | ||
}, | ||
"gitHead": "095f44449d71cd5a4730306c9c8c40df4d44dce3" | ||
"gitHead": "95b78c38cbf75481ebb59e11956b592346f01d92" | ||
} |
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
290433
6445
+ Added@volar/language-core@2.2.5(transitive)
+ Added@volar/source-map@2.2.5(transitive)
- Removed@volar/language-core@2.2.0-alpha.12(transitive)
- Removed@volar/source-map@2.2.0-alpha.12(transitive)
Updated@volar/language-core@~2.2.0