vike 0.4.219 → 0.4.220-commit-9a798ce

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 (157) hide show
  1. package/dist/cjs/node/api/build.js +23 -58
  2. package/dist/cjs/node/api/context.js +6 -8
  3. package/dist/cjs/node/api/prepareViteApiCall.js +6 -7
  4. package/dist/cjs/node/api/utils.js +1 -1
  5. package/dist/cjs/node/cli/context.js +16 -0
  6. package/dist/cjs/node/cli/entry.js +2 -0
  7. package/dist/cjs/node/cli/utils.js +1 -0
  8. package/dist/cjs/{utils → node/plugin}/getOutDirs.js +11 -11
  9. package/dist/cjs/node/plugin/index.js +1 -7
  10. package/dist/cjs/node/plugin/onLoad.js +6 -1
  11. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +43 -31
  12. package/dist/cjs/node/plugin/plugins/baseUrls.js +2 -2
  13. package/dist/cjs/node/plugin/plugins/buildConfig.js +6 -3
  14. package/dist/cjs/node/plugin/plugins/buildEntry/index.js +24 -21
  15. package/dist/cjs/node/plugin/plugins/commonConfig.js +11 -8
  16. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +4 -2
  17. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +10 -7
  18. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +3 -4
  19. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/assertExtensions.js +10 -9
  20. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +8 -3
  21. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +158 -176
  22. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +3 -1
  23. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +3 -2
  24. package/dist/cjs/node/plugin/plugins/previewConfig.js +3 -4
  25. package/dist/cjs/node/plugin/utils.js +1 -1
  26. package/dist/cjs/node/prerender/context.js +26 -0
  27. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +25 -0
  28. package/dist/cjs/node/prerender/runPrerender.js +64 -37
  29. package/dist/cjs/node/prerender/utils.js +3 -2
  30. package/dist/cjs/node/runtime/globalContext.js +44 -58
  31. package/dist/cjs/node/runtime/page-files/setup.js +1 -1
  32. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +6 -3
  33. package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +6 -5
  34. package/dist/cjs/node/runtime/renderPage.js +10 -5
  35. package/dist/cjs/node/runtime/utils.js +3 -2
  36. package/dist/cjs/node/shared/resolveBase.js +9 -0
  37. package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +2 -2
  38. package/dist/cjs/shared/page-configs/loadConfigValues.js +5 -1
  39. package/dist/cjs/shared/utils.js +1 -1
  40. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  41. package/dist/cjs/utils/assertSetup.js +15 -1
  42. package/dist/cjs/utils/catchInfiniteLoop.js +34 -0
  43. package/dist/cjs/utils/findFile.js +3 -3
  44. package/dist/cjs/utils/isDev.js +4 -1
  45. package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +2 -2
  46. package/dist/cjs/utils/makePublicCopy.js +32 -0
  47. package/dist/cjs/utils/requireResolve.js +3 -3
  48. package/dist/esm/client/client-routing-runtime/history.d.ts +3 -1
  49. package/dist/esm/client/client-routing-runtime/history.js +23 -18
  50. package/dist/esm/client/client-routing-runtime/index.d.ts +0 -1
  51. package/dist/esm/client/client-routing-runtime/index.js +0 -1
  52. package/dist/esm/client/client-routing-runtime/initClientRouter.js +2 -2
  53. package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +3 -4
  54. package/dist/esm/client/client-routing-runtime/initOnPopState.d.ts +0 -10
  55. package/dist/esm/client/client-routing-runtime/initOnPopState.js +50 -62
  56. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +15 -15
  57. package/dist/esm/client/client-routing-runtime/scrollRestoration.d.ts +4 -6
  58. package/dist/esm/client/client-routing-runtime/scrollRestoration.js +17 -12
  59. package/dist/esm/client/client-routing-runtime/setScrollPosition.d.ts +1 -1
  60. package/dist/esm/client/client-routing-runtime/setScrollPosition.js +29 -5
  61. package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
  62. package/dist/esm/client/client-routing-runtime/utils.js +1 -0
  63. package/dist/esm/client/shared/normalizeClientSideUrl.js +2 -3
  64. package/dist/esm/node/api/build.d.ts +1 -6
  65. package/dist/esm/node/api/build.js +20 -25
  66. package/dist/esm/node/api/context.d.ts +4 -4
  67. package/dist/esm/node/api/context.js +6 -9
  68. package/dist/esm/node/api/prepareViteApiCall.d.ts +0 -1
  69. package/dist/esm/node/api/prepareViteApiCall.js +7 -8
  70. package/dist/esm/node/api/utils.d.ts +1 -1
  71. package/dist/esm/node/api/utils.js +1 -1
  72. package/dist/esm/node/cli/context.d.ts +5 -0
  73. package/dist/esm/node/cli/context.js +14 -0
  74. package/dist/esm/node/cli/entry.js +2 -0
  75. package/dist/esm/node/cli/parseCli.d.ts +3 -1
  76. package/dist/esm/node/cli/utils.d.ts +1 -0
  77. package/dist/esm/node/cli/utils.js +1 -0
  78. package/dist/esm/{utils → node/plugin}/getOutDirs.js +5 -5
  79. package/dist/esm/node/plugin/index.d.ts +29 -1
  80. package/dist/esm/node/plugin/index.js +2 -8
  81. package/dist/esm/node/plugin/onLoad.js +7 -2
  82. package/dist/esm/node/plugin/plugins/autoFullBuild.js +43 -31
  83. package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
  84. package/dist/esm/node/plugin/plugins/buildConfig.js +7 -4
  85. package/dist/esm/node/plugin/plugins/buildEntry/index.d.ts +3 -3
  86. package/dist/esm/node/plugin/plugins/buildEntry/index.js +25 -22
  87. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +8 -2
  88. package/dist/esm/node/plugin/plugins/commonConfig.js +9 -6
  89. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +4 -2
  90. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +2 -2
  91. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +10 -7
  92. package/dist/esm/node/plugin/plugins/importUserCode/index.js +3 -4
  93. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.d.ts +3 -2
  94. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.js +10 -9
  95. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +8 -3
  96. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -95
  97. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +159 -177
  98. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +3 -1
  99. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +3 -2
  100. package/dist/esm/node/plugin/plugins/previewConfig.js +3 -4
  101. package/dist/esm/node/plugin/utils.js +1 -1
  102. package/dist/esm/node/prerender/context.d.ts +9 -0
  103. package/dist/esm/node/prerender/context.js +24 -0
  104. package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +5 -0
  105. package/dist/esm/node/prerender/resolvePrerenderConfig.js +23 -0
  106. package/dist/esm/node/prerender/runPrerender.d.ts +42 -1
  107. package/dist/esm/node/prerender/runPrerender.js +65 -38
  108. package/dist/esm/node/prerender/utils.d.ts +3 -2
  109. package/dist/esm/node/prerender/utils.js +3 -2
  110. package/dist/esm/node/runtime/globalContext.d.ts +15 -9
  111. package/dist/esm/node/runtime/globalContext.js +45 -59
  112. package/dist/esm/node/runtime/page-files/setup.js +1 -1
  113. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +5 -5
  114. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +6 -3
  115. package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +2 -0
  116. package/dist/esm/node/runtime/renderPage/resolveRedirects.js +5 -5
  117. package/dist/esm/node/runtime/renderPage.js +10 -5
  118. package/dist/esm/node/runtime/utils.d.ts +3 -2
  119. package/dist/esm/node/runtime/utils.js +3 -2
  120. package/dist/esm/node/shared/resolveBase.d.ts +4 -1
  121. package/dist/esm/node/shared/resolveBase.js +9 -0
  122. package/dist/esm/shared/page-configs/Config.d.ts +76 -3
  123. package/dist/esm/shared/page-configs/PageConfig.d.ts +25 -16
  124. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +1 -1
  125. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +2 -2
  126. package/dist/esm/shared/page-configs/loadConfigValues.js +6 -2
  127. package/dist/esm/shared/utils.d.ts +1 -1
  128. package/dist/esm/shared/utils.js +1 -1
  129. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  130. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  131. package/dist/esm/utils/assertSetup.js +15 -1
  132. package/dist/esm/utils/catchInfiniteLoop.d.ts +2 -0
  133. package/dist/esm/utils/catchInfiniteLoop.js +32 -0
  134. package/dist/esm/utils/findFile.js +1 -1
  135. package/dist/esm/utils/isDev.js +4 -1
  136. package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +1 -1
  137. package/dist/esm/utils/makePublicCopy.d.ts +3 -0
  138. package/dist/esm/utils/makePublicCopy.js +30 -0
  139. package/dist/esm/utils/projectInfo.d.ts +1 -1
  140. package/dist/esm/utils/requireResolve.js +1 -1
  141. package/package.json +1 -1
  142. package/dist/cjs/node/plugin/plugins/buildEntry/getVikeManifest.js +0 -17
  143. package/dist/cjs/node/prerender/isPrerenderAutoRunEnabled.js +0 -16
  144. package/dist/cjs/node/shared/assertPluginManifest.js +0 -20
  145. package/dist/cjs/node/shared/assertRuntimeManifest.js +0 -16
  146. package/dist/esm/node/plugin/plugins/buildEntry/getVikeManifest.d.ts +0 -5
  147. package/dist/esm/node/plugin/plugins/buildEntry/getVikeManifest.js +0 -15
  148. package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.d.ts +0 -5
  149. package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.js +0 -14
  150. package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -12
  151. package/dist/esm/node/shared/assertPluginManifest.js +0 -18
  152. package/dist/esm/node/shared/assertRuntimeManifest.d.ts +0 -10
  153. package/dist/esm/node/shared/assertRuntimeManifest.js +0 -14
  154. /package/dist/cjs/utils/{filesystemPathHandling.js → toPosixPath.js} +0 -0
  155. /package/dist/esm/{utils → node/plugin}/getOutDirs.d.ts +0 -0
  156. /package/dist/esm/utils/{filesystemPathHandling.d.ts → toPosixPath.d.ts} +0 -0
  157. /package/dist/esm/utils/{filesystemPathHandling.js → toPosixPath.js} +0 -0
@@ -114,7 +114,7 @@ async function loadInterfaceFiles(userRootDir) {
114
114
  valueFiles.push(f);
115
115
  }
116
116
  });
117
- let interfaceFilesByLocationId = {};
117
+ let interfaceFilesAll = {};
118
118
  await Promise.all([
119
119
  // Config files
120
120
  ...configFiles.map(async (filePath) => {
@@ -124,8 +124,8 @@ async function loadInterfaceFiles(userRootDir) {
124
124
  (0, utils_js_1.assert)(filePath.filePathAbsoluteUserRootDir);
125
125
  const locationId = (0, filesystemRouting_js_1.getLocationId)(filePathAbsoluteUserRootDir);
126
126
  const interfaceFile = getInterfaceFileFromConfigFile(configFile, false, locationId);
127
- interfaceFilesByLocationId[locationId] = interfaceFilesByLocationId[locationId] ?? [];
128
- interfaceFilesByLocationId[locationId].push(interfaceFile);
127
+ interfaceFilesAll[locationId] = interfaceFilesAll[locationId] ?? [];
128
+ interfaceFilesAll[locationId].push(interfaceFile);
129
129
  extendsConfigs.forEach((extendsConfig) => {
130
130
  /* We purposely use the same locationId because the Vike extension's config should only apply to where it's being extended from, for example:
131
131
  ```js
@@ -145,7 +145,7 @@ async function loadInterfaceFiles(userRootDir) {
145
145
  */
146
146
  const interfaceFile = getInterfaceFileFromConfigFile(extendsConfig, true, locationId);
147
147
  (0, assertExtensions_js_1.assertExtensionsConventions)(interfaceFile);
148
- interfaceFilesByLocationId[locationId].push(interfaceFile);
148
+ interfaceFilesAll[locationId].push(interfaceFile);
149
149
  });
150
150
  }),
151
151
  // Value files
@@ -170,18 +170,18 @@ async function loadInterfaceFiles(userRootDir) {
170
170
  // - If `configDef` is `undefined` => we load the file +{configName}.js later.
171
171
  // - We already need to load +meta.js here (to get the custom config definitions defined by the user)
172
172
  const configDef = getConfigDefinitionOptional(configDefinitionsBuiltIn, configName);
173
- if (configDef && isLoadableAtBuildTime(configDef)) {
173
+ if (configDef && shouldBeLoadableAtBuildTime(configDef)) {
174
174
  await (0, loadFileAtConfigTime_js_1.loadValueFile)(interfaceFile, configName, userRootDir);
175
175
  }
176
176
  }
177
177
  {
178
- interfaceFilesByLocationId[locationId] = interfaceFilesByLocationId[locationId] ?? [];
179
- interfaceFilesByLocationId[locationId].push(interfaceFile);
178
+ interfaceFilesAll[locationId] = interfaceFilesAll[locationId] ?? [];
179
+ interfaceFilesAll[locationId].push(interfaceFile);
180
180
  }
181
181
  })
182
182
  ]);
183
- assertAllConfigsAreKnown(interfaceFilesByLocationId);
184
- return interfaceFilesByLocationId;
183
+ assertAllConfigsAreKnown(interfaceFilesAll);
184
+ return interfaceFilesAll;
185
185
  }
186
186
  function getInterfaceFileFromConfigFile(configFile, isConfigExtend, locationId) {
187
187
  const { fileExports, filePath, extendsFilePaths } = configFile;
@@ -201,9 +201,9 @@ function getInterfaceFileFromConfigFile(configFile, isConfigExtend, locationId)
201
201
  return interfaceFile;
202
202
  }
203
203
  /** Show error message upon unknown config */
204
- function assertAllConfigsAreKnown(interfaceFilesByLocationId) {
205
- (0, utils_js_1.objectEntries)(interfaceFilesByLocationId).forEach(([locationId, interfaceFiles]) => {
206
- const interfaceFilesRelevant = getInterfaceFilesRelevant(interfaceFilesByLocationId, locationId);
204
+ function assertAllConfigsAreKnown(interfaceFilesAll) {
205
+ (0, utils_js_1.objectEntries)(interfaceFilesAll).forEach(([locationId, interfaceFiles]) => {
206
+ const interfaceFilesRelevant = getInterfaceFilesRelevant(interfaceFilesAll, locationId);
207
207
  const configDefinitions = getConfigDefinitions(interfaceFilesRelevant);
208
208
  interfaceFiles.forEach((interfaceFile) => {
209
209
  Object.keys(interfaceFile.fileExportsByConfigName).forEach((configName) => {
@@ -246,9 +246,9 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
246
246
  pageConfigs: [],
247
247
  pageConfigGlobal: {
248
248
  configDefinitions: {},
249
+ interfaceFiles: {},
249
250
  configValueSources: {}
250
251
  },
251
- vikeConfigGlobal: resolveVikeConfigGlobal({}, {}),
252
252
  global: (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues: {} })
253
253
  };
254
254
  return dummyData;
@@ -256,49 +256,86 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
256
256
  }
257
257
  }
258
258
  async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
259
- const interfaceFilesByLocationId = await loadInterfaceFiles(userRootDir);
259
+ const interfaceFilesAll = await loadInterfaceFiles(userRootDir);
260
260
  const importedFilesLoaded = {};
261
- const [globalConfigs, pageConfigs] = await Promise.all([
262
- getGlobalConfigs(interfaceFilesByLocationId, userRootDir, importedFilesLoaded, vikeVitePluginOptions),
263
- getPageConfigs(interfaceFilesByLocationId, userRootDir, importedFilesLoaded)
264
- ]);
265
- return { pageConfigs, ...globalConfigs };
261
+ const { pageConfigGlobal, pageConfigs } = await getPageConfigs(interfaceFilesAll, userRootDir, importedFilesLoaded);
262
+ // interop vike(options) in vite.config.js
263
+ temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir);
264
+ // global
265
+ const configValues = getConfigValues(pageConfigGlobal);
266
+ const global = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues });
267
+ return { pageConfigs, pageConfigGlobal, global };
266
268
  }
267
- async function getGlobalConfigs(interfaceFilesByLocationId, userRootDir, importedFilesLoaded, vikeVitePluginOptions) {
268
- const locationIds = (0, utils_js_1.objectKeys)(interfaceFilesByLocationId);
269
- const interfaceFilesGlobal = (0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(interfaceFilesByLocationId).filter(([locationId]) => {
270
- return (0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIds);
271
- }));
269
+ async function getGlobalConfigs(interfaceFilesAll, userRootDir, importedFilesLoaded) {
270
+ /* TODO/now: dedupe
272
271
  // Validate that global configs live in global interface files
273
272
  {
274
- const interfaceFilesGlobalPaths = [];
275
- (0, utils_js_1.objectEntries)(interfaceFilesGlobal).forEach(([locationId, interfaceFiles]) => {
276
- (0, utils_js_1.assert)((0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIds));
277
- interfaceFiles.forEach(({ filePath: { filePathAbsoluteUserRootDir } }) => {
278
- if (filePathAbsoluteUserRootDir) {
279
- interfaceFilesGlobalPaths.push(filePathAbsoluteUserRootDir);
280
- }
281
- });
282
- });
283
- const globalPaths = Array.from(new Set(interfaceFilesGlobalPaths.map((p) => path_1.default.posix.dirname(p))));
284
- (0, utils_js_1.objectEntries)(interfaceFilesByLocationId).forEach(([locationId, interfaceFiles]) => {
285
- interfaceFiles.forEach((interfaceFile) => {
286
- Object.keys(interfaceFile.fileExportsByConfigName).forEach((configName) => {
287
- if (!(0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIds) && isGlobalConfig(configName)) {
288
- (0, utils_js_1.assertUsage)(false, [
289
- `${interfaceFile.filePath.filePathToShowToUser} defines the config ${picocolors_1.default.cyan(configName)} which is global:`,
290
- globalPaths.length
291
- ? `define ${picocolors_1.default.cyan(configName)} in ${(0, utils_js_1.joinEnglish)(globalPaths, 'or')} instead`
292
- : `create a global config (e.g. /pages/+config.js) and define ${picocolors_1.default.cyan(configName)} there instead`
293
- ].join(' '));
294
- }
295
- });
296
- });
297
- });
273
+ const interfaceFilesGlobalPaths: string[] = []
274
+ objectEntries(interfaceFilesGlobal).forEach(([locationId, interfaceFiles]) => {
275
+ assert(isGlobalLocation(locationId, locationIds))
276
+ interfaceFiles.forEach(({ filePath: { filePathAbsoluteUserRootDir } }) => {
277
+ if (filePathAbsoluteUserRootDir) {
278
+ interfaceFilesGlobalPaths.push(filePathAbsoluteUserRootDir)
279
+ }
280
+ })
281
+ })
282
+ const globalPaths = Array.from(new Set(interfaceFilesGlobalPaths.map((p) => path.posix.dirname(p))))
283
+ objectEntries(interfaceFilesAll).forEach(([locationId, interfaceFiles]) => {
284
+ interfaceFiles.forEach((interfaceFile) => {
285
+ Object.keys(interfaceFile.fileExportsByConfigName).forEach((configName) => {
286
+ if (!isGlobalLocation(locationId, locationIds) && isGlobalConfig(configName)) {
287
+ assertUsage(
288
+ false,
289
+ [
290
+ `${interfaceFile.filePath.filePathToShowToUser} defines the config ${pc.cyan(
291
+ configName
292
+ )} which is global:`,
293
+ globalPaths.length
294
+ ? `define ${pc.cyan(configName)} in ${joinEnglish(globalPaths, 'or')} instead`
295
+ : `create a global config (e.g. /pages/+config.js) and define ${pc.cyan(configName)} there instead`
296
+ ].join(' ')
297
+ )
298
+ }
299
+ })
300
+ })
301
+ })
298
302
  }
299
- const pageConfigGlobalValues = {};
303
+ //*/
304
+ }
305
+ function temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir) {
306
+ (0, utils_js_1.assert)((0, utils_js_1.isObject)(vikeVitePluginOptions));
307
+ (0, utils_js_1.assertWarning)(Object.keys(vikeVitePluginOptions).length === 0, `Define Vike settings in +config.js instead of vite.config.js ${picocolors_1.default.underline('https://vike.dev/migration/settings')}`, { onlyOnce: true });
308
+ Object.entries(vikeVitePluginOptions).forEach(([configName, value]) => {
309
+ var _a;
310
+ (0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltInGlobal), configName));
311
+ const configDef = configDefinitionsBuiltInGlobal[configName];
312
+ const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
313
+ sources.push({
314
+ value,
315
+ configEnv: configDef.env,
316
+ definedAtFilePath: {
317
+ ...(0, getFilePath_js_1.getFilePathResolved)({
318
+ userRootDir,
319
+ filePathAbsoluteUserRootDir: '/vite.config.js'
320
+ }),
321
+ fileExportPathToShowToUser: null
322
+ },
323
+ locationId: '/',
324
+ interfaceFile: null,
325
+ isOverriden: configDef.cumulative ? false : sources.length > 0,
326
+ valueIsImportedAtRuntime: false,
327
+ valueIsDefinedByPlusFile: false
328
+ });
329
+ });
330
+ }
331
+ async function getPageConfigs(interfaceFilesAll, userRootDir, importedFilesLoaded) {
332
+ const locationIds = (0, utils_js_1.objectKeys)(interfaceFilesAll);
333
+ const interfaceFilesGlobal = (0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(interfaceFilesAll).filter(([locationId]) => {
334
+ return (0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIds);
335
+ }));
300
336
  const pageConfigGlobal = {
301
337
  configDefinitions: configDefinitionsBuiltInGlobal,
338
+ interfaceFiles: interfaceFilesGlobal,
302
339
  configValueSources: {}
303
340
  };
304
341
  await Promise.all((0, utils_js_1.objectEntries)(configDefinitionsBuiltInGlobal).map(async ([configName, configDef]) => {
@@ -307,56 +344,15 @@ async function getGlobalConfigs(interfaceFilesByLocationId, userRootDir, importe
307
344
  if (!configValueSource)
308
345
  return;
309
346
  pageConfigGlobal.configValueSources[configName] = sources;
310
- // TODO/now
311
- if (configName === 'onBeforeRoute' || configName === 'onPrerenderStart') {
312
- (0, utils_js_1.assert)(!('value' in configValueSource));
313
- }
314
- else {
315
- (0, utils_js_1.assert)('value' in configValueSource);
316
- // TODO/now
317
- if (configName === 'prerender' && typeof configValueSource.value === 'boolean')
318
- return;
319
- pageConfigGlobalValues[configName] = configValueSource.value;
320
- }
321
347
  }));
322
- const vikeConfigGlobal = resolveVikeConfigGlobal(vikeVitePluginOptions, pageConfigGlobalValues);
323
- {
324
- (0, utils_js_1.assert)((0, utils_js_1.isObject)(vikeVitePluginOptions));
325
- Object.entries(vikeVitePluginOptions).forEach(([configName, value]) => {
326
- var _a;
327
- (0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltInGlobal), configName));
328
- const configDef = configDefinitionsBuiltInGlobal[configName];
329
- const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
330
- sources.push({
331
- value,
332
- configEnv: configDef.env,
333
- definedAtFilePath: {
334
- ...(0, getFilePath_js_1.getFilePathResolved)({
335
- userRootDir,
336
- filePathAbsoluteUserRootDir: '/vite.config.js'
337
- }),
338
- fileExportPathToShowToUser: null
339
- },
340
- locationId: '/',
341
- isOverriden: configDef.cumulative ? false : sources.length > 0,
342
- valueIsImportedAtRuntime: false,
343
- valueIsDefinedByPlusFile: false
344
- });
345
- });
346
- }
347
- const configValues = getConfigValues(pageConfigGlobal);
348
- const global = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues });
349
- return { pageConfigGlobal, vikeConfigGlobal, global };
350
- }
351
- async function getPageConfigs(interfaceFilesByLocationId, userRootDir, importedFilesLoaded) {
352
- const pageConfigs = await Promise.all((0, utils_js_1.objectEntries)(interfaceFilesByLocationId)
353
- .filter(([_pageId, interfaceFiles]) => isDefiningPage(interfaceFiles))
348
+ const pageConfigs = [];
349
+ await Promise.all((0, utils_js_1.objectEntries)(interfaceFilesAll)
350
+ .filter(([_locationId, interfaceFiles]) => isDefiningPage(interfaceFiles))
354
351
  .map(async ([locationId]) => {
355
- const interfaceFilesRelevant = getInterfaceFilesRelevant(interfaceFilesByLocationId, locationId);
352
+ const interfaceFilesRelevant = getInterfaceFilesRelevant(interfaceFilesAll, locationId);
356
353
  const interfaceFilesRelevantList = Object.values(interfaceFilesRelevant).flat(1);
357
- (0, assertExtensions_js_1.assertExtensionsPeerDependencies)(interfaceFilesRelevantList);
358
354
  const configDefinitions = getConfigDefinitions(interfaceFilesRelevant);
359
- // Load value files of custom config-only configs
355
+ // Load value files of `env.config===true` custom configs
360
356
  await Promise.all(interfaceFilesRelevantList.map(async (interfaceFile) => {
361
357
  if (!interfaceFile.isValueFile)
362
358
  return;
@@ -364,7 +360,7 @@ async function getPageConfigs(interfaceFilesByLocationId, userRootDir, importedF
364
360
  if (isGlobalConfig(configName))
365
361
  return;
366
362
  const configDef = getConfigDefinition(configDefinitions, configName, interfaceFile.filePath.filePathToShowToUser);
367
- if (!isLoadableAtBuildTime(configDef))
363
+ if (!shouldBeLoadableAtBuildTime(configDef))
368
364
  return;
369
365
  const isAlreadyLoaded = interfacefileIsAlreaydLoaded(interfaceFile);
370
366
  if (isAlreadyLoaded)
@@ -386,53 +382,34 @@ async function getPageConfigs(interfaceFilesByLocationId, userRootDir, importedF
386
382
  const { routeFilesystem, isErrorPage } = determineRouteFilesystem(locationId, configValueSources);
387
383
  applyEffectsAll(configValueSources, configDefinitions);
388
384
  const configValuesComputed = getComputed(configValueSources, configDefinitions);
389
- assertUsageGlobalConfigs(interfaceFilesRelevantList, configDefinitions, interfaceFilesByLocationId);
390
385
  const pageConfig = {
391
386
  pageId: locationId,
392
387
  isErrorPage,
393
388
  routeFilesystem,
394
389
  configDefinitions,
390
+ interfaceFiles: interfaceFilesRelevant,
395
391
  configValueSources,
396
392
  configValuesComputed
397
393
  };
398
- return pageConfig;
394
+ pageConfigs.push(pageConfig);
399
395
  }));
400
- assertPageConfigs(pageConfigs);
401
- return pageConfigs;
396
+ assertPageConfigs(pageConfigs, interfaceFilesAll);
397
+ return { pageConfigs, pageConfigGlobal };
402
398
  }
403
- function getConfigValues(pageConfig) {
404
- const configValues = {};
405
- (0, serializeConfigValues_js_1.getConfigValuesBase)(pageConfig, (configEnv) => !!configEnv.config, null).forEach((entry) => {
406
- if (entry.configValueBase.type === 'computed') {
407
- (0, utils_js_1.assert)('value' in entry); // Help TS
408
- const { configValueBase, value, configName } = entry;
409
- configValues[configName] = { ...configValueBase, value };
410
- }
411
- if (entry.configValueBase.type === 'standard') {
412
- (0, utils_js_1.assert)('sourceRelevant' in entry); // Help TS
413
- const { configValueBase, sourceRelevant, configName } = entry;
414
- (0, utils_js_1.assert)('value' in sourceRelevant);
415
- const { value } = sourceRelevant;
416
- configValues[configName] = { ...configValueBase, value };
417
- }
418
- if (entry.configValueBase.type === 'cumulative') {
419
- (0, utils_js_1.assert)('sourcesRelevant' in entry); // Help TS
420
- const { configValueBase, sourcesRelevant, configName } = entry;
421
- const values = [];
422
- sourcesRelevant.forEach((source) => {
423
- (0, utils_js_1.assert)('value' in source);
424
- values.push(source.value);
425
- });
426
- configValues[configName] = { ...configValueBase, value: values };
427
- }
399
+ function assertPageConfigs(pageConfigs, interfaceFilesAll) {
400
+ pageConfigs.forEach((pageConfig) => {
401
+ assertGlobalConfigs(pageConfig, interfaceFilesAll);
402
+ (0, assertExtensions_js_1.assertExtensionsRequire)(pageConfig);
403
+ assertOnBeforeRenderEnv(pageConfig);
428
404
  });
429
- return configValues;
430
405
  }
431
406
  // TODO/now: refactor
432
- // - Dedupe: most of the assertUsageGlobalConfigs() code below is a copy-paste of the assertUsage() logic inside getGlobalConfigs()
407
+ // - Dedupe: most of the assertGlobalConfigs() code below is a copy-paste of the assertUsage() logic inside getGlobalConfigs()
433
408
  // - This assertUsage() message is slightly better: use this one for getGlobalConfigs()
434
409
  // Global configs should be defined at global locations
435
- function assertUsageGlobalConfigs(interfaceFilesRelevantList, configDefinitions, interfaceFilesByLocationId) {
410
+ function assertGlobalConfigs(pageConfig, interfaceFilesAll) {
411
+ const interfaceFilesRelevantList = Object.values(pageConfig.interfaceFiles).flat(1);
412
+ const { configDefinitions } = pageConfig;
436
413
  interfaceFilesRelevantList.forEach((interfaceFile) => {
437
414
  const configNames = [];
438
415
  if (interfaceFile.isValueFile) {
@@ -446,9 +423,9 @@ function assertUsageGlobalConfigs(interfaceFilesRelevantList, configDefinitions,
446
423
  return;
447
424
  const configDef = getConfigDefinition(configDefinitions, configName, interfaceFile.filePath.filePathToShowToUser);
448
425
  if (configDef.global === true) {
449
- const locationIds = (0, utils_js_1.objectKeys)(interfaceFilesByLocationId);
426
+ const locationIds = (0, utils_js_1.objectKeys)(interfaceFilesAll);
450
427
  if (!(0, filesystemRouting_js_1.isGlobalLocation)(interfaceFile.locationId, locationIds)) {
451
- const interfaceFilesGlobal = (0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(interfaceFilesByLocationId).filter(([locationId]) => {
428
+ const interfaceFilesGlobal = (0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(interfaceFilesAll).filter(([locationId]) => {
452
429
  return (0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIds);
453
430
  }));
454
431
  const configFilesGlobal = [];
@@ -474,11 +451,6 @@ function assertUsageGlobalConfigs(interfaceFilesRelevantList, configDefinitions,
474
451
  });
475
452
  });
476
453
  }
477
- function assertPageConfigs(pageConfigs) {
478
- pageConfigs.forEach((pageConfig) => {
479
- assertOnBeforeRenderEnv(pageConfig);
480
- });
481
- }
482
454
  function assertOnBeforeRenderEnv(pageConfig) {
483
455
  const onBeforeRenderConfig = pageConfig.configValueSources.onBeforeRender?.[0];
484
456
  if (!onBeforeRenderConfig)
@@ -488,6 +460,34 @@ function assertOnBeforeRenderEnv(pageConfig) {
488
460
  // When using Server Routing, loading a onBeforeRender() hook on the client-side hasn't any effect (the Server Routing's client runtime never calls it); it unnecessarily bloats client bundle sizes
489
461
  (0, utils_js_1.assertUsage)(!(onBeforeRenderEnv.client && !isClientRouting), `Page ${pageConfig.pageId} has an onBeforeRender() hook with env ${picocolors_1.default.cyan(JSON.stringify(onBeforeRenderEnv))} which doesn't make sense because the page is using Server Routing: onBeforeRender() can be run in the client only when using Client Routing.`);
490
462
  }
463
+ function getConfigValues(pageConfig) {
464
+ const configValues = {};
465
+ (0, serializeConfigValues_js_1.getConfigValuesBase)(pageConfig, (configEnv) => !!configEnv.config, null).forEach((entry) => {
466
+ if (entry.configValueBase.type === 'computed') {
467
+ (0, utils_js_1.assert)('value' in entry); // Help TS
468
+ const { configValueBase, value, configName } = entry;
469
+ configValues[configName] = { ...configValueBase, value };
470
+ }
471
+ if (entry.configValueBase.type === 'standard') {
472
+ (0, utils_js_1.assert)('sourceRelevant' in entry); // Help TS
473
+ const { configValueBase, sourceRelevant, configName } = entry;
474
+ (0, utils_js_1.assert)('value' in sourceRelevant);
475
+ const { value } = sourceRelevant;
476
+ configValues[configName] = { ...configValueBase, value };
477
+ }
478
+ if (entry.configValueBase.type === 'cumulative') {
479
+ (0, utils_js_1.assert)('sourcesRelevant' in entry); // Help TS
480
+ const { configValueBase, sourcesRelevant, configName } = entry;
481
+ const values = [];
482
+ sourcesRelevant.forEach((source) => {
483
+ (0, utils_js_1.assert)('value' in source);
484
+ values.push(source.value);
485
+ });
486
+ configValues[configName] = { ...configValueBase, value: values };
487
+ }
488
+ });
489
+ return configValues;
490
+ }
491
491
  function interfacefileIsAlreaydLoaded(interfaceFile) {
492
492
  const configMapValues = Object.values(interfaceFile.fileExportsByConfigName);
493
493
  const isAlreadyLoaded = configMapValues.some((conf) => 'configValue' in conf);
@@ -496,8 +496,8 @@ function interfacefileIsAlreaydLoaded(interfaceFile) {
496
496
  }
497
497
  return isAlreadyLoaded;
498
498
  }
499
- function getInterfaceFilesRelevant(interfaceFilesByLocationId, locationIdPage) {
500
- const interfaceFilesRelevant = Object.fromEntries((0, utils_js_1.objectEntries)(interfaceFilesByLocationId)
499
+ function getInterfaceFilesRelevant(interfaceFilesAll, locationIdPage) {
500
+ const interfaceFilesRelevant = Object.fromEntries((0, utils_js_1.objectEntries)(interfaceFilesAll)
501
501
  .filter(([locationId]) => {
502
502
  return (0, filesystemRouting_js_1.isInherited)(locationId, locationIdPage);
503
503
  })
@@ -597,7 +597,10 @@ function isInterfaceFileUserLand(interfaceFile) {
597
597
  async function getConfigValueSource(configName, interfaceFile, configDef, userRootDir, importedFilesLoaded, isHighestInheritancePrecedence) {
598
598
  const conf = interfaceFile.fileExportsByConfigName[configName];
599
599
  (0, utils_js_1.assert)(conf);
600
- const { locationId } = interfaceFile;
600
+ const configValueSourceCommon = {
601
+ locationId: interfaceFile.locationId,
602
+ interfaceFile
603
+ };
601
604
  const definedAtFilePath_ = {
602
605
  ...interfaceFile.filePath,
603
606
  fileExportPathToShowToUser: ['default', configName]
@@ -625,7 +628,7 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
625
628
  };
626
629
  }
627
630
  const configValueSource = {
628
- locationId,
631
+ ...configValueSourceCommon,
629
632
  value: valueFilePath,
630
633
  valueIsFilePath: true,
631
634
  configEnv: configDef.env,
@@ -644,7 +647,7 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
644
647
  const resolved = (0, resolvePointerImport_js_1.resolvePointerImportOfConfig)(configValue, interfaceFile.filePath, userRootDir, configDef.env, configName);
645
648
  if (resolved) {
646
649
  const configValueSource = {
647
- locationId,
650
+ ...configValueSourceCommon,
648
651
  configEnv: resolved.configEnvResolved,
649
652
  valueIsImportedAtRuntime: true,
650
653
  valueIsDefinedByPlusFile: false,
@@ -652,7 +655,7 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
652
655
  definedAtFilePath: resolved.pointerImport
653
656
  };
654
657
  // Load pointer import
655
- if (isLoadableAtBuildTime(configDef) &&
658
+ if (shouldBeLoadableAtBuildTime(configDef) &&
656
659
  // The value of `extends` was already loaded and already used: we don't need the value of `extends` anymore
657
660
  configName !== 'extends') {
658
661
  if (resolved.pointerImport.filePathAbsoluteFilesystem) {
@@ -668,7 +671,7 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
668
671
  }
669
672
  // Defined inside +config.js
670
673
  const configValueSource = {
671
- locationId,
674
+ ...configValueSourceCommon,
672
675
  value: configValue,
673
676
  configEnv: configDef.env,
674
677
  valueIsImportedAtRuntime: false,
@@ -684,7 +687,7 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
684
687
  const valueAlreadyLoaded = 'configValue' in conf;
685
688
  (0, utils_js_1.assert)(valueAlreadyLoaded === !!configEnvResolved.config);
686
689
  const configValueSource = {
687
- locationId,
690
+ ...configValueSourceCommon,
688
691
  configEnv: configEnvResolved,
689
692
  valueIsImportedAtRuntime: !valueAlreadyLoaded,
690
693
  valueIsDefinedByPlusFile: true,
@@ -1042,7 +1045,7 @@ function getConfigDefinition(configDefinitions, configName, filePathToShowToUser
1042
1045
  function getConfigDefinitionOptional(configDefinitions, configName) {
1043
1046
  return configDefinitions[configName] ?? null;
1044
1047
  }
1045
- function isLoadableAtBuildTime(configDef) {
1048
+ function shouldBeLoadableAtBuildTime(configDef) {
1046
1049
  return !!configDef.env.config && !configDef._valueIsFilePath;
1047
1050
  }
1048
1051
  function isGlobalConfig(configName) {
@@ -1052,6 +1055,17 @@ function isGlobalConfig(configName) {
1052
1055
  const configNamesGlobal = getConfigNamesGlobal();
1053
1056
  return (0, utils_js_1.includes)(configNamesGlobal, configName);
1054
1057
  }
1058
+ /*
1059
+ // TODO/now
1060
+ function isGlobalConfig(configName: string, configDefinitions: ConfigDefinitions): configName is ConfigNameGlobal {
1061
+ const configSpec = configDefinitions[configName]
1062
+ assert(configSpec)
1063
+ const globalValue = configSpec.global
1064
+ if (!globalValue) return false
1065
+ if (globalValue === true ) return true
1066
+ return globalValue(value)
1067
+ }
1068
+ */
1055
1069
  function getConfigNamesGlobal() {
1056
1070
  return Object.keys(configDefinitionsBuiltInGlobal);
1057
1071
  }
@@ -1087,35 +1101,3 @@ function sortConfigValueSources(configValueSources, locationIdPage) {
1087
1101
  function getConfigValueInterfaceFile(interfaceFile, configName) {
1088
1102
  return interfaceFile.fileExportsByConfigName[configName]?.configValue;
1089
1103
  }
1090
- // TODO/now: refactor code below
1091
- function resolveVikeConfigGlobal(vikeVitePluginOptions, pageConfigGlobalValues) {
1092
- const configs = [vikeVitePluginOptions, pageConfigGlobalValues];
1093
- const vikeConfigGlobal = {
1094
- disableAutoFullBuild: pickFirst(configs.map((c) => c.disableAutoFullBuild)) ?? null,
1095
- prerender: resolvePrerenderOptions(configs),
1096
- includeAssetsImportedByServer: pickFirst(configs.map((c) => c.includeAssetsImportedByServer)) ?? true,
1097
- baseServer: pickFirst(configs.map((c) => c.baseServer)) ?? null,
1098
- baseAssets: pickFirst(configs.map((c) => c.baseAssets)) ?? null,
1099
- disableUrlNormalization: pickFirst(configs.map((c) => c.disableUrlNormalization)) ?? false,
1100
- trailingSlash: pickFirst(configs.map((c) => c.trailingSlash)) ?? false
1101
- };
1102
- return vikeConfigGlobal;
1103
- }
1104
- function resolvePrerenderOptions(configs) {
1105
- if (!configs.some((c) => c.prerender)) {
1106
- return false;
1107
- }
1108
- const configsPrerender = configs.map((c) => c.prerender).filter(isObject2);
1109
- return {
1110
- partial: pickFirst(configsPrerender.map((c) => c.partial)) ?? false,
1111
- noExtraDir: pickFirst(configsPrerender.map((c) => c.noExtraDir)) ?? false,
1112
- parallel: pickFirst(configsPrerender.map((c) => c.parallel)) ?? true,
1113
- disableAutoRun: pickFirst(configsPrerender.map((c) => c.disableAutoRun)) ?? false
1114
- };
1115
- }
1116
- function isObject2(p) {
1117
- return typeof p === 'object';
1118
- }
1119
- function pickFirst(arr) {
1120
- return arr.filter((v) => v !== undefined)[0];
1121
- }
@@ -24,7 +24,9 @@ async function getVirtualFilePageConfigValuesAll(id, isDev, config) {
24
24
  const { pageConfigs } = vikeConfig;
25
25
  const pageConfig = pageConfigs.find((pageConfig) => pageConfig.pageId === pageId);
26
26
  (0, utils_js_1.assert)(pageConfig, { id, pageId });
27
- const code = getLoadConfigValuesAll(pageConfig, isForClientSide, pageId, vikeConfig.vikeConfigGlobal.includeAssetsImportedByServer, isDev);
27
+ const code = getLoadConfigValuesAll(pageConfig, isForClientSide, pageId,
28
+ // TODO/now: add meta.default
29
+ vikeConfig.global.config.includeAssetsImportedByServer ?? true, isDev);
28
30
  (0, debug_js_1.debug)(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code);
29
31
  return code;
30
32
  }
@@ -28,12 +28,13 @@ function getCodePageConfigsSerialized(pageConfigs, isForClientSide, isClientRout
28
28
  const lines = [];
29
29
  pageConfigs.forEach((pageConfig) => {
30
30
  const { pageId, routeFilesystem, isErrorPage } = pageConfig;
31
- const virtualFileIdPageConfigValuesAll = (0, virtualFilePageConfigValuesAll_js_1.getVirtualFileIdPageConfigValuesAll)(pageId, isForClientSide);
32
31
  lines.push(` {`);
33
32
  lines.push(` pageId: ${JSON.stringify(pageId)},`);
34
33
  lines.push(` isErrorPage: ${JSON.stringify(isErrorPage)},`);
35
34
  lines.push(` routeFilesystem: ${JSON.stringify(routeFilesystem)},`);
36
- lines.push(` loadConfigValuesAll: () => import(${JSON.stringify(virtualFileIdPageConfigValuesAll)}),`);
35
+ const virtualFileId = JSON.stringify((0, virtualFilePageConfigValuesAll_js_1.getVirtualFileIdPageConfigValuesAll)(pageId, isForClientSide));
36
+ const load = `() => ({ moduleId: ${virtualFileId}, moduleExports: import(${virtualFileId}) })`;
37
+ lines.push(` loadConfigValuesAll: ${load},`);
37
38
  lines.push(` configValuesSerialized: {`);
38
39
  lines.push(...(0, serializeConfigValues_js_1.serializeConfigValues)(pageConfig, importStatements, (configEnv) => (0, isRuntimeEnvMatch_js_1.isRuntimeEnvMatch)(configEnv, { isForClientSide, isClientRouting, isDev }), ' ', true));
39
40
  lines.push(` },`);
@@ -12,7 +12,7 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
12
12
  const index_js_1 = require("./devConfig/index.js");
13
13
  function previewConfig() {
14
14
  let config;
15
- // let vikeConfigGlobal: VikeConfigGlobal
15
+ // let vikeConfig: VikeConfigObject
16
16
  return {
17
17
  name: 'vike:previewConfig',
18
18
  apply: utils_js_1.applyPreview,
@@ -27,8 +27,7 @@ function previewConfig() {
27
27
  async configResolved(config_) {
28
28
  config = config_;
29
29
  (0, index_js_1.logDockerHint)(config.preview.host);
30
- // const vikeConfig = await getVikeConfig(config)
31
- // vikeConfigGlobal = vikeConfig.vikeConfigGlobal
30
+ // vikeConfig = await getVikeConfig(config)
32
31
  },
33
32
  configurePreviewServer(server) {
34
33
  /* - Couldn't make `appType: 'mpa'` work as of npm:@brillout/vite@5.0.0-beta.14.0426910c
@@ -38,7 +37,7 @@ function previewConfig() {
38
37
  return () => {
39
38
  assertDist();
40
39
  /* We don't use this condition (we wrongfully always use the SSR middleware) because of the regression introduced by https://github.com/vitejs/vite/pull/14756 which stops servering .html files when `appType: 'custom'`.
41
- if (!vikeConfigGlobal.prerender || vikeConfigGlobal.prerender.partial) {
40
+ if (!vikeConfig.global.config.prerender || vikeConfig.global.config.prerender.partial) {
42
41
  addSsrMiddleware(server.middlewares, config, true)
43
42
  }
44
43
  /*/
@@ -18,7 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  // We call onLoad() here so that it's called even when only a subset of the plugin is loaded. (Making the assert() calls inside onLoad() a lot stronger.)
19
19
  const onLoad_js_1 = require("./onLoad.js");
20
20
  (0, onLoad_js_1.onLoad)();
21
- // We tolerate the fact that we load all of the runtime utils even though some of it isn't needed
21
+ // It's common practice for Vike's Vite plugin to import from Vike's sever runtime
22
22
  __exportStar(require("../runtime/utils.js"), exports);
23
23
  // Utils only needed by `plugin/*`
24
24
  __exportStar(require("../../utils/viteIsSSR.js"), exports);
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPrerenderAutoRunEnabled = isPrerenderAutoRunEnabled;
4
+ exports.temp_disablePrerenderAutoRun = temp_disablePrerenderAutoRun;
5
+ exports.isPrerendering = isPrerendering;
6
+ exports.setContextIsPrerendering = setContextIsPrerendering;
7
+ const getGlobalObject_js_1 = require("../../utils/getGlobalObject.js");
8
+ const resolvePrerenderConfig_js_1 = require("./resolvePrerenderConfig.js");
9
+ const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('prerender/context.ts', {});
10
+ function isPrerenderAutoRunEnabled(vikeConfig) {
11
+ const prerenderConfig = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfig)(vikeConfig.global.config.prerender);
12
+ return (prerenderConfig &&
13
+ !prerenderConfig.disableAutoRun &&
14
+ !globalObject.isDisabled &&
15
+ vikeConfig.global.config.disableAutoFullBuild !== 'prerender');
16
+ }
17
+ // TODO/v1-release: remove
18
+ function temp_disablePrerenderAutoRun() {
19
+ globalObject.isDisabled = true;
20
+ }
21
+ function isPrerendering() {
22
+ return !!globalObject.isPrerendering;
23
+ }
24
+ function setContextIsPrerendering() {
25
+ globalObject.isPrerendering = true;
26
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvePrerenderConfig = resolvePrerenderConfig;
4
+ // TODO/now:
5
+ // - prerender.value
6
+ // - correct isPrerendering
7
+ function resolvePrerenderConfig(prerenderConfigs) {
8
+ if (!prerenderConfigs || prerenderConfigs.every((configVal) => !configVal)) {
9
+ return false;
10
+ }
11
+ const prerenderSettings = prerenderConfigs.filter(isObject2);
12
+ const prerenderConfig = {
13
+ partial: pickFirst(prerenderSettings.map((c) => c.partial)) ?? false,
14
+ noExtraDir: pickFirst(prerenderSettings.map((c) => c.noExtraDir)) ?? false,
15
+ parallel: pickFirst(prerenderSettings.map((c) => c.parallel)) ?? true,
16
+ disableAutoRun: pickFirst(prerenderSettings.map((c) => c.disableAutoRun)) ?? false
17
+ };
18
+ return prerenderConfig;
19
+ }
20
+ function isObject2(p) {
21
+ return typeof p === 'object';
22
+ }
23
+ function pickFirst(arr) {
24
+ return arr.filter((v) => v !== undefined)[0];
25
+ }