Skip to content

Commit f0d78e8

Browse files
committed
wip(vitest-migration): ssr tests passing
1 parent 681775a commit f0d78e8

21 files changed

+53
-98
lines changed

packages/compiler-sfc/__tests__/compileStyle.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import {
62
compileStyle,
73
compileStyleAsync,

packages/runtime-core/src/componentOptions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ import {
55
ComponentInternalOptions,
66
Component,
77
ConcreteComponent,
8-
InternalRenderFunction,
9-
LifecycleHooks
8+
InternalRenderFunction
109
} from './component'
1110
import {
1211
isFunction,
@@ -72,6 +71,7 @@ import {
7271
softAssertCompatEnabled
7372
} from './compat/compatConfig'
7473
import { OptionMergeFunction } from './apiCreateApp'
74+
import { LifecycleHooks } from './enums'
7575

7676
/**
7777
* Interface for declaring custom options.

packages/runtime-core/src/components/KeepAlive.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
getCurrentInstance,
44
SetupContext,
55
ComponentInternalInstance,
6-
LifecycleHooks,
76
currentInstance,
87
getComponentName,
98
ComponentOptions
@@ -44,6 +43,7 @@ import { ComponentRenderContext } from '../componentPublicInstance'
4443
import { devtoolsComponentAdded } from '../devtools'
4544
import { isAsyncWrapper } from '../apiAsyncComponent'
4645
import { isSuspense } from './Suspense'
46+
import { LifecycleHooks } from '../enums'
4747

4848
type MatchPattern = string | RegExp | (string | RegExp)[]
4949

packages/server-renderer/__tests__/render.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { vi } from 'vitest'
62
import {
73
createApp,

packages/server-renderer/__tests__/ssrAttrFallthrough.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { createApp } from 'vue'
62
import { renderToString } from '../src/renderToString'
73

packages/server-renderer/__tests__/ssrCompilerOptions.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { createApp } from 'vue'
62
import { renderToString } from '../src/renderToString'
73

packages/server-renderer/__tests__/ssrDirectives.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { renderToString } from '../src/renderToString'
62
import {
73
createApp,

packages/server-renderer/__tests__/ssrDynamicComponent.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { createApp, createVNode } from 'vue'
62
import { renderToString } from '../src/renderToString'
73

packages/server-renderer/__tests__/ssrInterpolate.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { ssrInterpolate } from '../src/helpers/ssrInterpolate'
62
import { escapeHtml } from '@vue/shared'
73

packages/server-renderer/__tests__/ssrRenderAttrs.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import {
62
ssrRenderAttrs,
73
ssrRenderClass,

packages/server-renderer/__tests__/ssrRenderList.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { ssrRenderList } from '../src/helpers/ssrRenderList'
62

73
describe('ssr: renderList', () => {

packages/server-renderer/__tests__/ssrScopeId.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { createApp, h, mergeProps, withCtx } from 'vue'
62
import { renderToString } from '../src/renderToString'
73
import { ssrRenderComponent, ssrRenderAttrs, ssrRenderSlot } from '../src'

packages/server-renderer/__tests__/ssrSlot.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { createApp } from 'vue'
62
import { renderToString } from '../src/renderToString'
73

packages/server-renderer/__tests__/ssrSuspense.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { vi } from 'vitest'
62
import { createApp, h, Suspense } from 'vue'
73
import { renderToString } from '../src/renderToString'

packages/server-renderer/__tests__/ssrTeleport.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { createApp, h, Teleport } from 'vue'
62
import { renderToString } from '../src/renderToString'
73
import { renderToSimpleStream } from '../src/renderToStream'

packages/server-renderer/__tests__/ssrVModelHelpers.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import {
62
ssrRenderDynamicModel,
73
ssrGetDynamicModelProps

packages/server-renderer/__tests__/webStream.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* @jest-environment node
3-
*/
4-
51
import { createApp, h, defineAsyncComponent } from 'vue'
62
import { ReadableStream, TransformStream } from 'stream/web'
73
import { pipeToWebWritable, renderToWebStream } from '../src'

packages/server-renderer/src/helpers/ssrCompile.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import { extend, generateCodeFrame, isFunction, NO } from '@vue/shared'
44
import { CompilerError, CompilerOptions } from '@vue/compiler-core'
55
import { PushFn } from '../render'
66

7+
import * as Vue from 'vue'
8+
import * as helpers from '../internal'
9+
710
type SSRRenderFunction = (
811
context: any,
912
push: PushFn,
@@ -16,6 +19,7 @@ export function ssrCompile(
1619
template: string,
1720
instance: ComponentInternalInstance
1821
): SSRRenderFunction {
22+
// TODO: this branch should now work in ESM builds, enable it in a minor
1923
if (!__NODE_JS__) {
2024
throw new Error(
2125
`On-the-fly template compilation is not supported in the ESM build of ` +
@@ -76,5 +80,10 @@ export function ssrCompile(
7680
}
7781

7882
const { code } = compile(template, finalCompilerOptions)
79-
return (compileCache[cacheKey] = Function('require', code)(require))
83+
const requireMap = {
84+
vue: Vue,
85+
'vue/server-renderer': helpers
86+
}
87+
const fakeRequire = (id: 'vue' | 'vue/server-renderer') => requireMap[id]
88+
return (compileCache[cacheKey] = Function('require', code)(fakeRequire))
8089
}

packages/server-renderer/src/index.ts

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,4 @@ export {
1616
} from './renderToStream'
1717

1818
// internal runtime helpers
19-
export { renderVNode as ssrRenderVNode } from './render'
20-
export { ssrRenderComponent } from './helpers/ssrRenderComponent'
21-
export { ssrRenderSlot, ssrRenderSlotInner } from './helpers/ssrRenderSlot'
22-
export { ssrRenderTeleport } from './helpers/ssrRenderTeleport'
23-
export {
24-
ssrRenderClass,
25-
ssrRenderStyle,
26-
ssrRenderAttrs,
27-
ssrRenderAttr,
28-
ssrRenderDynamicAttr
29-
} from './helpers/ssrRenderAttrs'
30-
export { ssrInterpolate } from './helpers/ssrInterpolate'
31-
export { ssrRenderList } from './helpers/ssrRenderList'
32-
export { ssrRenderSuspense } from './helpers/ssrRenderSuspense'
33-
export { ssrGetDirectiveProps } from './helpers/ssrGetDirectiveProps'
34-
export { includeBooleanAttr as ssrIncludeBooleanAttr } from '@vue/shared'
35-
36-
// v-model helpers
37-
export {
38-
ssrLooseEqual,
39-
ssrLooseContain,
40-
ssrRenderDynamicModel,
41-
ssrGetDynamicModelProps
42-
} from './helpers/ssrVModelHelpers'
19+
export * from './internal'
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// internal runtime helpers
2+
export { renderVNode as ssrRenderVNode } from './render'
3+
export { ssrRenderComponent } from './helpers/ssrRenderComponent'
4+
export { ssrRenderSlot, ssrRenderSlotInner } from './helpers/ssrRenderSlot'
5+
export { ssrRenderTeleport } from './helpers/ssrRenderTeleport'
6+
export {
7+
ssrRenderClass,
8+
ssrRenderStyle,
9+
ssrRenderAttrs,
10+
ssrRenderAttr,
11+
ssrRenderDynamicAttr
12+
} from './helpers/ssrRenderAttrs'
13+
export { ssrInterpolate } from './helpers/ssrInterpolate'
14+
export { ssrRenderList } from './helpers/ssrRenderList'
15+
export { ssrRenderSuspense } from './helpers/ssrRenderSuspense'
16+
export { ssrGetDirectiveProps } from './helpers/ssrGetDirectiveProps'
17+
export { includeBooleanAttr as ssrIncludeBooleanAttr } from '@vue/shared'
18+
19+
// v-model helpers
20+
export {
21+
ssrLooseEqual,
22+
ssrLooseContain,
23+
ssrRenderDynamicModel,
24+
ssrGetDynamicModelProps
25+
} from './helpers/ssrVModelHelpers'

vitest.config.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,21 @@ import { fileURLToPath } from 'node:url'
44
import { readdirSync } from 'node:fs'
55

66
const resolve = p =>
7-
path.resolve(fileURLToPath(import.meta.url), `../packages/${p}/src`)
7+
path.resolve(fileURLToPath(import.meta.url), `../packages/${p}/src/index.ts`)
88
const dirs = readdirSync(new URL('./packages', import.meta.url))
9-
const alias = {}
9+
10+
const alias = {
11+
vue: resolve('vue'),
12+
'vue/compiler-sfc': resolve('compiler-sfc'),
13+
'vue/server-renderer': resolve('server-renderer'),
14+
'@vue/compat': resolve('vue-compat')
15+
}
16+
1017
for (const dir of dirs) {
11-
alias[`@vue/${dir}`] = resolve(dir)
18+
const key = `@vue/${dir}`
19+
if (dir !== 'vue' && !(key in alias)) {
20+
alias[key] = resolve(dir)
21+
}
1222
}
1323

1424
export default defineConfig({
@@ -28,13 +38,7 @@ export default defineConfig({
2838
__COMPAT__: true
2939
},
3040
resolve: {
31-
alias: {
32-
...alias,
33-
vue: resolve('vue'),
34-
'vue/compiler-sfc': resolve('compiler-sfc'),
35-
'vue/server-renderer': resolve('server-renderer'),
36-
'@vue/compat': resolve('vue-compat')
37-
}
41+
alias
3842
},
3943
test: {
4044
globals: true,

0 commit comments

Comments
 (0)