vike 0.4.229-commit-7056ef0 → 0.4.229-commit-5da80bf

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 (149) hide show
  1. package/dist/cjs/client/server-routing-runtime/utils.js +1 -0
  2. package/dist/cjs/client/shared/{preparePageContextForUserConsumptionClientSide.js → preparePageContextForPublicUsageClientShared.js} +15 -19
  3. package/dist/cjs/node/api/build.js +1 -5
  4. package/dist/cjs/node/plugin/shared/loggerNotProd.js +2 -2
  5. package/dist/cjs/node/prerender/runPrerender.js +40 -36
  6. package/dist/cjs/node/prerender/utils.js +1 -1
  7. package/dist/cjs/node/runtime/globalContext.js +13 -27
  8. package/dist/cjs/node/runtime/html/serializeContext.js +1 -1
  9. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +4 -8
  10. package/dist/cjs/node/runtime/renderPage/execHookServer.js +11 -0
  11. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +9 -9
  12. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
  13. package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +10 -0
  14. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
  15. package/dist/cjs/node/runtime/renderPage.js +7 -5
  16. package/dist/cjs/node/runtime/utils.js +1 -1
  17. package/dist/cjs/shared/NOT_SERIALIZABLE.js +0 -1
  18. package/dist/cjs/shared/addIs404ToPageProps.js +0 -7
  19. package/dist/cjs/shared/createGlobalContextShared.js +6 -3
  20. package/dist/cjs/shared/createPageContextShared.js +14 -3
  21. package/dist/cjs/shared/getPageContext.js +3 -3
  22. package/dist/cjs/shared/getPageContextUrlComputed.js +2 -36
  23. package/dist/cjs/shared/getProxyForPublicUsage.js +106 -0
  24. package/dist/cjs/shared/hooks/execHook.js +164 -0
  25. package/dist/cjs/shared/page-configs/getUserFriendlyConfigs.js +17 -15
  26. package/dist/cjs/shared/prepareGlobalContextForPublicUsage.js +10 -0
  27. package/dist/cjs/shared/preparePageContextForPublicUsage.js +75 -0
  28. package/dist/cjs/shared/route/abort.js +2 -2
  29. package/dist/cjs/shared/route/executeGuardHook.js +4 -9
  30. package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +4 -3
  31. package/dist/cjs/shared/route/index.js +2 -4
  32. package/dist/cjs/shared/route/loadPageRoutes.js +6 -0
  33. package/dist/cjs/shared/route/resolveRouteFunction.js +14 -10
  34. package/dist/cjs/shared/utils.js +2 -0
  35. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  36. package/dist/cjs/utils/objectAssign.js +3 -3
  37. package/dist/cjs/utils/objectDefineProperty.js +1 -1
  38. package/dist/esm/client/client-routing-runtime/createPageContextClientSide.d.ts +10 -7
  39. package/dist/esm/client/client-routing-runtime/createPageContextClientSide.js +8 -10
  40. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +397 -20
  41. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +15 -15
  42. package/dist/esm/client/client-routing-runtime/globalContext.d.ts +1 -0
  43. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +3 -8
  44. package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.d.ts +11 -0
  45. package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
  46. package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +135 -0
  47. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +66 -72
  48. package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
  49. package/dist/esm/client/client-routing-runtime/utils.js +1 -0
  50. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +8 -6
  51. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +8 -10
  52. package/dist/esm/client/server-routing-runtime/entry.js +4 -6
  53. package/dist/esm/client/server-routing-runtime/globalContext.d.ts +1 -0
  54. package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.d.ts +9 -0
  55. package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
  56. package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
  57. package/dist/esm/client/server-routing-runtime/utils.js +1 -0
  58. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +1 -0
  59. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +3 -3
  60. package/dist/esm/client/shared/executeOnRenderClientHook.js +4 -13
  61. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.d.ts +11 -0
  62. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +40 -0
  63. package/dist/esm/node/api/build.js +1 -2
  64. package/dist/esm/node/plugin/shared/loggerNotProd.js +1 -1
  65. package/dist/esm/node/prerender/runPrerender.d.ts +15 -115
  66. package/dist/esm/node/prerender/runPrerender.js +40 -36
  67. package/dist/esm/node/prerender/utils.d.ts +1 -1
  68. package/dist/esm/node/prerender/utils.js +1 -1
  69. package/dist/esm/node/runtime/globalContext.d.ts +5 -373
  70. package/dist/esm/node/runtime/globalContext.js +14 -28
  71. package/dist/esm/node/runtime/html/serializeContext.d.ts +1 -1
  72. package/dist/esm/node/runtime/html/serializeContext.js +1 -1
  73. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +15 -62
  74. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +5 -9
  75. package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +12 -0
  76. package/dist/esm/node/runtime/renderPage/execHookServer.js +9 -0
  77. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +1 -1
  78. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +9 -9
  79. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +4 -2
  80. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
  81. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.d.ts +20 -0
  82. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +8 -0
  83. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +15 -115
  84. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
  85. package/dist/esm/node/runtime/renderPage.d.ts +10 -60
  86. package/dist/esm/node/runtime/renderPage.js +7 -5
  87. package/dist/esm/node/runtime/utils.d.ts +1 -1
  88. package/dist/esm/node/runtime/utils.js +1 -1
  89. package/dist/esm/shared/NOT_SERIALIZABLE.js +0 -1
  90. package/dist/esm/shared/addIs404ToPageProps.d.ts +1 -6
  91. package/dist/esm/shared/addIs404ToPageProps.js +1 -8
  92. package/dist/esm/shared/createGlobalContextShared.d.ts +2 -0
  93. package/dist/esm/shared/createGlobalContextShared.js +7 -4
  94. package/dist/esm/shared/createPageContextShared.d.ts +6 -2
  95. package/dist/esm/shared/createPageContextShared.js +15 -4
  96. package/dist/esm/shared/getPageContext.d.ts +1 -1
  97. package/dist/esm/shared/getPageContext.js +1 -1
  98. package/dist/esm/shared/getPageContextUrlComputed.d.ts +2 -5
  99. package/dist/esm/shared/getPageContextUrlComputed.js +3 -37
  100. package/dist/esm/shared/getProxyForPublicUsage.d.ts +12 -0
  101. package/dist/esm/shared/getProxyForPublicUsage.js +104 -0
  102. package/dist/esm/shared/hooks/execHook.d.ts +63 -0
  103. package/dist/esm/shared/hooks/execHook.js +162 -0
  104. package/dist/esm/shared/hooks/getHook.d.ts +3 -1
  105. package/dist/esm/shared/page-configs/Config.d.ts +3 -3
  106. package/dist/esm/shared/page-configs/getUserFriendlyConfigs.js +18 -16
  107. package/dist/esm/shared/prepareGlobalContextForPublicUsage.d.ts +7 -0
  108. package/dist/esm/shared/prepareGlobalContextForPublicUsage.js +8 -0
  109. package/dist/esm/shared/preparePageContextForPublicUsage.d.ts +12 -0
  110. package/dist/esm/shared/preparePageContextForPublicUsage.js +73 -0
  111. package/dist/esm/shared/route/abort.js +1 -1
  112. package/dist/esm/shared/route/executeGuardHook.d.ts +4 -3
  113. package/dist/esm/shared/route/executeGuardHook.js +4 -9
  114. package/dist/esm/shared/route/executeOnBeforeRouteHook.js +4 -3
  115. package/dist/esm/shared/route/index.js +2 -4
  116. package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -1
  117. package/dist/esm/shared/route/loadPageRoutes.js +7 -1
  118. package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
  119. package/dist/esm/shared/route/resolveRouteFunction.js +14 -10
  120. package/dist/esm/shared/types.d.ts +13 -3
  121. package/dist/esm/shared/utils.d.ts +2 -0
  122. package/dist/esm/shared/utils.js +2 -0
  123. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  124. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  125. package/dist/esm/utils/objectAssign.d.ts +1 -1
  126. package/dist/esm/utils/objectAssign.js +3 -3
  127. package/dist/esm/utils/objectDefineProperty.d.ts +0 -1
  128. package/dist/esm/utils/objectDefineProperty.js +1 -1
  129. package/package.json +2 -2
  130. package/dist/cjs/client/shared/getPageContextProxyForUser.js +0 -16
  131. package/dist/cjs/node/runtime/renderPage/executeHookServer.js +0 -11
  132. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -16
  133. package/dist/cjs/shared/hooks/executeHook.js +0 -108
  134. package/dist/cjs/shared/preparePageContextForUserConsumption.js +0 -34
  135. package/dist/cjs/utils/getPublicProxy.js +0 -27
  136. package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +0 -2
  137. package/dist/esm/client/shared/getPageContextProxyForUser.js +0 -14
  138. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +0 -12
  139. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.js +0 -44
  140. package/dist/esm/node/runtime/renderPage/executeHookServer.d.ts +0 -13
  141. package/dist/esm/node/runtime/renderPage/executeHookServer.js +0 -9
  142. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +0 -24
  143. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -14
  144. package/dist/esm/shared/hooks/executeHook.d.ts +0 -34
  145. package/dist/esm/shared/hooks/executeHook.js +0 -106
  146. package/dist/esm/shared/preparePageContextForUserConsumption.d.ts +0 -5
  147. package/dist/esm/shared/preparePageContextForUserConsumption.js +0 -32
  148. package/dist/esm/utils/getPublicProxy.d.ts +0 -2
  149. package/dist/esm/utils/getPublicProxy.js +0 -25
@@ -0,0 +1,40 @@
1
+ export { preparePageContextForPublicUsageClientShared };
2
+ export { preparePageContextForPublicUsageClientMinimal };
3
+ import { objectAssign } from '../server-routing-runtime/utils.js';
4
+ import { assertPropertyGetters, preparePageContextForPublicUsage } from '../../shared/preparePageContextForPublicUsage.js';
5
+ function preparePageContextForPublicUsageClientShared(pageContext) {
6
+ // TODO/now use proxy
7
+ const Page = pageContext.config?.Page ||
8
+ // TODO/next-major-release: remove
9
+ pageContext.exports?.Page;
10
+ objectAssign(pageContext, { Page });
11
+ // TODO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage()
12
+ assertPropertyGetters(pageContext);
13
+ // TODO/next-major-release: remove
14
+ // - Requires https://github.com/vikejs/vike-vue/issues/198
15
+ // - Last time I tried to remove it (https://github.com/vikejs/vike/commit/705fd23598d9d69bf46a52c8550216cd7117ce71) the tests were failing as expected: only the Vue integrations that used shallowReactive() failed.
16
+ supportVueReactiviy(pageContext);
17
+ return preparePageContextForPublicUsageClientMinimal(pageContext);
18
+ }
19
+ function preparePageContextForPublicUsageClientMinimal(pageContext) {
20
+ const pageContextPublic = preparePageContextForPublicUsage(pageContext);
21
+ return pageContextPublic;
22
+ }
23
+ // With Vue + Cient Routing, the `pageContext` is made reactive:
24
+ // ```js
25
+ // import { reactive } from 'vue'
26
+ // // See /examples/vue-full/renderer/createVueApp.ts
27
+ // const pageContextReactive = reactive(pageContext)
28
+ // ```
29
+ function supportVueReactiviy(pageContext) {
30
+ resolveGetters(pageContext);
31
+ }
32
+ // Remove propery descriptor getters because they break Vue's reactivity.
33
+ // E.g. resolve the `pageContext.urlPathname` getter.
34
+ function resolveGetters(pageContext) {
35
+ return;
36
+ Object.entries(pageContext).forEach(([key, val]) => {
37
+ delete pageContext[key];
38
+ pageContext[key] = val;
39
+ });
40
+ }
@@ -1,10 +1,9 @@
1
1
  export { build };
2
2
  import { prepareViteApiCall } from './prepareViteApiCall.js';
3
3
  import { build as buildVite, version, createBuilder } from 'vite';
4
- import assert from 'assert';
5
4
  import { isVikeCli } from '../cli/context.js';
6
5
  import { isPrerendering } from '../prerender/context.js';
7
- import { assertVersion } from './utils.js';
6
+ import { assert, assertVersion } from './utils.js';
8
7
  /**
9
8
  * Programmatically trigger `$ vike build`
10
9
  *
@@ -22,7 +22,7 @@ import { logWithVikeTag, logWithViteTag, logDirectly, applyViteSourceMapToStackT
22
22
  import pc from '@brillout/picocolors';
23
23
  import { setAlreadyLogged } from '../../runtime/renderPage/isNewError.js';
24
24
  import { onRuntimeError } from '../../runtime/renderPage/loggerProd.js';
25
- import { isUserHookError } from '../../../shared/hooks/executeHook.js';
25
+ import { isUserHookError } from '../../../shared/hooks/execHook.js';
26
26
  assertIsNotProductionRuntime();
27
27
  overwriteRuntimeProductionLogger(logRuntimeError, logRuntimeInfo);
28
28
  overwriteAssertProductionLogger(assertLogger);
@@ -5,7 +5,7 @@ export { runPrerender_forceExit };
5
5
  export type { PrerenderOptions };
6
6
  export type { PrerenderContextPublic };
7
7
  import type { PageFile } from '../../shared/getPageFiles.js';
8
- import { type GlobalContextServerInternal, type GlobalContextServer } from '../runtime/globalContext.js';
8
+ import { type GlobalContextServerInternal } from '../runtime/globalContext.js';
9
9
  import type { InlineConfig, ResolvedConfig } from 'vite';
10
10
  import type { APIOptions } from '../api/types.js';
11
11
  type ProvidedByHook = null | {
@@ -22,6 +22,7 @@ type PageContextPrerendered = {
22
22
  pageId: string;
23
23
  };
24
24
  type PrerenderedPageContexts = Record<string, PageContextPrerendered>;
25
+ type PrerenderContextPublic = Pick<PrerenderContext, 'pageContexts' | 'output'>;
25
26
  type PrerenderContext = {
26
27
  pageContexts: PageContext[];
27
28
  output: Output;
@@ -66,16 +67,19 @@ declare function runPrerenderFromCLIPrerenderCommand(): Promise<void>;
66
67
  declare function runPrerenderFromAutoRun(viteConfig: InlineConfig | undefined): Promise<{
67
68
  forceExit: boolean;
68
69
  }>;
69
- declare function createPageContextPrerendering(urlOriginal: string, prerenderContext: PrerenderContext, globalContext: GlobalContextServerInternal, globalContext_public: GlobalContextServer, is404: boolean, pageId: string | undefined, providedByHook: ProvidedByHook): Promise<((({
70
- isClientSide: boolean;
70
+ declare function createPageContextPrerendering(urlOriginal: string, prerenderContext: PrerenderContext, globalContext: GlobalContextServerInternal, is404: boolean, pageId: string | undefined, providedByHook: ProvidedByHook): Promise<((({
71
+ _isOriginalObject: true;
72
+ isPageContext: true;
73
+ } & {
74
+ isClientSide: false;
71
75
  isPrerendering: boolean;
72
- } & Pick<import("../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
76
+ } & Pick<import("../../shared/types.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
73
77
  url?: string;
74
78
  headers?: Record<string, string>;
75
79
  } & {
76
- globalContext: GlobalContextServer;
77
80
  _globalContext: {
78
81
  isGlobalContext: true;
82
+ _isOriginalObject: true;
79
83
  _virtualFileExports: unknown;
80
84
  _pageFilesAll: PageFile[];
81
85
  _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
@@ -113,23 +117,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
113
117
  isClientSide: false;
114
118
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
115
119
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
116
- isGlobalContext: true;
117
- _virtualFileExports: unknown;
118
- _pageFilesAll: PageFile[];
119
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
120
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
121
- _allPageIds: string[];
122
- _userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
123
- config: import("../../types/index.js").ConfigResolved;
124
- pages: {
125
- [k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
126
- route: import("../../shared/page-configs/Config.js").Route;
127
- isErrorPage?: undefined;
128
- } | {
129
- route?: undefined;
130
- isErrorPage: true;
131
- });
132
- };
133
120
  } | {
134
121
  _isPrerendering: true;
135
122
  viteConfig: ResolvedConfig;
@@ -152,23 +139,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
152
139
  isClientSide: false;
153
140
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
154
141
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
155
- isGlobalContext: true;
156
- _virtualFileExports: unknown;
157
- _pageFilesAll: PageFile[];
158
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
159
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
160
- _allPageIds: string[];
161
- _userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
162
- config: import("../../types/index.js").ConfigResolved;
163
- pages: {
164
- [k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
165
- route: import("../../shared/page-configs/Config.js").Route;
166
- isErrorPage?: undefined;
167
- } | {
168
- route?: undefined;
169
- isErrorPage: true;
170
- });
171
- };
172
142
  } | {
173
143
  _isPrerendering: false;
174
144
  viteConfig: null;
@@ -191,23 +161,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
191
161
  isClientSide: false;
192
162
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
193
163
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
194
- isGlobalContext: true;
195
- _virtualFileExports: unknown;
196
- _pageFilesAll: PageFile[];
197
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
198
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
199
- _allPageIds: string[];
200
- _userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
201
- config: import("../../types/index.js").ConfigResolved;
202
- pages: {
203
- [k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
204
- route: import("../../shared/page-configs/Config.js").Route;
205
- isErrorPage?: undefined;
206
- } | {
207
- route?: undefined;
208
- isErrorPage: true;
209
- });
210
- };
211
164
  });
212
165
  _baseServer: string;
213
166
  _baseAssets: string;
@@ -228,8 +181,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
228
181
  url: string;
229
182
  } & {
230
183
  headers: Record<string, string> | null;
231
- } & {
232
- isPageContext: true;
233
184
  } & {
234
185
  _urlHandler: null;
235
186
  _httpRequestId: null;
@@ -240,15 +191,18 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
240
191
  _urlOriginalModifiedByHook: ProvidedByHookTransformer;
241
192
  is404: boolean;
242
193
  } & import("../../shared/route/index.js").PageContextFromRoute & Record<"pageId", string>) | ({
243
- isClientSide: boolean;
194
+ _isOriginalObject: true;
195
+ isPageContext: true;
196
+ } & {
197
+ isClientSide: false;
244
198
  isPrerendering: boolean;
245
- } & Pick<import("../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
199
+ } & Pick<import("../../shared/types.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
246
200
  url?: string;
247
201
  headers?: Record<string, string>;
248
202
  } & {
249
- globalContext: GlobalContextServer;
250
203
  _globalContext: {
251
204
  isGlobalContext: true;
205
+ _isOriginalObject: true;
252
206
  _virtualFileExports: unknown;
253
207
  _pageFilesAll: PageFile[];
254
208
  _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
@@ -286,23 +240,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
286
240
  isClientSide: false;
287
241
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
288
242
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
289
- isGlobalContext: true;
290
- _virtualFileExports: unknown;
291
- _pageFilesAll: PageFile[];
292
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
293
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
294
- _allPageIds: string[];
295
- _userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
296
- config: import("../../types/index.js").ConfigResolved;
297
- pages: {
298
- [k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
299
- route: import("../../shared/page-configs/Config.js").Route;
300
- isErrorPage?: undefined;
301
- } | {
302
- route?: undefined;
303
- isErrorPage: true;
304
- });
305
- };
306
243
  } | {
307
244
  _isPrerendering: true;
308
245
  viteConfig: ResolvedConfig;
@@ -325,23 +262,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
325
262
  isClientSide: false;
326
263
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
327
264
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
328
- isGlobalContext: true;
329
- _virtualFileExports: unknown;
330
- _pageFilesAll: PageFile[];
331
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
332
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
333
- _allPageIds: string[];
334
- _userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
335
- config: import("../../types/index.js").ConfigResolved;
336
- pages: {
337
- [k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
338
- route: import("../../shared/page-configs/Config.js").Route;
339
- isErrorPage?: undefined;
340
- } | {
341
- route?: undefined;
342
- isErrorPage: true;
343
- });
344
- };
345
265
  } | {
346
266
  _isPrerendering: false;
347
267
  viteConfig: null;
@@ -364,23 +284,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
364
284
  isClientSide: false;
365
285
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
366
286
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
367
- isGlobalContext: true;
368
- _virtualFileExports: unknown;
369
- _pageFilesAll: PageFile[];
370
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
371
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
372
- _allPageIds: string[];
373
- _userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
374
- config: import("../../types/index.js").ConfigResolved;
375
- pages: {
376
- [k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
377
- route: import("../../shared/page-configs/Config.js").Route;
378
- isErrorPage?: undefined;
379
- } | {
380
- route?: undefined;
381
- isErrorPage: true;
382
- });
383
- };
384
287
  });
385
288
  _baseServer: string;
386
289
  _baseAssets: string;
@@ -401,8 +304,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
401
304
  url: string;
402
305
  } & {
403
306
  headers: Record<string, string> | null;
404
- } & {
405
- isPageContext: true;
406
307
  } & {
407
308
  _urlHandler: null;
408
309
  _httpRequestId: null;
@@ -427,4 +328,3 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
427
328
  _usesClientRouter: boolean;
428
329
  }>;
429
330
  declare function runPrerender_forceExit(): void;
430
- type PrerenderContextPublic = Pick<PrerenderContext, 'output' | 'pageContexts'>;
@@ -4,7 +4,7 @@ export { runPrerenderFromAutoRun };
4
4
  export { runPrerender_forceExit };
5
5
  import path from 'path';
6
6
  import { route } from '../../shared/route/index.js';
7
- import { assert, assertUsage, assertWarning, hasProp, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, onSetupPrerender, getPublicProxy, PROJECT_VERSION, preservePropertyGetters } from './utils.js';
7
+ import { assert, assertUsage, assertWarning, hasProp, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, onSetupPrerender, PROJECT_VERSION, preservePropertyGetters, changeEnumerable } from './utils.js';
8
8
  import { prerenderPage } from '../runtime/renderPage/renderPageAlreadyRouted.js';
9
9
  import { createPageContextServerSide } from '../runtime/renderPage/createPageContextServerSide.js';
10
10
  import pc from '@brillout/picocolors';
@@ -23,7 +23,7 @@ import { getHookFromPageConfig, getHookFromPageConfigGlobal, getHookTimeoutDefau
23
23
  import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
24
24
  import { getVikeConfig } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
25
25
  import { logErrorHint } from '../runtime/renderPage/logErrorHint.js';
26
- import { executeHook, isUserHookError } from '../../shared/hooks/executeHook.js';
26
+ import { execHookWithoutPageContext, isUserHookError } from '../../shared/hooks/execHook.js';
27
27
  import { prepareViteApiCall } from '../api/prepareViteApiCall.js';
28
28
  import { setContextIsPrerendering } from './context.js';
29
29
  import { resolvePrerenderConfigGlobal, resolvePrerenderConfigLocal } from './resolvePrerenderConfig.js';
@@ -32,6 +32,8 @@ import { isVikeCli } from '../cli/context.js';
32
32
  import { isViteCliCall } from '../plugin/shared/isViteCliCall.js';
33
33
  import { getVikeConfigInternal } from '../plugin/plugins/commonConfig.js';
34
34
  import fs from 'node:fs';
35
+ import { getProxyForPublicUsage } from '../../shared/getProxyForPublicUsage.js';
36
+ const docLink = 'https://vike.dev/i18n#pre-rendering';
35
37
  async function runPrerenderFromAPI(options = {}) {
36
38
  return await runPrerender(options, 'prerender()');
37
39
  // - We purposely propagate the error to the user land, so that the error interrupts the user land. It's also, I guess, a nice-to-have that the user has control over the error.
@@ -94,7 +96,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
94
96
  }
95
97
  const concurrencyLimit = pLimit(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? cpus().length : parallel);
96
98
  await initGlobalContext_runPrerender();
97
- const { globalContext, globalContext_public } = await getGlobalContextServerInternal();
99
+ const { globalContext } = await getGlobalContextServerInternal();
98
100
  globalContext._pageFilesAll.forEach(assertExportNames);
99
101
  const prerenderContext = {
100
102
  pageContexts: [],
@@ -107,13 +109,13 @@ async function runPrerender(options = {}, standaloneTrigger) {
107
109
  await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
108
110
  // Allow user to create `pageContext` for parameterized routes and/or bulk data fetching
109
111
  // https://vike.dev/onBeforePrerenderStart
110
- await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList);
112
+ await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
111
113
  // Create `pageContext` for each page with a static route
112
114
  const urlList = getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList);
113
- await createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, false);
115
+ await createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, false);
114
116
  // Create `pageContext` for 404 page
115
117
  const urlList404 = getUrlList404(globalContext);
116
- await createPageContexts(urlList404, prerenderContext, globalContext, globalContext_public, concurrencyLimit, true);
118
+ await createPageContexts(urlList404, prerenderContext, globalContext, concurrencyLimit, true);
117
119
  // Allow user to duplicate the list of `pageContext` for i18n
118
120
  // https://vike.dev/onPrerenderStart
119
121
  await callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit);
@@ -132,8 +134,8 @@ async function runPrerender(options = {}, standaloneTrigger) {
132
134
  console.log(`${pc.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
133
135
  }
134
136
  await warnMissingPages(prerenderContext._prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
135
- const prerenderContextPublic = makePublic(prerenderContext);
136
- objectAssign(vike.prerenderContext, prerenderContextPublic);
137
+ const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
138
+ objectAssign(vike.prerenderContext, prerenderContextPublic, true);
137
139
  if (prerenderConfigGlobal.isPrerenderingEnabledForAllPages && !prerenderConfigGlobal.keepDistServer) {
138
140
  fs.rmSync(outDirServer, { recursive: true });
139
141
  }
@@ -195,7 +197,7 @@ function assertExportNames(pageFile) {
195
197
  const { exportNames, fileType } = pageFile;
196
198
  assert(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
197
199
  }
198
- async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList) {
200
+ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
199
201
  const onBeforePrerenderStartHooks = [];
200
202
  // V1 design
201
203
  await Promise.all(globalContext._pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
@@ -238,10 +240,11 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
238
240
  hookTimeout: getHookTimeoutDefault('onBeforePrerenderStart')
239
241
  });
240
242
  })));
241
- await Promise.all(onBeforePrerenderStartHooks.map(({ hookFn, hookName, hookFilePath, pageId, hookTimeout }) => concurrencyLimit(async () => {
243
+ await Promise.all(onBeforePrerenderStartHooks.map(({ pageId, ...hook }) => concurrencyLimit(async () => {
242
244
  if (doNotPrerenderList.find((p) => p.pageId === pageId))
243
245
  return;
244
- const prerenderResult = await executeHook(() => hookFn(), { hookName, hookFilePath, hookTimeout }, null);
246
+ const { hookName, hookFilePath } = hook;
247
+ const prerenderResult = await execHookWithoutPageContext(() => hook.hookFn(), hook);
245
248
  const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
246
249
  // Handle result
247
250
  await Promise.all(result.map(async ({ url, pageContext }) => {
@@ -258,7 +261,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
258
261
  }
259
262
  // Add result
260
263
  const providedByHook = { hookFilePath, hookName };
261
- const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, globalContext_public, false, undefined, providedByHook);
264
+ const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, false, undefined, providedByHook);
262
265
  prerenderContext.pageContexts.push(pageContextNew);
263
266
  if (pageContext) {
264
267
  objectAssign(pageContextNew, { _pageContextAlreadyProvidedByOnPrerenderHook: true });
@@ -304,22 +307,22 @@ function getUrlList404(globalContext) {
304
307
  }
305
308
  return urlList;
306
309
  }
307
- async function createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, is404) {
310
+ async function createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, is404) {
308
311
  await Promise.all(urlList.map(({ urlOriginal, pageId }) => concurrencyLimit(async () => {
309
312
  // Already included in a onBeforePrerenderStart() hook
310
313
  if (prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, urlOriginal))) {
311
314
  return;
312
315
  }
313
- const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, null);
316
+ const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, null);
314
317
  prerenderContext.pageContexts.push(pageContext);
315
318
  })));
316
319
  }
317
- async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, providedByHook) {
320
+ async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, providedByHook) {
318
321
  const pageContextInit = {
319
322
  urlOriginal,
320
323
  ...prerenderContext._pageContextInit
321
324
  };
322
- const pageContext = await createPageContextServerSide(pageContextInit, globalContext, globalContext_public, {
325
+ const pageContext = await createPageContextServerSide(pageContextInit, globalContext, {
323
326
  isPrerendering: true
324
327
  });
325
328
  assert(pageContext.isPrerendering === true);
@@ -463,26 +466,13 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
463
466
  assert(pageContext.urlOriginal);
464
467
  pageContext._urlOriginalBeforeHook = pageContext.urlOriginal;
465
468
  });
466
- const docLink = 'https://vike.dev/i18n#pre-rendering';
467
469
  prerenderContext.pageContexts.forEach((pageContext) => {
468
470
  // Preserve URL computed properties when the user is copying pageContext is his onPrerenderStart() hook, e.g. /examples/i18n/
469
471
  // https://vike.dev/i18n#pre-rendering
470
472
  preservePropertyGetters(pageContext);
471
473
  });
472
- let result = await executeHook(() => {
473
- const prerenderContextPublic = makePublic(prerenderContext);
474
- // TODO/v1-release: remove warning
475
- Object.defineProperty(prerenderContextPublic, 'prerenderPageContexts', {
476
- get() {
477
- assertWarning(false, `prerenderPageContexts has been renamed pageContexts, see ${docLink}`, {
478
- showStackTrace: true,
479
- onlyOnce: true
480
- });
481
- return prerenderContext.pageContexts;
482
- }
483
- });
484
- return hookFn(prerenderContextPublic);
485
- }, onPrerenderStartHook, null);
474
+ const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
475
+ let result = await execHookWithoutPageContext(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
486
476
  // Before applying result
487
477
  prerenderContext.pageContexts.forEach((pageContext) => {
488
478
  ;
@@ -731,10 +721,24 @@ function assertIsNotAbort(err, urlOriginal) {
731
721
  assert(abortCall);
732
722
  assertUsage(false, `${pc.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${pc.cyan(abortCaller)} isn't supported for pre-rendered pages`);
733
723
  }
734
- function makePublic(prerenderContext) {
735
- const prerenderContextPublic = getPublicProxy(prerenderContext, 'prerenderContext', [
736
- 'output', // vite-plugin-vercel
737
- 'pageContexts' // https://vike.dev/i18n#pre-rendering
738
- ]);
724
+ function preparePrerenderContextForPublicUsage(prerenderContext) {
725
+ // TODO/v1-release: remove
726
+ if (!('prerenderPageContexts' in prerenderContext)) {
727
+ Object.defineProperty(prerenderContext, 'prerenderPageContexts', {
728
+ get() {
729
+ assertWarning(false, `prerenderPageContexts has been renamed pageContexts, see ${pc.underline(docLink)}`, {
730
+ showStackTrace: true,
731
+ onlyOnce: true
732
+ });
733
+ return prerenderContext.pageContexts;
734
+ }
735
+ });
736
+ }
737
+ // Required because of https://vike.dev/i18n#pre-rendering
738
+ // - Thus, we have to let users access the original pageContext object => we cannot use ES proxies and we cannot use preparePageContextForPublicUsage()
739
+ prerenderContext.pageContexts.forEach((pageContext) => {
740
+ changeEnumerable(pageContext, '_isOriginalObject', true);
741
+ });
742
+ const prerenderContextPublic = getProxyForPublicUsage(prerenderContext, 'prerenderContext');
739
743
  return prerenderContextPublic;
740
744
  }
@@ -13,6 +13,6 @@ export * from '../../utils/pLimit.js';
13
13
  export * from '../../utils/isFilePathAbsoluteFilesystem.js';
14
14
  export * from '../../utils/isArray.js';
15
15
  export * from '../../utils/isObject.js';
16
- export * from '../../utils/getPublicProxy.js';
17
16
  export * from '../../utils/isNullish.js';
18
17
  export * from '../../utils/preservePropertyGetters.js';
18
+ export * from '../../utils/changeEnumerable.js';
@@ -15,6 +15,6 @@ export * from '../../utils/pLimit.js';
15
15
  export * from '../../utils/isFilePathAbsoluteFilesystem.js';
16
16
  export * from '../../utils/isArray.js';
17
17
  export * from '../../utils/isObject.js';
18
- export * from '../../utils/getPublicProxy.js';
19
18
  export * from '../../utils/isNullish.js';
20
19
  export * from '../../utils/preservePropertyGetters.js';
20
+ export * from '../../utils/changeEnumerable.js';