vike 0.4.220-commit-af5c91f → 0.4.221-commit-8577456

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 (162) hide show
  1. package/dist/cjs/__internal/index.js +5 -23
  2. package/dist/cjs/node/api/build.js +55 -11
  3. package/dist/cjs/node/api/prepareViteApiCall.js +20 -17
  4. package/dist/cjs/node/api/prerender.js +1 -0
  5. package/dist/cjs/node/api/utils.js +1 -0
  6. package/dist/cjs/node/plugin/index.js +2 -0
  7. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +9 -20
  8. package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
  9. package/dist/cjs/node/plugin/plugins/buildApp.js +72 -0
  10. package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +8 -10
  11. package/dist/cjs/node/plugin/plugins/buildConfig.js +5 -5
  12. package/dist/cjs/node/plugin/plugins/buildEntry/index.js +2 -2
  13. package/dist/cjs/node/plugin/plugins/commonConfig.js +1 -1
  14. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +1 -1
  15. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +8 -2
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +31 -31
  17. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +53 -21
  18. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.js → getVikeConfig/getConfigFileExport.js} +2 -2
  19. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +159 -0
  20. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +3 -3
  21. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +205 -343
  22. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{debug.js → virtual-files/debug.js} +1 -1
  23. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.js → virtual-files/getVirtualFilePageConfigValuesAll.js} +7 -7
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +3 -3
  25. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +1 -4
  26. package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +20 -0
  27. package/dist/cjs/node/plugin/shared/getOutDirs.js +50 -38
  28. package/dist/cjs/node/prerender/runPrerender.js +29 -30
  29. package/dist/cjs/node/runtime/globalContext.js +186 -100
  30. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +2 -3
  31. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -3
  32. package/dist/cjs/node/runtime/html/injectAssets.js +4 -4
  33. package/dist/cjs/node/runtime/html/renderHtml.js +4 -5
  34. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -3
  35. package/dist/cjs/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +2 -4
  36. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +4 -4
  37. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +3 -5
  38. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +5 -4
  39. package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -2
  40. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +10 -9
  41. package/dist/cjs/node/runtime/renderPage.js +27 -30
  42. package/dist/cjs/node/runtime/utils.js +1 -0
  43. package/dist/cjs/node/runtime-dev/createDevMiddleware.js +5 -3
  44. package/dist/cjs/node/shared/resolveBase.js +3 -5
  45. package/dist/cjs/shared/getPageConfigsRuntime.js +20 -0
  46. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +4 -3
  47. package/dist/cjs/shared/getPageFiles.js +1 -3
  48. package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +13 -4
  49. package/dist/cjs/shared/route/loadPageRoutes.js +1 -0
  50. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  51. package/dist/cjs/utils/assertSetup.js +1 -1
  52. package/dist/cjs/utils/debug.js +8 -6
  53. package/dist/cjs/utils/findFile.js +1 -0
  54. package/dist/cjs/utils/objectAssignSafe.js +7 -0
  55. package/dist/esm/__internal/index.d.ts +2 -2
  56. package/dist/esm/__internal/index.js +7 -26
  57. package/dist/esm/client/client-routing-runtime/createPageContext.js +5 -9
  58. package/dist/esm/client/server-routing-runtime/getPageContext.js +3 -4
  59. package/dist/esm/client/shared/loadUserFilesClientSide.js +3 -2
  60. package/dist/esm/node/api/build.js +23 -12
  61. package/dist/esm/node/api/prepareViteApiCall.d.ts +4 -2
  62. package/dist/esm/node/api/prepareViteApiCall.js +20 -17
  63. package/dist/esm/node/api/prerender.js +1 -0
  64. package/dist/esm/node/api/utils.d.ts +1 -0
  65. package/dist/esm/node/api/utils.js +1 -0
  66. package/dist/esm/node/plugin/index.js +2 -0
  67. package/dist/esm/node/plugin/plugins/autoFullBuild.js +10 -21
  68. package/dist/esm/node/plugin/plugins/baseUrls.js +1 -1
  69. package/dist/esm/node/plugin/plugins/buildApp.d.ts +3 -0
  70. package/dist/esm/node/plugin/plugins/buildApp.js +70 -0
  71. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.d.ts +0 -2
  72. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +8 -10
  73. package/dist/esm/node/plugin/plugins/buildConfig.js +6 -6
  74. package/dist/esm/node/plugin/plugins/buildEntry/index.js +2 -2
  75. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -1
  76. package/dist/esm/node/plugin/plugins/commonConfig.js +1 -1
  77. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +1 -1
  78. package/dist/esm/node/plugin/plugins/importUserCode/index.js +8 -2
  79. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.d.ts +6 -0
  80. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +31 -31
  81. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +2 -2
  82. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +52 -20
  83. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.js → getVikeConfig/getConfigFileExport.js} +2 -2
  84. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.d.ts +39 -0
  85. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +154 -0
  86. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.d.ts +2 -2
  87. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +3 -3
  88. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -38
  89. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +208 -346
  90. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{debug.js → virtual-files/debug.js} +1 -1
  91. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.js → virtual-files/getVirtualFilePageConfigValuesAll.js} +7 -7
  92. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +3 -3
  93. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.d.ts → virtual-files/isRuntimeEnvMatch.d.ts} +1 -1
  94. package/dist/esm/node/plugin/plugins/setGlobalContext.js +2 -5
  95. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.d.ts +2 -0
  96. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +17 -0
  97. package/dist/esm/node/plugin/shared/getOutDirs.d.ts +1 -1
  98. package/dist/esm/node/plugin/shared/getOutDirs.js +50 -38
  99. package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +2 -5
  100. package/dist/esm/node/prerender/runPrerender.d.ts +2 -2
  101. package/dist/esm/node/prerender/runPrerender.js +30 -31
  102. package/dist/esm/node/runtime/globalContext.d.ts +31 -29
  103. package/dist/esm/node/runtime/globalContext.js +186 -100
  104. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.d.ts +1 -1
  105. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +2 -3
  106. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +4 -1
  107. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -3
  108. package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -0
  109. package/dist/esm/node/runtime/html/injectAssets.js +4 -4
  110. package/dist/esm/node/runtime/html/renderHtml.js +4 -5
  111. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -1
  112. package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -3
  113. package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.d.ts +1 -1
  114. package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +2 -4
  115. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -0
  116. package/dist/esm/node/runtime/renderPage/getPageAssets.js +4 -4
  117. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -0
  118. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +3 -5
  119. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -0
  120. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +6 -5
  121. package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -0
  122. package/dist/esm/node/runtime/renderPage/log404/index.js +1 -2
  123. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -0
  124. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +21 -5
  125. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +10 -9
  126. package/dist/esm/node/runtime/renderPage.js +28 -31
  127. package/dist/esm/node/runtime/utils.d.ts +1 -0
  128. package/dist/esm/node/runtime/utils.js +1 -0
  129. package/dist/esm/node/runtime-dev/createDevMiddleware.js +5 -3
  130. package/dist/esm/node/shared/resolveBase.d.ts +2 -1
  131. package/dist/esm/node/shared/resolveBase.js +3 -5
  132. package/dist/esm/shared/getPageConfigsRuntime.d.ts +13 -0
  133. package/dist/esm/shared/getPageConfigsRuntime.js +18 -0
  134. package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +1 -1
  135. package/dist/esm/shared/getPageFiles/parseGlobResults.js +4 -3
  136. package/dist/esm/shared/getPageFiles.d.ts +0 -1
  137. package/dist/esm/shared/getPageFiles.js +0 -1
  138. package/dist/esm/shared/page-configs/Config.d.ts +7 -0
  139. package/dist/esm/shared/page-configs/PageConfig.d.ts +9 -5
  140. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +5 -7
  141. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +13 -4
  142. package/dist/esm/shared/route/loadPageRoutes.js +1 -0
  143. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  144. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  145. package/dist/esm/utils/assertSetup.js +1 -1
  146. package/dist/esm/utils/debug.d.ts +1 -1
  147. package/dist/esm/utils/debug.js +8 -6
  148. package/dist/esm/utils/findFile.js +1 -0
  149. package/dist/esm/utils/objectAssignSafe.d.ts +1 -0
  150. package/dist/esm/utils/objectAssignSafe.js +4 -0
  151. package/dist/esm/utils/projectInfo.d.ts +1 -1
  152. package/package.json +2 -2
  153. package/dist/cjs/shared/getPageFiles/getPageFiles.js +0 -48
  154. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.d.ts +0 -6
  155. package/dist/esm/shared/getPageFiles/getPageFiles.d.ts +0 -15
  156. package/dist/esm/shared/getPageFiles/getPageFiles.js +0 -46
  157. /package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.js → virtual-files/isRuntimeEnvMatch.js} +0 -0
  158. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.d.ts → getVikeConfig/getConfigFileExport.d.ts} +0 -0
  159. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{debug.d.ts → virtual-files/debug.d.ts} +0 -0
  160. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.d.ts → virtual-files/getVirtualFilePageConfigValuesAll.d.ts} +0 -0
  161. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.d.ts → virtual-files/getVirtualFilePageConfigs.d.ts} +0 -0
  162. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.js → virtual-files/isRuntimeEnvMatch.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.debug = void 0;
4
- const utils_js_1 = require("../../../utils.js");
4
+ const utils_js_1 = require("../../../../utils.js");
5
5
  exports.debug = (0, utils_js_1.createDebugger)('vike:virtual-files');
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getVirtualFilePageConfigValuesAll = getVirtualFilePageConfigValuesAll;
4
- const utils_js_1 = require("../../../utils.js");
5
- const virtualFilePageConfigValuesAll_js_1 = require("../../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
6
- const getVikeConfig_js_1 = require("./getVikeConfig.js");
7
- const extractAssetsQuery_js_1 = require("../../../../shared/extractAssetsQuery.js");
4
+ const utils_js_1 = require("../../../../utils.js");
5
+ const virtualFilePageConfigValuesAll_js_1 = require("../../../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
6
+ const getVikeConfig_js_1 = require("../getVikeConfig.js");
7
+ const extractAssetsQuery_js_1 = require("../../../../../shared/extractAssetsQuery.js");
8
8
  const debug_js_1 = require("./debug.js");
9
9
  const isRuntimeEnvMatch_js_1 = require("./isRuntimeEnvMatch.js");
10
- const serializeConfigValues_js_1 = require("../../../../../shared/page-configs/serialize/serializeConfigValues.js");
11
- const fixServerAssets_js_1 = require("../../buildConfig/fixServerAssets.js");
12
- const getConfigValueBuildTime_js_1 = require("../../../../../shared/page-configs/getConfigValueBuildTime.js");
10
+ const serializeConfigValues_js_1 = require("../../../../../../shared/page-configs/serialize/serializeConfigValues.js");
11
+ const fixServerAssets_js_1 = require("../../../buildConfig/fixServerAssets.js");
12
+ const getConfigValueBuildTime_js_1 = require("../../../../../../shared/page-configs/getConfigValueBuildTime.js");
13
13
  async function getVirtualFilePageConfigValuesAll(id, isDev, config) {
14
14
  const result = (0, virtualFilePageConfigValuesAll_js_1.isVirtualFileIdPageConfigValuesAll)(id);
15
15
  (0, utils_js_1.assert)(result);
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getVirtualFilePageConfigs = getVirtualFilePageConfigs;
4
- const virtualFilePageConfigValuesAll_js_1 = require("../../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
4
+ const virtualFilePageConfigValuesAll_js_1 = require("../../../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
5
5
  const debug_js_1 = require("./debug.js");
6
- const getVikeConfig_js_1 = require("./getVikeConfig.js");
6
+ const getVikeConfig_js_1 = require("../getVikeConfig.js");
7
7
  const isRuntimeEnvMatch_js_1 = require("./isRuntimeEnvMatch.js");
8
- const serializeConfigValues_js_1 = require("../../../../../shared/page-configs/serialize/serializeConfigValues.js");
8
+ const serializeConfigValues_js_1 = require("../../../../../../shared/page-configs/serialize/serializeConfigValues.js");
9
9
  async function getVirtualFilePageConfigs(isForClientSide, isDev, id, isClientRouting, config) {
10
10
  const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(config, { doNotRestartViteOnError: true });
11
11
  const { pageConfigs, pageConfigGlobal } = vikeConfig;
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setGlobalContext = setGlobalContext;
4
4
  const globalContext_js_1 = require("../../runtime/globalContext.js");
5
5
  const utils_js_1 = require("../utils.js");
6
- const getVikeConfig_js_1 = require("./importUserCode/v1-design/getVikeConfig.js");
7
6
  const getOutDirs_js_1 = require("../shared/getOutDirs.js");
8
7
  function setGlobalContext() {
9
8
  return [
@@ -24,7 +23,7 @@ function setGlobalContext() {
24
23
  order: 'pre',
25
24
  handler(_, env) {
26
25
  const isViteDev = (0, utils_js_1.isDevCheck)(env);
27
- (0, globalContext_js_1.setGlobalContext_isViteDev)(isViteDev);
26
+ (0, globalContext_js_1.setGlobalContext_isProduction)(!isViteDev);
28
27
  (0, utils_js_1.markSetup_isViteDev)(isViteDev);
29
28
  }
30
29
  }
@@ -38,8 +37,6 @@ function setGlobalContext() {
38
37
  const { outDirRoot } = (0, getOutDirs_js_1.getOutDirs)(config);
39
38
  (0, utils_js_1.assertFilePathAbsoluteFilesystem)(outDirRoot); // Needed for `importServerProductionEntry({ outDir })` of @brillout/vite-plugin-server-entry
40
39
  (0, globalContext_js_1.setGlobalContext_viteConfig)(config, outDirRoot);
41
- const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(config);
42
- (0, globalContext_js_1.setGlobalContext_vikeConfig)(vikeConfig);
43
40
  }
44
41
  }
45
42
  }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFullBuildInlineConfig = getFullBuildInlineConfig;
4
+ const isViteCliCall_js_1 = require("./isViteCliCall.js");
5
+ function getFullBuildInlineConfig(config) {
6
+ const configFromCli = !(0, isViteCliCall_js_1.isViteCliCall)() ? null : (0, isViteCliCall_js_1.getViteConfigFromCli)();
7
+ if (config._viteConfigEnhanced) {
8
+ return config._viteConfigEnhanced;
9
+ }
10
+ else {
11
+ return {
12
+ ...configFromCli,
13
+ configFile: configFromCli?.configFile || config.configFile,
14
+ root: config.root,
15
+ build: {
16
+ ...configFromCli?.build
17
+ }
18
+ };
19
+ }
20
+ }
@@ -11,49 +11,34 @@ const viteIsSSR_js_1 = require("./viteIsSSR.js");
11
11
  const debug = (0, utils_js_1.createDebugger)('vike:outDir');
12
12
  function getOutDirs(config) {
13
13
  debug('getOutDirs()', new Error().stack);
14
- let outDirRoot;
15
- {
16
- const outDir = getOutDirFromViteResolvedConfig(config);
17
- if (isOutDirRoot(outDir)) {
18
- outDirRoot = outDir;
19
- }
20
- else {
21
- assertOutDirResolved(outDir, config);
22
- (0, utils_js_1.assert)(outDir.endsWith('/server') || outDir.endsWith('/client'));
23
- (0, utils_js_1.assert)('/client'.length === '/server'.length);
24
- outDirRoot = outDir.slice(0, -1 * '/client'.length);
25
- }
26
- }
27
- const outDirs = getOutDirsAll(outDirRoot, config.root);
28
- debug('outDirRoot', outDirRoot);
29
- debug('outDirs', outDirs);
14
+ const outDir = getOutDirFromViteResolvedConfig(config);
15
+ if (!isOutDirRoot(outDir))
16
+ assertOutDirResolved(outDir, config);
17
+ const outDirs = getOutDirsAll(outDir, config.root);
30
18
  return outDirs;
31
19
  }
32
20
  /** Appends `client/` or `server/` to `config.build.outDir` */
33
- function resolveOutDir(config) {
21
+ function resolveOutDir(config, isSSR) {
34
22
  debug('resolveOutDir()', new Error().stack);
23
+ const isServerSide = (0, viteIsSSR_js_1.viteIsSSR)(config) || isSSR;
24
+ debug('isServerSide', isServerSide);
35
25
  const outDir = getOutDirFromViteUserConfig(config) || 'dist';
36
- debug('outDir', 'outDir');
37
- // outDir may already be resolved when using Telefunc + vike (because both Telefunc and vike use this logic)
38
- if (!isOutDirRoot(outDir)) {
39
- assertOutDirResolved(outDir, config);
40
- return outDir;
26
+ debug('outDir', outDir);
27
+ /* outDir may already be resolved when using Telefunc + Vike (because both Telefunc and Vike use this logic)
28
+ assert(isOutDirRoot(outDir))
29
+ */
30
+ const { outDirClient, outDirServer } = getOutDirsAll(outDir);
31
+ if (isServerSide) {
32
+ debug('outDirServer', 'outDirServer');
33
+ return outDirServer;
41
34
  }
42
35
  else {
43
- const { outDirClient, outDirServer } = determineOutDirs(outDir);
44
- if ((0, viteIsSSR_js_1.viteIsSSR)(config)) {
45
- debug('outDirServer', 'outDirServer');
46
- return outDirServer;
47
- }
48
- else {
49
- debug('outDirClient', 'outDirClient');
50
- return outDirClient;
51
- }
36
+ debug('outDirClient', 'outDirClient');
37
+ return outDirClient;
52
38
  }
53
39
  }
54
40
  function determineOutDirs(outDirRoot) {
55
41
  (0, utils_js_1.assertPosixPath)(outDirRoot);
56
- (0, utils_js_1.assert)(!outDirRoot.endsWith('/'));
57
42
  (0, utils_js_1.assert)(isOutDirRoot(outDirRoot));
58
43
  const outDirClient = (0, utils_js_1.pathJoin)(outDirRoot, 'client');
59
44
  const outDirServer = (0, utils_js_1.pathJoin)(outDirRoot, 'server');
@@ -61,8 +46,35 @@ function determineOutDirs(outDirRoot) {
61
46
  assertIsNotOutDirRoot(outDirServer);
62
47
  return { outDirClient, outDirServer };
63
48
  }
64
- function getOutDirsAll(outDirRoot, root) {
65
- if (!outDirIsAbsolutePath(outDirRoot)) {
49
+ function getOutDirsAll(outDir, root) {
50
+ let outDirRoot;
51
+ {
52
+ if (isOutDirRoot(outDir)) {
53
+ outDirRoot = outDir;
54
+ }
55
+ else {
56
+ (0, utils_js_1.assert)(outDir.endsWith('/server') || outDir.endsWith('/client'));
57
+ (0, utils_js_1.assert)('/client'.length === '/server'.length);
58
+ outDirRoot = outDir.slice(0, -1 * '/client'.length);
59
+ }
60
+ }
61
+ debug('outDirRoot', outDirRoot);
62
+ let outDirs;
63
+ if (root) {
64
+ outDirs = getOutDirsAllFromRootNormalized(outDirRoot, root);
65
+ }
66
+ else {
67
+ outDirs = getOutDirsAllFromRoot(outDirRoot);
68
+ }
69
+ debug('outDirs', outDirs);
70
+ return outDirs;
71
+ }
72
+ function getOutDirsAllFromRoot(outDirRoot) {
73
+ let { outDirClient, outDirServer } = determineOutDirs(outDirRoot);
74
+ return { outDirRoot, outDirClient, outDirServer };
75
+ }
76
+ function getOutDirsAllFromRootNormalized(outDirRoot, root) {
77
+ if (root && !outDirIsAbsolutePath(outDirRoot)) {
66
78
  (0, utils_js_1.assertPosixPath)(outDirRoot);
67
79
  (0, utils_js_1.assertPosixPath)(root);
68
80
  outDirRoot = (0, utils_js_1.pathJoin)(root, outDirRoot);
@@ -90,7 +102,7 @@ function isOutDirRoot(outDirRot) {
90
102
  function assertIsNotOutDirRoot(outDir) {
91
103
  (0, utils_js_1.assert)(outDir.endsWith('/client') || outDir.endsWith('/server'));
92
104
  }
93
- /** `outDir` ends with `/server` or `/client` */
105
+ /** Assert that `outDir` ends with `/server` or `/client` */
94
106
  function assertOutDirResolved(outDir, config) {
95
107
  (0, utils_js_1.assertPosixPath)(outDir);
96
108
  assertIsNotOutDirRoot(outDir);
@@ -108,16 +120,16 @@ function getOutDirFromViteUserConfig(config) {
108
120
  let outDir = config.build?.outDir;
109
121
  if (outDir === undefined)
110
122
  return undefined;
111
- outDir = normalize(outDir);
123
+ outDir = normalizeOutDir(outDir);
112
124
  return outDir;
113
125
  }
114
126
  function getOutDirFromViteResolvedConfig(config) {
115
127
  let outDir = config.build.outDir;
116
128
  (0, utils_js_1.assert)(outDir);
117
- outDir = normalize(outDir);
129
+ outDir = normalizeOutDir(outDir);
118
130
  return outDir;
119
131
  }
120
- function normalize(outDir) {
132
+ function normalizeOutDir(outDir) {
121
133
  outDir = (0, utils_js_1.toPosixPath)(outDir);
122
134
  outDir = outDir.replace(/\/+$/, ''); // remove trailing slashes
123
135
  return outDir;
@@ -66,6 +66,8 @@ const prepareViteApiCall_js_1 = require("../api/prepareViteApiCall.js");
66
66
  const context_js_1 = require("./context.js");
67
67
  const resolvePrerenderConfig_js_1 = require("./resolvePrerenderConfig.js");
68
68
  const getOutDirs_js_1 = require("../plugin/shared/getOutDirs.js");
69
+ const context_js_2 = require("../cli/context.js");
70
+ const isViteCliCall_js_1 = require("../plugin/shared/isViteCliCall.js");
69
71
  async function runPrerenderFromAPI(options = {}) {
70
72
  return await runPrerender(options, 'prerender()');
71
73
  // - 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.
@@ -83,8 +85,9 @@ async function runPrerenderFromCLIPrerenderCommand() {
83
85
  process.exit(1);
84
86
  }
85
87
  runPrerender_forceExit();
88
+ (0, utils_js_1.assert)(false);
86
89
  }
87
- async function runPrerenderFromAutoRun(viteConfig) {
90
+ async function runPrerenderFromAutoRun(viteConfig, config) {
88
91
  let prerenderContextPublic;
89
92
  try {
90
93
  const ret = await runPrerender({ viteConfig });
@@ -95,7 +98,9 @@ async function runPrerenderFromAutoRun(viteConfig) {
95
98
  (0, logErrorHint_js_1.logErrorHint)(err);
96
99
  process.exit(1);
97
100
  }
98
- return { prerenderContextPublic };
101
+ config.vike.prerenderContext = prerenderContextPublic;
102
+ const forceExit = (0, context_js_2.isVikeCli)() || (0, isViteCliCall_js_1.isViteCliCall)();
103
+ return { forceExit };
99
104
  }
100
105
  async function runPrerender(options = {}, standaloneTrigger) {
101
106
  (0, context_js_1.setContextIsPrerendering)();
@@ -123,7 +128,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
123
128
  const { partial = false, noExtraDir = false, parallel = true } = prerenderConfig || {};
124
129
  const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
125
130
  await (0, globalContext_js_1.initGlobalContext_runPrerender)();
126
- const globalContext = (0, globalContext_js_1.getGlobalContext)();
131
+ const globalContext = await (0, globalContext_js_1.getGlobalContextInternal)();
127
132
  globalContext.pageFilesAll.forEach(assertExportNames);
128
133
  const prerenderContext = {
129
134
  noExtraDir: noExtraDir ?? false,
@@ -133,10 +138,10 @@ async function runPrerender(options = {}, standaloneTrigger) {
133
138
  output: []
134
139
  };
135
140
  const doNotPrerenderList = [];
136
- await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
137
- await callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList);
138
- await handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit);
139
- await callOnPrerenderStartHook(prerenderContext);
141
+ await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit, globalContext);
142
+ await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
143
+ await handlePagesWithStaticRoutes(prerenderContext, globalContext, doNotPrerenderList, concurrencyLimit);
144
+ await callOnPrerenderStartHook(prerenderContext, globalContext);
140
145
  let prerenderedCount = 0;
141
146
  // Write files as soon as pages finish rendering (instead of writing all files at once only after all pages have rendered).
142
147
  const onComplete = async (htmlFile) => {
@@ -146,17 +151,17 @@ async function runPrerender(options = {}, standaloneTrigger) {
146
151
  }
147
152
  await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
148
153
  };
149
- await routeAndPrerender(prerenderContext, concurrencyLimit, onComplete);
154
+ await routeAndPrerender(prerenderContext, globalContext, concurrencyLimit, onComplete);
150
155
  warnContradictoryNoPrerenderList(prerenderContext.prerenderedPageContexts, doNotPrerenderList);
151
- await prerender404(prerenderContext, onComplete);
156
+ await prerender404(prerenderContext, globalContext, onComplete);
152
157
  if (logLevel === 'info') {
153
158
  console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
154
159
  }
155
- warnMissingPages(prerenderContext.prerenderedPageContexts, doNotPrerenderList, partial);
160
+ await warnMissingPages(prerenderContext.prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
156
161
  const prerenderContextPublic = makePublic(prerenderContext);
157
162
  return { viteConfig, prerenderContextPublic };
158
163
  }
159
- async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurrencyLimit) {
164
+ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurrencyLimit, globalContext) {
160
165
  // V1 design
161
166
  pageConfigs.forEach((pageConfig) => {
162
167
  const configValue = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigLocal)(pageConfig);
@@ -174,7 +179,6 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurr
174
179
  });
175
180
  // Old design
176
181
  // TODO/v1-release: remove
177
- const globalContext = (0, globalContext_js_1.getGlobalContext)();
178
182
  await Promise.all(globalContext.pageFilesAll
179
183
  .filter((p) => {
180
184
  assertExportNames(p);
@@ -217,9 +221,8 @@ function assertExportNames(pageFile) {
217
221
  const { exportNames, fileType } = pageFile;
218
222
  (0, utils_js_1.assert)(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
219
223
  }
220
- async function callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList) {
224
+ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
221
225
  const onBeforePrerenderStartHooks = [];
222
- const globalContext = (0, globalContext_js_1.getGlobalContext)();
223
226
  // V1 design
224
227
  await Promise.all(globalContext.pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
225
228
  const hookName = 'onBeforePrerenderStart';
@@ -267,7 +270,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimi
267
270
  }
268
271
  const prerenderResult = await (0, executeHook_js_1.executeHook)(() => hookFn(), { hookName, hookFilePath, hookTimeout }, null);
269
272
  const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
270
- result.forEach(({ url, pageContext }) => {
273
+ await Promise.all(result.map(async ({ url, pageContext }) => {
271
274
  {
272
275
  const pageContextFound = prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, url));
273
276
  if (pageContextFound) {
@@ -278,7 +281,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimi
278
281
  (0, utils_js_1.assertUsage)(false, `URL ${picocolors_1.default.cyan(url)} provided ${providedTwice}. Make sure to provide the URL only once instead.`);
279
282
  }
280
283
  }
281
- const pageContextNew = createPageContext(url, prerenderContext);
284
+ const pageContextNew = await createPageContext(url, prerenderContext, globalContext);
282
285
  (0, utils_js_1.objectAssign)(pageContextNew, {
283
286
  _providedByHook: {
284
287
  hookFilePath,
@@ -292,12 +295,11 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimi
292
295
  });
293
296
  (0, utils_js_1.objectAssign)(pageContextNew, pageContext);
294
297
  }
295
- });
298
+ }));
296
299
  })));
297
300
  }
298
- async function handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit) {
301
+ async function handlePagesWithStaticRoutes(prerenderContext, globalContext, doNotPrerenderList, concurrencyLimit) {
299
302
  // Pre-render pages with a static route
300
- const globalContext = (0, globalContext_js_1.getGlobalContext)();
301
303
  await Promise.all(globalContext.pageRoutes.map((pageRoute) => concurrencyLimit(async () => {
302
304
  const { pageId } = pageRoute;
303
305
  if (doNotPrerenderList.find((p) => p.pageId === pageId)) {
@@ -323,7 +325,7 @@ async function handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList,
323
325
  return;
324
326
  }
325
327
  const routeParams = {};
326
- const pageContext = createPageContext(urlOriginal, prerenderContext);
328
+ const pageContext = await createPageContext(urlOriginal, prerenderContext, globalContext);
327
329
  (0, utils_js_1.objectAssign)(pageContext, {
328
330
  _providedByHook: null,
329
331
  routeParams,
@@ -341,7 +343,7 @@ async function handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList,
341
343
  prerenderContext.pageContexts.push(pageContext);
342
344
  })));
343
345
  }
344
- function createPageContext(urlOriginal, prerenderContext) {
346
+ async function createPageContext(urlOriginal, prerenderContext, globalContext) {
345
347
  const pageContext = {
346
348
  _urlHandler: null,
347
349
  _urlRewrite: null,
@@ -353,13 +355,12 @@ function createPageContext(urlOriginal, prerenderContext) {
353
355
  };
354
356
  (0, utils_js_1.objectAssign)(pageContextInit, prerenderContext.pageContextInit);
355
357
  {
356
- const pageContextInitEnhanced = (0, renderPageAlreadyRouted_js_1.getPageContextInitEnhanced)(pageContextInit);
358
+ const pageContextInitEnhanced = await (0, renderPageAlreadyRouted_js_1.getPageContextInitEnhanced)(pageContextInit, globalContext);
357
359
  (0, utils_js_1.objectAssign)(pageContext, pageContextInitEnhanced);
358
360
  }
359
361
  return pageContext;
360
362
  }
361
- async function callOnPrerenderStartHook(prerenderContext) {
362
- const globalContext = (0, globalContext_js_1.getGlobalContext)();
363
+ async function callOnPrerenderStartHook(prerenderContext, globalContext) {
363
364
  let onPrerenderStartHook;
364
365
  // V1 design
365
366
  if (globalContext.pageConfigs.length > 0) {
@@ -486,8 +487,7 @@ async function callOnPrerenderStartHook(prerenderContext) {
486
487
  });
487
488
  addPageContextComputedUrl(prerenderContext.pageContexts);
488
489
  }
489
- async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete) {
490
- const globalContext = (0, globalContext_js_1.getGlobalContext)();
490
+ async function routeAndPrerender(prerenderContext, globalContext, concurrencyLimit, onComplete) {
491
491
  (0, utils_js_1.assert)(globalContext.isPrerendering);
492
492
  // Route all URLs
493
493
  await Promise.all(prerenderContext.pageContexts.map((pageContext) => concurrencyLimit(async () => {
@@ -569,8 +569,7 @@ function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerende
569
569
  (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 });
570
570
  });
571
571
  }
572
- function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial) {
573
- const globalContext = (0, globalContext_js_1.getGlobalContext)();
572
+ async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPrerenderList, partial) {
574
573
  const isV1 = globalContext.pageConfigs.length > 0;
575
574
  const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
576
575
  /* TODO/after-v1-design-release: document setting `prerender: false` as an alternative to using prerender.partial (both in the warnings and the docs)
@@ -586,11 +585,11 @@ function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial)
586
585
  (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 });
587
586
  });
588
587
  }
589
- async function prerender404(prerenderContext, onComplete) {
588
+ async function prerender404(prerenderContext, globalContext, onComplete) {
590
589
  if (!Object.values(prerenderContext.prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
591
590
  let result;
592
591
  try {
593
- result = await (0, renderPageAlreadyRouted_js_1.prerender404Page)(prerenderContext.pageContextInit);
592
+ result = await (0, renderPageAlreadyRouted_js_1.prerender404Page)(prerenderContext.pageContextInit, globalContext);
594
593
  }
595
594
  catch (err) {
596
595
  assertIsNotAbort(err, 'the 404 page');