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
@@ -23,12 +23,6 @@ declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPage
23
23
  isPrerendering: boolean;
24
24
  _requestId: number;
25
25
  } & import("../renderPageServer.js").PageContextInit & {
26
- _nodeDev?: {
27
- req: import("http").IncomingMessage;
28
- res: import("http").ServerResponse;
29
- };
30
- _reqWeb?: Request;
31
- } & {
32
26
  _globalContext: ({
33
27
  config: import("../../../types/index.js").ConfigResolved;
34
28
  _source: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Source;
@@ -52,6 +46,10 @@ declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPage
52
46
  _pageFilesAll: import("../../../shared-server-client/getPageFiles.js").PageFile[];
53
47
  _pageConfigs: PageConfigRuntime[];
54
48
  _pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
49
+ _environmentEntries: Record<string, {
50
+ pageConfigs: PageConfigRuntime[];
51
+ pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
52
+ } | null>;
55
53
  _allPageIds: string[];
56
54
  } & (({
57
55
  isClientSide: false;
@@ -61,6 +59,7 @@ declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPage
61
59
  _isPrerendering: false;
62
60
  assetsManifest: null;
63
61
  _viteDevServer: import("vite").ViteDevServer | undefined;
62
+ devMiddleware: import("vite").Connect.Server | null;
64
63
  viteConfig: import("vite").ResolvedConfig | undefined;
65
64
  } | {
66
65
  isClientSide: false;
@@ -69,6 +68,7 @@ declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPage
69
68
  _isProduction: true;
70
69
  assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
71
70
  _viteDevServer: null;
71
+ devMiddleware: null;
72
72
  _usesClientRouter: boolean;
73
73
  _isPrerendering: true;
74
74
  viteConfig: import("vite").ResolvedConfig;
@@ -79,12 +79,11 @@ declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPage
79
79
  _isProduction: true;
80
80
  assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
81
81
  _viteDevServer: null;
82
+ devMiddleware: null;
82
83
  _usesClientRouter: boolean;
83
84
  _isPrerendering: false;
84
85
  viteConfig: null;
85
86
  }) & {
86
- baseServer: string;
87
- baseAssets: string;
88
87
  viteConfigRuntime: {
89
88
  root: string;
90
89
  build: {
@@ -95,6 +94,9 @@ declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPage
95
94
  inject: boolean | undefined;
96
95
  };
97
96
  };
97
+ baseServer: string;
98
+ baseAssets: string;
99
+ middlewares: import("../universal-middleware/core.js").Middleware[];
98
100
  })) & {
99
101
  prerenderContext: import("../../../types/index.js").PrerenderContext | undefined;
100
102
  };
@@ -102,12 +104,6 @@ declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPage
102
104
  _baseServer: string;
103
105
  _baseAssets: string;
104
106
  _pageContextInit: import("../renderPageServer.js").PageContextInit & {
105
- _nodeDev?: {
106
- req: import("http").IncomingMessage;
107
- res: import("http").ServerResponse;
108
- };
109
- _reqWeb?: Request;
110
- } & {
111
107
  headers?: Record<string, unknown>;
112
108
  };
113
109
  _urlHandler: ((url: string) => string) | null;
@@ -15,6 +15,7 @@ import { loadAndParseVirtualFilePageEntry } from '../../../shared-server-client/
15
15
  import { execHookServer } from './execHookServer.js';
16
16
  import { resolveHeadersResponseEarly } from './headersResponse.js';
17
17
  import { resolvePageContextCspNone } from './csp.js';
18
+ import { loadPageContextEnvironments } from './loadPageContextEnvironments.js';
18
19
  import '../../assertEnvServer.js';
19
20
  async function loadPageConfigsLazyServerSide(pageContext) {
20
21
  objectAssign(pageContext, {
@@ -109,7 +110,7 @@ async function resolvePageContext(pageContext) {
109
110
  return pageContext;
110
111
  }
111
112
  async function loadPageUserFiles(pageContext) {
112
- const [{ pageContextAddendum }] = await Promise.all([
113
+ const [{ pageContextAddendum }, pageContextEnvironments] = await Promise.all([
113
114
  (async () => {
114
115
  const pageFilesServerSide = getPageFilesServerSide(pageContext._pageFilesAll, pageContext.pageId);
115
116
  const isDev = !pageContext._globalContext._isProduction;
@@ -120,9 +121,12 @@ async function loadPageUserFiles(pageContext) {
120
121
  const pageContextAddendum = resolvePageContextConfig(pageFilesServerSide, pageConfigLoaded, pageContext._globalContext._pageConfigGlobal);
121
122
  return { pageContextAddendum };
122
123
  })(),
124
+ pageContext._pageConfig && loadPageContextEnvironments(pageContext),
123
125
  analyzePageClientSideInit(pageContext._globalContext._pageFilesAll, pageContext.pageId, {
124
126
  sharedPageFilesAlreadyLoaded: true,
125
127
  }),
126
128
  ]);
129
+ if (pageContextEnvironments)
130
+ objectAssign(pageContextAddendum, pageContextEnvironments);
127
131
  return pageContextAddendum;
128
132
  }
@@ -0,0 +1,15 @@
1
+ export { loadPageContextEnvironments };
2
+ import type { GlobalContextServerInternal } from '../globalContext.js';
3
+ import type { PageContextPublicMinimum } from '../../../shared-server-client/getPageContextPublicShared.js';
4
+ import '../../assertEnvServer.js';
5
+ declare function loadPageContextEnvironments(pageContext: PageContextPublicMinimum & {
6
+ pageId: string;
7
+ _globalContext: GlobalContextServerInternal;
8
+ }): Promise<{
9
+ environments: {
10
+ [k: string]: {
11
+ config: import("../../../types/index.js").ConfigResolved;
12
+ pageContext: object;
13
+ };
14
+ };
15
+ }>;
@@ -0,0 +1,61 @@
1
+ export { loadPageContextEnvironments };
2
+ import { resolvePageContextConfig } from '../../../shared-server-client/page-configs/resolveVikeConfigPublic.js';
3
+ import { parseGlobalEntryPageConfigs, } from '../../../shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.js';
4
+ import { findPageConfig } from '../../../shared-server-client/page-configs/findPageConfig.js';
5
+ import { loadAndParseVirtualFilePageEntry } from '../../../shared-server-client/page-configs/loadAndParseVirtualFilePageEntry.js';
6
+ import { generateVirtualFileIdAdditionalEnvironment } from '../../../shared-server-node/virtualFileId.js';
7
+ import { isRunnableDevEnvironment } from '../../../utils/isRunnableDevEnvironment.js';
8
+ import { assert, assertUsage } from '../../../utils/assert.js';
9
+ import { getPageContextPublicServer } from './getPageContextPublicServer.js';
10
+ import '../../assertEnvServer.js';
11
+ // Additional environments (e.g. `rsc`) run in the same runtime as the server environment => their functions can be called directly
12
+ // - `pageContext.environments[environmentName]` holds the environment's config values and its view of pageContext, which its functions are called with
13
+ async function loadPageContextEnvironments(pageContext) {
14
+ const environmentEntries = pageContext._globalContext._environmentEntries;
15
+ const environments = Object.fromEntries(await Promise.all(Object.entries(environmentEntries).map(async ([environmentName, environmentEntry]) => {
16
+ const pageContextConfigEnv = await loadPageContextConfig(pageContext, environmentName, environmentEntry);
17
+ const environment = {
18
+ config: pageContextConfigEnv.config,
19
+ pageContext: getPageContextEnvView(getPageContextPublicServer(pageContext), pageContextConfigEnv),
20
+ };
21
+ return [environmentName, environment];
22
+ })));
23
+ const pageContextEnvironments = { environments };
24
+ return pageContextEnvironments;
25
+ }
26
+ // The same pageContext object, except for the config values (and what's derived from them) which are the environment's
27
+ function getPageContextEnvView(pageContext, pageContextConfig) {
28
+ // TO-DO/soon/flat-pageContext make this clean using same mechanism as [Flat `pageContext`](https://github.com/vikejs/vike/issues/1268)
29
+ return new Proxy(pageContext, {
30
+ get(target, prop) {
31
+ if (prop === 'Page')
32
+ return pageContextConfig.exports.Page;
33
+ if (prop in pageContextConfig)
34
+ return pageContextConfig[prop];
35
+ return Reflect.get(target, prop);
36
+ },
37
+ });
38
+ }
39
+ async function loadPageContextConfig(pageContext, environmentName, environmentEntry) {
40
+ const globalContext = pageContext._globalContext;
41
+ const { pageConfigs, pageConfigGlobal } = await importEnvironmentEntry(globalContext, environmentName, environmentEntry);
42
+ const pageConfig = findPageConfig(pageConfigs, pageContext.pageId);
43
+ assert(pageConfig);
44
+ const pageConfigLoaded = await loadAndParseVirtualFilePageEntry(pageConfig, !globalContext._isProduction);
45
+ return resolvePageContextConfig([], pageConfigLoaded, pageConfigGlobal);
46
+ }
47
+ async function importEnvironmentEntry(globalContext, environmentName, environmentEntry) {
48
+ if (environmentEntry) {
49
+ // Prod
50
+ assert(globalContext._isProduction);
51
+ return environmentEntry;
52
+ }
53
+ else {
54
+ // Dev
55
+ assert(!globalContext._isProduction);
56
+ const environment = globalContext._viteDevServer?.environments[environmentName];
57
+ assertUsage(isRunnableDevEnvironment(environment), `The Vike environment ${environmentName} should be a server-side environment running in the same runtime (process or worker) as Vike's server`);
58
+ const virtualFileId = generateVirtualFileIdAdditionalEnvironment(environmentName);
59
+ return parseGlobalEntryPageConfigs(await environment.runner.import(virtualFileId));
60
+ }
61
+ }