-/**
- * @jest-environment node
- */
-
import {
compileStyle,
compileStyleAsync,
ComponentInternalOptions,
Component,
ConcreteComponent,
- InternalRenderFunction,
- LifecycleHooks
+ InternalRenderFunction
} from './component'
import {
isFunction,
softAssertCompatEnabled
} from './compat/compatConfig'
import { OptionMergeFunction } from './apiCreateApp'
+import { LifecycleHooks } from './enums'
/**
* Interface for declaring custom options.
getCurrentInstance,
SetupContext,
ComponentInternalInstance,
- LifecycleHooks,
currentInstance,
getComponentName,
ComponentOptions
import { devtoolsComponentAdded } from '../devtools'
import { isAsyncWrapper } from '../apiAsyncComponent'
import { isSuspense } from './Suspense'
+import { LifecycleHooks } from '../enums'
type MatchPattern = string | RegExp | (string | RegExp)[]
-/**
- * @jest-environment node
- */
-
import { vi } from 'vitest'
import {
createApp,
-/**
- * @jest-environment node
- */
-
import { createApp } from 'vue'
import { renderToString } from '../src/renderToString'
-/**
- * @jest-environment node
- */
-
import { createApp } from 'vue'
import { renderToString } from '../src/renderToString'
-/**
- * @jest-environment node
- */
-
import { renderToString } from '../src/renderToString'
import {
createApp,
-/**
- * @jest-environment node
- */
-
import { createApp, createVNode } from 'vue'
import { renderToString } from '../src/renderToString'
-/**
- * @jest-environment node
- */
-
import { ssrInterpolate } from '../src/helpers/ssrInterpolate'
import { escapeHtml } from '@vue/shared'
-/**
- * @jest-environment node
- */
-
import {
ssrRenderAttrs,
ssrRenderClass,
-/**
- * @jest-environment node
- */
-
import { ssrRenderList } from '../src/helpers/ssrRenderList'
describe('ssr: renderList', () => {
-/**
- * @jest-environment node
- */
-
import { createApp, h, mergeProps, withCtx } from 'vue'
import { renderToString } from '../src/renderToString'
import { ssrRenderComponent, ssrRenderAttrs, ssrRenderSlot } from '../src'
-/**
- * @jest-environment node
- */
-
import { createApp } from 'vue'
import { renderToString } from '../src/renderToString'
-/**
- * @jest-environment node
- */
-
import { vi } from 'vitest'
import { createApp, h, Suspense } from 'vue'
import { renderToString } from '../src/renderToString'
-/**
- * @jest-environment node
- */
-
import { createApp, h, Teleport } from 'vue'
import { renderToString } from '../src/renderToString'
import { renderToSimpleStream } from '../src/renderToStream'
-/**
- * @jest-environment node
- */
-
import {
ssrRenderDynamicModel,
ssrGetDynamicModelProps
-/**
- * @jest-environment node
- */
-
import { createApp, h, defineAsyncComponent } from 'vue'
import { ReadableStream, TransformStream } from 'stream/web'
import { pipeToWebWritable, renderToWebStream } from '../src'
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,
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 ` +
}
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))
}
} 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'
--- /dev/null
+// 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'
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({
__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,