]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
wip(vitest-migration): ssr tests passing
authorEvan You <yyx990803@gmail.com>
Thu, 26 Jan 2023 08:12:08 +0000 (16:12 +0800)
committerEvan You <yyx990803@gmail.com>
Thu, 26 Jan 2023 08:18:40 +0000 (16:18 +0800)
21 files changed:
packages/compiler-sfc/__tests__/compileStyle.spec.ts
packages/runtime-core/src/componentOptions.ts
packages/runtime-core/src/components/KeepAlive.ts
packages/server-renderer/__tests__/render.spec.ts
packages/server-renderer/__tests__/ssrAttrFallthrough.spec.ts
packages/server-renderer/__tests__/ssrCompilerOptions.spec.ts
packages/server-renderer/__tests__/ssrDirectives.spec.ts
packages/server-renderer/__tests__/ssrDynamicComponent.spec.ts
packages/server-renderer/__tests__/ssrInterpolate.spec.ts
packages/server-renderer/__tests__/ssrRenderAttrs.spec.ts
packages/server-renderer/__tests__/ssrRenderList.spec.ts
packages/server-renderer/__tests__/ssrScopeId.spec.ts
packages/server-renderer/__tests__/ssrSlot.spec.ts
packages/server-renderer/__tests__/ssrSuspense.spec.ts
packages/server-renderer/__tests__/ssrTeleport.spec.ts
packages/server-renderer/__tests__/ssrVModelHelpers.spec.ts
packages/server-renderer/__tests__/webStream.spec.ts
packages/server-renderer/src/helpers/ssrCompile.ts
packages/server-renderer/src/index.ts
packages/server-renderer/src/internal.ts [new file with mode: 0644]
vitest.config.ts

index a343fe6b6fa2cb4624d650b20d3b3bc3f60964e8..b33dabfd2ce60acfcd4065f974460f1851f323e2 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import {
   compileStyle,
   compileStyleAsync,
index ea70d41a904ed69d7c68c24a8b8988bc75343d09..2e15b17dfec8267e8f87078edc7611d8bcd22421 100644 (file)
@@ -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.
index 554b9f2451c5b4c7e74a28271e4efd0bcc7f2e9c..c3c2b63e4556d79386a1d27c81626e4f8eeb45b2 100644 (file)
@@ -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)[]
 
index e307bdc2ed6c337e216645a71f1bf9d3533a9809..f18001a0ae473bdbd59c971bcd3421d18854a634 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { vi } from 'vitest'
 import {
   createApp,
index 3cc2efc31e5cc882a34c3f418d2b2143ed9e2b38..fb974f97923b9a7d9e5a36d92950208dbc6f38cc 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { createApp } from 'vue'
 import { renderToString } from '../src/renderToString'
 
index 2ff588a5c77785fb773c3b935340cc9f835bcc47..34fcd4ef48b6e10f2362ec5e9750a85ae3a7ae2a 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { createApp } from 'vue'
 import { renderToString } from '../src/renderToString'
 
index 74b01204d3183a79a463a2b5e0251c4f52311481..102e95d5b27bdbd16a8272b56737d82d3ee557b9 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { renderToString } from '../src/renderToString'
 import {
   createApp,
index 751c229a8b83d0c07c2a3108ba973a7093e60eb9..dff16c781b870749d9bcd92d5d03163643959dfb 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { createApp, createVNode } from 'vue'
 import { renderToString } from '../src/renderToString'
 
index d024555825747036ac62211aecc64dbc38404572..fc9a4a3b40d9818a07880767ce173c6ae01367e4 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { ssrInterpolate } from '../src/helpers/ssrInterpolate'
 import { escapeHtml } from '@vue/shared'
 
index 16de44f55ba355526ac41af93c5f5776c04e1690..2439c3514528685f49643db0903ba6c09290d00a 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import {
   ssrRenderAttrs,
   ssrRenderClass,
index e485bef75865c68c7a8a55e59511fc73368faf47..56c9b7c3593dc0304e8835224e73ce80e2c55c34 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { ssrRenderList } from '../src/helpers/ssrRenderList'
 
 describe('ssr: renderList', () => {
index e49c4d3b7844a85fc8c98a0b75c1c52289dc443f..3091153e1e62a803ecb4784921197fc334fb581e 100644 (file)
@@ -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'
index 9b93a55c0f0c4da2c768bd55dd557fe42fc92b16..9b3a2cdcc94e480e4101a5d5c48249996d9660d8 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { createApp } from 'vue'
 import { renderToString } from '../src/renderToString'
 
index bff752bebc48b06c325cc715f5c9336dfd004265..0b31c4559f198ab4aaac95d11770b6c194c29286 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { vi } from 'vitest'
 import { createApp, h, Suspense } from 'vue'
 import { renderToString } from '../src/renderToString'
index 76c5c8eb3d91f08031bc0eec508a594569abbc62..4de6b44bb53b2ea671adc84e9e23598e088807e3 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { createApp, h, Teleport } from 'vue'
 import { renderToString } from '../src/renderToString'
 import { renderToSimpleStream } from '../src/renderToStream'
index 4958612a4c0ac8978f329b5cb456370c0ae77f27..d003c54064f5f3a582d27289bd4a9594fca5ff33 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import {
   ssrRenderDynamicModel,
   ssrGetDynamicModelProps
index 2bdc775354f9717c503985e97016155584ddb0e6..97588fe4e13b8e3c5edc70deebc52f1c45ddc138 100644 (file)
@@ -1,7 +1,3 @@
-/**
- * @jest-environment node
- */
-
 import { createApp, h, defineAsyncComponent } from 'vue'
 import { ReadableStream, TransformStream } from 'stream/web'
 import { pipeToWebWritable, renderToWebStream } from '../src'
index a44feb5fc0dc6622ef6018a9f83b4dfa011d05b8..722997c1a98b9c36924109e19d29ace0976bcc3f 100644 (file)
@@ -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))
 }
index b6d973ea599541bd13291efd65b64d1cee2c1ac0..81946fac8110c6c5fd901f1d326b03962d5f115c 100644 (file)
@@ -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'
diff --git a/packages/server-renderer/src/internal.ts b/packages/server-renderer/src/internal.ts
new file mode 100644 (file)
index 0000000..93919fc
--- /dev/null
@@ -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'
index 1d573eae59c1ac443cb0801a280f7037d62e908b..422766c9d4d5392627bf3e9a8b6cfe3ac8f571ef 100644 (file)
@@ -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,