Skip to content

Commit

Permalink
fix: don't wrap component options to defineComponent
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsoncodehk committed Dec 15, 2021
1 parent c381dd1 commit 25798c7
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 25 deletions.
2 changes: 1 addition & 1 deletion extensions/vscode-vue-language-features/README.md
Expand Up @@ -45,7 +45,7 @@ Vue 3 in itself includes the package `@vue/runtime-dom`. For Vue 2 you will have

2. Remove `Vue.extend`

Template type-checking do not support with `Vue.extend`, you can use [composition-api](https://github.com/vuejs/composition-api), [vue-class-component](https://github.com/vuejs/vue-class-component), or `export default { ... }` instead of `export default Vue.extend`.
Template type-checking do not support with `Vue.extend`, you can use [composition-api](https://github.com/vuejs/composition-api), [vue-class-component](https://github.com/vuejs/vue-class-component), or instead of `export default Vue.extend`.

3. Support Vue 2 template

Expand Down
Expand Up @@ -28,20 +28,9 @@ export function useSfcEntryForTemplateLs(
content += `import { __VLS_options, __VLS_name } from './${vueFileName}.__VLS_script';\n`;
content += `export { __VLS_options, __VLS_name } from './${vueFileName}.__VLS_script';\n`;
content += `export * from './${vueFileName}.__VLS_script';\n`;

if (scriptSetup.value) {
content += `import { __VLS_component as __VLS_component_ts } from './${vueFileName}.${tsScriptFileName}';\n`;
content += `import { __VLS_component } from './${vueFileName}.__VLS_script';\n`;
content += `export { __VLS_component } from './${vueFileName}.__VLS_script';\n`;
}
else {
content += `import __VLS_component_1_ts from './${vueFileName}.${tsScriptFileName}';\n`;
content += `import __VLS_component_1 from './${vueFileName}.__VLS_script';\n`;
content += `import { __VLS_component as __VLS_component_2_ts } from './${vueFileName}.${tsScriptFileName}';\n`;
content += `import { __VLS_component as __VLS_component_2 } from './${vueFileName}.__VLS_script';\n`;
content += `declare var __VLS_component_ts: __VLS_types.SelectComponent<typeof __VLS_component_1_ts, typeof __VLS_component_2_ts>;\n`;
content += `export declare var __VLS_component: __VLS_types.SelectComponent<typeof __VLS_component_1, typeof __VLS_component_2>;\n`;
}
content += `import __VLS_component_ts from './${vueFileName}.${tsScriptFileName}';\n`;
content += `import __VLS_component from './${vueFileName}.__VLS_script';\n`;
content += `export { default as __VLS_component } from './${vueFileName}.__VLS_script';\n`;
}
else {
content += `export var __VLS_name = undefined;\n`;
Expand Down
15 changes: 5 additions & 10 deletions packages/vue-code-gen/src/generators/script.ts
Expand Up @@ -26,7 +26,6 @@ export function generate(

const codeGen = createCodeGen<TsMappingData>();
const teleports: SourceMaps.Mapping<TeleportMappingData>[] = [];
const shouldAddExportDefault = lsType === 'script' && !!scriptSetup;
const usedTypes = {
DefinePropsToOptions: false,
mergePropDefaults: false,
Expand Down Expand Up @@ -56,7 +55,7 @@ export function generate(
);
}

if (lsType === 'template' || shouldAddExportDefault)
if (!!scriptSetup)
writeExportComponent();

if (usedTypes.DefinePropsToOptions) {
Expand Down Expand Up @@ -146,7 +145,7 @@ export function generate(

const sections: (TextRange | string)[] = [];

if (shouldAddExportDefault && scriptRanges?.exportDefault) {
if (!!scriptSetup && scriptRanges?.exportDefault) {
sections.push({ start: 0, end: scriptRanges.exportDefault.start });
sections.push('await' + ' '.repeat(scriptRanges.exportDefault.expression.start - scriptRanges.exportDefault.start - 'await'.length));
sections.push({ start: scriptRanges.exportDefault.expression.start, end: script.content.length });
Expand Down Expand Up @@ -208,13 +207,9 @@ export function generate(
);
}
function writeExportComponent() {
if (shouldAddExportDefault) {
codeGen.addText(`export default (await import('${vueLibName}')).defineComponent({\n`);
}
else {
codeGen.addText(`\n`);
codeGen.addText(`export const __VLS_component = (await import('${vueLibName}')).defineComponent({\n`);
}

codeGen.addText(`export default (await import('${vueLibName}')).defineComponent({\n`);

if (script && scriptRanges?.exportDefault?.args) {
const args = scriptRanges.exportDefault.args;
codeGen.addText(`...(`);
Expand Down

0 comments on commit 25798c7

Please sign in to comment.