vike 0.4.237-commit-92dc549 → 0.4.237-commit-2d6f480

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 (89) hide show
  1. package/dist/cjs/client/runtime-server-routing/utils.js +1 -1
  2. package/dist/cjs/node/api/build.js +4 -30
  3. package/dist/cjs/node/api/prepareViteApiCall.js +0 -1
  4. package/dist/cjs/node/prerender/runPrerender.js +5 -6
  5. package/dist/cjs/node/runtime/renderPage/analyzePage.js +3 -1
  6. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +1 -1
  7. package/dist/cjs/node/runtime/renderPage/execHookOnRenderHtml.js +1 -11
  8. package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +42 -46
  9. package/dist/cjs/node/runtime/renderPage/{renderPageAlreadyRouted.js → renderPageAfterRoute.js} +3 -4
  10. package/dist/cjs/node/runtime/renderPage.js +6 -9
  11. package/dist/cjs/node/runtime/utils.js +1 -1
  12. package/dist/cjs/node/vite/plugins/pluginBuild/handleAssetsManifest.js +3 -5
  13. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildApp.js +4 -11
  14. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildConfig.js +120 -14
  15. package/dist/cjs/node/vite/plugins/pluginBuild.js +1 -2
  16. package/dist/cjs/node/vite/plugins/pluginDev/determineOptimizeDeps.js +3 -2
  17. package/dist/cjs/node/vite/plugins/pluginFileEnv.js +4 -3
  18. package/dist/cjs/node/vite/plugins/pluginPreview.js +1 -11
  19. package/dist/cjs/node/vite/shared/getOutDirs.js +5 -11
  20. package/dist/cjs/node/vite/shared/isViteServerSide.js +46 -19
  21. package/dist/cjs/shared/page-configs/{loadPageEntry.js → loadAndParseVirtualFilePageEntry.js} +2 -2
  22. package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +5 -0
  23. package/dist/cjs/shared/route/execHookOnBeforeRoute.js +0 -1
  24. package/dist/cjs/shared/route/index.js +0 -1
  25. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  26. package/dist/cjs/utils/{augmentType.js → updateType.js} +3 -3
  27. package/dist/esm/__internal/index.d.ts +1 -1
  28. package/dist/esm/client/runtime-client-routing/createPageContextClientSide.js +2 -2
  29. package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +6 -6
  30. package/dist/esm/client/runtime-client-routing/utils.d.ts +1 -1
  31. package/dist/esm/client/runtime-client-routing/utils.js +1 -1
  32. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +3 -3
  33. package/dist/esm/client/runtime-server-routing/utils.d.ts +1 -1
  34. package/dist/esm/client/runtime-server-routing/utils.js +1 -1
  35. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +2 -2
  36. package/dist/esm/node/api/build.js +5 -31
  37. package/dist/esm/node/api/prepareViteApiCall.d.ts +0 -2
  38. package/dist/esm/node/api/prepareViteApiCall.js +0 -1
  39. package/dist/esm/node/prerender/runPrerender.d.ts +9 -300
  40. package/dist/esm/node/prerender/runPrerender.js +6 -7
  41. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +4 -3
  42. package/dist/esm/node/runtime/renderPage/analyzePage.js +3 -1
  43. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +2 -2
  44. package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.d.ts +0 -1
  45. package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.js +1 -11
  46. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -4
  47. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +1 -1
  48. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +105 -19
  49. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +44 -48
  50. package/dist/esm/node/runtime/renderPage/{renderPageAlreadyRouted.d.ts → renderPageAfterRoute.d.ts} +20 -4
  51. package/dist/esm/node/runtime/renderPage/{renderPageAlreadyRouted.js → renderPageAfterRoute.js} +5 -6
  52. package/dist/esm/node/runtime/renderPage.js +8 -11
  53. package/dist/esm/node/runtime/utils.d.ts +1 -1
  54. package/dist/esm/node/runtime/utils.js +1 -1
  55. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.d.ts +0 -1
  56. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.js +5 -7
  57. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildApp.js +3 -10
  58. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.d.ts +4 -0
  59. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.js +120 -17
  60. package/dist/esm/node/vite/plugins/pluginBuild.js +1 -2
  61. package/dist/esm/node/vite/plugins/pluginDev/determineOptimizeDeps.js +3 -2
  62. package/dist/esm/node/vite/plugins/pluginFileEnv.js +4 -3
  63. package/dist/esm/node/vite/plugins/pluginPreview.js +3 -13
  64. package/dist/esm/node/vite/shared/getOutDirs.d.ts +1 -3
  65. package/dist/esm/node/vite/shared/getOutDirs.js +6 -12
  66. package/dist/esm/node/vite/shared/isViteServerSide.d.ts +1 -1
  67. package/dist/esm/node/vite/shared/isViteServerSide.js +46 -19
  68. package/dist/esm/shared/page-configs/loadAndParseVirtualFilePageEntry.d.ts +3 -0
  69. package/dist/esm/shared/page-configs/{loadPageEntry.js → loadAndParseVirtualFilePageEntry.js} +2 -2
  70. package/dist/esm/shared/page-configs/resolveVikeConfigPublic.js +5 -0
  71. package/dist/esm/shared/route/execHookOnBeforeRoute.d.ts +3 -3
  72. package/dist/esm/shared/route/execHookOnBeforeRoute.js +0 -1
  73. package/dist/esm/shared/route/index.d.ts +5 -6
  74. package/dist/esm/shared/route/index.js +0 -1
  75. package/dist/esm/types/Config.d.ts +2 -4
  76. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  77. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  78. package/dist/esm/utils/updateType.d.ts +3 -0
  79. package/dist/esm/utils/updateType.js +7 -0
  80. package/package.json +3 -3
  81. package/dist/cjs/node/runtime/renderPage/debugPageFiles.js +0 -52
  82. package/dist/cjs/node/vite/plugins/pluginBuild/pluginAutoFullBuild.js +0 -150
  83. package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +0 -23
  84. package/dist/esm/node/runtime/renderPage/debugPageFiles.js +0 -47
  85. package/dist/esm/node/vite/plugins/pluginBuild/pluginAutoFullBuild.d.ts +0 -5
  86. package/dist/esm/node/vite/plugins/pluginBuild/pluginAutoFullBuild.js +0 -145
  87. package/dist/esm/shared/page-configs/loadPageEntry.d.ts +0 -3
  88. package/dist/esm/utils/augmentType.d.ts +0 -3
  89. package/dist/esm/utils/augmentType.js +0 -7
@@ -1,8 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.pluginBuildConfig = pluginBuildConfig;
4
7
  exports.assertRollupInput = assertRollupInput;
5
8
  exports.analyzeClientEntries = analyzeClientEntries;
9
+ exports.pluginAutoFullBuild = pluginAutoFullBuild;
10
+ exports.isPrerenderForceExit = isPrerenderForceExit;
6
11
  const utils_js_1 = require("../../utils.js");
7
12
  const resolveVikeConfigInternal_js_1 = require("../../shared/resolveVikeConfigInternal.js");
8
13
  const findPageFiles_js_1 = require("../../shared/findPageFiles.js");
@@ -12,12 +17,20 @@ const prependEntriesDir_js_1 = require("../../../shared/prependEntriesDir.js");
12
17
  const getFilePath_js_1 = require("../../shared/getFilePath.js");
13
18
  const getConfigValueBuildTime_js_1 = require("../../../../shared/page-configs/getConfigValueBuildTime.js");
14
19
  const isViteServerSide_js_1 = require("../../shared/isViteServerSide.js");
15
- const getOutDirs_js_1 = require("../../shared/getOutDirs.js");
16
20
  const handleAssetsManifest_js_1 = require("./handleAssetsManifest.js");
17
21
  const retrievePageAssetsProd_js_1 = require("../../../runtime/renderPage/getPageAssets/retrievePageAssetsProd.js");
22
+ const context_js_1 = require("../../../prerender/context.js");
23
+ const isViteCliCall_js_1 = require("../../shared/isViteCliCall.js");
24
+ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
25
+ const logErrorHint_js_1 = require("../../../runtime/renderPage/logErrorHint.js");
26
+ const context_js_2 = require("../../../api/context.js");
27
+ const runPrerenderEntry_js_1 = require("../../../prerender/runPrerenderEntry.js");
28
+ const getManifestFilePathRelative_js_1 = require("../../shared/getManifestFilePathRelative.js");
29
+ const globalObject = (0, utils_js_1.getGlobalObject)('build/pluginAutoFullBuild.ts', {
30
+ forceExit: false,
31
+ });
18
32
  function pluginBuildConfig() {
19
33
  let config;
20
- let configUnresolved;
21
34
  return [
22
35
  {
23
36
  name: 'vike:build:pluginBuildConfig',
@@ -36,21 +49,9 @@ function pluginBuildConfig() {
36
49
  (0, handleAssetsManifest_js_1.handleAssetsManifest_assertUsageCssCodeSplit)(config);
37
50
  },
38
51
  },
39
- configEnvironment: {
40
- order: 'post',
41
- async handler(envName, configEnv) {
42
- (0, utils_js_1.assert)(configUnresolved);
43
- return {
44
- build: {
45
- outDir: (0, getOutDirs_js_1.resolveOutDir_configEnvironment)(configUnresolved, envName, configEnv),
46
- },
47
- };
48
- },
49
- },
50
52
  config: {
51
53
  order: 'post',
52
54
  async handler(config) {
53
- configUnresolved = config;
54
55
  (0, utils_js_1.onSetupBuild)();
55
56
  const build = await (0, handleAssetsManifest_js_1.handleAssetsManifest_getBuildConfig)(config);
56
57
  return { build };
@@ -232,3 +233,108 @@ function assertRollupInput(config) {
232
233
  const htmlInput = htmlInputs[0];
233
234
  (0, utils_js_1.assertUsage)(htmlInput === undefined, `The entry ${htmlInput} of config build.rollupOptions.input is an HTML entry which is forbidden when using Vike, instead follow https://vike.dev/add`);
234
235
  }
236
+ function pluginAutoFullBuild() {
237
+ let config;
238
+ return [
239
+ {
240
+ name: 'vike:build:pluginAutoFullBuild',
241
+ apply: 'build',
242
+ enforce: 'pre',
243
+ async configResolved(config_) {
244
+ config = config_;
245
+ await abortViteBuildSsr();
246
+ },
247
+ writeBundle: {
248
+ /* We can't use this because it breaks Vite's logging. TO-DO/eventually: try again with latest Vite version.
249
+ sequential: true,
250
+ order: 'pre',
251
+ */
252
+ async handler(options, bundle) {
253
+ try {
254
+ await (0, handleAssetsManifest_js_1.handleAssetsManifest)(config, this.environment, options, bundle);
255
+ await triggerPrerendering(config, this.environment, bundle);
256
+ }
257
+ catch (err) {
258
+ // We use try-catch also because:
259
+ // - Vite/Rollup swallows errors thrown inside the writeBundle() hook. (It doesn't swallow errors thrown inside the first writeBundle() hook while building the client-side, but it does swallow errors thrown inside the second writeBundle() while building the server-side triggered after Vike calls Vite's `build()` API.)
260
+ // - Avoid Rollup prefixing the error with [vike:build:pluginAutoFullBuild], see for example https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
261
+ console.error(err);
262
+ (0, logErrorHint_js_1.logErrorHint)(err);
263
+ process.exit(1);
264
+ }
265
+ },
266
+ },
267
+ },
268
+ {
269
+ name: 'vike:build:pluginAutoFullBuild:post',
270
+ apply: 'build',
271
+ enforce: 'post',
272
+ closeBundle: {
273
+ sequential: true,
274
+ order: 'post',
275
+ handler() {
276
+ (0, utils_js_1.onSetupBuild)();
277
+ (0, handleAssetsManifest_js_1.handleAssetsManifest_assertUsageCssTarget)(config, this.environment);
278
+ /* Let vike:build:pluginBuildApp force exit
279
+ runPrerender_forceExit()
280
+ */
281
+ },
282
+ },
283
+ },
284
+ ];
285
+ }
286
+ async function triggerPrerendering(config, viteEnv, bundle) {
287
+ const vikeConfig = await (0, resolveVikeConfigInternal_js_1.getVikeConfigInternal)();
288
+ if (!(0, isViteServerSide_js_1.isViteServerSide_onlySsrEnv)(config, viteEnv))
289
+ return;
290
+ if (isDisabled(vikeConfig))
291
+ return;
292
+ // Workaround for @vitejs/plugin-legacy
293
+ // - The legacy plugin triggers its own Rollup build for the client-side.
294
+ // - The legacy plugin doesn't generate a manifest => we can use that to detect the legacy plugin build.
295
+ // - Issue & reproduction: https://github.com/vikejs/vike/issues/1154#issuecomment-1965954636
296
+ if (!bundle[(0, getManifestFilePathRelative_js_1.getManifestFilePathRelative)(config.build.manifest)])
297
+ return;
298
+ const configInline = getFullBuildInlineConfig(config);
299
+ if ((0, context_js_1.isPrerenderAutoRunEnabled)(vikeConfig)) {
300
+ const res = await (0, runPrerenderEntry_js_1.runPrerenderFromAutoRun)(configInline);
301
+ globalObject.forceExit = res.forceExit;
302
+ (0, utils_js_1.assert)((0, context_js_1.wasPrerenderRun)());
303
+ }
304
+ }
305
+ async function abortViteBuildSsr() {
306
+ const vikeConfig = await (0, resolveVikeConfigInternal_js_1.getVikeConfigInternal)();
307
+ if (vikeConfig.config.disableAutoFullBuild !== true && (0, isViteCliCall_js_1.isViteCliCall)() && (0, isViteCliCall_js_1.getViteConfigFromCli)()?.build.ssr) {
308
+ (0, utils_js_1.assertWarning)(false, `The CLI call ${picocolors_1.default.cyan('$ vite build --ssr')} is superfluous since ${picocolors_1.default.cyan('$ vite build')} also builds the server-side. If you want two separate build steps then use https://vike.dev/disableAutoFullBuild or use Vite's ${picocolors_1.default.cyan('build()')} API.`, { onlyOnce: true });
309
+ process.exit(0);
310
+ }
311
+ }
312
+ function isDisabled(vikeConfig) {
313
+ const { disableAutoFullBuild } = vikeConfig.config;
314
+ if (disableAutoFullBuild === undefined || disableAutoFullBuild === 'prerender') {
315
+ const isUserUsingViteApi = !(0, isViteCliCall_js_1.isViteCliCall)() && !(0, context_js_2.isVikeCliOrApi)();
316
+ return isUserUsingViteApi;
317
+ }
318
+ else {
319
+ return disableAutoFullBuild;
320
+ }
321
+ }
322
+ function isPrerenderForceExit() {
323
+ return globalObject.forceExit;
324
+ }
325
+ function getFullBuildInlineConfig(config) {
326
+ const configFromCli = !(0, isViteCliCall_js_1.isViteCliCall)() ? null : (0, isViteCliCall_js_1.getViteConfigFromCli)();
327
+ if (config._viteConfigFromUserEnhanced) {
328
+ return config._viteConfigFromUserEnhanced;
329
+ }
330
+ else {
331
+ return {
332
+ ...configFromCli,
333
+ configFile: configFromCli?.configFile || config.configFile,
334
+ root: config.root,
335
+ build: {
336
+ ...configFromCli?.build,
337
+ },
338
+ };
339
+ }
340
+ }
@@ -5,7 +5,6 @@ const pluginBuildApp_js_1 = require("./pluginBuild/pluginBuildApp.js");
5
5
  const pluginDistPackageJsonFile_js_1 = require("./pluginBuild/pluginDistPackageJsonFile.js");
6
6
  const pluginSuppressRollupWarning_js_1 = require("./pluginBuild/pluginSuppressRollupWarning.js");
7
7
  const pluginDistFileNames_js_1 = require("./pluginBuild/pluginDistFileNames.js");
8
- const pluginAutoFullBuild_js_1 = require("./pluginBuild/pluginAutoFullBuild.js");
9
8
  const pluginBuildEntry_js_1 = require("./pluginBuild/pluginBuildEntry.js");
10
9
  const pluginBuildConfig_js_1 = require("./pluginBuild/pluginBuildConfig.js");
11
10
  const pluginModuleBanner_js_1 = require("./pluginBuild/pluginModuleBanner.js");
@@ -13,7 +12,7 @@ function pluginBuild() {
13
12
  return [
14
13
  ...(0, pluginBuildConfig_js_1.pluginBuildConfig)(),
15
14
  ...(0, pluginBuildApp_js_1.pluginBuildApp)(),
16
- ...(0, pluginAutoFullBuild_js_1.pluginAutoFullBuild)(),
15
+ ...(0, pluginBuildConfig_js_1.pluginAutoFullBuild)(),
17
16
  ...(0, pluginBuildEntry_js_1.pluginBuildEntry)(),
18
17
  (0, pluginDistPackageJsonFile_js_1.pluginDistPackageJsonFile)(),
19
18
  (0, pluginSuppressRollupWarning_js_1.pluginSuppressRollupWarning)(),
@@ -15,8 +15,9 @@ async function determineOptimizeDeps(config) {
15
15
  const { entriesClient, entriesServer, includeClient, includeServer } = await getPageDeps(config, pageConfigs);
16
16
  config.optimizeDeps.include = add(config.optimizeDeps.include, includeClient);
17
17
  config.optimizeDeps.entries = add(config.optimizeDeps.entries, entriesClient);
18
- // Workaround until https://github.com/vitejs/vite-plugin-react/issues/650
19
- // - TODO/soon: remove workaround once https://github.com/vitejs/vite/pull/20495 is released
18
+ // Workaround for https://github.com/vitejs/vite-plugin-react/issues/650
19
+ // - The issue was closed as completed with https://github.com/vitejs/vite/pull/20495 but it doesn't fix the issue and the workaround is still needed.
20
+ // - TO-DO/eventually: try removing the workaround and see if the CI fails (at test/@cloudflare_vite-plugin/) — maybe the issue will get fixed at some point.
20
21
  includeServer.push('react/jsx-dev-runtime');
21
22
  for (const envName in config.environments) {
22
23
  const env = config.environments[envName];
@@ -12,6 +12,7 @@ const getFilePath_js_1 = require("../shared/getFilePath.js");
12
12
  const parseEsModule_js_1 = require("../shared/parseEsModule.js");
13
13
  const normalizeId_js_1 = require("../shared/normalizeId.js");
14
14
  const resolveVikeConfigInternal_js_1 = require("../shared/resolveVikeConfigInternal.js");
15
+ const isViteServerSide_js_1 = require("../shared/isViteServerSide.js");
15
16
  function pluginFileEnv() {
16
17
  let config;
17
18
  let viteDevServer;
@@ -33,7 +34,7 @@ function pluginFileEnv() {
33
34
  const importers = Array.from(moduleInfo.importers)
34
35
  .map((m) => m.id)
35
36
  .filter((id) => id !== null);
36
- assertFileEnv(id, !!options?.ssr, importers,
37
+ assertFileEnv(id, (0, isViteServerSide_js_1.isViteServerSide_extraSafe)(config, options, this.environment), importers,
37
38
  // In dev, we only show a warning because we don't want to disrupt when the user plays with settings such as [ssr](https://vike.dev/ssr).
38
39
  true);
39
40
  },
@@ -45,7 +46,7 @@ function pluginFileEnv() {
45
46
  return;
46
47
  if (skip(id))
47
48
  return;
48
- const isServerSide = !!options?.ssr;
49
+ const isServerSide = (0, isViteServerSide_js_1.isViteServerSide_extraSafe)(config, options, this.environment);
49
50
  if (!isWrongEnv(id, isServerSide))
50
51
  return;
51
52
  const { importers } = this.getModuleInfo(id);
@@ -71,7 +72,7 @@ function pluginFileEnv() {
71
72
  */
72
73
  return;
73
74
  }
74
- assertFileEnv(moduleId, !!config.build.ssr, importers, false);
75
+ assertFileEnv(moduleId, (0, isViteServerSide_js_1.isViteServerSide)(config, this.environment), importers, false);
75
76
  });
76
77
  },
77
78
  configResolved(config_) {
@@ -15,25 +15,15 @@ const sirv_1 = __importDefault(require("sirv"));
15
15
  const resolveVikeConfigInternal_js_1 = require("../shared/resolveVikeConfigInternal.js");
16
16
  function pluginPreview() {
17
17
  let config;
18
- let configUnresolved;
19
18
  let vikeConfig;
20
19
  return {
21
20
  name: 'vike:pluginPreview',
22
21
  apply: utils_js_1.applyPreview,
23
- config(config) {
24
- configUnresolved = config;
22
+ config() {
25
23
  return {
26
24
  appType: 'custom',
27
25
  };
28
26
  },
29
- configEnvironment(envName, configEnv) {
30
- (0, utils_js_1.assert)(configUnresolved);
31
- return {
32
- build: {
33
- outDir: (0, getOutDirs_js_1.resolveOutDir_configEnvironment)(configUnresolved, envName, configEnv),
34
- },
35
- };
36
- },
37
27
  async configResolved(config_) {
38
28
  config = config_;
39
29
  vikeConfig = await (0, resolveVikeConfigInternal_js_1.getVikeConfigInternal)();
@@ -5,14 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getOutDirs = getOutDirs;
7
7
  exports.resolveOutDir = resolveOutDir;
8
- exports.resolveOutDir_configEnvironment = resolveOutDir_configEnvironment;
9
8
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
10
9
  const utils_js_1 = require("../utils.js");
11
10
  const isViteServerSide_js_1 = require("./isViteServerSide.js");
12
11
  const debug = (0, utils_js_1.createDebugger)('vike:outDir');
13
12
  function getOutDirs(configGlobal, viteEnv) {
14
13
  debug('getOutDirs()', new Error().stack);
15
- const outDir = getOutDirFromResolvedConfig(configGlobal);
14
+ const outDir = getOutDirFromResolvedConfig(configGlobal, viteEnv);
16
15
  assertOutDirResolved(outDir, configGlobal, viteEnv);
17
16
  const outDirs = getOutDirsAll(outDir, configGlobal.root);
18
17
  assertNormalization(outDirs.outDirRoot);
@@ -20,12 +19,6 @@ function getOutDirs(configGlobal, viteEnv) {
20
19
  assertNormalization(outDirs.outDirServer);
21
20
  return outDirs;
22
21
  }
23
- function resolveOutDir_configEnvironment(configGlobal, envName, configEnv) {
24
- (0, utils_js_1.assert)(configGlobal && envName && configEnv);
25
- const viteEnv = { name: envName, config: configEnv };
26
- const isServerSide = (0, isViteServerSide_js_1.isViteServerSide)(configGlobal, viteEnv);
27
- return resolveOutDir(configEnv, isServerSide);
28
- }
29
22
  /** Appends `client/` or `server/` to `config.build.outDir` */
30
23
  function resolveOutDir(config, isServerSide) {
31
24
  debug('resolveOutDir()', new Error().stack);
@@ -119,7 +112,8 @@ function assertOutDirResolved(outDir, configGlobal, viteEnv) {
119
112
  (0, utils_js_1.assert)('/client'.length === '/server'.length);
120
113
  const outDirCorrected = outDir.slice(0, -1 * '/client'.length);
121
114
  const wrongUsage = `You've set Vite's config.build.outDir to ${picocolors_1.default.cyan(outDir)} but you should set it to ${picocolors_1.default.cyan(outDirCorrected)} instead.`;
122
- if ((0, isViteServerSide_js_1.isViteServerSide_withoutEnv)(configGlobal, viteEnv)) {
115
+ const isServerSide = (0, isViteServerSide_js_1.isViteServerSide_withoutEnv)(configGlobal, viteEnv);
116
+ if (isServerSide) {
123
117
  (0, utils_js_1.assertUsage)(outDir.endsWith('/server'), wrongUsage);
124
118
  }
125
119
  else {
@@ -133,8 +127,8 @@ function getOutDirFromViteUserConfig(config) {
133
127
  outDir = normalizeOutDir(outDir);
134
128
  return outDir;
135
129
  }
136
- function getOutDirFromResolvedConfig(config) {
137
- let outDir = config.build.outDir;
130
+ function getOutDirFromResolvedConfig(config, viteEnv) {
131
+ let outDir = viteEnv?.config.build?.outDir ?? config.build.outDir;
138
132
  (0, utils_js_1.assert)(outDir);
139
133
  outDir = normalizeOutDir(outDir);
140
134
  return outDir;
@@ -6,16 +6,16 @@ exports.isViteServerSide_withoutEnv = isViteServerSide_withoutEnv;
6
6
  exports.isViteServerSide_onlySsrEnv = isViteServerSide_onlySsrEnv;
7
7
  exports.isViteServerSide_extraSafe = isViteServerSide_extraSafe;
8
8
  const assert_js_1 = require("../../../utils/assert.js");
9
- function isViteServerSide_withoutEnv(configGlobal, viteEnv) {
9
+ function isViteServerSide_impl(configGlobal, viteEnv) {
10
10
  (0, assert_js_1.assert)(!('consumer' in configGlobal)); // make sure configGlobal isn't viteEnv.config
11
11
  const isServerSide1 = !viteEnv?.config.consumer ? null : viteEnv.config.consumer !== 'client';
12
- const isServerSide2 = !viteEnv?.name ? null : viteEnv.name !== 'client'; // I can't think of a use case for creating another client-side environment
13
- const isServerSide3 = !viteEnv ? null : !!viteEnv.config.build?.ssr;
14
- const isServerSide4 = !!configGlobal.build?.ssr;
12
+ const isServerSide2 = !viteEnv?.config.build ? null : getBuildSsrValue(viteEnv.config.build.ssr);
13
+ const isServerSide3 = !configGlobal.build ? null : getBuildSsrValue(configGlobal.build.ssr);
14
+ const isServerSide4 = viteEnv?.name === 'ssr' ? true : viteEnv?.name === 'client' ? false : null;
15
15
  const debug = {
16
- envIsUndefined: !viteEnv,
17
- envName: viteEnv?.name ?? null,
18
- envConsumer: viteEnv?.config.consumer ?? null,
16
+ viteEnvIsUndefined: !viteEnv,
17
+ viteEnvName: viteEnv?.name ?? null,
18
+ viteEnvConsumer: viteEnv?.config.consumer ?? null,
19
19
  configEnvBuildSsr: viteEnv?.config.build?.ssr ?? null,
20
20
  configGlobalBuildSsr: configGlobal.build?.ssr ?? null,
21
21
  isServerSide1,
@@ -24,25 +24,36 @@ function isViteServerSide_withoutEnv(configGlobal, viteEnv) {
24
24
  isServerSide4,
25
25
  };
26
26
  if (isServerSide1 !== null) {
27
- (0, assert_js_1.assert)(isServerSide1 === isServerSide2 || isServerSide2 === null, debug);
27
+ // assert(isServerSide1 === isServerSide4 || isServerSide4 === null, debug)
28
28
  /* This assertion can fail, seems to be a Vite bug?
29
- assert(isServerSide1 === isServerSide3, debug)
29
+ assert(isServerSide1 === isServerSide2, debug)
30
30
  */
31
31
  return isServerSide1;
32
32
  }
33
33
  if (isServerSide2 !== null) {
34
- /* This assertion can fail, seems to be a Vite bug?
35
- assert(isServerSide2 === isServerSide3, debug)
36
- */
34
+ // assert(isServerSide2 === isServerSide4 || isServerSide4 === null, debug)
37
35
  return isServerSide2;
38
36
  }
39
37
  if (isServerSide3 !== null) {
38
+ // assert(isServerSide3 === isServerSide4 || isServerSide4 === null, debug)
40
39
  return isServerSide3;
41
40
  }
42
- return isServerSide4;
41
+ if (isServerSide4 !== null) {
42
+ return isServerSide4;
43
+ }
44
+ (0, assert_js_1.assert)(!viteEnv);
45
+ return !!configGlobal.build?.ssr;
46
+ }
47
+ function getBuildSsrValue(buildSsr) {
48
+ if (buildSsr === undefined)
49
+ return null;
50
+ return !!buildSsr;
43
51
  }
44
52
  function isViteServerSide(configGlobal, viteEnv) {
45
- return isViteServerSide_withoutEnv(configGlobal, viteEnv);
53
+ return isViteServerSide_impl(configGlobal, viteEnv);
54
+ }
55
+ function isViteServerSide_withoutEnv(configGlobal, viteEnv) {
56
+ return isViteServerSide_impl(configGlobal, viteEnv);
46
57
  }
47
58
  function isViteClientSide(configGlobal, viteEnv) {
48
59
  return !isViteServerSide(configGlobal, viteEnv);
@@ -53,20 +64,36 @@ function isViteServerSide_onlySsrEnv(configGlobal, viteEnv) {
53
64
  }
54
65
  // Vite is quite messy about setting config.build.ssr — for security purposes, we use an extra safe implementation with lots of assertions, which is needed for the .client.js and .server.js guarantee.
55
66
  function isViteServerSide_extraSafe(config, options, viteEnv) {
67
+ const isServerSide = isViteServerSide(config, viteEnv);
68
+ const debug = {
69
+ configCommand: config.command,
70
+ configBuildSsr: config.build.ssr,
71
+ optionsIsUndefined: options === undefined,
72
+ optionsSsr: options?.ssr,
73
+ isServerSide,
74
+ };
75
+ if (true) {
76
+ const res = options?.ssr;
77
+ if (typeof res === 'boolean') {
78
+ (0, assert_js_1.assert)(res === isServerSide, debug);
79
+ return res;
80
+ }
81
+ return isServerSide;
82
+ }
56
83
  if (config.command === 'build') {
57
84
  const res = config.build.ssr;
58
- (0, assert_js_1.assert)(typeof res === 'boolean');
59
- (0, assert_js_1.assert)(res === options?.ssr || options?.ssr === undefined);
60
- (0, assert_js_1.assert)(res === isViteServerSide(config, viteEnv));
85
+ (0, assert_js_1.assert)(typeof res === 'boolean', debug);
86
+ (0, assert_js_1.assert)(res === options?.ssr || options?.ssr === undefined, debug);
87
+ (0, assert_js_1.assert)(res === isServerSide, debug);
61
88
  return res;
62
89
  }
63
90
  else {
64
91
  const res = options?.ssr;
65
- (0, assert_js_1.assert)(typeof res === 'boolean');
92
+ (0, assert_js_1.assert)(typeof res === 'boolean', debug);
66
93
  /* This assertion can fail, seems to be a Vite bug? It's very unexpected.
67
94
  if (typeof config.build.ssr === 'boolean') assert(res === config.build.ssr)
68
95
  */
69
- (0, assert_js_1.assert)(res === isViteServerSide(config, viteEnv));
96
+ (0, assert_js_1.assert)(res === isServerSide, debug);
70
97
  return res;
71
98
  }
72
99
  }
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadPageEntry = loadPageEntry;
3
+ exports.loadAndParseVirtualFilePageEntry = loadAndParseVirtualFilePageEntry;
4
4
  const utils_js_1 = require("../utils.js");
5
5
  const parsePageConfigsSerialized_js_1 = require("./serialize/parsePageConfigsSerialized.js");
6
- async function loadPageEntry(pageConfig, isDev) {
6
+ async function loadAndParseVirtualFilePageEntry(pageConfig, isDev) {
7
7
  if ('isPageEntryLoaded' in pageConfig &&
8
8
  // We don't need to cache in dev, since Vite already caches the virtual module
9
9
  !isDev) {
@@ -1,4 +1,9 @@
1
1
  "use strict";
2
+ // TO-DO/soon: rename PageConfig names
3
+ // - Use `Internal` suffix, i.e. {Page,Global}ConfigInternal
4
+ // - While keeping {Page,Global}ConfigPublic or remove Public suffix and rename it to {Page,Global}Config ?
5
+ // - rename EagerLoaded EagerlyLoaded
6
+ // - remove `LazyLoaded` suffix
2
7
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
8
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
9
  };
@@ -28,7 +28,6 @@ async function execHookOnBeforeRoute(pageContext) {
28
28
  }
29
29
  (0, utils_js_1.objectAssign)(pageContextFromOnBeforeRouteHook, {
30
30
  _routingProvidedByOnBeforeRouteHook: true,
31
- _debugRouteMatches: 'CUSTOM_ROUTING',
32
31
  });
33
32
  return pageContextFromOnBeforeRouteHook;
34
33
  }
@@ -86,7 +86,6 @@ async function route(pageContext, skipOnBeforeRouteHook) {
86
86
  (0, resolvePrecedence_js_1.resolvePrecedence)(routeMatches);
87
87
  const winner = routeMatches[0] ?? null;
88
88
  (0, debug_js_1.debug)(`Route matches for URL ${picocolors_1.default.cyan(urlPathname)} (in precedence order):`, routeMatches);
89
- (0, utils_js_1.objectAssign)(pageContextFromRoute, { _debugRouteMatches: routeMatches });
90
89
  // For vite-plugin-vercel https://github.com/magne4000/vite-plugin-vercel/blob/main/packages/vike-integration/vike.ts#L173
91
90
  (0, utils_js_1.objectAssign)(pageContextFromRoute, { _routeMatch: winner });
92
91
  if (!winner) {
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROJECT_VERSION = void 0;
4
4
  // Automatically updated by @brillout/release-me
5
- exports.PROJECT_VERSION = '0.4.237-commit-92dc549';
5
+ exports.PROJECT_VERSION = '0.4.237-commit-2d6f480';
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.augmentType = augmentType;
3
+ exports.updateType = updateType;
4
4
  const assert_js_1 = require("./assert.js");
5
- /** Help TypeScript augment the type of objects. */
6
- function augmentType(thing, clone) {
5
+ /** Help TypeScript update the type of dynamically modified objects. */
6
+ function updateType(thing, clone) {
7
7
  // @ts-ignore
8
8
  (0, assert_js_1.assert)(thing === clone);
9
9
  }
@@ -16,5 +16,5 @@ declare function getPagesAndRoutes(): Promise<{
16
16
  allPageIds: string[];
17
17
  }>;
18
18
  declare function route(pageContext: Parameters<typeof routeInternal>[0]): Promise<{
19
- pageContextAddendum: import("../shared/route/index.js").PageContextFromRoute;
19
+ pageContextAddendum: import("../shared/route/index.js").PageContextAfterRoute;
20
20
  }>;
@@ -3,7 +3,7 @@ import { createPageContextObject, createPageContextShared } from '../../shared/c
3
3
  import { getPageContextUrlComputed } from '../../shared/getPageContextUrlComputed.js';
4
4
  import { getBaseServer } from './getBaseServer.js';
5
5
  import { getGlobalContextClientInternal } from './globalContext.js';
6
- import { assert, augmentType, isBaseServer, objectAssign } from './utils.js';
6
+ import { assert, updateType, isBaseServer, objectAssign } from './utils.js';
7
7
  async function createPageContextClientSide(urlOriginal) {
8
8
  const globalContext = await getGlobalContextClientInternal();
9
9
  const baseServer = getBaseServer();
@@ -22,6 +22,6 @@ async function createPageContextClientSide(urlOriginal) {
22
22
  const pageContextUrlComputed = getPageContextUrlComputed(pageContextCreated);
23
23
  objectAssign(pageContextCreated, pageContextUrlComputed);
24
24
  const pageContextAugmented = createPageContextShared(pageContextCreated, globalContext._vikeConfigPublicGlobal);
25
- augmentType(pageContextCreated, pageContextAugmented);
25
+ updateType(pageContextCreated, pageContextAugmented);
26
26
  return pageContextCreated;
27
27
  }
@@ -3,7 +3,7 @@ export { getRenderCount };
3
3
  export { disableClientRouting };
4
4
  export { firstRenderStartPromise };
5
5
  export { getPageContextClient };
6
- import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject, hasProp, augmentType, genPromise, isCallable, catchInfiniteLoop, } from './utils.js';
6
+ import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject, hasProp, updateType, genPromise, isCallable, catchInfiniteLoop, } from './utils.js';
7
7
  import { getPageContextFromClientHooks, getPageContextFromServerHooks, getPageContextFromHooks_isHydration, getPageContextFromHooks_serialized, setPageContextInitIsPassedToClient, } from './getPageContextFromHooks.js';
8
8
  import { createPageContextClientSide } from './createPageContextClientSide.js';
9
9
  import { addLinkPrefetchHandlers, addLinkPrefetchHandlers_unwatch, addLinkPrefetchHandlers_watch, getPageContextPrefetched, populatePageContextPrefetchCache, } from './prefetch.js';
@@ -159,7 +159,7 @@ async function renderPageClientSide(renderArgs) {
159
159
  await onError(res.err);
160
160
  return;
161
161
  }
162
- augmentType(pageContext, res.pageContext);
162
+ updateType(pageContext, res.pageContext);
163
163
  setPageContextCurrent(pageContext);
164
164
  // Set global hydrationCanBeAborted
165
165
  if (pageContext.exports.hydrationCanBeAborted) {
@@ -184,7 +184,7 @@ async function renderPageClientSide(renderArgs) {
184
184
  }
185
185
  if (isRenderOutdated())
186
186
  return;
187
- augmentType(pageContext, pageContextAugmented);
187
+ updateType(pageContext, pageContextAugmented);
188
188
  // Render page view
189
189
  await renderPageView(pageContext);
190
190
  }
@@ -225,7 +225,7 @@ async function renderPageClientSide(renderArgs) {
225
225
  }
226
226
  if (isRenderOutdated())
227
227
  return;
228
- augmentType(pageContext, pageContextFromClientHooks);
228
+ updateType(pageContext, pageContextFromClientHooks);
229
229
  await renderPageView(pageContext);
230
230
  }
231
231
  }
@@ -336,7 +336,7 @@ async function renderPageClientSide(renderArgs) {
336
336
  onError(res.err);
337
337
  return;
338
338
  }
339
- augmentType(pageContext, res.pageContext);
339
+ updateType(pageContext, res.pageContext);
340
340
  setPageContextCurrent(pageContext);
341
341
  let pageContextFromServerHooks;
342
342
  try {
@@ -364,7 +364,7 @@ async function renderPageClientSide(renderArgs) {
364
364
  }
365
365
  if (isRenderOutdated())
366
366
  return;
367
- augmentType(pageContext, pageContextFromClientHooks);
367
+ updateType(pageContext, pageContextFromClientHooks);
368
368
  await renderPageView(pageContext, args);
369
369
  }
370
370
  async function renderPageView(pageContext, isErrorPage) {
@@ -17,7 +17,7 @@ export * from '../../utils/slice.js';
17
17
  export * from '../../utils/throttle.js';
18
18
  export * from '../../utils/assertRoutingType.js';
19
19
  export * from '../../utils/onPageVisibilityChange.js';
20
- export * from '../../utils/augmentType.js';
20
+ export * from '../../utils/updateType.js';
21
21
  export * from '../../utils/PROJECT_VERSION.js';
22
22
  export * from '../../utils/genPromise.js';
23
23
  export * from '../../utils/catchInfiniteLoop.js';
@@ -21,7 +21,7 @@ export * from '../../utils/slice.js';
21
21
  export * from '../../utils/throttle.js';
22
22
  export * from '../../utils/assertRoutingType.js';
23
23
  export * from '../../utils/onPageVisibilityChange.js';
24
- export * from '../../utils/augmentType.js';
24
+ export * from '../../utils/updateType.js';
25
25
  export * from '../../utils/PROJECT_VERSION.js';
26
26
  export * from '../../utils/genPromise.js';
27
27
  export * from '../../utils/catchInfiniteLoop.js';
@@ -1,5 +1,5 @@
1
1
  export { createPageContextClientSide };
2
- import { assertUsage, augmentType, objectAssign } from './utils.js';
2
+ import { assertUsage, updateType, objectAssign } from './utils.js';
3
3
  import { getPageContextSerializedInHtml } from '../shared/getJsonSerializedInHtml.js';
4
4
  import { loadPageConfigsLazyClientSide, } from '../shared/loadPageConfigsLazyClientSide.js';
5
5
  import { getCurrentUrl } from '../shared/getCurrentUrl.js';
@@ -22,9 +22,9 @@ async function createPageContextClientSide() {
22
22
  });
23
23
  objectAssign(pageContextCreated, getPageContextSerializedInHtml());
24
24
  // Sets pageContext.config to global configs
25
- augmentType(pageContextCreated, createPageContextShared(pageContextCreated, globalContext._vikeConfigPublicGlobal));
25
+ updateType(pageContextCreated, createPageContextShared(pageContextCreated, globalContext._vikeConfigPublicGlobal));
26
26
  // Sets pageContext.config to local configs (overrides the pageContext.config set above)
27
- augmentType(pageContextCreated, await loadPageConfigsLazyClientSideAndExecHook(pageContextCreated));
27
+ updateType(pageContextCreated, await loadPageConfigsLazyClientSideAndExecHook(pageContextCreated));
28
28
  assertPristineUrl();
29
29
  return pageContextCreated;
30
30
  }
@@ -10,5 +10,5 @@ export * from '../../utils/parseUrl.js';
10
10
  export * from '../../utils/slice.js';
11
11
  export * from '../../utils/unique.js';
12
12
  export * from '../../utils/getPropAccessNotation.js';
13
- export * from '../../utils/augmentType.js';
13
+ export * from '../../utils/updateType.js';
14
14
  export * from '../../utils/changeEnumerable.js';
@@ -14,5 +14,5 @@ export * from '../../utils/parseUrl.js';
14
14
  export * from '../../utils/slice.js';
15
15
  export * from '../../utils/unique.js'; // Only used by Server Routing (not needed for Client Routing)
16
16
  export * from '../../utils/getPropAccessNotation.js';
17
- export * from '../../utils/augmentType.js';
17
+ export * from '../../utils/updateType.js';
18
18
  export * from '../../utils/changeEnumerable.js';
@@ -3,7 +3,7 @@ export { isErrorFetchingStaticAssets };
3
3
  import { getPageFilesClientSide } from '../../shared/getPageFiles.js';
4
4
  import { resolveVikeConfigPublicPageLazyLoaded } from '../../shared/page-configs/resolveVikeConfigPublic.js';
5
5
  import { findPageConfig } from '../../shared/page-configs/findPageConfig.js';
6
- import { loadPageEntry } from '../../shared/page-configs/loadPageEntry.js';
6
+ import { loadAndParseVirtualFilePageEntry } from '../../shared/page-configs/loadAndParseVirtualFilePageEntry.js';
7
7
  import { objectAssign } from '../runtime-server-routing/utils.js';
8
8
  const errStamp = '_isAssetsError';
9
9
  async function loadPageConfigsLazyClientSide(pageId, pageFilesAll, pageConfigs, pageConfigGlobal) {
@@ -16,7 +16,7 @@ async function loadPageConfigsLazyClientSide(pageId, pageFilesAll, pageConfigs,
16
16
  // prettier-ignore
17
17
  // biome-ignore format:
18
18
  const result = await Promise.all([
19
- pageConfig && loadPageEntry(pageConfig, isDev),
19
+ pageConfig && loadAndParseVirtualFilePageEntry(pageConfig, isDev),
20
20
  ...pageFilesClientSide.map((p) => p.loadFile?.()),
21
21
  ]);
22
22
  pageConfigLoaded = result[0];