diff --git a/packages/svelte2tsx/src/svelte2tsx/processInstanceScriptContent.ts b/packages/svelte2tsx/src/svelte2tsx/processInstanceScriptContent.ts index cb6973dba..7661b64bf 100644 --- a/packages/svelte2tsx/src/svelte2tsx/processInstanceScriptContent.ts +++ b/packages/svelte2tsx/src/svelte2tsx/processInstanceScriptContent.ts @@ -122,6 +122,21 @@ export function processInstanceScriptContent( } }; + const handleExportFunctionOrClass = (node: ts.ClassDeclaration | ts.FunctionDeclaration) => { + const exportModifier = findExportKeyword(node); + if (!exportModifier) { + return; + } + + removeExport(exportModifier.getStart(), exportModifier.end); + addGetter(node.name); + + // Can't export default here + if (node.name) { + exportedNames.addExport(node.name); + } + }; + const handleStore = (ident: ts.Node, parent: ts.Node) => { // handle assign to // eslint-disable-next-line max-len @@ -323,8 +338,8 @@ export function processInstanceScriptContent( const isLet = node.declarationList.flags === ts.NodeFlags.Let; const isConst = node.declarationList.flags === ts.NodeFlags.Const; + handleExportedVariableDeclarationList(node.declarationList); if (isLet) { - handleExportedVariableDeclarationList(node.declarationList); propTypeAssertToUserDefined(node.declarationList); } else if (isConst) { node.declarationList.forEachChild((n) => { @@ -338,24 +353,14 @@ export function processInstanceScriptContent( } if (ts.isFunctionDeclaration(node)) { - if (node.modifiers) { - const exportModifier = findExportKeyword(node); - if (exportModifier) { - removeExport(exportModifier.getStart(), exportModifier.end); - addGetter(node.name); - } - } + handleExportFunctionOrClass(node); pushScope(); onLeaveCallbacks.push(() => popScope()); } if (ts.isClassDeclaration(node)) { - const exportModifier = findExportKeyword(node); - if (exportModifier) { - removeExport(exportModifier.getStart(), exportModifier.end); - addGetter(node.name); - } + handleExportFunctionOrClass(node); } if (ts.isBlock(node)) { diff --git a/packages/svelte2tsx/test/svelte2tsx/samples/export-class/expected.tsx b/packages/svelte2tsx/test/svelte2tsx/samples/export-class/expected.tsx index 4e1402f4e..ae911cffe 100644 --- a/packages/svelte2tsx/test/svelte2tsx/samples/export-class/expected.tsx +++ b/packages/svelte2tsx/test/svelte2tsx/samples/export-class/expected.tsx @@ -4,7 +4,7 @@ class Foo {}; ; () => (<>); -return { props: {}, slots: {}, getters: {Foo: Foo}, events: {} }} +return { props: {Foo: Foo}, slots: {}, getters: {Foo: Foo}, events: {} }} export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) { get Foo() { return render().getters.Foo } diff --git a/packages/svelte2tsx/test/svelte2tsx/samples/ts-export-const/expected.tsx b/packages/svelte2tsx/test/svelte2tsx/samples/ts-export-const/expected.tsx index 128a89d1b..123f3133c 100644 --- a/packages/svelte2tsx/test/svelte2tsx/samples/ts-export-const/expected.tsx +++ b/packages/svelte2tsx/test/svelte2tsx/samples/ts-export-const/expected.tsx @@ -5,7 +5,7 @@ const SOME = 1, CONSTANT = 2; ; () => (<>); -return { props: {}, slots: {}, getters: {name: name, SOME: SOME, CONSTANT: CONSTANT}, events: {} }} +return { props: {name: name , SOME: SOME , CONSTANT: CONSTANT} as {name?: string, SOME?: typeof SOME, CONSTANT?: typeof CONSTANT}, slots: {}, getters: {name: name, SOME: SOME, CONSTANT: CONSTANT}, events: {} }} export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) { get name() { return render().getters.name }