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 {
|
||||
compileStyle,
|
||||
compileStyleAsync,
|
||||
|
|
|
@ -5,8 +5,7 @@ import {
|
|||
ComponentInternalOptions,
|
||||
Component,
|
||||
ConcreteComponent,
|
||||
InternalRenderFunction,
|
||||
LifecycleHooks
|
||||
InternalRenderFunction
|
||||
} from './component'
|
||||
import {
|
||||
isFunction,
|
||||
|
@ -72,6 +71,7 @@ import {
|
|||
softAssertCompatEnabled
|
||||
} from './compat/compatConfig'
|
||||
import { OptionMergeFunction } from './apiCreateApp'
|
||||
import { LifecycleHooks } from './enums'
|
||||
|
||||
/**
|
||||
* Interface for declaring custom options.
|
||||
|
|
|
@ -3,7 +3,6 @@ import {
|
|||
getCurrentInstance,
|
||||
SetupContext,
|
||||
ComponentInternalInstance,
|
||||
LifecycleHooks,
|
||||
currentInstance,
|
||||
getComponentName,
|
||||
ComponentOptions
|
||||
|
@ -44,6 +43,7 @@ import { ComponentRenderContext } from '../componentPublicInstance'
|
|||
import { devtoolsComponentAdded } from '../devtools'
|
||||
import { isAsyncWrapper } from '../apiAsyncComponent'
|
||||
import { isSuspense } from './Suspense'
|
||||
import { LifecycleHooks } from '../enums'
|
||||
|
||||
type MatchPattern = string | RegExp | (string | RegExp)[]
|
||||
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { vi } from 'vitest'
|
||||
import {
|
||||
createApp,
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { createApp } from 'vue'
|
||||
import { renderToString } from '../src/renderToString'
|
||||
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { createApp } from 'vue'
|
||||
import { renderToString } from '../src/renderToString'
|
||||
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { renderToString } from '../src/renderToString'
|
||||
import {
|
||||
createApp,
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { createApp, createVNode } from 'vue'
|
||||
import { renderToString } from '../src/renderToString'
|
||||
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { ssrInterpolate } from '../src/helpers/ssrInterpolate'
|
||||
import { escapeHtml } from '@vue/shared'
|
||||
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import {
|
||||
ssrRenderAttrs,
|
||||
ssrRenderClass,
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { ssrRenderList } from '../src/helpers/ssrRenderList'
|
||||
|
||||
describe('ssr: renderList', () => {
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { createApp, h, mergeProps, withCtx } from 'vue'
|
||||
import { renderToString } from '../src/renderToString'
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrRenderSlot } from '../src'
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { createApp } from 'vue'
|
||||
import { renderToString } from '../src/renderToString'
|
||||
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { vi } from 'vitest'
|
||||
import { createApp, h, Suspense } from 'vue'
|
||||
import { renderToString } from '../src/renderToString'
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { createApp, h, Teleport } from 'vue'
|
||||
import { renderToString } from '../src/renderToString'
|
||||
import { renderToSimpleStream } from '../src/renderToStream'
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import {
|
||||
ssrRenderDynamicModel,
|
||||
ssrGetDynamicModelProps
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
/**
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
import { createApp, h, defineAsyncComponent } from 'vue'
|
||||
import { ReadableStream, TransformStream } from 'stream/web'
|
||||
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 { PushFn } from '../render'
|
||||
|
||||
import * as Vue from 'vue'
|
||||
import * as helpers from '../internal'
|
||||
|
||||
type SSRRenderFunction = (
|
||||
context: any,
|
||||
push: PushFn,
|
||||
|
@ -16,6 +19,7 @@ export function ssrCompile(
|
|||
template: string,
|
||||
instance: ComponentInternalInstance
|
||||
): SSRRenderFunction {
|
||||
// TODO: this branch should now work in ESM builds, enable it in a minor
|
||||
if (!__NODE_JS__) {
|
||||
throw new Error(
|
||||
`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)
|
||||
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'
|
||||
|
||||
// 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'
|
||||
export * from './internal'
|
||||
|
|
|
@ -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'
|
||||
|
||||
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 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) {
|
||||
alias[`@vue/${dir}`] = resolve(dir)
|
||||
const key = `@vue/${dir}`
|
||||
if (dir !== 'vue' && !(key in alias)) {
|
||||
alias[key] = resolve(dir)
|
||||
}
|
||||
}
|
||||
|
||||
export default defineConfig({
|
||||
|
@ -28,13 +38,7 @@ export default defineConfig({
|
|||
__COMPAT__: true
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
...alias,
|
||||
vue: resolve('vue'),
|
||||
'vue/compiler-sfc': resolve('compiler-sfc'),
|
||||
'vue/server-renderer': resolve('server-renderer'),
|
||||
'@vue/compat': resolve('vue-compat')
|
||||
}
|
||||
alias
|
||||
},
|
||||
test: {
|
||||
globals: true,
|
||||
|
|
Loading…
Reference in New Issue