Skip to content

Commit e5eecb1

Browse files
committed
fix(component-meta): read scriptSetupRanges from codegen
1 parent 10ca343 commit e5eecb1

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

Diff for: packages/component-meta/lib/base.ts

+15-15
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ ${commandLine.vueOptions.target < 3 ? vue2TypeHelpersCode : typeHelpersCode}
332332

333333
const vueFile = language.scripts.get(componentPath)?.generated?.root;
334334
const vueDefaults = vueFile && exportName === 'default'
335-
? (vueFile instanceof vue.VueVirtualCode ? readVueComponentDefaultProps(vueFile, printer, ts, commandLine.vueOptions) : {})
335+
? (vueFile instanceof vue.VueVirtualCode ? readVueComponentDefaultProps(vueFile, printer, ts) : {})
336336
: {};
337337
const tsDefaults = !vueFile ? readTsComponentDefaultProps(
338338
componentPath.slice(componentPath.lastIndexOf('.') + 1), // ts | js | tsx | jsx
@@ -707,10 +707,9 @@ function createSchemaResolvers(
707707
}
708708

709709
function readVueComponentDefaultProps(
710-
vueSourceFile: vue.VueVirtualCode,
710+
root: vue.VueVirtualCode,
711711
printer: ts.Printer | undefined,
712-
ts: typeof import('typescript'),
713-
vueCompilerOptions: vue.VueCompilerOptions
712+
ts: typeof import('typescript')
714713
) {
715714
let result: Record<string, { default?: string, required?: boolean; }> = {};
716715

@@ -721,13 +720,14 @@ function readVueComponentDefaultProps(
721720

722721
function scriptSetupWorker() {
723722

724-
const descriptor = vueSourceFile._sfc;
725-
const scriptSetupRanges = descriptor.scriptSetup ? vue.parseScriptSetupRanges(ts, descriptor.scriptSetup.ast, vueCompilerOptions) : undefined;
723+
const sfc = root._sfc;
724+
const codegen = vue.tsCodegen.get(sfc);
725+
const scriptSetupRanges = codegen?.scriptSetupRanges.get();
726726

727-
if (descriptor.scriptSetup && scriptSetupRanges?.withDefaults?.arg) {
727+
if (sfc.scriptSetup && scriptSetupRanges?.withDefaults?.arg) {
728728

729-
const defaultsText = descriptor.scriptSetup.content.slice(scriptSetupRanges.withDefaults.arg.start, scriptSetupRanges.withDefaults.arg.end);
730-
const ast = ts.createSourceFile('/tmp.' + descriptor.scriptSetup.lang, '(' + defaultsText + ')', ts.ScriptTarget.Latest);
729+
const defaultsText = sfc.scriptSetup.content.slice(scriptSetupRanges.withDefaults.arg.start, scriptSetupRanges.withDefaults.arg.end);
730+
const ast = ts.createSourceFile('/tmp.' + sfc.scriptSetup.lang, '(' + defaultsText + ')', ts.ScriptTarget.Latest);
731731
const obj = findObjectLiteralExpression(ast);
732732

733733
if (obj) {
@@ -743,9 +743,9 @@ function readVueComponentDefaultProps(
743743
}
744744
}
745745
}
746-
} else if (descriptor.scriptSetup && scriptSetupRanges?.defineProps?.arg) {
747-
const defaultsText = descriptor.scriptSetup.content.slice(scriptSetupRanges.defineProps.arg.start, scriptSetupRanges.defineProps.arg.end);
748-
const ast = ts.createSourceFile('/tmp.' + descriptor.scriptSetup.lang, '(' + defaultsText + ')', ts.ScriptTarget.Latest);
746+
} else if (sfc.scriptSetup && scriptSetupRanges?.defineProps?.arg) {
747+
const defaultsText = sfc.scriptSetup.content.slice(scriptSetupRanges.defineProps.arg.start, scriptSetupRanges.defineProps.arg.end);
748+
const ast = ts.createSourceFile('/tmp.' + sfc.scriptSetup.lang, '(' + defaultsText + ')', ts.ScriptTarget.Latest);
749749
const obj = findObjectLiteralExpression(ast);
750750

751751
if (obj) {
@@ -754,8 +754,8 @@ function readVueComponentDefaultProps(
754754
...resolvePropsOption(ast, obj, printer, ts),
755755
};
756756
}
757-
} else if (descriptor.scriptSetup && scriptSetupRanges?.defineProps?.destructured) {
758-
const ast = descriptor.scriptSetup.ast;
757+
} else if (sfc.scriptSetup && scriptSetupRanges?.defineProps?.destructured) {
758+
const ast = sfc.scriptSetup.ast;
759759
for (const [prop, initializer] of scriptSetupRanges.defineProps.destructured) {
760760
if (initializer) {
761761
const expText = printer?.printNode(ts.EmitHint.Expression, initializer, ast) ?? initializer.getText(ast);
@@ -780,7 +780,7 @@ function readVueComponentDefaultProps(
780780

781781
function scriptWorker() {
782782

783-
const descriptor = vueSourceFile._sfc;
783+
const descriptor = root._sfc;
784784

785785
if (descriptor.script) {
786786
const scriptResult = readTsComponentDefaultProps(descriptor.script.lang, descriptor.script.content, 'default', printer, ts);

0 commit comments

Comments
 (0)