vike 0.4.267 → 0.4.268-commit-ca58695

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/RenderErrorPage.js +2 -2
  2. package/abort.js +2 -2
  3. package/dist/client/__internal/index.d.ts +3 -0
  4. package/dist/client/__internal/index.js +4 -0
  5. package/dist/client/runtime-client-routing/createPageContextClient.d.ts +5 -0
  6. package/dist/client/runtime-client-routing/getGlobalContextClientInternal.d.ts +5 -0
  7. package/dist/client/runtime-client-routing/getPageContextFromHooks.d.ts +28 -2
  8. package/dist/client/runtime-client-routing/getPageContextFromHooks.js +5 -5
  9. package/dist/client/runtime-client-routing/renderPageClient.d.ts +490 -10
  10. package/dist/client/runtime-client-routing/renderPageClient.js +149 -43
  11. package/dist/client/runtime-client-routing/streamedValues.d.ts +5 -0
  12. package/dist/client/runtime-client-routing/streamedValues.js +23 -0
  13. package/dist/client/runtime-server-routing/createPageContextClient.d.ts +5 -0
  14. package/dist/client/runtime-server-routing/entry.js +1 -1
  15. package/dist/client/runtime-server-routing/getGlobalContextClientInternal.d.ts +5 -0
  16. package/dist/client/shared/getGlobalContextClientInternalShared.d.ts +5 -0
  17. package/dist/client/shared/getGlobalContextClientInternalShared.js +2 -0
  18. package/dist/client/shared/getJsonSerializedInHtml.d.ts +2 -2
  19. package/dist/client/shared/getJsonSerializedInHtml.js +9 -6
  20. package/dist/client/shared/loadPageConfigsLazyClientSide.js +0 -4
  21. package/dist/client/shared/removeFoucBuster.js +14 -3
  22. package/dist/client/shared/streamedValues/asyncIterable.d.ts +4 -0
  23. package/dist/client/shared/streamedValues/asyncIterable.js +26 -0
  24. package/dist/client/shared/streamedValues/lines.d.ts +11 -0
  25. package/dist/client/shared/streamedValues/lines.js +19 -0
  26. package/dist/client/shared/streamedValues/promise.d.ts +4 -0
  27. package/dist/client/shared/streamedValues/promise.js +19 -0
  28. package/dist/client/shared/streamedValues/readableStream.d.ts +4 -0
  29. package/dist/client/shared/streamedValues/readableStream.js +44 -0
  30. package/dist/client/shared/streamedValues/registry.d.ts +21 -0
  31. package/dist/client/shared/streamedValues/registry.js +40 -0
  32. package/dist/client/shared/streamedValues.d.ts +7 -0
  33. package/dist/client/shared/streamedValues.js +82 -0
  34. package/dist/node/api/dev.js +15 -1
  35. package/dist/node/api/resolveViteConfigUser.js +2 -2
  36. package/dist/node/api/serverEntryDev.d.ts +10 -0
  37. package/dist/node/api/serverEntryDev.js +125 -0
  38. package/dist/node/createDevMiddleware.js +12 -0
  39. package/dist/node/prerender/resolvePrerenderConfig.d.ts +1 -1
  40. package/dist/node/prerender/resolvePrerenderConfig.js +4 -1
  41. package/dist/node/prerender/runPrerender.d.ts +18 -18
  42. package/dist/node/prerender/runPrerender.js +61 -16
  43. package/dist/node/vite/assertEnvVite.js +1 -1
  44. package/dist/node/vite/index.js +2 -0
  45. package/dist/node/vite/plugins/build/handleAssetsManifest.js +6 -2
  46. package/dist/node/vite/plugins/build/pluginBuildApp.js +25 -26
  47. package/dist/node/vite/plugins/build/pluginBuildConfig.d.ts +2 -2
  48. package/dist/node/vite/plugins/build/pluginBuildConfig.js +25 -17
  49. package/dist/node/vite/plugins/build/pluginDistFileNames.js +70 -50
  50. package/dist/node/vite/plugins/build/pluginEnvironmentEntries.d.ts +6 -0
  51. package/dist/node/vite/plugins/build/pluginEnvironmentEntries.js +71 -0
  52. package/dist/node/vite/plugins/build/pluginSuppressRollupWarning.js +19 -17
  53. package/dist/node/vite/plugins/pluginCommon.js +10 -7
  54. package/dist/node/vite/plugins/pluginDev/optimizeDeps.d.ts +2 -2
  55. package/dist/node/vite/plugins/pluginDev/optimizeDeps.js +6 -2
  56. package/dist/node/vite/plugins/pluginReplaceConstantsGlobalThis.js +6 -4
  57. package/dist/node/vite/plugins/pluginUniversalDeploy/getServerConfig.d.ts +3 -0
  58. package/dist/node/vite/plugins/pluginUniversalDeploy/getServerConfig.js +28 -2
  59. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginServerEntryAlias.d.ts +1 -1
  60. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginServerEntryAlias.js +22 -11
  61. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginWrapServerFile.d.ts +4 -0
  62. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginWrapServerFile.js +29 -0
  63. package/dist/node/vite/plugins/pluginUniversalDeploy.js +29 -5
  64. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.d.ts +2 -1
  65. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.js +29 -12
  66. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +3 -2
  67. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFilePageEntry.js +7 -7
  68. package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.d.ts +10 -6
  69. package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js +5 -11
  70. package/dist/node/vite/plugins/pluginVirtualFiles.js +20 -0
  71. package/dist/node/vite/shared/addSsrMiddleware.js +11 -27
  72. package/dist/node/vite/shared/findPageFiles.d.ts +1 -1
  73. package/dist/node/vite/shared/findPageFiles.js +1 -11
  74. package/dist/node/vite/shared/getAssetsDir.d.ts +3 -2
  75. package/dist/node/vite/shared/getAssetsDir.js +3 -3
  76. package/dist/node/vite/shared/isViteCli.d.ts +3 -3
  77. package/dist/node/vite/shared/isViteCli.js +80 -84
  78. package/dist/node/vite/shared/isViteServerSide.js +2 -7
  79. package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.d.ts +6 -4
  80. package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.js +17 -6
  81. package/dist/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +9 -2
  82. package/dist/node/vite/shared/resolveVikeConfigInternal.d.ts +5 -1
  83. package/dist/node/vite/shared/resolveVikeConfigInternal.js +86 -13
  84. package/dist/server/__internal/fetch-deprecated.d.ts +2 -0
  85. package/dist/server/__internal/fetch-deprecated.js +6 -0
  86. package/dist/server/__internal/fetch.d.ts +9 -0
  87. package/dist/server/__internal/fetch.js +5 -0
  88. package/dist/server/__internal/index.d.ts +4 -0
  89. package/dist/server/__internal/index.js +8 -0
  90. package/dist/server/createPageRenderer.d.ts +2 -2
  91. package/dist/server/createPageRenderer.js +2 -2
  92. package/dist/server/runtime/createDevMiddleware.js +3 -1
  93. package/dist/server/runtime/globalContext.d.ts +69 -10
  94. package/dist/server/runtime/globalContext.js +35 -2
  95. package/dist/server/runtime/index.d.ts +1 -1
  96. package/dist/server/runtime/index.js +1 -1
  97. package/dist/server/runtime/renderPageServer/analyzePage.js +3 -3
  98. package/dist/server/runtime/renderPageServer/createHttpResponse.d.ts +20 -9
  99. package/dist/server/runtime/renderPageServer/createHttpResponse.js +34 -21
  100. package/dist/server/runtime/renderPageServer/createPageContextServer.d.ts +13 -23
  101. package/dist/server/runtime/renderPageServer/csp.d.ts +2 -1
  102. package/dist/server/runtime/renderPageServer/csp.js +2 -1
  103. package/dist/server/runtime/renderPageServer/execHookOnError.js +1 -1
  104. package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.d.ts +9 -0
  105. package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.js +21 -9
  106. package/dist/server/runtime/renderPageServer/getHttpResponseBody.d.ts +2 -2
  107. package/dist/server/runtime/renderPageServer/getHttpResponseBody.js +19 -12
  108. package/dist/server/runtime/renderPageServer/getPageContextJson.d.ts +8 -0
  109. package/dist/server/runtime/renderPageServer/getPageContextJson.js +47 -0
  110. package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.d.ts +2 -0
  111. package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.js +1 -1
  112. package/dist/server/runtime/renderPageServer/handlePageContextRequestUrl.js +2 -2
  113. package/dist/server/runtime/renderPageServer/headersResponse.d.ts +11 -2
  114. package/dist/server/runtime/renderPageServer/headersResponse.js +22 -2
  115. package/dist/server/runtime/renderPageServer/html/injectAssets/getHtmlTags.js +5 -4
  116. package/dist/server/runtime/renderPageServer/html/injectAssets.d.ts +3 -2
  117. package/dist/server/runtime/renderPageServer/html/injectAssets.js +7 -1
  118. package/dist/server/runtime/renderPageServer/html/renderHtml.js +4 -2
  119. package/dist/server/runtime/renderPageServer/html/serializeContext.d.ts +5 -1
  120. package/dist/server/runtime/renderPageServer/html/serializeContext.js +12 -9
  121. package/dist/server/runtime/renderPageServer/html/stream.d.ts +13 -6
  122. package/dist/server/runtime/renderPageServer/html/stream.js +135 -32
  123. package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.d.ts +30 -0
  124. package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.js +92 -0
  125. package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +10 -14
  126. package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.js +5 -1
  127. package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.d.ts +15 -0
  128. package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.js +61 -0
  129. package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +320 -55
  130. package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.js +21 -12
  131. package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.d.ts +4 -0
  132. package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.js +12 -0
  133. package/dist/server/runtime/renderPageServer/streamedValues/lines.d.ts +10 -0
  134. package/dist/server/runtime/renderPageServer/streamedValues/lines.js +49 -0
  135. package/dist/server/runtime/renderPageServer/streamedValues/promise.d.ts +4 -0
  136. package/dist/server/runtime/renderPageServer/streamedValues/promise.js +14 -0
  137. package/dist/server/runtime/renderPageServer/streamedValues/pump.d.ts +10 -0
  138. package/dist/server/runtime/renderPageServer/streamedValues/pump.js +67 -0
  139. package/dist/server/runtime/renderPageServer/streamedValues/readableStream.d.ts +4 -0
  140. package/dist/server/runtime/renderPageServer/streamedValues/readableStream.js +12 -0
  141. package/dist/server/runtime/renderPageServer/streamedValues/registry.d.ts +28 -0
  142. package/dist/server/runtime/renderPageServer/streamedValues/registry.js +33 -0
  143. package/dist/server/runtime/renderPageServer.d.ts +65 -18
  144. package/dist/server/runtime/renderPageServer.js +33 -62
  145. package/dist/server/runtime/universal-middleware/core.d.ts +25 -0
  146. package/dist/server/runtime/universal-middleware/core.js +167 -0
  147. package/dist/server/runtime/universal-middleware/deprecated-export.d.ts +3 -0
  148. package/dist/server/runtime/universal-middleware/deprecated-export.js +10 -0
  149. package/dist/server/runtime/universal-middleware/getMiddlewaresPipe.d.ts +15 -0
  150. package/dist/server/runtime/universal-middleware/getMiddlewaresPipe.js +51 -0
  151. package/dist/server/runtime/universal-middleware/vikeUniversalMiddleware.d.ts +9 -0
  152. package/dist/server/runtime/universal-middleware/vikeUniversalMiddleware.js +22 -0
  153. package/dist/shared-server-client/createGlobalContextShared.d.ts +8 -0
  154. package/dist/shared-server-client/createGlobalContextShared.js +2 -1
  155. package/dist/shared-server-client/getPageContextPublicShared.js +1 -3
  156. package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.d.ts +8 -0
  157. package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.js +17 -7
  158. package/dist/shared-server-client/hooks/execHook.d.ts +1 -1
  159. package/dist/shared-server-client/hooks/execHook.js +2 -2
  160. package/dist/shared-server-client/page-configs/serialize/serializeConfigValues.js +2 -0
  161. package/dist/shared-server-client/route/abort.d.ts +1 -1
  162. package/dist/shared-server-client/route/abort.js +4 -2
  163. package/dist/shared-server-client/streamedValues.d.ts +22 -0
  164. package/dist/shared-server-client/streamedValues.js +24 -0
  165. package/dist/shared-server-node/vike-environments.d.ts +4 -0
  166. package/dist/shared-server-node/vike-environments.js +10 -0
  167. package/dist/shared-server-node/virtualFileId.d.ts +7 -5
  168. package/dist/shared-server-node/virtualFileId.js +42 -42
  169. package/dist/types/Config.d.ts +11 -3
  170. package/dist/types/GlobalContext.d.ts +3 -3
  171. package/dist/types/PageConfig.d.ts +13 -5
  172. package/dist/types/PageContext.d.ts +18 -10
  173. package/dist/types/PageContext.js +1 -0
  174. package/dist/types/Server.d.ts +1 -1
  175. package/dist/types/VikeNamespace.d.ts +1 -1
  176. package/dist/types/index.d.ts +1 -0
  177. package/dist/utils/PROJECT_VERSION.d.ts +1 -1
  178. package/dist/utils/PROJECT_VERSION.js +1 -1
  179. package/dist/utils/assertViteVersion.d.ts +1 -3
  180. package/dist/utils/assertViteVersion.js +6 -9
  181. package/dist/utils/catchInfiniteLoop.js +33 -11
  182. package/dist/utils/deepEqual.d.ts +2 -1
  183. package/dist/utils/deepEqual.js +21 -6
  184. package/dist/utils/getContentTypeFromUrl.d.ts +2 -0
  185. package/dist/utils/getContentTypeFromUrl.js +39 -0
  186. package/dist/utils/injectRollupInputs.d.ts +2 -2
  187. package/dist/utils/injectRollupInputs.js +2 -2
  188. package/dist/utils/installUncaughtErrorHandlers.js +9 -0
  189. package/dist/utils/isDev.js +2 -7
  190. package/dist/utils/parseUrl-extras.js +4 -0
  191. package/fetch.js +2 -2
  192. package/modifyUrl.js +2 -2
  193. package/package.json +42 -26
  194. package/routing.js +2 -2
  195. package/universal-middleware.js +2 -2
  196. package/vike-server.d.ts +14 -0
  197. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginUnwrapProdOptions.d.ts +0 -4
  198. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginUnwrapProdOptions.js +0 -22
  199. package/dist/server/runtime/fetch.d.ts +0 -10
  200. package/dist/server/runtime/fetch.js +0 -5
  201. package/dist/server/runtime/universal-middleware.d.ts +0 -10
  202. package/dist/server/runtime/universal-middleware.js +0 -27
  203. package/dist/shared-server-client/addIs404ToPageProps.d.ts +0 -2
  204. package/dist/shared-server-client/addIs404ToPageProps.js +0 -17
@@ -1,10 +1,15 @@
1
1
  // Used by vike:build:pluginProdBuildEntry
2
2
  export { setGlobalContext_prodBuildEntry } from '../runtime/globalContext.js';
3
+ // Used by the vike(app) of the @vikejs/* server adapters
4
+ export { getMiddlewaresPipe_nonHandlers, getMiddlewaresPipe_handlers, } from '../runtime/universal-middleware/getMiddlewaresPipe.js';
5
+ // Used by vike-react-rsc
6
+ export { getPageContextJson };
3
7
  // Used by vite-plugin-vercel
4
8
  export { route, getPagesAndRoutes };
5
9
  import { route as routeInternal } from '../../shared-server-client/route/index.js';
6
10
  import { getGlobalContextServerInternal, initGlobalContext_getPagesAndRoutes } from '../runtime/globalContext.js';
7
11
  import { setNodeEnvProductionIfUndefined } from '../../utils/assertSetup.js';
12
+ import { getPageContextJson as getPageContextJsonInternal } from '../runtime/renderPageServer/getPageContextJson.js';
8
13
  import '../assertEnvServer.js';
9
14
  /**
10
15
  * Used by {@link https://github.com/magne4000/vite-plugin-vercel|vite-plugin-vercel} to compute some rewrite rules and extract { isr } configs.
@@ -30,3 +35,6 @@ async function route(pageContext) {
30
35
  // Old interface
31
36
  return { pageContextAddendum: pageContextFromRoute };
32
37
  }
38
+ function getPageContextJson(pageContext) {
39
+ return getPageContextJsonInternal(pageContext);
40
+ }
@@ -1,5 +1,5 @@
1
1
  export { createPageRenderer };
2
- import { renderPageServer } from './runtime/renderPageServer.js';
2
+ import { renderPageServer_userLand } from './runtime/renderPageServer.js';
3
3
  import './assertEnvServer.js';
4
4
  type Options = {
5
5
  viteDevServer?: unknown;
@@ -10,4 +10,4 @@ type Options = {
10
10
  baseAssets?: string | null;
11
11
  };
12
12
  /** @deprecated */
13
- declare function createPageRenderer(options: Options): typeof renderPageServer;
13
+ declare function createPageRenderer(options: Options): typeof renderPageServer_userLand;
@@ -1,14 +1,14 @@
1
1
  export { createPageRenderer };
2
2
  // TO-DO/next-major-release: remove this file
3
3
  //import { SsrEnv, setSsrEnv } from './ssrEnv.js'
4
- import { renderPageServer } from './runtime/renderPageServer.js';
4
+ import { renderPageServer_userLand } from './runtime/renderPageServer.js';
5
5
  import { assertWarning } from '../utils/assert.js';
6
6
  //import { importBuildWasLoaded } from './importBuild.js'
7
7
  import './assertEnvServer.js';
8
8
  /** @deprecated */
9
9
  function createPageRenderer(options) {
10
10
  showWarnings(options);
11
- return renderPageServer;
11
+ return renderPageServer_userLand;
12
12
  }
13
13
  function showWarnings(options) {
14
14
  assertWarning(false, '`createPageRenderer()` is outdated, use `renderPage()` instead. See https://vike.dev/renderPage', { onlyOnce: true, showStackTrace: true });
@@ -1,7 +1,9 @@
1
1
  export { createDevMiddleware_ as createDevMiddleware };
2
2
  import '../assertEnvServer.js';
3
3
  const createDevMiddleware_ = async (...args) => {
4
- const p = '../../node/createDevMiddleware.js';
4
+ let p = '../../node/createDevMiddleware.js';
5
+ // Absolute URL, because on Windows Vite's ssrLoadModule() resolves a relative dynamic import to `D:/...` and then fails to load it (e.g. if `vike` is linked and `$ vike dev` runs +serverEntry.js)
6
+ p = new URL(p, import.meta.url).href;
5
7
  const { createDevMiddleware } = await import(/*webpackIgnore: true*/ /* @vite-ignore */ p);
6
8
  return createDevMiddleware(...args);
7
9
  };
@@ -54,6 +54,10 @@ declare function getGlobalContextServerInternal(): Promise<{
54
54
  _pageFilesAll: import("../__internal/index.js").PageFile[];
55
55
  _pageConfigs: import("../__internal/index.js").PageConfig[];
56
56
  _pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
57
+ _environmentEntries: Record<string, {
58
+ pageConfigs: import("../__internal/index.js").PageConfig[];
59
+ pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
60
+ } | null>;
57
61
  _allPageIds: string[];
58
62
  } & {
59
63
  isClientSide: false;
@@ -63,10 +67,9 @@ declare function getGlobalContextServerInternal(): Promise<{
63
67
  _isPrerendering: false;
64
68
  assetsManifest: null;
65
69
  _viteDevServer: ViteDevServer | undefined;
70
+ devMiddleware: import("vite").Connect.Server | null;
66
71
  viteConfig: ResolvedConfig | undefined;
67
72
  } & {
68
- baseServer: string;
69
- baseAssets: string;
70
73
  viteConfigRuntime: {
71
74
  root: string;
72
75
  build: {
@@ -77,6 +80,14 @@ declare function getGlobalContextServerInternal(): Promise<{
77
80
  inject: boolean | undefined;
78
81
  };
79
82
  };
83
+ baseServer: string;
84
+ baseAssets: string;
85
+ /**
86
+ * Every `+middleware` from Vike extensions, as well as Vike's built-in handler that renders pages.
87
+ *
88
+ * https://vike.dev/globalContext#middlewares
89
+ */
90
+ middlewares: import("./universal-middleware/core.js").Middleware[];
80
91
  } & {
81
92
  prerenderContext: PrerenderContext | undefined;
82
93
  }) | (Record<string, unknown> & {
@@ -102,6 +113,10 @@ declare function getGlobalContextServerInternal(): Promise<{
102
113
  _pageFilesAll: import("../__internal/index.js").PageFile[];
103
114
  _pageConfigs: import("../__internal/index.js").PageConfig[];
104
115
  _pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
116
+ _environmentEntries: Record<string, {
117
+ pageConfigs: import("../__internal/index.js").PageConfig[];
118
+ pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
119
+ } | null>;
105
120
  _allPageIds: string[];
106
121
  } & {
107
122
  isClientSide: false;
@@ -110,12 +125,11 @@ declare function getGlobalContextServerInternal(): Promise<{
110
125
  _isProduction: true;
111
126
  assetsManifest: ViteManifest;
112
127
  _viteDevServer: null;
128
+ devMiddleware: null;
113
129
  _usesClientRouter: boolean;
114
130
  _isPrerendering: true;
115
131
  viteConfig: ResolvedConfig;
116
132
  } & {
117
- baseServer: string;
118
- baseAssets: string;
119
133
  viteConfigRuntime: {
120
134
  root: string;
121
135
  build: {
@@ -126,6 +140,14 @@ declare function getGlobalContextServerInternal(): Promise<{
126
140
  inject: boolean | undefined;
127
141
  };
128
142
  };
143
+ baseServer: string;
144
+ baseAssets: string;
145
+ /**
146
+ * Every `+middleware` from Vike extensions, as well as Vike's built-in handler that renders pages.
147
+ *
148
+ * https://vike.dev/globalContext#middlewares
149
+ */
150
+ middlewares: import("./universal-middleware/core.js").Middleware[];
129
151
  } & {
130
152
  prerenderContext: PrerenderContext | undefined;
131
153
  }) | (Record<string, unknown> & {
@@ -151,6 +173,10 @@ declare function getGlobalContextServerInternal(): Promise<{
151
173
  _pageFilesAll: import("../__internal/index.js").PageFile[];
152
174
  _pageConfigs: import("../__internal/index.js").PageConfig[];
153
175
  _pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
176
+ _environmentEntries: Record<string, {
177
+ pageConfigs: import("../__internal/index.js").PageConfig[];
178
+ pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
179
+ } | null>;
154
180
  _allPageIds: string[];
155
181
  } & {
156
182
  isClientSide: false;
@@ -159,12 +185,11 @@ declare function getGlobalContextServerInternal(): Promise<{
159
185
  _isProduction: true;
160
186
  assetsManifest: ViteManifest;
161
187
  _viteDevServer: null;
188
+ devMiddleware: null;
162
189
  _usesClientRouter: boolean;
163
190
  _isPrerendering: false;
164
191
  viteConfig: null;
165
192
  } & {
166
- baseServer: string;
167
- baseAssets: string;
168
193
  viteConfigRuntime: {
169
194
  root: string;
170
195
  build: {
@@ -175,6 +200,14 @@ declare function getGlobalContextServerInternal(): Promise<{
175
200
  inject: boolean | undefined;
176
201
  };
177
202
  };
203
+ baseServer: string;
204
+ baseAssets: string;
205
+ /**
206
+ * Every `+middleware` from Vike extensions, as well as Vike's built-in handler that renders pages.
207
+ *
208
+ * https://vike.dev/globalContext#middlewares
209
+ */
210
+ middlewares: import("./universal-middleware/core.js").Middleware[];
178
211
  } & {
179
212
  prerenderContext: PrerenderContext | undefined;
180
213
  });
@@ -202,6 +235,10 @@ declare function getGlobalContextServerInternalOptional(): (Record<string, unkno
202
235
  _pageFilesAll: import("../__internal/index.js").PageFile[];
203
236
  _pageConfigs: import("../__internal/index.js").PageConfig[];
204
237
  _pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
238
+ _environmentEntries: Record<string, {
239
+ pageConfigs: import("../__internal/index.js").PageConfig[];
240
+ pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
241
+ } | null>;
205
242
  _allPageIds: string[];
206
243
  } & (({
207
244
  isClientSide: false;
@@ -211,6 +248,7 @@ declare function getGlobalContextServerInternalOptional(): (Record<string, unkno
211
248
  _isPrerendering: false;
212
249
  assetsManifest: null;
213
250
  _viteDevServer: ViteDevServer | undefined;
251
+ devMiddleware: import("vite").Connect.Server | null;
214
252
  viteConfig: ResolvedConfig | undefined;
215
253
  } | {
216
254
  isClientSide: false;
@@ -219,6 +257,7 @@ declare function getGlobalContextServerInternalOptional(): (Record<string, unkno
219
257
  _isProduction: true;
220
258
  assetsManifest: ViteManifest;
221
259
  _viteDevServer: null;
260
+ devMiddleware: null;
222
261
  _usesClientRouter: boolean;
223
262
  _isPrerendering: true;
224
263
  viteConfig: ResolvedConfig;
@@ -229,12 +268,11 @@ declare function getGlobalContextServerInternalOptional(): (Record<string, unkno
229
268
  _isProduction: true;
230
269
  assetsManifest: ViteManifest;
231
270
  _viteDevServer: null;
271
+ devMiddleware: null;
232
272
  _usesClientRouter: boolean;
233
273
  _isPrerendering: false;
234
274
  viteConfig: null;
235
275
  }) & {
236
- baseServer: string;
237
- baseAssets: string;
238
276
  viteConfigRuntime: {
239
277
  root: string;
240
278
  build: {
@@ -245,6 +283,14 @@ declare function getGlobalContextServerInternalOptional(): (Record<string, unkno
245
283
  inject: boolean | undefined;
246
284
  };
247
285
  };
286
+ baseServer: string;
287
+ baseAssets: string;
288
+ /**
289
+ * Every `+middleware` from Vike extensions, as well as Vike's built-in handler that renders pages.
290
+ *
291
+ * https://vike.dev/globalContext#middlewares
292
+ */
293
+ middlewares: import("./universal-middleware/core.js").Middleware[];
248
294
  })) & {
249
295
  prerenderContext: PrerenderContext | undefined;
250
296
  })) | null;
@@ -309,6 +355,10 @@ declare function createGlobalContext(virtualFileExportsGlobalEntry: unknown): Pr
309
355
  _pageFilesAll: import("../__internal/index.js").PageFile[];
310
356
  _pageConfigs: import("../__internal/index.js").PageConfig[];
311
357
  _pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
358
+ _environmentEntries: Record<string, {
359
+ pageConfigs: import("../__internal/index.js").PageConfig[];
360
+ pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
361
+ } | null>;
312
362
  _allPageIds: string[];
313
363
  } & (({
314
364
  isClientSide: false;
@@ -318,6 +368,7 @@ declare function createGlobalContext(virtualFileExportsGlobalEntry: unknown): Pr
318
368
  _isPrerendering: false;
319
369
  assetsManifest: null;
320
370
  _viteDevServer: ViteDevServer | undefined;
371
+ devMiddleware: import("vite").Connect.Server | null;
321
372
  viteConfig: ResolvedConfig | undefined;
322
373
  } | {
323
374
  isClientSide: false;
@@ -326,6 +377,7 @@ declare function createGlobalContext(virtualFileExportsGlobalEntry: unknown): Pr
326
377
  _isProduction: true;
327
378
  assetsManifest: ViteManifest;
328
379
  _viteDevServer: null;
380
+ devMiddleware: null;
329
381
  _usesClientRouter: boolean;
330
382
  _isPrerendering: true;
331
383
  viteConfig: ResolvedConfig;
@@ -336,12 +388,11 @@ declare function createGlobalContext(virtualFileExportsGlobalEntry: unknown): Pr
336
388
  _isProduction: true;
337
389
  assetsManifest: ViteManifest;
338
390
  _viteDevServer: null;
391
+ devMiddleware: null;
339
392
  _usesClientRouter: boolean;
340
393
  _isPrerendering: false;
341
394
  viteConfig: null;
342
395
  }) & {
343
- baseServer: string;
344
- baseAssets: string;
345
396
  viteConfigRuntime: {
346
397
  root: string;
347
398
  build: {
@@ -352,6 +403,14 @@ declare function createGlobalContext(virtualFileExportsGlobalEntry: unknown): Pr
352
403
  inject: boolean | undefined;
353
404
  };
354
405
  };
406
+ baseServer: string;
407
+ baseAssets: string;
408
+ /**
409
+ * Every `+middleware` from Vike extensions, as well as Vike's built-in handler that renders pages.
410
+ *
411
+ * https://vike.dev/globalContext#middlewares
412
+ */
413
+ middlewares: import("./universal-middleware/core.js").Middleware[];
355
414
  })) & {
356
415
  prerenderContext: PrerenderContext | undefined;
357
416
  }>;
@@ -56,6 +56,7 @@ import { logRuntimeError, logRuntimeInfo } from './loggerRuntime.js';
56
56
  import { debugFileChange, getVikeConfigErrorBuild, setVikeConfigError, } from '../../shared-server-node/getVikeConfigError.js';
57
57
  import { getVikeApiOperation } from '../../shared-server-node/api-context.js';
58
58
  import { hasAlreadyLogged } from './logErrorServer.js';
59
+ import { getMiddlewares_globalContext } from './universal-middleware/core.js';
59
60
  import '../assertEnvServer.js';
60
61
  const debug = createDebug('vike:globalContext');
61
62
  const globalObject = getGlobalObject('runtime/globalContext.ts', getInitialGlobalObject());
@@ -490,14 +491,18 @@ function addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook) {
490
491
  if (!isProduction) {
491
492
  assert(globalContext); // main common requirement
492
493
  assert(!isPrerendering);
493
- return {
494
+ const globalContextDev = {
494
495
  ...globalContextBase,
495
496
  _isProduction: false,
496
497
  _isPrerendering: false,
497
498
  assetsManifest: null,
498
499
  _viteDevServer: viteDevServer,
500
+ // https://vike.dev/globalContext#devMiddleware
501
+ devMiddleware: viteDevServer?.middlewares ?? null,
499
502
  viteConfig,
500
503
  };
504
+ addDevMiddlewareWarning(globalContextDev, viteDevServer);
505
+ return globalContextDev;
501
506
  }
502
507
  else {
503
508
  assert(globalObject.prodBuildEntry);
@@ -510,6 +515,7 @@ function addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook) {
510
515
  _isProduction: true,
511
516
  assetsManifest,
512
517
  _viteDevServer: null,
518
+ devMiddleware: null,
513
519
  _usesClientRouter: buildInfo.usesClientRouter,
514
520
  };
515
521
  if (isPrerendering) {
@@ -529,6 +535,25 @@ function addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook) {
529
535
  }
530
536
  }
531
537
  }
538
+ function addDevMiddlewareWarning(globalContext, viteDevServer) {
539
+ if (!viteDevServer)
540
+ return;
541
+ const getMiddlewareMode = () => viteDevServer.config.server.middlewareMode;
542
+ Object.defineProperty(globalContext, 'devMiddleware', {
543
+ get() {
544
+ const middlewareMode = getMiddlewareMode();
545
+ if (!middlewareMode) {
546
+ assertWarning(false, `You don't need ${pc.cyan('globalContext.devMiddleware')} because the development middleware is already installed (Vite's ${pc.cyan('config.server.middlewareMode')} is ${pc.cyan(JSON.stringify(middlewareMode))}) — installing the development middleware twice might hang the server`, { onlyOnce: true });
547
+ }
548
+ return viteDevServer.middlewares;
549
+ },
550
+ enumerable: getMiddlewareMode()
551
+ ? true
552
+ : // So that spreading or serializing globalContext doesn't get the warning
553
+ false,
554
+ configurable: true,
555
+ });
556
+ }
532
557
  async function addGlobalContextAsync(globalContext) {
533
558
  debug('addGlobalContextAsync()');
534
559
  let { viteConfigRuntime, buildInfo } = globalObject;
@@ -545,9 +570,17 @@ async function addGlobalContextAsync(globalContext) {
545
570
  }
546
571
  }
547
572
  assert(viteConfigRuntime);
573
+ const { baseServer, baseAssets } = resolveBaseRuntime(viteConfigRuntime, globalContext.config);
548
574
  return {
549
575
  viteConfigRuntime,
550
- ...resolveBaseRuntime(viteConfigRuntime, globalContext.config),
576
+ baseServer,
577
+ baseAssets,
578
+ /**
579
+ * Every `+middleware` from Vike extensions, as well as Vike's built-in handler that renders pages.
580
+ *
581
+ * https://vike.dev/globalContext#middlewares
582
+ */
583
+ middlewares: getMiddlewares_globalContext(globalContext, baseServer),
551
584
  };
552
585
  }
553
586
  function clearGlobalContext() {
@@ -1,4 +1,4 @@
1
- export { renderPageServer as renderPage } from './renderPageServer.js';
1
+ export { renderPageServer_userLand as renderPage } from './renderPageServer.js';
2
2
  export { escapeInject, dangerouslySkipEscape } from './renderPageServer/html/renderHtml.js';
3
3
  export { pipeWebStream, pipeNodeStream, pipeStream, stampPipe } from './renderPageServer/html/stream.js';
4
4
  export { PROJECT_VERSION as version } from '../../utils/PROJECT_VERSION.js';
@@ -1,4 +1,4 @@
1
- export { renderPageServer as renderPage } from './renderPageServer.js';
1
+ export { renderPageServer_userLand as renderPage } from './renderPageServer.js';
2
2
  export { escapeInject, dangerouslySkipEscape } from './renderPageServer/html/renderHtml.js';
3
3
  export { pipeWebStream, pipeNodeStream, pipeStream, stampPipe } from './renderPageServer/html/stream.js';
4
4
  export { PROJECT_VERSION as version } from '../../utils/PROJECT_VERSION.js';
@@ -18,14 +18,14 @@ function analyzePage(pageContext) {
18
18
  clientEntries.push(getVikeClientEntry(isClientRouting));
19
19
  const clientDependencies = [];
20
20
  clientDependencies.push({
21
- id: generateVirtualFileId({ type: 'page-entry', pageId: pageConfig.pageId, isForClientSide: true }),
21
+ id: generateVirtualFileId({ type: 'page-entry', pageId: pageConfig.pageId, environmentName: 'client' }),
22
22
  onlyAssets: isClientRuntimeLoaded ? false : true,
23
23
  eagerlyImported: false,
24
24
  });
25
25
  // In production we inject the import of the server virtual module with ?extractAssets inside the client virtual module
26
26
  if (!globalContext._isProduction) {
27
27
  clientDependencies.push({
28
- id: generateVirtualFileId({ type: 'page-entry', pageId: pageConfig.pageId, isForClientSide: false }),
28
+ id: generateVirtualFileId({ type: 'page-entry', pageId: pageConfig.pageId, environmentName: 'server' }),
29
29
  onlyAssets: true,
30
30
  eagerlyImported: false,
31
31
  });
@@ -36,7 +36,7 @@ function analyzePage(pageContext) {
36
36
  const { env } = configElement
37
37
  assert(env)
38
38
  const onlyAssets = env === { server: true }
39
- const eagerlyImported = env === { server: true, client: 'if-client-routing', eager: true }
39
+ const eagerlyImported = env === { server: true, client: true, clientRoutingOnly: true, eager: true }
40
40
  if (onlyAssets || eagerlyImported) {
41
41
  clientDependencies.push({
42
42
  id: configElement.importPath,
@@ -1,4 +1,5 @@
1
- export { createHttpResponsePage };
1
+ export { createHttpResponsePageHtml };
2
+ export { createHttpResponsePageContent };
2
3
  export { createHttpResponsePageJson };
3
4
  export { createHttpResponseErrorFallback };
4
5
  export { createHttpResponseErrorFallback_noGlobalContext };
@@ -6,12 +7,12 @@ export { createHttpResponseErrorFallbackJson };
6
7
  export { createHttpResponseRedirect };
7
8
  export { createHttpResponse404 };
8
9
  export { createHttpResponseBaseIsMissing };
9
- export { createHttpResponseFromUniversalMiddleware };
10
10
  export type { HttpResponse };
11
11
  import type { GetPageAssets } from './getPageAssets.js';
12
12
  import type { HtmlRender } from './html/renderHtml.js';
13
- import type { RenderHook } from './execHookOnRenderHtml.js';
14
- import type { AbortStatusCode, UrlRedirect } from '../../../shared-server-client/route/abort.js';
13
+ import type { StreamReadableWeb } from './html/stream.js';
14
+ import type { Content, RenderHook } from './execHookOnRenderHtml.js';
15
+ import type { AbortStatusCode, UrlRedirect, PageContextAborted } from '../../../shared-server-client/route/abort.js';
15
16
  import { HttpResponseBody } from './getHttpResponseBody.js';
16
17
  import { type EarlyHint } from './getEarlyHints.js';
17
18
  import type { PageContextBegin } from '../renderPageServer.js';
@@ -24,7 +25,7 @@ type HttpResponse = {
24
25
  /** **Deprecated**: use `headers` instead, see https://vike.dev/migration/0.4.134 */
25
26
  contentType: string | undefined;
26
27
  } & HttpResponseBody;
27
- declare function createHttpResponsePage(htmlRender: HtmlRender, renderHook: null | RenderHook, pageContext: {
28
+ type PageContextHttpResponsePage = {
28
29
  pageId: null | string;
29
30
  is404: null | boolean;
30
31
  errorWhileRendering: null | Error;
@@ -32,14 +33,24 @@ declare function createHttpResponsePage(htmlRender: HtmlRender, renderHook: null
32
33
  _globalContext: GlobalContextServerInternal;
33
34
  abortStatusCode?: AbortStatusCode;
34
35
  headersResponse?: Headers;
35
- }): Promise<HttpResponse>;
36
+ pageContextsAborted: PageContextAborted[];
37
+ };
38
+ declare function createHttpResponsePageHtml(htmlRender: HtmlRender, renderHook: null | RenderHook, pageContext: PageContextHttpResponsePage): Promise<HttpResponse>;
39
+ declare function createHttpResponsePageContent(content: Content, renderHook: RenderHook, pageContext: PageContextHttpResponsePage & {
40
+ urlOriginal: string;
41
+ }): HttpResponse;
36
42
  declare function createHttpResponse404(errMsg404: string): HttpResponse;
37
43
  declare function createHttpResponseBaseIsMissing(urlOriginal: string, baseServer: string): HttpResponse;
38
44
  declare function createHttpResponseErrorFallback(pageContext: {
39
45
  _globalContext: GlobalContextServerInternal;
46
+ pageContextsAborted: PageContextAborted[];
40
47
  }): HttpResponse;
41
48
  declare function createHttpResponseErrorFallback_noGlobalContext(): HttpResponse;
42
- declare function createHttpResponseErrorFallbackJson(): HttpResponse;
43
- declare function createHttpResponsePageJson(pageContextSerialized: string): Promise<HttpResponse>;
49
+ declare function createHttpResponseErrorFallbackJson(pageContext: {
50
+ pageContextsAborted: PageContextAborted[];
51
+ }): HttpResponse;
52
+ declare function createHttpResponsePageJson(pageContextJson: string | StreamReadableWeb, pageContext: {
53
+ headersResponse?: Headers;
54
+ pageContextsAborted: PageContextAborted[];
55
+ }): Promise<HttpResponse>;
44
56
  declare function createHttpResponseRedirect({ url, statusCode }: UrlRedirect, pageContextInit: PageContextBegin): HttpResponse;
45
- declare function createHttpResponseFromUniversalMiddleware(response: Response, earlyHints?: EarlyHint[]): HttpResponse;
@@ -1,4 +1,5 @@
1
- export { createHttpResponsePage };
1
+ export { createHttpResponsePageHtml };
2
+ export { createHttpResponsePageContent };
2
3
  export { createHttpResponsePageJson };
3
4
  export { createHttpResponseErrorFallback };
4
5
  export { createHttpResponseErrorFallback_noGlobalContext };
@@ -6,20 +7,34 @@ export { createHttpResponseErrorFallbackJson };
6
7
  export { createHttpResponseRedirect };
7
8
  export { createHttpResponse404 };
8
9
  export { createHttpResponseBaseIsMissing };
9
- export { createHttpResponseFromUniversalMiddleware };
10
10
  import { escapeHtml } from '../../../utils/escapeHtml.js';
11
11
  import { assert, assertWarning } from '../../../utils/assert.js';
12
12
  import { getErrorPageId, isErrorPage } from '../../../shared-server-client/error-page.js';
13
+ import { getContentTypeFromUrl } from '../../../utils/getContentTypeFromUrl.js';
13
14
  import { getHttpResponseBody, getHttpResponseBodyStreamHandlers } from './getHttpResponseBody.js';
14
15
  import { getEarlyHints } from './getEarlyHints.js';
15
16
  import { assertNoInfiniteHttpRedirect } from './createHttpResponse/assertNoInfiniteHttpRedirect.js';
16
- import { resolveHeadersResponseFinal } from './headersResponse.js';
17
+ import { getHeadersSetCookieAborted, resolveHeadersResponseFinal, resolveHeadersResponseSetCookie, } from './headersResponse.js';
17
18
  import { stringify } from '@brillout/json-serializer/stringify';
18
19
  import '../../assertEnvServer.js';
19
20
  const contentTypeJson = 'application/json';
20
21
  const contentTypeHtml = 'text/html;charset=utf-8';
21
22
  const htmlFallbackLog = 'This HTML was generated by Vike.';
22
- async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
23
+ async function createHttpResponsePageHtml(htmlRender, renderHook, pageContext) {
24
+ const statusCode = getStatusCode(pageContext);
25
+ const earlyHints = getEarlyHints(await pageContext.__getPageAssets());
26
+ const headers = resolveHeadersResponseFinal(pageContext, statusCode);
27
+ return createHttpResponse(statusCode, contentTypeHtml, headers, htmlRender, earlyHints, renderHook);
28
+ }
29
+ function createHttpResponsePageContent(content, renderHook, pageContext) {
30
+ const statusCode = getStatusCode(pageContext);
31
+ const headers = resolveHeadersResponseFinal(pageContext, statusCode);
32
+ if (!headers.some(([k]) => k.toLowerCase() === 'content-type')) {
33
+ headers.push(['Content-Type', getContentTypeFromUrl(pageContext.urlOriginal) ?? 'application/octet-stream']);
34
+ }
35
+ return createHttpResponseCommon(statusCode, headers, content, [], renderHook);
36
+ }
37
+ function getStatusCode(pageContext) {
23
38
  let statusCode = pageContext.abortStatusCode;
24
39
  if (!statusCode) {
25
40
  const isError = !pageContext.pageId || isErrorPage(pageContext.pageId, pageContext._globalContext._pageConfigs);
@@ -35,9 +50,7 @@ async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
35
50
  statusCode = pageContext.is404 ? 404 : 500;
36
51
  }
37
52
  }
38
- const earlyHints = getEarlyHints(await pageContext.__getPageAssets());
39
- const headers = resolveHeadersResponseFinal(pageContext, statusCode);
40
- return createHttpResponse(statusCode, contentTypeHtml, headers, htmlRender, earlyHints, renderHook);
53
+ return statusCode;
41
54
  }
42
55
  function createHttpResponse404(errMsg404) {
43
56
  const httpResponse = createHttpResponse(404, contentTypeHtml, [], getHtmlFallback(`<p>${errMsg404}.</p>`));
@@ -76,21 +89,26 @@ function createHttpResponseErrorFallback(pageContext) {
76
89
  return 'no error page (https://vike.dev/error-page) is defined, make sure to create one';
77
90
  }
78
91
  })();
79
- return createHttpResponseError_(reason);
92
+ // Cookies set before `throw redirect()` or `throw render()` are kept
93
+ return createHttpResponseError_(reason, getHeadersSetCookieAborted(pageContext));
80
94
  }
81
95
  function createHttpResponseErrorFallback_noGlobalContext() {
82
- return createHttpResponseError_('no error page (https://vike.dev/error-page) could be rendered');
96
+ return createHttpResponseError_('no error page (https://vike.dev/error-page) could be rendered', []);
83
97
  }
84
- function createHttpResponseError_(reason) {
85
- const httpResponse = createHttpResponse(500, contentTypeHtml, [], getHtmlFallback('<p>An error occurred.</p>', `${htmlFallbackLog} Vike returned this HTML because ${reason}.`));
98
+ function createHttpResponseError_(reason, headers) {
99
+ const httpResponse = createHttpResponse(500, contentTypeHtml, headers, getHtmlFallback('<p>An error occurred.</p>', `${htmlFallbackLog} Vike returned this HTML because ${reason}.`));
86
100
  return httpResponse;
87
101
  }
88
- function createHttpResponseErrorFallbackJson() {
89
- const httpResponse = createHttpResponse(500, contentTypeJson, [], stringify({ serverSideError: true }));
102
+ function createHttpResponseErrorFallbackJson(pageContext) {
103
+ const headers = getHeadersSetCookieAborted(pageContext);
104
+ const httpResponse = createHttpResponse(500, contentTypeJson, headers, stringify({ serverSideError: true }));
90
105
  return httpResponse;
91
106
  }
92
- async function createHttpResponsePageJson(pageContextSerialized) {
93
- const httpResponse = createHttpResponse(200, contentTypeJson, [], pageContextSerialized, [], null);
107
+ async function createHttpResponsePageJson(pageContextJson, pageContext) {
108
+ const headers = resolveHeadersResponseSetCookie(pageContext);
109
+ headers.push(['Content-Type', contentTypeJson]);
110
+ // A stream if there are streamed pageContext values, see https://vike.dev/passToClient#streaming
111
+ const httpResponse = createHttpResponseCommon(200, headers, pageContextJson);
94
112
  return httpResponse;
95
113
  }
96
114
  function createHttpResponseRedirect({ url, statusCode }, pageContextInit) {
@@ -98,17 +116,12 @@ function createHttpResponseRedirect({ url, statusCode }, pageContextInit) {
98
116
  assert(url);
99
117
  assert(statusCode);
100
118
  assert(300 <= statusCode && statusCode <= 399);
101
- const headers = [['Location', url]];
119
+ const headers = [['Location', url], ...resolveHeadersResponseSetCookie(pageContextInit)];
102
120
  return createHttpResponse(statusCode, contentTypeHtml, headers,
103
121
  // For bots / programmatic crawlig: show what's going on.
104
122
  // For users: showing a blank page is probably better than a flickering text.
105
123
  getHtmlFallback(`<p style="display: none">Redirecting to ${escapeHtml(url)}</p>`));
106
124
  }
107
- function createHttpResponseFromUniversalMiddleware(response, earlyHints) {
108
- const body = response.body ?? getHtmlFallback('<p style="display: none">No HTTP response body.</p>');
109
- const httpResponse = createHttpResponseCommon(response.status, Array.from(response.headers.entries()), body, earlyHints);
110
- return httpResponse;
111
- }
112
125
  function getHtmlFallback(bodyHtml, logText = htmlFallbackLog) {
113
126
  return `${bodyHtml}<script>console.log(${JSON.stringify(logText)})</script>`;
114
127
  }