mirror of https://github.com/vuejs/core.git
wip(vitest-migration): ssr tests passing
This commit is contained in:
parent
681775a13c
commit
f0d78e8c8f
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
compileStyle,
|
compileStyle,
|
||||||
compileStyleAsync,
|
compileStyleAsync,
|
||||||
|
|
|
@ -5,8 +5,7 @@ import {
|
||||||
ComponentInternalOptions,
|
ComponentInternalOptions,
|
||||||
Component,
|
Component,
|
||||||
ConcreteComponent,
|
ConcreteComponent,
|
||||||
InternalRenderFunction,
|
InternalRenderFunction
|
||||||
LifecycleHooks
|
|
||||||
} from './component'
|
} from './component'
|
||||||
import {
|
import {
|
||||||
isFunction,
|
isFunction,
|
||||||
|
@ -72,6 +71,7 @@ import {
|
||||||
softAssertCompatEnabled
|
softAssertCompatEnabled
|
||||||
} from './compat/compatConfig'
|
} from './compat/compatConfig'
|
||||||
import { OptionMergeFunction } from './apiCreateApp'
|
import { OptionMergeFunction } from './apiCreateApp'
|
||||||
|
import { LifecycleHooks } from './enums'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface for declaring custom options.
|
* Interface for declaring custom options.
|
||||||
|
|
|
@ -3,7 +3,6 @@ import {
|
||||||
getCurrentInstance,
|
getCurrentInstance,
|
||||||
SetupContext,
|
SetupContext,
|
||||||
ComponentInternalInstance,
|
ComponentInternalInstance,
|
||||||
LifecycleHooks,
|
|
||||||
currentInstance,
|
currentInstance,
|
||||||
getComponentName,
|
getComponentName,
|
||||||
ComponentOptions
|
ComponentOptions
|
||||||
|
@ -44,6 +43,7 @@ import { ComponentRenderContext } from '../componentPublicInstance'
|
||||||
import { devtoolsComponentAdded } from '../devtools'
|
import { devtoolsComponentAdded } from '../devtools'
|
||||||
import { isAsyncWrapper } from '../apiAsyncComponent'
|
import { isAsyncWrapper } from '../apiAsyncComponent'
|
||||||
import { isSuspense } from './Suspense'
|
import { isSuspense } from './Suspense'
|
||||||
|
import { LifecycleHooks } from '../enums'
|
||||||
|
|
||||||
type MatchPattern = string | RegExp | (string | RegExp)[]
|
type MatchPattern = string | RegExp | (string | RegExp)[]
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { vi } from 'vitest'
|
import { vi } from 'vitest'
|
||||||
import {
|
import {
|
||||||
createApp,
|
createApp,
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { createApp } from 'vue'
|
import { createApp } from 'vue'
|
||||||
import { renderToString } from '../src/renderToString'
|
import { renderToString } from '../src/renderToString'
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { createApp } from 'vue'
|
import { createApp } from 'vue'
|
||||||
import { renderToString } from '../src/renderToString'
|
import { renderToString } from '../src/renderToString'
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { renderToString } from '../src/renderToString'
|
import { renderToString } from '../src/renderToString'
|
||||||
import {
|
import {
|
||||||
createApp,
|
createApp,
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { createApp, createVNode } from 'vue'
|
import { createApp, createVNode } from 'vue'
|
||||||
import { renderToString } from '../src/renderToString'
|
import { renderToString } from '../src/renderToString'
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { ssrInterpolate } from '../src/helpers/ssrInterpolate'
|
import { ssrInterpolate } from '../src/helpers/ssrInterpolate'
|
||||||
import { escapeHtml } from '@vue/shared'
|
import { escapeHtml } from '@vue/shared'
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ssrRenderAttrs,
|
ssrRenderAttrs,
|
||||||
ssrRenderClass,
|
ssrRenderClass,
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { ssrRenderList } from '../src/helpers/ssrRenderList'
|
import { ssrRenderList } from '../src/helpers/ssrRenderList'
|
||||||
|
|
||||||
describe('ssr: renderList', () => {
|
describe('ssr: renderList', () => {
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { createApp, h, mergeProps, withCtx } from 'vue'
|
import { createApp, h, mergeProps, withCtx } from 'vue'
|
||||||
import { renderToString } from '../src/renderToString'
|
import { renderToString } from '../src/renderToString'
|
||||||
import { ssrRenderComponent, ssrRenderAttrs, ssrRenderSlot } from '../src'
|
import { ssrRenderComponent, ssrRenderAttrs, ssrRenderSlot } from '../src'
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { createApp } from 'vue'
|
import { createApp } from 'vue'
|
||||||
import { renderToString } from '../src/renderToString'
|
import { renderToString } from '../src/renderToString'
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { vi } from 'vitest'
|
import { vi } from 'vitest'
|
||||||
import { createApp, h, Suspense } from 'vue'
|
import { createApp, h, Suspense } from 'vue'
|
||||||
import { renderToString } from '../src/renderToString'
|
import { renderToString } from '../src/renderToString'
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { createApp, h, Teleport } from 'vue'
|
import { createApp, h, Teleport } from 'vue'
|
||||||
import { renderToString } from '../src/renderToString'
|
import { renderToString } from '../src/renderToString'
|
||||||
import { renderToSimpleStream } from '../src/renderToStream'
|
import { renderToSimpleStream } from '../src/renderToStream'
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ssrRenderDynamicModel,
|
ssrRenderDynamicModel,
|
||||||
ssrGetDynamicModelProps
|
ssrGetDynamicModelProps
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/**
|
|
||||||
* @jest-environment node
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { createApp, h, defineAsyncComponent } from 'vue'
|
import { createApp, h, defineAsyncComponent } from 'vue'
|
||||||
import { ReadableStream, TransformStream } from 'stream/web'
|
import { ReadableStream, TransformStream } from 'stream/web'
|
||||||
import { pipeToWebWritable, renderToWebStream } from '../src'
|
import { pipeToWebWritable, renderToWebStream } from '../src'
|
||||||
|
|
|
@ -4,6 +4,9 @@ import { extend, generateCodeFrame, isFunction, NO } from '@vue/shared'
|
||||||
import { CompilerError, CompilerOptions } from '@vue/compiler-core'
|
import { CompilerError, CompilerOptions } from '@vue/compiler-core'
|
||||||
import { PushFn } from '../render'
|
import { PushFn } from '../render'
|
||||||
|
|
||||||
|
import * as Vue from 'vue'
|
||||||
|
import * as helpers from '../internal'
|
||||||
|
|
||||||
type SSRRenderFunction = (
|
type SSRRenderFunction = (
|
||||||
context: any,
|
context: any,
|
||||||
push: PushFn,
|
push: PushFn,
|
||||||
|
@ -16,6 +19,7 @@ export function ssrCompile(
|
||||||
template: string,
|
template: string,
|
||||||
instance: ComponentInternalInstance
|
instance: ComponentInternalInstance
|
||||||
): SSRRenderFunction {
|
): SSRRenderFunction {
|
||||||
|
// TODO: this branch should now work in ESM builds, enable it in a minor
|
||||||
if (!__NODE_JS__) {
|
if (!__NODE_JS__) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`On-the-fly template compilation is not supported in the ESM build of ` +
|
`On-the-fly template compilation is not supported in the ESM build of ` +
|
||||||
|
@ -76,5 +80,10 @@ export function ssrCompile(
|
||||||
}
|
}
|
||||||
|
|
||||||
const { code } = compile(template, finalCompilerOptions)
|
const { code } = compile(template, finalCompilerOptions)
|
||||||
return (compileCache[cacheKey] = Function('require', code)(require))
|
const requireMap = {
|
||||||
|
vue: Vue,
|
||||||
|
'vue/server-renderer': helpers
|
||||||
|
}
|
||||||
|
const fakeRequire = (id: 'vue' | 'vue/server-renderer') => requireMap[id]
|
||||||
|
return (compileCache[cacheKey] = Function('require', code)(fakeRequire))
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,27 +16,4 @@ export {
|
||||||
} from './renderToStream'
|
} from './renderToStream'
|
||||||
|
|
||||||
// internal runtime helpers
|
// internal runtime helpers
|
||||||
export { renderVNode as ssrRenderVNode } from './render'
|
export * from './internal'
|
||||||
export { ssrRenderComponent } from './helpers/ssrRenderComponent'
|
|
||||||
export { ssrRenderSlot, ssrRenderSlotInner } from './helpers/ssrRenderSlot'
|
|
||||||
export { ssrRenderTeleport } from './helpers/ssrRenderTeleport'
|
|
||||||
export {
|
|
||||||
ssrRenderClass,
|
|
||||||
ssrRenderStyle,
|
|
||||||
ssrRenderAttrs,
|
|
||||||
ssrRenderAttr,
|
|
||||||
ssrRenderDynamicAttr
|
|
||||||
} from './helpers/ssrRenderAttrs'
|
|
||||||
export { ssrInterpolate } from './helpers/ssrInterpolate'
|
|
||||||
export { ssrRenderList } from './helpers/ssrRenderList'
|
|
||||||
export { ssrRenderSuspense } from './helpers/ssrRenderSuspense'
|
|
||||||
export { ssrGetDirectiveProps } from './helpers/ssrGetDirectiveProps'
|
|
||||||
export { includeBooleanAttr as ssrIncludeBooleanAttr } from '@vue/shared'
|
|
||||||
|
|
||||||
// v-model helpers
|
|
||||||
export {
|
|
||||||
ssrLooseEqual,
|
|
||||||
ssrLooseContain,
|
|
||||||
ssrRenderDynamicModel,
|
|
||||||
ssrGetDynamicModelProps
|
|
||||||
} from './helpers/ssrVModelHelpers'
|
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
// internal runtime helpers
|
||||||
|
export { renderVNode as ssrRenderVNode } from './render'
|
||||||
|
export { ssrRenderComponent } from './helpers/ssrRenderComponent'
|
||||||
|
export { ssrRenderSlot, ssrRenderSlotInner } from './helpers/ssrRenderSlot'
|
||||||
|
export { ssrRenderTeleport } from './helpers/ssrRenderTeleport'
|
||||||
|
export {
|
||||||
|
ssrRenderClass,
|
||||||
|
ssrRenderStyle,
|
||||||
|
ssrRenderAttrs,
|
||||||
|
ssrRenderAttr,
|
||||||
|
ssrRenderDynamicAttr
|
||||||
|
} from './helpers/ssrRenderAttrs'
|
||||||
|
export { ssrInterpolate } from './helpers/ssrInterpolate'
|
||||||
|
export { ssrRenderList } from './helpers/ssrRenderList'
|
||||||
|
export { ssrRenderSuspense } from './helpers/ssrRenderSuspense'
|
||||||
|
export { ssrGetDirectiveProps } from './helpers/ssrGetDirectiveProps'
|
||||||
|
export { includeBooleanAttr as ssrIncludeBooleanAttr } from '@vue/shared'
|
||||||
|
|
||||||
|
// v-model helpers
|
||||||
|
export {
|
||||||
|
ssrLooseEqual,
|
||||||
|
ssrLooseContain,
|
||||||
|
ssrRenderDynamicModel,
|
||||||
|
ssrGetDynamicModelProps
|
||||||
|
} from './helpers/ssrVModelHelpers'
|
|
@ -4,11 +4,21 @@ import { fileURLToPath } from 'node:url'
|
||||||
import { readdirSync } from 'node:fs'
|
import { readdirSync } from 'node:fs'
|
||||||
|
|
||||||
const resolve = p =>
|
const resolve = p =>
|
||||||
path.resolve(fileURLToPath(import.meta.url), `../packages/${p}/src`)
|
path.resolve(fileURLToPath(import.meta.url), `../packages/${p}/src/index.ts`)
|
||||||
const dirs = readdirSync(new URL('./packages', import.meta.url))
|
const dirs = readdirSync(new URL('./packages', import.meta.url))
|
||||||
const alias = {}
|
|
||||||
|
const alias = {
|
||||||
|
vue: resolve('vue'),
|
||||||
|
'vue/compiler-sfc': resolve('compiler-sfc'),
|
||||||
|
'vue/server-renderer': resolve('server-renderer'),
|
||||||
|
'@vue/compat': resolve('vue-compat')
|
||||||
|
}
|
||||||
|
|
||||||
for (const dir of dirs) {
|
for (const dir of dirs) {
|
||||||
alias[`@vue/${dir}`] = resolve(dir)
|
const key = `@vue/${dir}`
|
||||||
|
if (dir !== 'vue' && !(key in alias)) {
|
||||||
|
alias[key] = resolve(dir)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
@ -28,13 +38,7 @@ export default defineConfig({
|
||||||
__COMPAT__: true
|
__COMPAT__: true
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias
|
||||||
...alias,
|
|
||||||
vue: resolve('vue'),
|
|
||||||
'vue/compiler-sfc': resolve('compiler-sfc'),
|
|
||||||
'vue/server-renderer': resolve('server-renderer'),
|
|
||||||
'@vue/compat': resolve('vue-compat')
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
test: {
|
test: {
|
||||||
globals: true,
|
globals: true,
|
||||||
|
|
Loading…
Reference in New Issue