Skip to content

Commit c5b2c8f

Browse files
authoredJun 26, 2023
fix(ssr): transform superclass identifier (#13635)
1 parent c72fb9b commit c5b2c8f

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed
 

‎packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts

+20-3
Original file line numberDiff line numberDiff line change
@@ -907,11 +907,28 @@ for (const test in tests) {
907907

908908
test('avoid binding ClassExpression', async () => {
909909
const result = await ssrTransformSimple(
910-
`import Foo, {Bar} from './foo';console.log(Foo, Bar);const obj = {foo: class Foo{}, bar: class Bar{}}`,
910+
`
911+
import Foo, { Bar } from './foo';
912+
913+
console.log(Foo, Bar);
914+
const obj = {
915+
foo: class Foo {},
916+
bar: class Bar {}
917+
}
918+
const Baz = class extends Foo {}
919+
`,
911920
)
912921
expect(result?.code).toMatchInlineSnapshot(`
913-
914922
"const __vite_ssr_import_0__ = await __vite_ssr_import__(\\"./foo\\");
915-
console.log(__vite_ssr_import_0__.default, __vite_ssr_import_0__.Bar);const obj = {foo: class Foo{}, bar: class Bar{}}"
923+
924+
925+
926+
console.log(__vite_ssr_import_0__.default, __vite_ssr_import_0__.Bar);
927+
const obj = {
928+
foo: class Foo {},
929+
bar: class Bar {}
930+
}
931+
const Baz = class extends __vite_ssr_import_0__.default {}
932+
"
916933
`)
917934
})

‎packages/vite/src/node/ssr/ssrTransform.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,10 @@ async function ssrTransformScript(
256256
const topNode = parentStack[parentStack.length - 2]
257257
s.prependRight(topNode.start, `const ${id.name} = ${binding};\n`)
258258
}
259-
} else if (parent.type !== 'ClassExpression') {
259+
} else if (
260+
// don't transform class name identifier
261+
!(parent.type === 'ClassExpression' && id === parent.id)
262+
) {
260263
s.update(id.start, id.end, binding)
261264
}
262265
},

0 commit comments

Comments
 (0)
Please sign in to comment.