vike 0.4.218 → 0.4.220

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 (184) hide show
  1. package/dist/cjs/__internal/index.js +11 -11
  2. package/dist/cjs/node/api/build.js +20 -11
  3. package/dist/cjs/node/api/context.js +5 -1
  4. package/dist/cjs/node/api/index.js +17 -7
  5. package/dist/cjs/node/api/prepareViteApiCall.js +39 -11
  6. package/dist/cjs/node/cli/entry.js +19 -7
  7. package/dist/cjs/node/plugin/index.js +5 -5
  8. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +3 -4
  9. package/dist/cjs/node/plugin/plugins/baseUrls.js +3 -10
  10. package/dist/cjs/node/plugin/plugins/buildConfig.js +2 -2
  11. package/dist/cjs/node/plugin/plugins/{importBuild → buildEntry}/index.js +16 -17
  12. package/dist/cjs/node/plugin/plugins/commonConfig.js +39 -4
  13. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +26 -23
  14. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +171 -68
  15. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +1 -1
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +4 -3
  17. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +1 -1
  18. package/dist/cjs/node/plugin/plugins/{vite6HmrRegressionWorkaround.js → workaroundVite6HmrRegression.js} +3 -3
  19. package/dist/cjs/node/plugin/shared/getHttpRequestAsyncStore.js +17 -7
  20. package/dist/cjs/node/prerender/isPrerenderAutoRunEnabled.js +16 -0
  21. package/dist/cjs/node/prerender/runPrerender.js +94 -66
  22. package/dist/cjs/node/prerender/utils.js +1 -0
  23. package/dist/cjs/node/runtime/globalContext.js +108 -34
  24. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +2 -2
  25. package/dist/cjs/node/runtime/index-common.js +0 -15
  26. package/dist/cjs/node/runtime/onLoad.js +17 -3
  27. package/dist/cjs/node/runtime/page-files/setup.js +2 -4
  28. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
  29. package/dist/cjs/node/runtime/renderPage/createHttpResponse/getCacheControl.js +2 -2
  30. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
  31. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -33
  32. package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +9 -1
  33. package/dist/cjs/node/runtime/renderPage.js +21 -22
  34. package/dist/cjs/node/runtime/utils.js +1 -0
  35. package/dist/cjs/node/runtime-dev/index.js +17 -7
  36. package/dist/cjs/node/shared/assertRuntimeManifest.js +0 -2
  37. package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +3 -3
  38. package/dist/cjs/shared/getPageFiles/{setPageFiles.js → getPageFiles.js} +8 -6
  39. package/dist/cjs/shared/getPageFiles.js +3 -9
  40. package/dist/cjs/shared/hooks/getHook.js +3 -3
  41. package/dist/cjs/shared/{getPageFiles/getExports.js → page-configs/getPageConfigUserFriendly.js} +113 -81
  42. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +80 -55
  43. package/dist/cjs/shared/route/loadPageRoutes.js +3 -3
  44. package/dist/cjs/shared/utils.js +1 -0
  45. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  46. package/dist/cjs/utils/assert.js +4 -3
  47. package/dist/cjs/utils/assertSetup.js +47 -16
  48. package/dist/cjs/utils/debug.js +11 -6
  49. package/dist/cjs/utils/getGlobalObject.js +1 -2
  50. package/dist/cjs/utils/objectReplace.js +9 -0
  51. package/dist/esm/__internal/index.d.ts +3 -5
  52. package/dist/esm/__internal/index.js +6 -8
  53. package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -1
  54. package/dist/esm/client/client-routing-runtime/entry.d.ts +1 -1
  55. package/dist/esm/client/client-routing-runtime/entry.js +0 -1
  56. package/dist/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +2 -2
  57. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +4 -4
  58. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +1 -1
  59. package/dist/esm/client/client-routing-runtime/initOnLinkClick.d.ts +4 -0
  60. package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +13 -3
  61. package/dist/esm/client/client-routing-runtime/initOnPopState.js +8 -0
  62. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +2 -2
  63. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +2 -2
  64. package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
  65. package/dist/esm/client/client-routing-runtime/skipLink.d.ts +2 -0
  66. package/dist/esm/client/client-routing-runtime/skipLink.js +1 -0
  67. package/dist/esm/client/server-routing-runtime/entry.d.ts +1 -1
  68. package/dist/esm/client/server-routing-runtime/entry.js +0 -1
  69. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
  70. package/dist/esm/client/server-routing-runtime/getPageContext.js +5 -2
  71. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
  72. package/dist/esm/client/shared/loadUserFilesClientSide.d.ts +2 -2
  73. package/dist/esm/client/shared/loadUserFilesClientSide.js +2 -2
  74. package/dist/esm/client/shared/normalizeClientSideUrl.js +2 -3
  75. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
  76. package/dist/esm/node/api/build.js +3 -4
  77. package/dist/esm/node/api/context.d.ts +3 -1
  78. package/dist/esm/node/api/context.js +6 -2
  79. package/dist/esm/node/api/prepareViteApiCall.d.ts +1 -1
  80. package/dist/esm/node/api/prepareViteApiCall.js +25 -7
  81. package/dist/esm/node/cli/entry.js +2 -0
  82. package/dist/esm/node/cli/parseCli.d.ts +1 -1
  83. package/dist/esm/node/plugin/index.d.ts +1 -1
  84. package/dist/esm/node/plugin/index.js +5 -5
  85. package/dist/esm/node/plugin/plugins/autoFullBuild.js +3 -4
  86. package/dist/esm/node/plugin/plugins/baseUrls.d.ts +1 -1
  87. package/dist/esm/node/plugin/plugins/baseUrls.js +4 -11
  88. package/dist/esm/node/plugin/plugins/buildConfig.js +2 -2
  89. package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.d.ts +1 -1
  90. package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/index.d.ts +2 -2
  91. package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/index.js +16 -17
  92. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +3 -0
  93. package/dist/esm/node/plugin/plugins/commonConfig.js +40 -5
  94. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +1 -1
  95. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +6 -9
  96. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +25 -22
  97. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +96 -1
  98. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +167 -64
  99. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +1 -1
  100. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +4 -3
  101. package/dist/esm/node/plugin/plugins/setGlobalContext.js +1 -1
  102. package/dist/esm/node/plugin/plugins/workaroundVite6HmrRegression.d.ts +3 -0
  103. package/dist/esm/node/plugin/plugins/{vite6HmrRegressionWorkaround.js → workaroundVite6HmrRegression.js} +3 -3
  104. package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.d.ts +5 -0
  105. package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.js +14 -0
  106. package/dist/esm/node/prerender/runPrerender.d.ts +1 -2
  107. package/dist/esm/node/prerender/runPrerender.js +78 -60
  108. package/dist/esm/node/prerender/utils.d.ts +1 -0
  109. package/dist/esm/node/prerender/utils.js +1 -0
  110. package/dist/esm/node/runtime/globalContext.d.ts +23 -7
  111. package/dist/esm/node/runtime/globalContext.js +108 -34
  112. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
  113. package/dist/esm/node/runtime/index-common.d.ts +0 -1
  114. package/dist/esm/node/runtime/index-common.js +0 -15
  115. package/dist/esm/node/runtime/index-deprecated.d.ts +1 -0
  116. package/dist/esm/node/runtime/onLoad.js +16 -2
  117. package/dist/esm/node/runtime/page-files/setup.js +3 -3
  118. package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
  119. package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.js +1 -1
  120. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -2
  121. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -1
  122. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +2 -2
  123. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  124. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +31 -46
  125. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -33
  126. package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +1 -1
  127. package/dist/esm/node/runtime/renderPage/resolveRedirects.js +9 -1
  128. package/dist/esm/node/runtime/renderPage.js +22 -23
  129. package/dist/esm/node/runtime/utils.d.ts +1 -0
  130. package/dist/esm/node/runtime/utils.js +1 -0
  131. package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -1
  132. package/dist/esm/node/shared/assertRuntimeManifest.d.ts +0 -1
  133. package/dist/esm/node/shared/assertRuntimeManifest.js +1 -3
  134. package/dist/esm/shared/getPageFiles/analyzeClientSide.js +1 -1
  135. package/dist/esm/shared/getPageFiles/{setPageFiles.d.ts → getPageFiles.d.ts} +3 -1
  136. package/dist/esm/shared/getPageFiles/{setPageFiles.js → getPageFiles.js} +8 -6
  137. package/dist/esm/shared/getPageFiles.d.ts +2 -5
  138. package/dist/esm/shared/getPageFiles.js +1 -4
  139. package/dist/esm/shared/hooks/getHook.d.ts +3 -3
  140. package/dist/esm/shared/hooks/getHook.js +1 -1
  141. package/dist/esm/shared/page-configs/Config/PageContextConfig.d.ts +9 -5
  142. package/dist/esm/shared/page-configs/Config.d.ts +20 -2
  143. package/dist/esm/shared/page-configs/PageConfig.d.ts +7 -3
  144. package/dist/esm/shared/{getPageFiles/getExports.d.ts → page-configs/getPageConfigUserFriendly.d.ts} +26 -12
  145. package/dist/esm/shared/{getPageFiles/getExports.js → page-configs/getPageConfigUserFriendly.js} +112 -80
  146. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +26 -6
  147. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +80 -55
  148. package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
  149. package/dist/esm/shared/route/loadPageRoutes.js +1 -1
  150. package/dist/esm/shared/types.d.ts +1 -1
  151. package/dist/esm/shared/utils.d.ts +1 -0
  152. package/dist/esm/shared/utils.js +1 -0
  153. package/dist/esm/types/index.d.ts +1 -1
  154. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  155. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  156. package/dist/esm/utils/assert.js +4 -3
  157. package/dist/esm/utils/assertSetup.js +47 -16
  158. package/dist/esm/utils/debug.d.ts +1 -1
  159. package/dist/esm/utils/debug.js +11 -6
  160. package/dist/esm/utils/getGlobalObject.js +1 -2
  161. package/dist/esm/utils/objectReplace.d.ts +1 -0
  162. package/dist/esm/utils/objectReplace.js +6 -0
  163. package/dist/esm/utils/projectInfo.d.ts +1 -1
  164. package/package.json +4 -13
  165. package/__internal/loadImportBuild.js +0 -3
  166. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +0 -128
  167. package/dist/cjs/node/runtime/globalContext/loadImportBuild.js +0 -25
  168. package/dist/cjs/node/runtime/page-files/getPageFilesExports.js +0 -22
  169. package/dist/esm/client/client-routing-runtime/pageFiles.d.ts +0 -1
  170. package/dist/esm/client/client-routing-runtime/pageFiles.js +0 -4
  171. package/dist/esm/client/server-routing-runtime/pageFiles.d.ts +0 -1
  172. package/dist/esm/client/server-routing-runtime/pageFiles.js +0 -4
  173. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.d.ts +0 -104
  174. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +0 -123
  175. package/dist/esm/node/plugin/plugins/vite6HmrRegressionWorkaround.d.ts +0 -3
  176. package/dist/esm/node/runtime/globalContext/loadImportBuild.d.ts +0 -18
  177. package/dist/esm/node/runtime/globalContext/loadImportBuild.js +0 -23
  178. package/dist/esm/node/runtime/page-files/getPageFilesExports.d.ts +0 -2
  179. package/dist/esm/node/runtime/page-files/getPageFilesExports.js +0 -20
  180. /package/dist/cjs/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.js +0 -0
  181. /package/dist/cjs/shared/page-configs/{getConfigValue.js → getConfigValueRuntime.js} +0 -0
  182. /package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.js +0 -0
  183. /package/dist/esm/shared/page-configs/{getConfigValue.d.ts → getConfigValueRuntime.d.ts} +0 -0
  184. /package/dist/esm/shared/page-configs/{getConfigValue.js → getConfigValueRuntime.js} +0 -0
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
@@ -30,7 +40,6 @@ exports.runPrerenderFromAPI = runPrerenderFromAPI;
30
40
  exports.runPrerenderFromCLIPrerenderCommand = runPrerenderFromCLIPrerenderCommand;
31
41
  exports.runPrerenderFromAutoRun = runPrerenderFromAutoRun;
32
42
  exports.runPrerender_forceExit = runPrerender_forceExit;
33
- require("../runtime/page-files/setup.js");
34
43
  const path_1 = __importDefault(require("path"));
35
44
  const index_js_1 = require("../../shared/route/index.js");
36
45
  const utils_js_1 = require("./utils.js");
@@ -43,7 +52,7 @@ const getPageFiles_js_1 = require("../../shared/getPageFiles.js");
43
52
  const getPageContextRequestUrl_js_1 = require("../../shared/getPageContextRequestUrl.js");
44
53
  const resolveRouteString_js_1 = require("../../shared/route/resolveRouteString.js");
45
54
  const helpers_js_1 = require("../../shared/page-configs/helpers.js");
46
- const getConfigValue_js_1 = require("../../shared/page-configs/getConfigValue.js");
55
+ const getConfigValueRuntime_js_1 = require("../../shared/page-configs/getConfigValueRuntime.js");
47
56
  const loadConfigValues_js_1 = require("../../shared/page-configs/loadConfigValues.js");
48
57
  const error_page_js_1 = require("../../shared/error-page.js");
49
58
  const getPageContextUrlComputed_js_1 = require("../../shared/getPageContextUrlComputed.js");
@@ -74,7 +83,7 @@ async function runPrerenderFromCLIPrerenderCommand() {
74
83
  }
75
84
  runPrerender_forceExit();
76
85
  }
77
- async function runPrerenderFromAutoRun(viteConfig, forceExit) {
86
+ async function runPrerenderFromAutoRun(viteConfig) {
78
87
  try {
79
88
  await runPrerender({ viteConfig });
80
89
  }
@@ -83,8 +92,6 @@ async function runPrerenderFromAutoRun(viteConfig, forceExit) {
83
92
  (0, logErrorHint_js_1.logErrorHint)(err);
84
93
  process.exit(1);
85
94
  }
86
- if (forceExit)
87
- runPrerender_forceExit();
88
95
  }
89
96
  async function runPrerender(options = {}, standaloneTrigger) {
90
97
  checkOutdatedOptions(options);
@@ -97,11 +104,11 @@ async function runPrerender(options = {}, standaloneTrigger) {
97
104
  }
98
105
  await disableReactStreaming();
99
106
  const viteConfig = await (0, vite_1.resolveConfig)(options.viteConfig || {}, 'build', 'production');
100
- assertLoadedConfig(viteConfig, options);
101
107
  const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(viteConfig);
102
108
  const { outDirClient } = (0, utils_js_1.getOutDirs)(viteConfig);
103
109
  const { root } = viteConfig;
104
110
  const prerenderConfig = vikeConfig.vikeConfigGlobal.prerender;
111
+ validatePrerenderConfig(prerenderConfig);
105
112
  if (!prerenderConfig) {
106
113
  (0, utils_js_1.assert)(standaloneTrigger);
107
114
  (0, utils_js_1.assertWarning)(prerenderConfig, `You're executing ${picocolors_1.default.cyan(standaloneTrigger)} but the config ${picocolors_1.default.cyan('prerender')} isn't set to true`, {
@@ -111,8 +118,8 @@ async function runPrerender(options = {}, standaloneTrigger) {
111
118
  const { partial = false, noExtraDir = false, parallel = true } = prerenderConfig || {};
112
119
  const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
113
120
  await (0, globalContext_js_1.initGlobalContext_runPrerender)();
114
- const renderContext = await (0, renderPageAlreadyRouted_js_1.getRenderContext)();
115
- renderContext.pageFilesAll.forEach(assertExportNames);
121
+ const globalContext = (0, globalContext_js_1.getGlobalContext)();
122
+ globalContext.pageFilesAll.forEach(assertExportNames);
116
123
  const prerenderContext = {};
117
124
  (0, utils_js_1.objectAssign)(prerenderContext, {
118
125
  _urlHandler: null,
@@ -121,10 +128,10 @@ async function runPrerender(options = {}, standaloneTrigger) {
121
128
  pageContextInit: options.pageContextInit ?? null
122
129
  });
123
130
  const doNotPrerenderList = [];
124
- await collectDoNoPrerenderList(renderContext, vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
125
- await callOnBeforePrerenderStartHooks(prerenderContext, renderContext, concurrencyLimit, doNotPrerenderList);
126
- await handlePagesWithStaticRoutes(prerenderContext, renderContext, doNotPrerenderList, concurrencyLimit);
127
- await callOnPrerenderStartHook(prerenderContext, renderContext);
131
+ await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
132
+ await callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList);
133
+ await handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit);
134
+ await callOnPrerenderStartHook(prerenderContext);
128
135
  const prerenderedPageContexts = {};
129
136
  let prerenderedCount = 0;
130
137
  const onComplete = async (htmlFile) => {
@@ -136,14 +143,14 @@ async function runPrerender(options = {}, standaloneTrigger) {
136
143
  };
137
144
  await routeAndPrerender(prerenderContext, concurrencyLimit, onComplete);
138
145
  warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerenderList);
139
- await prerender404(prerenderedPageContexts, renderContext, prerenderContext, onComplete);
146
+ await prerender404(prerenderedPageContexts, prerenderContext, onComplete);
140
147
  if (logLevel === 'info') {
141
148
  console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
142
149
  }
143
- warnMissingPages(prerenderedPageContexts, doNotPrerenderList, renderContext, partial);
150
+ warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial);
144
151
  return { viteConfig };
145
152
  }
146
- async function collectDoNoPrerenderList(renderContext, pageConfigs, doNotPrerenderList, concurrencyLimit) {
153
+ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurrencyLimit) {
147
154
  // V1 design
148
155
  pageConfigs.forEach((pageConfig) => {
149
156
  const configName = 'prerender';
@@ -161,7 +168,8 @@ async function collectDoNoPrerenderList(renderContext, pageConfigs, doNotPrerend
161
168
  });
162
169
  // Old design
163
170
  // TODO/v1-release: remove
164
- await Promise.all(renderContext.pageFilesAll
171
+ const globalContext = (0, globalContext_js_1.getGlobalContext)();
172
+ await Promise.all(globalContext.pageFilesAll
165
173
  .filter((p) => {
166
174
  assertExportNames(p);
167
175
  if (!p.exportNames?.includes('doNotPrerender'))
@@ -173,8 +181,8 @@ async function collectDoNoPrerenderList(renderContext, pageConfigs, doNotPrerend
173
181
  (0, utils_js_1.assert)(p.loadFile);
174
182
  await p.loadFile();
175
183
  })));
176
- renderContext.allPageIds.forEach((pageId) => {
177
- const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(renderContext.pageFilesAll, pageId);
184
+ globalContext.allPageIds.forEach((pageId) => {
185
+ const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(globalContext.pageFilesAll, pageId);
178
186
  for (const p of pageFilesServerSide) {
179
187
  if (!p.exportNames?.includes('doNotPrerender'))
180
188
  continue;
@@ -203,10 +211,11 @@ function assertExportNames(pageFile) {
203
211
  const { exportNames, fileType } = pageFile;
204
212
  (0, utils_js_1.assert)(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
205
213
  }
206
- async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext, concurrencyLimit, doNotPrerenderList) {
214
+ async function callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList) {
207
215
  const onBeforePrerenderStartHooks = [];
216
+ const globalContext = (0, globalContext_js_1.getGlobalContext)();
208
217
  // V1 design
209
- await Promise.all(renderContext.pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
218
+ await Promise.all(globalContext.pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
210
219
  const hookName = 'onBeforePrerenderStart';
211
220
  const pageConfigLoaded = await (0, loadConfigValues_js_1.loadConfigValues)(pageConfig, false);
212
221
  const hook = (0, getHook_js_1.getHookFromPageConfig)(pageConfigLoaded, hookName);
@@ -222,7 +231,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
222
231
  });
223
232
  })));
224
233
  // 0.4 design
225
- await Promise.all(renderContext.pageFilesAll
234
+ await Promise.all(globalContext.pageFilesAll
226
235
  .filter((p) => {
227
236
  assertExportNames(p);
228
237
  if (!p.exportNames?.includes('prerender'))
@@ -263,7 +272,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
263
272
  (0, utils_js_1.assertUsage)(false, `URL ${picocolors_1.default.cyan(url)} provided ${providedTwice}. Make sure to provide the URL only once instead.`);
264
273
  }
265
274
  }
266
- const pageContextNew = createPageContext(url, renderContext, prerenderContext);
275
+ const pageContextNew = createPageContext(url, prerenderContext);
267
276
  (0, utils_js_1.objectAssign)(pageContextNew, {
268
277
  _providedByHook: {
269
278
  hookFilePath,
@@ -280,9 +289,10 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
280
289
  });
281
290
  })));
282
291
  }
283
- async function handlePagesWithStaticRoutes(prerenderContext, renderContext, doNotPrerenderList, concurrencyLimit) {
292
+ async function handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit) {
284
293
  // Pre-render pages with a static route
285
- await Promise.all(renderContext.pageRoutes.map((pageRoute) => concurrencyLimit(async () => {
294
+ const globalContext = (0, globalContext_js_1.getGlobalContext)();
295
+ await Promise.all(globalContext.pageRoutes.map((pageRoute) => concurrencyLimit(async () => {
286
296
  const { pageId } = pageRoute;
287
297
  if (doNotPrerenderList.find((p) => p.pageId === pageId)) {
288
298
  return;
@@ -307,7 +317,7 @@ async function handlePagesWithStaticRoutes(prerenderContext, renderContext, doNo
307
317
  return;
308
318
  }
309
319
  const routeParams = {};
310
- const pageContext = createPageContext(urlOriginal, renderContext, prerenderContext);
320
+ const pageContext = createPageContext(urlOriginal, prerenderContext);
311
321
  (0, utils_js_1.objectAssign)(pageContext, {
312
322
  _providedByHook: null,
313
323
  routeParams,
@@ -325,7 +335,7 @@ async function handlePagesWithStaticRoutes(prerenderContext, renderContext, doNo
325
335
  prerenderContext.pageContexts.push(pageContext);
326
336
  })));
327
337
  }
328
- function createPageContext(urlOriginal, renderContext, prerenderContext) {
338
+ function createPageContext(urlOriginal, prerenderContext) {
329
339
  const pageContext = {
330
340
  _urlHandler: null,
331
341
  _urlRewrite: null,
@@ -337,17 +347,18 @@ function createPageContext(urlOriginal, renderContext, prerenderContext) {
337
347
  };
338
348
  (0, utils_js_1.objectAssign)(pageContextInit, prerenderContext.pageContextInit);
339
349
  {
340
- const pageContextInitEnhanced = (0, renderPageAlreadyRouted_js_1.getPageContextInitEnhanced)(pageContextInit, renderContext);
350
+ const pageContextInitEnhanced = (0, renderPageAlreadyRouted_js_1.getPageContextInitEnhanced)(pageContextInit);
341
351
  (0, utils_js_1.objectAssign)(pageContext, pageContextInitEnhanced);
342
352
  }
343
353
  return pageContext;
344
354
  }
345
- async function callOnPrerenderStartHook(prerenderContext, renderContext) {
355
+ async function callOnPrerenderStartHook(prerenderContext) {
356
+ const globalContext = (0, globalContext_js_1.getGlobalContext)();
346
357
  let onPrerenderStartHook;
347
358
  // V1 design
348
- if (renderContext.pageConfigs.length > 0) {
359
+ if (globalContext.pageConfigs.length > 0) {
349
360
  const hookName = 'onPrerenderStart';
350
- const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(renderContext.pageConfigGlobal, hookName);
361
+ const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(globalContext.pageConfigGlobal, hookName);
351
362
  if (hook) {
352
363
  (0, utils_js_1.assert)(hook.hookName === 'onPrerenderStart');
353
364
  onPrerenderStartHook = {
@@ -359,9 +370,9 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
359
370
  }
360
371
  // Old design
361
372
  // TODO/v1-release: remove
362
- if (renderContext.pageConfigs.length === 0) {
373
+ if (globalContext.pageConfigs.length === 0) {
363
374
  const hookTimeout = (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerender');
364
- const pageFilesWithOnBeforePrerenderHook = renderContext.pageFilesAll.filter((p) => {
375
+ const pageFilesWithOnBeforePrerenderHook = globalContext.pageFilesAll.filter((p) => {
365
376
  assertExportNames(p);
366
377
  if (!p.exportNames?.includes('onBeforePrerender'))
367
378
  return false;
@@ -506,10 +517,10 @@ async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete)
506
517
  if (pageContext._pageConfigs.length > 0) {
507
518
  const pageConfig = pageContext._pageConfigs.find((p) => p.pageId === pageId);
508
519
  (0, utils_js_1.assert)(pageConfig);
509
- usesClientRouter = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
520
+ usesClientRouter = (0, getConfigValueRuntime_js_1.getConfigValueRuntime)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
510
521
  }
511
522
  else {
512
- usesClientRouter = globalContext.pluginManifest.usesClientRouter;
523
+ usesClientRouter = globalContext.usesClientRouter;
513
524
  }
514
525
  }
515
526
  (0, utils_js_1.objectAssign)(pageContext, {
@@ -549,27 +560,28 @@ function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerende
549
560
  (0, utils_js_1.assertWarning)(false, `The ${providedByHook.hookName}() hook defined by ${providedByHook.hookFilePath} returns the URL ${picocolors_1.default.cyan(urlOriginal)}, while ${setByConfigFile} sets the config ${picocolors_1.default.cyan(setByConfigName)} to ${picocolors_1.default.cyan(String(setByConfigValue))}. This is contradictory: either don't set the config ${picocolors_1.default.cyan(setByConfigName)} to ${picocolors_1.default.cyan(String(setByConfigValue))} or remove the URL ${picocolors_1.default.cyan(urlOriginal)} from the list of URLs to be pre-rendered.`, { onlyOnce: true });
550
561
  });
551
562
  }
552
- function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, renderContext, partial) {
553
- const isV1 = renderContext.pageConfigs.length > 0;
563
+ function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial) {
564
+ const globalContext = (0, globalContext_js_1.getGlobalContext)();
565
+ const isV1 = globalContext.pageConfigs.length > 0;
554
566
  const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
555
567
  /* TODO/after-v1-design-release: document setting `prerender: false` as an alternative to using prerender.partial (both in the warnings and the docs)
556
568
  const optOutName = isV1 ? 'prerender' : 'doNotPrerender'
557
569
  const msgAddendum = `Explicitly opt-out by setting the config ${optOutName} to ${isV1 ? 'false' : 'true'} or use the option prerender.partial`
558
570
  */
559
- renderContext.allPageIds
571
+ globalContext.allPageIds
560
572
  .filter((pageId) => !prerenderedPageContexts[pageId])
561
573
  .filter((pageId) => !doNotPrerenderList.find((p) => p.pageId === pageId))
562
- .filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, renderContext.pageConfigs))
574
+ .filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, globalContext.pageConfigs))
563
575
  .forEach((pageId) => {
564
576
  const pageAt = isV1 ? pageId : `\`${pageId}.page.*\``;
565
577
  (0, utils_js_1.assertWarning)(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender#partial) to suppress this warning.`, { onlyOnce: true });
566
578
  });
567
579
  }
568
- async function prerender404(prerenderedPageContexts, renderContext, prerenderContext, onComplete) {
580
+ async function prerender404(prerenderedPageContexts, prerenderContext, onComplete) {
569
581
  if (!Object.values(prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
570
582
  let result;
571
583
  try {
572
- result = await (0, renderPageAlreadyRouted_js_1.prerender404Page)(renderContext, prerenderContext.pageContextInit);
584
+ result = await (0, renderPageAlreadyRouted_js_1.prerender404Page)(prerenderContext.pageContextInit);
573
585
  }
574
586
  catch (err) {
575
587
  assertIsNotAbort(err, 'the 404 page');
@@ -700,25 +712,6 @@ async function disableReactStreaming() {
700
712
  const { disable } = mod;
701
713
  disable();
702
714
  }
703
- function assertLoadedConfig(viteConfig, options) {
704
- if (viteConfig.plugins.some((p) => p.name.startsWith('vike'))) {
705
- return;
706
- }
707
- const { configFile } = viteConfig;
708
- if (configFile) {
709
- (0, utils_js_1.assertUsage)(false, `${configFile} doesn't install the vike plugin`);
710
- }
711
- else {
712
- if (!options.viteConfig) {
713
- (0, utils_js_1.assertUsage)(false, `[prerender()] No vite.config.js file found at ${process.cwd()}. Use the option ${picocolors_1.default.cyan('prerender({ viteConfig })')}.`, { showStackTrace: true });
714
- }
715
- else {
716
- (0, utils_js_1.assertUsage)(false, `[prerender()] The Vite config ${picocolors_1.default.cyan('prerender({ viteConfig })')} is missing the vike plugin.`, {
717
- showStackTrace: true
718
- });
719
- }
720
- }
721
- }
722
715
  function isSameUrl(url1, url2) {
723
716
  return normalizeUrl(url1) === normalizeUrl(url2);
724
717
  }
@@ -768,3 +761,38 @@ function makePageContextComputedUrlNonEnumerable(pageContexts) {
768
761
  });
769
762
  }
770
763
  }
764
+ function validatePrerenderConfig(
765
+ // Guaranteed by configDef.type to be either an object or boolean
766
+ prerenderConfig) {
767
+ if (!prerenderConfig || typeof prerenderConfig === 'boolean')
768
+ return;
769
+ (0, utils_js_1.assert)((0, utils_js_1.isObject)(prerenderConfig));
770
+ const wrongValue = (() => {
771
+ {
772
+ const p = 'partial';
773
+ if (!(0, utils_js_1.hasProp)(prerenderConfig, p, 'boolean') && !(0, utils_js_1.hasProp)(prerenderConfig, p, 'undefined'))
774
+ return { prop: p, errMsg: 'should be a boolean' };
775
+ }
776
+ {
777
+ const p = 'noExtraDir';
778
+ if (!(0, utils_js_1.hasProp)(prerenderConfig, p, 'boolean') && !(0, utils_js_1.hasProp)(prerenderConfig, p, 'undefined'))
779
+ return { prop: p, errMsg: 'should be a boolean' };
780
+ }
781
+ {
782
+ const p = 'disableAutoRun';
783
+ if (!(0, utils_js_1.hasProp)(prerenderConfig, p, 'boolean') && !(0, utils_js_1.hasProp)(prerenderConfig, p, 'undefined'))
784
+ return { prop: p, errMsg: 'should be a boolean' };
785
+ }
786
+ {
787
+ const p = 'parallel';
788
+ if (!(0, utils_js_1.hasProp)(prerenderConfig, p, 'boolean') &&
789
+ !(0, utils_js_1.hasProp)(prerenderConfig, p, 'number') &&
790
+ !(0, utils_js_1.hasProp)(prerenderConfig, p, 'undefined'))
791
+ return { prop: p, errMsg: 'should be a boolean or a number' };
792
+ }
793
+ })();
794
+ if (wrongValue) {
795
+ const { prop, errMsg } = wrongValue;
796
+ (0, utils_js_1.assertUsage)(false, `Setting ${picocolors_1.default.cyan(`prerender.${prop}`)} ${errMsg}`);
797
+ }
798
+ }
@@ -31,4 +31,5 @@ __exportStar(require("../../utils/assertSetup.js"), exports);
31
31
  __exportStar(require("../../utils/pLimit.js"), exports);
32
32
  __exportStar(require("../../utils/isFilePathAbsoluteFilesystem.js"), exports);
33
33
  __exportStar(require("../../utils/isArray.js"), exports);
34
+ __exportStar(require("../../utils/isObject.js"), exports);
34
35
  __exportStar(require("../../utils/changeEnumerable.js"), exports);
@@ -17,23 +17,26 @@ exports.setGlobalContext_viteConfig = setGlobalContext_viteConfig;
17
17
  exports.setGlobalContext_vikeConfig = setGlobalContext_vikeConfig;
18
18
  exports.setGlobalContext_isViteDev = setGlobalContext_isViteDev;
19
19
  exports.setGlobalContext_isPrerendering = setGlobalContext_isPrerendering;
20
+ exports.setGlobalContext_buildEntry = setGlobalContext_buildEntry;
21
+ exports.clearGlobalContext = clearGlobalContext;
20
22
  const utils_js_1 = require("./utils.js");
21
- const loadImportBuild_js_1 = require("./globalContext/loadImportBuild.js");
22
- const getPageFiles_js_1 = require("../../shared/getPageFiles.js");
23
+ const runtime_1 = require("@brillout/vite-plugin-server-entry/runtime");
24
+ const virtualFileImportUserCode_js_1 = require("../shared/virtual-files/virtualFileImportUserCode.js");
25
+ const getPageFiles_js_1 = require("../../shared/getPageFiles/getPageFiles.js");
23
26
  const assertPluginManifest_js_1 = require("../shared/assertPluginManifest.js");
24
27
  const assertRuntimeManifest_js_1 = require("../shared/assertRuntimeManifest.js");
25
28
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
26
- const getPageFilesExports_js_1 = require("./page-files/getPageFilesExports.js");
27
29
  const resolveBase_js_1 = require("../shared/resolveBase.js");
28
- const globalObject = (0, utils_js_1.getGlobalObject)('globalContext.ts', (() => {
29
- const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = (0, utils_js_1.genPromise)();
30
- return {
31
- viteDevServerPromise,
32
- viteDevServerPromiseResolve
33
- };
34
- })());
30
+ const loadPageRoutes_js_1 = require("../../shared/route/loadPageRoutes.js");
31
+ const assertV1Design_js_1 = require("../shared/assertV1Design.js");
32
+ const debug = (0, utils_js_1.createDebugger)('vike:globalContext');
33
+ const globalObject = (0, utils_js_1.getGlobalObject)('globalContext.ts', getInitialGlobalContext());
34
+ initDevEntry();
35
35
  function getGlobalContext() {
36
- (0, utils_js_1.assert)(globalObject.globalContext);
36
+ if (!globalObject.globalContext) {
37
+ debug('getGlobalContext()', new Error().stack);
38
+ (0, utils_js_1.assert)(false);
39
+ }
37
40
  return globalObject.globalContext;
38
41
  }
39
42
  /** @experimental https://vike.dev/getGlobalContext */
@@ -51,6 +54,7 @@ async function getGlobalContextAsync(isProduction) {
51
54
  }
52
55
  function makePublic(globalContext) {
53
56
  const globalContextPublic = {
57
+ // TODO/now: add viteConfig and vikeConfig
54
58
  assetsManifest: globalContext.assetsManifest
55
59
  };
56
60
  // Add internals (and prepended _ prefix to their keys)
@@ -112,9 +116,11 @@ function getViteConfig() {
112
116
  return globalObject.viteConfig ?? null;
113
117
  }
114
118
  async function initGlobalContext_renderPage() {
119
+ debug('initGlobalContext_renderPage()');
115
120
  await initGlobalContext(!globalObject.isViteDev);
116
121
  }
117
122
  async function initGlobalContext_runPrerender() {
123
+ debug('initGlobalContext_runPrerender()');
118
124
  if (globalObject.initGlobalContext_runPrerender_alreadyCalled)
119
125
  return;
120
126
  globalObject.initGlobalContext_runPrerender_alreadyCalled = true;
@@ -128,6 +134,7 @@ async function initGlobalContext_runPrerender() {
128
134
  await initGlobalContext(true);
129
135
  }
130
136
  async function initGlobalContext_getGlobalContextAsync(isProduction) {
137
+ debug('initGlobalContext_getGlobalContextAsync()');
131
138
  if (!isProduction) {
132
139
  const waitFor = 20;
133
140
  const timeout = setTimeout(() => {
@@ -141,6 +148,7 @@ async function initGlobalContext_getGlobalContextAsync(isProduction) {
141
148
  }
142
149
  await initGlobalContext(isProduction);
143
150
  }
151
+ // TODO/now: refactor: move this to the top of the file
144
152
  async function initGlobalContext(isProduction) {
145
153
  if (globalObject.globalContext) {
146
154
  (0, utils_js_1.assert)(globalObject.globalContext.isProduction === isProduction);
@@ -155,41 +163,45 @@ async function initGlobalContext(isProduction) {
155
163
  (0, utils_js_1.assert)(vikeConfig);
156
164
  (0, utils_js_1.assert)(viteDevServer);
157
165
  (0, utils_js_1.assert)(!isPrerendering);
158
- const vikeConfigGlobal = vikeConfig.vikeConfigGlobal;
159
- const pluginManifest = getRuntimeManifest(vikeConfigGlobal, viteConfig);
166
+ const { globalConfig, userFiles } = await getPageRuntimeInfo(isProduction);
167
+ const pluginManifest = getRuntimeManifest(vikeConfig.vikeConfigGlobal, viteConfig);
160
168
  globalObject.globalContext = {
161
169
  isProduction: false,
162
170
  isPrerendering: false,
163
171
  assetsManifest: null,
164
- pluginManifest: null,
165
172
  viteDevServer,
166
173
  viteConfig,
167
- vikeConfig,
174
+ vikeConfig: {
175
+ global: globalConfig
176
+ },
177
+ ...userFiles,
168
178
  baseServer: pluginManifest.baseServer,
169
179
  baseAssets: pluginManifest.baseAssets,
170
180
  includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
171
- redirects: pluginManifest.redirects,
172
181
  trailingSlash: pluginManifest.trailingSlash,
173
182
  disableUrlNormalization: pluginManifest.disableUrlNormalization
174
183
  };
175
184
  }
176
185
  else {
177
- const buildEntries = await (0, loadImportBuild_js_1.loadImportBuild)(globalObject.outDirRoot);
178
- assertBuildEntries(buildEntries, isPrerendering ?? false);
179
- const { pageFiles, assetsManifest, pluginManifest } = buildEntries;
180
- (0, getPageFiles_js_1.setPageFiles)(pageFiles);
186
+ const buildEntry = await getBuildEntry(globalObject.outDirRoot, isPrerendering);
187
+ const { assetsManifest, pluginManifest } = buildEntry;
188
+ (0, getPageFiles_js_1.setPageFiles)(buildEntry.pageFiles);
189
+ const { globalConfig, userFiles } = await getPageRuntimeInfo(isProduction);
181
190
  assertViteManifest(assetsManifest);
182
191
  (0, assertPluginManifest_js_1.assertPluginManifest)(pluginManifest);
183
192
  const globalContext = {
184
193
  isProduction: true,
185
194
  assetsManifest,
186
- pluginManifest,
195
+ vikeConfig: {
196
+ global: globalConfig
197
+ },
198
+ ...userFiles,
187
199
  viteDevServer: null,
188
200
  baseServer: pluginManifest.baseServer,
189
201
  baseAssets: pluginManifest.baseAssets,
190
202
  includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
191
- redirects: pluginManifest.redirects,
192
203
  trailingSlash: pluginManifest.trailingSlash,
204
+ usesClientRouter: pluginManifest.usesClientRouter,
193
205
  disableUrlNormalization: pluginManifest.disableUrlNormalization
194
206
  };
195
207
  if (isPrerendering) {
@@ -209,29 +221,35 @@ async function initGlobalContext(isProduction) {
209
221
  }
210
222
  }
211
223
  }
224
+ async function getPageRuntimeInfo(isProduction) {
225
+ const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig } = await (0, getPageFiles_js_1.getPageFilesAll)(false, isProduction);
226
+ const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
227
+ const userFiles = {
228
+ pageFilesAll,
229
+ pageConfigs,
230
+ pageConfigGlobal,
231
+ allPageIds,
232
+ pageRoutes,
233
+ onBeforeRouteHook
234
+ };
235
+ (0, assertV1Design_js_1.assertV1Design)(
236
+ // pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
237
+ pageConfigs.length > 0, pageFilesAll);
238
+ return { userFiles, globalConfig };
239
+ }
212
240
  function getRuntimeManifest(vikeConfigGlobal, viteConfig) {
213
- const { includeAssetsImportedByServer, redirects, trailingSlash, disableUrlNormalization } = vikeConfigGlobal;
241
+ const { includeAssetsImportedByServer, trailingSlash, disableUrlNormalization } = vikeConfigGlobal;
214
242
  const { baseServer, baseAssets } = (0, resolveBase_js_1.resolveBaseFromResolvedConfig)(vikeConfigGlobal.baseServer, vikeConfigGlobal.baseAssets, viteConfig);
215
243
  const manifest = {
216
244
  baseServer,
217
245
  baseAssets,
218
246
  includeAssetsImportedByServer,
219
- redirects,
220
247
  trailingSlash,
221
248
  disableUrlNormalization
222
249
  };
223
250
  (0, assertRuntimeManifest_js_1.assertRuntimeManifest)(manifest);
224
251
  return manifest;
225
252
  }
226
- function assertBuildEntries(buildEntries, isPreRendering) {
227
- const errMsg = [
228
- `You are tyring to run`,
229
- isPreRendering ? 'pre-rendering' : 'the server for production',
230
- `but your app isn't built yet. Run ${picocolors_1.default.cyan('$ vike build')} before `,
231
- isPreRendering ? 'pre-rendering.' : 'running the server.'
232
- ].join(' ');
233
- (0, utils_js_1.assertUsage)(buildEntries, errMsg);
234
- }
235
253
  function assertViteManifest(manifest) {
236
254
  (0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(manifest));
237
255
  /* We should include these assertions but we don't as a workaround for PWA manifests: https://github.com/vikejs/vike/issues/769
@@ -248,5 +266,61 @@ function assertViteManifest(manifest) {
248
266
  function eagerlyLoadUserFiles() {
249
267
  // Other than here, the getPageFilesExports() function is only called only upon calling the renderPage() function.
250
268
  // We call it as early as possible here for better performance.
251
- (0, getPageFilesExports_js_1.getPageFilesExports)();
269
+ getPageFilesExports();
270
+ }
271
+ async function getBuildEntry(outDir, isPrerendering) {
272
+ debug('getBuildEntry()');
273
+ if (!globalObject.buildEntry) {
274
+ debug('importServerProductionEntry()');
275
+ // importServerProductionEntry() loads dist/server/entry.mjs which calls setGlobalContext_buildEntry()
276
+ await (0, runtime_1.importServerProductionEntry)({ outDir, doNotLoadServer: isPrerendering });
277
+ if (!globalObject.buildEntry) {
278
+ debug('globalObject.buildEntryPrevious');
279
+ // Needed, for example, when calling the API prerender() then preview() because both trigger a importServerProductionEntry() call but only the first only is applied because of the import() cache. (A proper implementation would be to clear the import() cache, but it probably isn't possible on platforms such as Cloudflare Workers.)
280
+ globalObject.buildEntry = globalObject.buildEntryPrevious;
281
+ }
282
+ (0, utils_js_1.assert)(globalObject.buildEntry);
283
+ }
284
+ const { buildEntry } = globalObject;
285
+ (0, utils_js_1.assert)((0, utils_js_1.isObject)(buildEntry));
286
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pageFiles', 'object'));
287
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'assetsManifest', 'object'));
288
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pluginManifest', 'object'));
289
+ return buildEntry;
290
+ }
291
+ function setGlobalContext_buildEntry(buildEntry) {
292
+ debug('setGlobalContext_buildEntry()');
293
+ globalObject.buildEntry = buildEntry;
294
+ globalObject.buildEntryPrevious = buildEntry;
295
+ }
296
+ function initDevEntry() {
297
+ (0, getPageFiles_js_1.setPageFilesAsync)(getPageFilesExports);
298
+ }
299
+ async function getPageFilesExports() {
300
+ const viteDevServer = getViteDevServer();
301
+ (0, utils_js_1.assert)(viteDevServer);
302
+ let moduleExports;
303
+ try {
304
+ moduleExports = await viteDevServer.ssrLoadModule(virtualFileImportUserCode_js_1.virtualFileIdImportUserCodeServer);
305
+ }
306
+ catch (err) {
307
+ (0, utils_js_1.debugGlob)(`Glob error: ${virtualFileImportUserCode_js_1.virtualFileIdImportUserCodeServer} transpile error: `, err);
308
+ throw err;
309
+ }
310
+ moduleExports = moduleExports.default || moduleExports;
311
+ (0, utils_js_1.debugGlob)('Glob result: ', moduleExports);
312
+ (0, utils_js_1.assert)((0, utils_js_1.isObject)(moduleExports));
313
+ return moduleExports;
314
+ }
315
+ function clearGlobalContext() {
316
+ debug('clearGlobalContext()');
317
+ (0, utils_js_1.objectReplace)(globalObject, getInitialGlobalContext(), ['buildEntryPrevious']);
318
+ }
319
+ function getInitialGlobalContext() {
320
+ debug('getInitialGlobalContext()');
321
+ const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = (0, utils_js_1.genPromise)();
322
+ return {
323
+ viteDevServerPromise,
324
+ viteDevServerPromiseResolve
325
+ };
252
326
  }
@@ -10,7 +10,7 @@ const sanitizeJson_js_1 = require("./sanitizeJson.js");
10
10
  const inferHtmlTags_js_1 = require("./inferHtmlTags.js");
11
11
  const mergeScriptTags_js_1 = require("./mergeScriptTags.js");
12
12
  const helpers_js_1 = require("../../../../shared/page-configs/helpers.js");
13
- const getConfigValue_js_1 = require("../../../../shared/page-configs/getConfigValue.js");
13
+ const getConfigValueRuntime_js_1 = require("../../../../shared/page-configs/getConfigValueRuntime.js");
14
14
  const globalContext_js_1 = require("../../globalContext.js");
15
15
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
16
16
  const getConfigDefinedAt_js_1 = require("../../../../shared/page-configs/getConfigDefinedAt.js");
@@ -218,7 +218,7 @@ function getInjectScriptsAt(pageId, pageConfigs) {
218
218
  if (pageConfigs.length === 0)
219
219
  return null; // only support V1 design
220
220
  const pageConfig = (0, helpers_js_1.getPageConfig)(pageId, pageConfigs);
221
- const configValue = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'injectScriptsAt');
221
+ const configValue = (0, getConfigValueRuntime_js_1.getConfigValueRuntime)(pageConfig, 'injectScriptsAt');
222
222
  if (!configValue)
223
223
  return null;
224
224
  const injectScriptsAt = configValue.value;
@@ -24,18 +24,3 @@ Object.defineProperty(exports, "_injectAssets", { enumerable: true, get: functio
24
24
  // TODO/v1-release: remove
25
25
  var createPageRenderer_js_1 = require("../createPageRenderer.js");
26
26
  Object.defineProperty(exports, "createPageRenderer", { enumerable: true, get: function () { return createPageRenderer_js_1.createPageRenderer; } });
27
- addEcosystemStamp();
28
- require("./page-files/setup.js");
29
- // Used by:
30
- // - Telefunc (to detect the user's stack https://github.com/brillout/telefunc/blob/8288310e88e06a42b710d39c39fb502364ca6d30/telefunc/utils/isVikeApp.ts#L4)
31
- function addEcosystemStamp() {
32
- const g = globalThis;
33
- g._isVikeApp =
34
- /* Don't set to true so that consumers do `!!globalThis._isVikeApp` instead of `globalThis._isVikeApp === true`.
35
- true
36
- */
37
- // We use an object so that we can eventually, in the future, add helpful information as needed. (E.g. the Vike version, or global settings.)
38
- {};
39
- // We keep the old stamp for older Telefunc versions
40
- g._isVitePluginSsr = true;
41
- }