vike 0.4.216 → 0.4.217-commit-99ea561

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 (88) hide show
  1. package/dist/cjs/node/api/build.js +4 -2
  2. package/dist/cjs/node/api/prepareViteApiCall.js +14 -4
  3. package/dist/cjs/node/plugin/index.js +5 -7
  4. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +15 -12
  5. package/dist/cjs/node/plugin/plugins/baseUrls.js +17 -12
  6. package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +1 -1
  7. package/dist/cjs/node/plugin/plugins/buildConfig.js +4 -5
  8. package/dist/cjs/node/plugin/plugins/commonConfig.js +14 -1
  9. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
  10. package/dist/cjs/node/plugin/plugins/devConfig/index.js +1 -1
  11. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +4 -7
  12. package/dist/cjs/node/plugin/plugins/importBuild/getVikeManifest.js +2 -2
  13. package/dist/cjs/node/plugin/plugins/importBuild/index.js +8 -6
  14. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +8 -8
  15. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +9 -13
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +15 -102
  17. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +128 -0
  18. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +42 -28
  19. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +3 -4
  20. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +1 -1
  21. package/dist/cjs/node/plugin/plugins/previewConfig.js +4 -3
  22. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +4 -1
  23. package/dist/cjs/node/prerender/runPrerender.js +2 -4
  24. package/dist/cjs/node/runtime/globalContext.js +16 -8
  25. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -1
  26. package/dist/cjs/node/shared/resolveBase.js +41 -0
  27. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  28. package/dist/esm/node/api/build.js +4 -2
  29. package/dist/esm/node/api/prepareViteApiCall.d.ts +1 -1
  30. package/dist/esm/node/api/prepareViteApiCall.js +14 -4
  31. package/dist/esm/node/plugin/index.d.ts +3 -3
  32. package/dist/esm/node/plugin/index.js +3 -5
  33. package/dist/esm/node/plugin/plugins/autoFullBuild.js +15 -12
  34. package/dist/esm/node/plugin/plugins/baseUrls.d.ts +2 -2
  35. package/dist/esm/node/plugin/plugins/baseUrls.js +17 -12
  36. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +1 -1
  37. package/dist/esm/node/plugin/plugins/buildConfig.js +4 -5
  38. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +7 -1
  39. package/dist/esm/node/plugin/plugins/commonConfig.js +15 -2
  40. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.d.ts +1 -1
  41. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
  42. package/dist/esm/node/plugin/plugins/devConfig/index.js +1 -1
  43. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +4 -7
  44. package/dist/esm/node/plugin/plugins/importBuild/getVikeManifest.d.ts +3 -2
  45. package/dist/esm/node/plugin/plugins/importBuild/getVikeManifest.js +2 -2
  46. package/dist/esm/node/plugin/plugins/importBuild/index.js +8 -6
  47. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +2 -2
  48. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +8 -8
  49. package/dist/esm/node/plugin/plugins/importUserCode/index.js +11 -15
  50. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +1 -1
  51. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +15 -102
  52. package/dist/esm/{shared/ConfigVike.d.ts → node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.d.ts} +14 -12
  53. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +123 -0
  54. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +8 -6
  55. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +43 -29
  56. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +3 -4
  57. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +1 -1
  58. package/dist/esm/node/plugin/plugins/previewConfig.js +4 -3
  59. package/dist/esm/node/plugin/plugins/setGlobalContext.js +5 -2
  60. package/dist/esm/node/plugin/shared/getEnvVarObject.d.ts +1 -1
  61. package/dist/esm/node/prerender/runPrerender.js +2 -4
  62. package/dist/esm/node/runtime/globalContext.d.ts +6 -2
  63. package/dist/esm/node/runtime/globalContext.js +16 -8
  64. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -1
  65. package/dist/esm/node/shared/resolveBase.d.ts +11 -0
  66. package/dist/esm/node/shared/resolveBase.js +36 -0
  67. package/dist/esm/shared/page-configs/Config.d.ts +2 -2
  68. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  69. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  70. package/dist/esm/utils/projectInfo.d.ts +1 -1
  71. package/package.json +1 -1
  72. package/dist/cjs/node/plugin/plugins/config/assertVikeConfig.js +0 -75
  73. package/dist/cjs/node/plugin/plugins/config/index.js +0 -81
  74. package/dist/cjs/node/plugin/plugins/config/pickFirst.js +0 -6
  75. package/dist/cjs/node/plugin/plugins/config/resolveBase.js +0 -47
  76. package/dist/cjs/node/shared/getConfigVike.js +0 -10
  77. package/dist/cjs/shared/ConfigVike.js +0 -2
  78. package/dist/esm/node/plugin/plugins/config/assertVikeConfig.d.ts +0 -7
  79. package/dist/esm/node/plugin/plugins/config/assertVikeConfig.js +0 -73
  80. package/dist/esm/node/plugin/plugins/config/index.d.ts +0 -3
  81. package/dist/esm/node/plugin/plugins/config/index.js +0 -76
  82. package/dist/esm/node/plugin/plugins/config/pickFirst.d.ts +0 -1
  83. package/dist/esm/node/plugin/plugins/config/pickFirst.js +0 -3
  84. package/dist/esm/node/plugin/plugins/config/resolveBase.d.ts +0 -10
  85. package/dist/esm/node/plugin/plugins/config/resolveBase.js +0 -42
  86. package/dist/esm/node/shared/getConfigVike.d.ts +0 -4
  87. package/dist/esm/node/shared/getConfigVike.js +0 -8
  88. package/dist/esm/shared/ConfigVike.js +0 -1
@@ -1,10 +1,11 @@
1
1
  export { getVikeConfig };
2
+ export { getVikeConfig2 };
2
3
  export { reloadVikeConfig };
3
4
  export { vikeConfigDependencies };
4
5
  export { isVikeConfigFile };
5
6
  export { isV1Design };
6
7
  export { getConfigValueInterfaceFile };
7
- import { assertPosixPath, assert, isObject, assertUsage, assertWarning, objectEntries, hasProp, includes, assertIsNotProductionRuntime, getMostSimilar, joinEnglish, lowerFirst, getOutDirs, assertKeys, objectKeys, objectFromEntries, makeFirst, isNpmPackageImport, reverse } from '../../../utils.js';
8
+ import { assertPosixPath, assert, isObject, assertUsage, assertWarning, objectEntries, hasProp, includes, assertIsNotProductionRuntime, getMostSimilar, joinEnglish, lowerFirst, assertKeys, objectKeys, objectFromEntries, makeFirst, isNpmPackageImport, reverse } from '../../../utils.js';
8
9
  import path from 'path';
9
10
  import { configDefinitionsBuiltIn, configDefinitionsBuiltInGlobal } from './getVikeConfig/configDefinitionsBuiltIn.js';
10
11
  import { getLocationId, getFilesystemRouteString, getFilesystemRouteDefinedBy, isInherited, sortAfterInheritanceOrder, isGlobalLocation, applyFilesystemRoutingRootEffect } from './getVikeConfig/filesystemRouting.js';
@@ -21,17 +22,20 @@ import { loadConfigFile, loadImportedFile, loadValueFile } from './getVikeConfig
21
22
  import { clearFilesEnvMap, resolveConfigEnvWithFileName, resolvePointerImportOfConfig } from './getVikeConfig/resolvePointerImport.js';
22
23
  import { getFilePathResolved } from '../../../shared/getFilePath.js';
23
24
  import { getConfigValueBuildTime } from '../../../../../shared/page-configs/getConfigValueBuildTime.js';
24
- import { getConfigVike } from '../../../../shared/getConfigVike.js';
25
25
  import { assertExtensionsPeerDependencies, assertExtensionsConventions } from './assertExtensions.js';
26
+ import { resolveVikeConfigGlobal } from './getVikeConfig/resolveVikeConfigGlobal.js';
26
27
  assertIsNotProductionRuntime();
27
- let devServerIsCorrupt = false;
28
+ let restartVite = false;
28
29
  let wasConfigInvalid = null;
29
30
  let vikeConfigPromise = null;
30
31
  const vikeConfigDependencies = new Set();
31
- function reloadVikeConfig(userRootDir, outDirRoot) {
32
+ function reloadVikeConfig(config) {
33
+ const userRootDir = config.root;
34
+ const vikeVitePluginOptions = config._vikeVitePluginOptions;
35
+ assert(vikeVitePluginOptions);
32
36
  vikeConfigDependencies.clear();
33
37
  clearFilesEnvMap();
34
- vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, true, true);
38
+ vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, true, vikeVitePluginOptions);
35
39
  handleReloadSideEffects();
36
40
  }
37
41
  async function handleReloadSideEffects() {
@@ -55,8 +59,8 @@ async function handleReloadSideEffects() {
55
59
  wasConfigInvalid = false;
56
60
  logConfigErrorRecover();
57
61
  }
58
- if (devServerIsCorrupt) {
59
- devServerIsCorrupt = false;
62
+ if (restartVite) {
63
+ restartVite = false;
60
64
  const viteDevServer = getViteDevServer();
61
65
  assert(viteDevServer);
62
66
  removeSuperfluousViteLog_enable();
@@ -65,23 +69,32 @@ async function handleReloadSideEffects() {
65
69
  }
66
70
  }
67
71
  }
68
- async function getVikeConfig(config, isDev, { crawlWithGit, tolerateInvalidConfig } = {}) {
69
- const { outDirRoot } = getOutDirs(config);
72
+ async function getVikeConfig(config, { doNotRestartViteOnError } = {}) {
70
73
  const userRootDir = config.root;
74
+ const vikeVitePluginOptions = config._vikeVitePluginOptions;
75
+ assert(vikeVitePluginOptions);
76
+ const isDev = config._isDev;
77
+ assert(typeof isDev === 'boolean');
78
+ return await getVikeConfigEntry(userRootDir, isDev, vikeVitePluginOptions, doNotRestartViteOnError ?? false);
79
+ }
80
+ async function getVikeConfig2(userRootDir, isDev, vikeVitePluginOptions) {
81
+ assert(vikeVitePluginOptions);
82
+ return await getVikeConfigEntry(userRootDir, isDev, vikeVitePluginOptions, false);
83
+ }
84
+ async function getVikeConfigEntry(userRootDir, isDev, vikeVitePluginOptions, doNotRestartViteOnError) {
71
85
  if (!vikeConfigPromise) {
72
- const crawlWithGit_ = crawlWithGit !== undefined ? crawlWithGit : (await getConfigVike(config)).crawl.git;
73
- vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev, crawlWithGit_, tolerateInvalidConfig);
86
+ vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePluginOptions, doNotRestartViteOnError);
74
87
  }
75
88
  return await vikeConfigPromise;
76
89
  }
77
- async function isV1Design(config, isDev) {
78
- const vikeConfig = await getVikeConfig(config, isDev);
90
+ async function isV1Design(config) {
91
+ const vikeConfig = await getVikeConfig(config);
79
92
  const { pageConfigs } = vikeConfig;
80
93
  const isV1Design = pageConfigs.length > 0;
81
94
  return isV1Design;
82
95
  }
83
- async function loadInterfaceFiles(userRootDir, outDirRoot, crawlWithGit) {
84
- const plusFiles = await findPlusFiles(userRootDir, outDirRoot, crawlWithGit);
96
+ async function loadInterfaceFiles(userRootDir) {
97
+ const plusFiles = await findPlusFiles(userRootDir, null);
85
98
  const configFiles = [];
86
99
  const valueFiles = [];
87
100
  plusFiles.forEach((f) => {
@@ -190,12 +203,12 @@ function assertAllConfigsAreKnown(interfaceFilesByLocationId) {
190
203
  });
191
204
  });
192
205
  }
193
- async function loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev, crawlWithGit, tolerateInvalidConfig) {
206
+ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePluginOptions, doNotRestartViteOnError) {
194
207
  let hasError = false;
195
208
  let ret;
196
209
  let err;
197
210
  try {
198
- ret = await loadVikeConfig(userRootDir, outDirRoot, crawlWithGit);
211
+ ret = await loadVikeConfig(userRootDir, vikeVitePluginOptions);
199
212
  }
200
213
  catch (err_) {
201
214
  hasError = true;
@@ -217,8 +230,8 @@ async function loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev,
217
230
  }
218
231
  else {
219
232
  logConfigError(err);
220
- if (!tolerateInvalidConfig) {
221
- devServerIsCorrupt = true;
233
+ if (!doNotRestartViteOnError) {
234
+ restartVite = true;
222
235
  }
223
236
  const dummyData = {
224
237
  pageConfigs: [],
@@ -226,16 +239,17 @@ async function loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev,
226
239
  configDefinitions: {},
227
240
  configValueSources: {}
228
241
  },
229
- globalVikeConfig: {}
242
+ vikeConfigGlobal: resolveVikeConfigGlobal({}, {})
230
243
  };
231
244
  return dummyData;
232
245
  }
233
246
  }
234
247
  }
235
- async function loadVikeConfig(userRootDir, outDirRoot, crawlWithGit) {
236
- const interfaceFilesByLocationId = await loadInterfaceFiles(userRootDir, outDirRoot, crawlWithGit);
248
+ async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
249
+ const interfaceFilesByLocationId = await loadInterfaceFiles(userRootDir);
237
250
  const importedFilesLoaded = {};
238
- const { globalVikeConfig, pageConfigGlobal } = await getGlobalConfigs(interfaceFilesByLocationId, userRootDir, importedFilesLoaded);
251
+ const { pageConfigGlobal, pageConfigGlobalValues } = await getGlobalConfigs(interfaceFilesByLocationId, userRootDir, importedFilesLoaded);
252
+ const vikeConfigGlobal = resolveVikeConfigGlobal(vikeVitePluginOptions, pageConfigGlobalValues);
239
253
  const pageConfigs = await Promise.all(objectEntries(interfaceFilesByLocationId)
240
254
  .filter(([_pageId, interfaceFiles]) => isDefiningPage(interfaceFiles))
241
255
  .map(async ([locationId]) => {
@@ -285,7 +299,7 @@ async function loadVikeConfig(userRootDir, outDirRoot, crawlWithGit) {
285
299
  return pageConfig;
286
300
  }));
287
301
  assertPageConfigs(pageConfigs);
288
- return { pageConfigs, pageConfigGlobal, globalVikeConfig };
302
+ return { pageConfigs, pageConfigGlobal, vikeConfigGlobal };
289
303
  }
290
304
  // TODO/soon: refactor
291
305
  // - Dedupe: most of the assertUsageGlobalConfigs() code below is a copy-paste of the assertUsage() logic inside getGlobalConfigs()
@@ -395,7 +409,7 @@ async function getGlobalConfigs(interfaceFilesByLocationId, userRootDir, importe
395
409
  });
396
410
  });
397
411
  }
398
- const globalVikeConfig = {};
412
+ const pageConfigGlobalValues = {};
399
413
  const pageConfigGlobal = {
400
414
  configDefinitions: configDefinitionsBuiltInGlobal,
401
415
  configValueSources: {}
@@ -415,10 +429,10 @@ async function getGlobalConfigs(interfaceFilesByLocationId, userRootDir, importe
415
429
  return;
416
430
  const { filePathToShowToUser } = configValueSource.definedAtFilePath;
417
431
  assertWarning(false, `Being able to define config ${pc.cyan(configName)} in ${filePathToShowToUser} is experimental and will likely be removed. Define the config ${pc.cyan(configName)} in Vike's Vite plugin options instead.`, { onlyOnce: true });
418
- globalVikeConfig[configName] = configValueSource.value;
432
+ pageConfigGlobalValues[configName] = configValueSource.value;
419
433
  }
420
434
  }));
421
- return { pageConfigGlobal, globalVikeConfig };
435
+ return { pageConfigGlobal, pageConfigGlobalValues };
422
436
  }
423
437
  async function resolveConfigValueSources(configName, configDef, interfaceFilesRelevant, userRootDir, importedFilesLoaded) {
424
438
  const sourcesInfo = [];
@@ -779,8 +793,8 @@ function getComputed(configValueSources, configDefinitions) {
779
793
  });
780
794
  return configValuesComputed;
781
795
  }
782
- async function findPlusFiles(userRootDir, outDirRoot, crawlWithGit) {
783
- const files = await crawlPlusFiles(userRootDir, outDirRoot, crawlWithGit);
796
+ async function findPlusFiles(userRootDir, outDirRoot) {
797
+ const files = await crawlPlusFiles(userRootDir, outDirRoot);
784
798
  const plusFiles = files.map(({ filePathAbsoluteUserRootDir }) => getFilePathResolved({ filePathAbsoluteUserRootDir, userRootDir }));
785
799
  return plusFiles;
786
800
  }
@@ -6,7 +6,6 @@ import { extractAssetsAddQuery } from '../../../../shared/extractAssetsQuery.js'
6
6
  import { debug } from './debug.js';
7
7
  import { isRuntimeEnvMatch } from './isRuntimeEnvMatch.js';
8
8
  import { serializeConfigValues } from '../../../../../shared/page-configs/serialize/serializeConfigValues.js';
9
- import { getConfigVike } from '../../../../shared/getConfigVike.js';
10
9
  import { fixServerAssets_isEnabled } from '../../buildConfig/fixServerAssets.js';
11
10
  import { getConfigValueBuildTime } from '../../../../../shared/page-configs/getConfigValueBuildTime.js';
12
11
  async function getVirtualFilePageConfigValuesAll(id, isDev, config) {
@@ -19,11 +18,11 @@ async function getVirtualFilePageConfigValuesAll(id, isDev, config) {
19
18
  }
20
19
  */
21
20
  const { pageId, isForClientSide } = result;
22
- const { pageConfigs } = await getVikeConfig(config, isDev, { tolerateInvalidConfig: true });
21
+ const vikeConfig = await getVikeConfig(config, { doNotRestartViteOnError: true });
22
+ const { pageConfigs } = vikeConfig;
23
23
  const pageConfig = pageConfigs.find((pageConfig) => pageConfig.pageId === pageId);
24
24
  assert(pageConfig, { id, pageId });
25
- const configVike = await getConfigVike(config);
26
- const code = getLoadConfigValuesAll(pageConfig, isForClientSide, pageId, configVike.includeAssetsImportedByServer, isDev);
25
+ const code = getLoadConfigValuesAll(pageConfig, isForClientSide, pageId, vikeConfig.vikeConfigGlobal.includeAssetsImportedByServer, isDev);
27
26
  debug(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code);
28
27
  return code;
29
28
  }
@@ -5,7 +5,7 @@ import { getVikeConfig } from './getVikeConfig.js';
5
5
  import { isRuntimeEnvMatch } from './isRuntimeEnvMatch.js';
6
6
  import { serializeConfigValues } from '../../../../../shared/page-configs/serialize/serializeConfigValues.js';
7
7
  async function getVirtualFilePageConfigs(isForClientSide, isDev, id, isClientRouting, config) {
8
- const { pageConfigs, pageConfigGlobal } = await getVikeConfig(config, isDev, { tolerateInvalidConfig: true });
8
+ const { pageConfigs, pageConfigGlobal } = await getVikeConfig(config, { doNotRestartViteOnError: true });
9
9
  return getCode(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, isClientRouting);
10
10
  }
11
11
  function getCode(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, isClientRouting) {
@@ -7,7 +7,7 @@ import pc from '@brillout/picocolors';
7
7
  import { logDockerHint } from './devConfig/index.js';
8
8
  function previewConfig() {
9
9
  let config;
10
- // let configVike: ConfigVikeResolved
10
+ // let vikeConfigGlobal: VikeConfigGlobal
11
11
  return {
12
12
  name: 'vike:previewConfig',
13
13
  apply: applyPreview,
@@ -22,7 +22,8 @@ function previewConfig() {
22
22
  async configResolved(config_) {
23
23
  config = config_;
24
24
  logDockerHint(config.preview.host);
25
- // configVike = await getConfigVike(config)
25
+ // const vikeConfig = await getVikeConfig(config)
26
+ // vikeConfigGlobal = vikeConfig.vikeConfigGlobal
26
27
  },
27
28
  configurePreviewServer(server) {
28
29
  /* - Couldn't make `appType: 'mpa'` work as of npm:@brillout/vite@5.0.0-beta.14.0426910c
@@ -32,7 +33,7 @@ function previewConfig() {
32
33
  return () => {
33
34
  assertDist();
34
35
  /* 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'`.
35
- if (!configVike.prerender || configVike.prerender.partial) {
36
+ if (!vikeConfigGlobal.prerender || vikeConfigGlobal.prerender.partial) {
36
37
  addSsrMiddleware(server.middlewares, config, true)
37
38
  }
38
39
  /*/
@@ -1,6 +1,7 @@
1
1
  export { setGlobalContext };
2
- import { setGlobalContext_isViteDev, setGlobalContext_viteDevServer, setGlobalContext_viteConfig } from '../../runtime/globalContext.js';
2
+ import { setGlobalContext_isViteDev, setGlobalContext_viteDevServer, setGlobalContext_viteConfig, setGlobalContext_vikeConfig } from '../../runtime/globalContext.js';
3
3
  import { assertFilePathAbsoluteFilesystem, getOutDirs, isDevCheck, markSetup_isViteDev, markSetup_viteDevServer, markSetup_vitePreviewServer } from '../utils.js';
4
+ import { getVikeConfig } from './importUserCode/v1-design/getVikeConfig.js';
4
5
  function setGlobalContext() {
5
6
  return [
6
7
  {
@@ -30,10 +31,12 @@ function setGlobalContext() {
30
31
  enforce: 'post',
31
32
  configResolved: {
32
33
  order: 'post',
33
- handler(config) {
34
+ async handler(config) {
34
35
  const { outDirRoot } = getOutDirs(config);
35
36
  assertFilePathAbsoluteFilesystem(outDirRoot); // Needed for loadImportBuild(outDir) of @brillout/vite-plugin-server-entry
36
37
  setGlobalContext_viteConfig(config, outDirRoot);
38
+ const vikeConfig = await getVikeConfig(config);
39
+ setGlobalContext_vikeConfig(vikeConfig);
37
40
  }
38
41
  }
39
42
  }
@@ -1,2 +1,2 @@
1
1
  export { getEnvVarObject };
2
- declare function getEnvVarObject(envVarName: 'VITE_CONFIG'): null | Record<string, unknown>;
2
+ declare function getEnvVarObject(envVarName: 'VITE_CONFIG' | 'VIKE_CRAWL'): null | Record<string, unknown>;
@@ -11,7 +11,6 @@ import pc from '@brillout/picocolors';
11
11
  import { cpus } from 'os';
12
12
  import { getGlobalContext, initGlobalContext_runPrerender, setGlobalContext_isPrerendering } from '../runtime/globalContext.js';
13
13
  import { resolveConfig } from 'vite';
14
- import { getConfigVike } from '../shared/getConfigVike.js';
15
14
  import { getPageFilesServerSide } from '../../shared/getPageFiles.js';
16
15
  import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
17
16
  import { getUrlFromRouteString } from '../../shared/route/resolveRouteString.js';
@@ -71,10 +70,10 @@ async function runPrerender(options = {}, standaloneTrigger) {
71
70
  await disableReactStreaming();
72
71
  const viteConfig = await resolveConfig(options.viteConfig || {}, 'vike pre-rendering', 'production');
73
72
  assertLoadedConfig(viteConfig, options);
74
- const configVike = await getConfigVike(viteConfig);
73
+ const vikeConfig = await getVikeConfig(viteConfig);
75
74
  const { outDirClient } = getOutDirs(viteConfig);
76
75
  const { root } = viteConfig;
77
- const prerenderConfig = configVike.prerender;
76
+ const prerenderConfig = vikeConfig.vikeConfigGlobal.prerender;
78
77
  if (!prerenderConfig) {
79
78
  assert(standaloneTrigger);
80
79
  assertWarning(prerenderConfig, `You're executing ${pc.cyan(standaloneTrigger)} but the config ${pc.cyan('prerender')} isn't set to true`, {
@@ -94,7 +93,6 @@ async function runPrerender(options = {}, standaloneTrigger) {
94
93
  pageContextInit: options.pageContextInit ?? null
95
94
  });
96
95
  const doNotPrerenderList = [];
97
- const vikeConfig = await getVikeConfig(viteConfig, false);
98
96
  await collectDoNoPrerenderList(renderContext, vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
99
97
  await callOnBeforePrerenderStartHooks(prerenderContext, renderContext, concurrencyLimit, doNotPrerenderList);
100
98
  await handlePagesWithStaticRoutes(prerenderContext, renderContext, doNotPrerenderList, concurrencyLimit);
@@ -9,13 +9,15 @@ export { initGlobalContext_runPrerender };
9
9
  export { initGlobalContext_getGlobalContextAsync };
10
10
  export { setGlobalContext_viteDevServer };
11
11
  export { setGlobalContext_viteConfig };
12
+ export { setGlobalContext_vikeConfig };
12
13
  export { setGlobalContext_isViteDev };
13
14
  export { setGlobalContext_isPrerendering };
14
15
  import type { ViteManifest } from '../shared/ViteManifest.js';
15
16
  import type { ResolvedConfig, ViteDevServer } from 'vite';
16
17
  import { PluginManifest } from '../shared/assertPluginManifest.js';
17
- import type { ConfigVikeResolved } from '../../shared/ConfigVike.js';
18
+ import type { VikeConfigGlobal } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js';
18
19
  import { type RuntimeManifest } from '../shared/assertRuntimeManifest.js';
20
+ import type { VikeConfigObject } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
19
21
  type GlobalContextPublic = {
20
22
  assetsManifest: null | ViteManifest;
21
23
  };
@@ -30,6 +32,7 @@ type GlobalContext = {
30
32
  isProduction: false;
31
33
  isPrerendering: false;
32
34
  viteConfig: ResolvedConfig;
35
+ vikeConfig: VikeConfigObject;
33
36
  viteDevServer: ViteDevServer;
34
37
  assetsManifest: null;
35
38
  pluginManifest: null;
@@ -52,6 +55,7 @@ declare function getGlobalContextSync(): GlobalContextPublic;
52
55
  declare function getGlobalContextAsync(isProduction: boolean): Promise<GlobalContextPublic>;
53
56
  declare function setGlobalContext_viteDevServer(viteDevServer: ViteDevServer): void;
54
57
  declare function setGlobalContext_viteConfig(viteConfig: ResolvedConfig, outDirRoot: string): void;
58
+ declare function setGlobalContext_vikeConfig(vikeConfig: VikeConfigObject): void;
55
59
  declare function setGlobalContext_isViteDev(isViteDev: boolean): void;
56
60
  declare function setGlobalContext_isPrerendering(): void;
57
61
  declare function getViteDevServer(): ViteDevServer | null;
@@ -59,4 +63,4 @@ declare function getViteConfig(): ResolvedConfig | null;
59
63
  declare function initGlobalContext_renderPage(): Promise<void>;
60
64
  declare function initGlobalContext_runPrerender(): Promise<void>;
61
65
  declare function initGlobalContext_getGlobalContextAsync(isProduction: boolean): Promise<void>;
62
- declare function getRuntimeManifest(configVike: ConfigVikeResolved): RuntimeManifest;
66
+ declare function getRuntimeManifest(vikeConfigGlobal: VikeConfigGlobal, viteConfig: ResolvedConfig): RuntimeManifest;
@@ -11,16 +11,17 @@ export { initGlobalContext_runPrerender };
11
11
  export { initGlobalContext_getGlobalContextAsync };
12
12
  export { setGlobalContext_viteDevServer };
13
13
  export { setGlobalContext_viteConfig };
14
+ export { setGlobalContext_vikeConfig };
14
15
  export { setGlobalContext_isViteDev };
15
16
  export { setGlobalContext_isPrerendering };
16
17
  import { assert, onSetupRuntime, assertUsage, assertWarning, getGlobalObject, isPlainObject, objectAssign, objectKeys, genPromise } from './utils.js';
17
18
  import { loadImportBuild } from './globalContext/loadImportBuild.js';
18
19
  import { setPageFiles } from '../../shared/getPageFiles.js';
19
20
  import { assertPluginManifest } from '../shared/assertPluginManifest.js';
20
- import { getConfigVike } from '../shared/getConfigVike.js';
21
21
  import { assertRuntimeManifest } from '../shared/assertRuntimeManifest.js';
22
22
  import pc from '@brillout/picocolors';
23
23
  import { getPageFilesExports } from './page-files/getPageFilesExports.js';
24
+ import { resolveBaseFromResolvedConfig } from '../shared/resolveBase.js';
24
25
  const globalObject = getGlobalObject('globalContext.ts', (() => {
25
26
  const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = genPromise();
26
27
  return {
@@ -85,6 +86,12 @@ function setGlobalContext_viteConfig(viteConfig, outDirRoot) {
85
86
  globalObject.viteConfig = viteConfig;
86
87
  globalObject.outDirRoot = outDirRoot;
87
88
  }
89
+ function setGlobalContext_vikeConfig(vikeConfig) {
90
+ if (globalObject.vikeConfig)
91
+ return;
92
+ assertIsNotInitilizedYet();
93
+ globalObject.vikeConfig = vikeConfig;
94
+ }
88
95
  function assertIsNotInitilizedYet() {
89
96
  // In develpoment, globalObject.viteDevServer always needs to be awaited for before initializing globalObject.globalContext
90
97
  assert(!globalObject.globalContext);
@@ -138,14 +145,15 @@ async function initGlobalContext(isProduction) {
138
145
  assert(globalObject.globalContext.isPrerendering === (globalObject.isPrerendering ?? false));
139
146
  return;
140
147
  }
141
- const { viteDevServer, viteConfig, isPrerendering } = globalObject;
148
+ const { viteDevServer, viteConfig, vikeConfig, isPrerendering } = globalObject;
142
149
  onSetupRuntime();
143
150
  if (!isProduction) {
144
151
  assert(viteConfig);
152
+ assert(vikeConfig);
145
153
  assert(viteDevServer);
146
154
  assert(!isPrerendering);
147
- const configVike = await getConfigVike(viteConfig);
148
- const pluginManifest = getRuntimeManifest(configVike);
155
+ const vikeConfigGlobal = vikeConfig.vikeConfigGlobal;
156
+ const pluginManifest = getRuntimeManifest(vikeConfigGlobal, viteConfig);
149
157
  globalObject.globalContext = {
150
158
  isProduction: false,
151
159
  isPrerendering: false,
@@ -153,6 +161,7 @@ async function initGlobalContext(isProduction) {
153
161
  pluginManifest: null,
154
162
  viteDevServer,
155
163
  viteConfig,
164
+ vikeConfig,
156
165
  baseServer: pluginManifest.baseServer,
157
166
  baseAssets: pluginManifest.baseAssets,
158
167
  includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
@@ -182,8 +191,6 @@ async function initGlobalContext(isProduction) {
182
191
  };
183
192
  if (isPrerendering) {
184
193
  assert(viteConfig);
185
- const configVike = await getConfigVike(viteConfig);
186
- assert(configVike);
187
194
  objectAssign(globalContext, {
188
195
  isPrerendering: true,
189
196
  viteConfig
@@ -199,8 +206,9 @@ async function initGlobalContext(isProduction) {
199
206
  }
200
207
  }
201
208
  }
202
- function getRuntimeManifest(configVike) {
203
- const { includeAssetsImportedByServer, baseServer, baseAssets, redirects, trailingSlash, disableUrlNormalization } = configVike;
209
+ function getRuntimeManifest(vikeConfigGlobal, viteConfig) {
210
+ const { includeAssetsImportedByServer, redirects, trailingSlash, disableUrlNormalization } = vikeConfigGlobal;
211
+ const { baseServer, baseAssets } = resolveBaseFromResolvedConfig(vikeConfigGlobal.baseServer, vikeConfigGlobal.baseAssets, viteConfig);
204
212
  const manifest = {
205
213
  baseServer,
206
214
  baseAssets,
@@ -121,7 +121,7 @@ function getPageContextInitEnhanced(pageContextInit, renderContext, { ssr: { url
121
121
  objectAssign(pageContextInitEnhanced, pageContextInit);
122
122
  objectAssign(pageContextInitEnhanced, {
123
123
  _objectCreatedByVike: true,
124
- // The following is defined on `pageContext` because we can eventually make these non-global (e.g. sot that two pages can have different includeAssetsImportedByServer settings)
124
+ // The following is defined on `pageContext` because we can eventually make these non-global
125
125
  _baseServer: globalContext.baseServer,
126
126
  _baseAssets: globalContext.baseAssets,
127
127
  _includeAssetsImportedByServer: globalContext.includeAssetsImportedByServer,
@@ -0,0 +1,11 @@
1
+ export { resolveBase };
2
+ export { resolveBaseFromResolvedConfig };
3
+ import type { ResolvedConfig } from 'vite';
4
+ declare function resolveBaseFromResolvedConfig(baseServer: string | null, baseAssets: string | null, config: ResolvedConfig): {
5
+ baseServer: string;
6
+ baseAssets: string;
7
+ };
8
+ declare function resolveBase(baseViteOriginal: string | null, baseServerUnresolved: string | null, baseAssetsUnresolved: string | null): {
9
+ baseServer: string;
10
+ baseAssets: string;
11
+ };
@@ -0,0 +1,36 @@
1
+ export { resolveBase };
2
+ export { resolveBaseFromResolvedConfig };
3
+ import { assert, assertUsage, isBaseServer, isBaseAssets } from './utils.js';
4
+ import pc from '@brillout/picocolors';
5
+ function resolveBaseFromResolvedConfig(baseServer, baseAssets, config) {
6
+ let baseViteOriginal = config._baseViteOriginal;
7
+ if (baseViteOriginal === '/__UNSET__')
8
+ baseViteOriginal = null;
9
+ assert(baseViteOriginal === null || typeof baseViteOriginal == 'string');
10
+ return resolveBase(baseViteOriginal, baseServer, baseAssets);
11
+ }
12
+ function resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved) {
13
+ {
14
+ const wrongBase = (val) => `should start with ${pc.cyan('/')}, ${pc.cyan('http://')}, or ${pc.cyan('https://')} (it's ${pc.cyan(val)} instead)`;
15
+ assertUsage(baseViteOriginal === null || isBaseAssets(baseViteOriginal), `vite.config.js#base ${wrongBase(baseViteOriginal)}`);
16
+ assertUsage(baseAssetsUnresolved === null || isBaseAssets(baseAssetsUnresolved), `Config ${pc.cyan('baseAssets')} ${wrongBase(baseAssetsUnresolved)}`);
17
+ assertUsage(baseServerUnresolved === null || baseServerUnresolved.startsWith('/'), `Config ${pc.cyan('baseServer')} should start with a leading slash ${pc.cyan('/')} (it's ${pc.cyan(String(baseServerUnresolved))} instead)`);
18
+ }
19
+ if (baseViteOriginal) {
20
+ if (baseViteOriginal.startsWith('http')) {
21
+ baseAssetsUnresolved = baseAssetsUnresolved ?? baseViteOriginal;
22
+ }
23
+ else {
24
+ baseAssetsUnresolved = baseAssetsUnresolved ?? baseViteOriginal;
25
+ baseServerUnresolved = baseServerUnresolved ?? baseViteOriginal;
26
+ }
27
+ }
28
+ const baseServer = baseServerUnresolved ?? '/';
29
+ const baseAssets = baseAssetsUnresolved ?? '/';
30
+ assert(isBaseAssets(baseAssets));
31
+ assert(isBaseServer(baseServer));
32
+ return {
33
+ baseServer,
34
+ baseAssets
35
+ };
36
+ }
@@ -35,7 +35,7 @@ import type { PrefetchSetting, PrefetchStaticAssets } from '../../client/client-
35
35
  import type { ConfigDefinition } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js';
36
36
  import type { DocumentHtml } from '../../node/runtime/html/renderHtml.js';
37
37
  import type { InjectFilterEntry } from '../../types/index.js';
38
- import type { ConfigVikeUserProvided } from '../ConfigVike.js';
38
+ import type { VikeVitePluginOptions } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js';
39
39
  import type { Vike, VikePackages } from '../VikeNamespace.js';
40
40
  import type { HooksTimeoutProvidedByUser } from '../hooks/getHook.js';
41
41
  import type { PageContextClient, PageContextServer } from '../types.js';
@@ -43,7 +43,7 @@ type HookName = HookNamePage | HookNameGlobal | HookNameOldDesign;
43
43
  type HookNamePage = 'onHydrationEnd' | 'onBeforePrerenderStart' | 'onBeforeRender' | 'onPageTransitionStart' | 'onPageTransitionEnd' | 'onRenderHtml' | 'onRenderClient' | 'guard' | 'data';
44
44
  type HookNameGlobal = 'onBeforePrerender' | 'onBeforeRoute' | 'onPrerenderStart';
45
45
  type HookNameOldDesign = 'render' | 'prerender';
46
- type ConfigNameBuiltIn = Exclude<keyof Config, keyof ConfigVikeUserProvided | 'onBeforeRoute' | 'onPrerenderStart'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
46
+ type ConfigNameBuiltIn = Exclude<keyof Config, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
47
47
  type Config = ConfigBuiltIn & Vike.Config & (VikePackages.ConfigVikeReact | VikePackages.ConfigVikeVue | VikePackages.ConfigVikeSolid | VikePackages.ConfigVikeSvelte | VikePackages.ConfigVikeAngular);
48
48
  /** Hook for fetching data.
49
49
  *
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.216";
1
+ export declare const PROJECT_VERSION: "0.4.217-commit-99ea561";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.216';
2
+ export const PROJECT_VERSION = '0.4.217-commit-99ea561';
@@ -1,4 +1,4 @@
1
1
  export declare const projectInfo: {
2
2
  projectName: "Vike";
3
- projectVersion: "0.4.216";
3
+ projectVersion: "0.4.217-commit-99ea561";
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.216",
3
+ "version": "0.4.217-commit-99ea561",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertVikeConfig = assertVikeConfig;
4
- const utils_js_1 = require("../../utils.js");
5
- function assertVikeConfig(vikeConfig, wrongUsageMsg) {
6
- const wrongUsageError = checkConfigVike(vikeConfig);
7
- if (wrongUsageError) {
8
- (0, utils_js_1.assertUsage)(false, wrongUsageMsg(wrongUsageError));
9
- }
10
- }
11
- function checkConfigVike(configVike) {
12
- (0, utils_js_1.assert)((0, utils_js_1.isObject)(configVike));
13
- {
14
- const prop = 'disableUrlNormalization';
15
- if (!(0, utils_js_1.hasProp)(configVike, prop, 'boolean') && !(0, utils_js_1.hasProp)(configVike, prop, 'undefined'))
16
- return { prop, errMsg: 'should be a boolean' };
17
- }
18
- {
19
- const prop = 'trailingSlash';
20
- if (!(0, utils_js_1.hasProp)(configVike, prop, 'boolean') && !(0, utils_js_1.hasProp)(configVike, prop, 'undefined'))
21
- return { prop, errMsg: 'should be a boolean' };
22
- }
23
- {
24
- const prop = 'redirects';
25
- const { redirects } = configVike;
26
- if (!(redirects === undefined ||
27
- ((0, utils_js_1.isObject)(redirects) && Object.values(redirects).every((v) => typeof v === 'string'))))
28
- return { prop, errMsg: 'should be an object of strings' };
29
- }
30
- {
31
- const prop = 'disableAutoFullBuild';
32
- if (!(0, utils_js_1.hasProp)(configVike, prop, 'boolean') &&
33
- !(0, utils_js_1.hasProp)(configVike, prop, 'undefined') &&
34
- !(configVike[prop] === 'prerender'))
35
- return { prop, errMsg: "should be a boolean or 'prerender'" };
36
- }
37
- {
38
- const prop = 'includeAssetsImportedByServer';
39
- if (!(0, utils_js_1.hasProp)(configVike, prop, 'boolean') && !(0, utils_js_1.hasProp)(configVike, prop, 'undefined'))
40
- return { prop, errMsg: 'should be a boolean' };
41
- }
42
- {
43
- const prop = 'prerender';
44
- if (!(0, utils_js_1.hasProp)(configVike, prop, 'object') &&
45
- !(0, utils_js_1.hasProp)(configVike, prop, 'boolean') &&
46
- !(0, utils_js_1.hasProp)(configVike, prop, 'undefined'))
47
- return { prop, errMsg: 'should be an object or a boolean' };
48
- }
49
- const configVikePrerender = configVike.prerender;
50
- if (typeof configVikePrerender === 'object') {
51
- {
52
- const p = 'partial';
53
- if (!(0, utils_js_1.hasProp)(configVikePrerender, p, 'boolean') && !(0, utils_js_1.hasProp)(configVikePrerender, p, 'undefined'))
54
- return { prop: `prerender.${p}`, errMsg: 'should be a boolean' };
55
- }
56
- {
57
- const p = 'noExtraDir';
58
- if (!(0, utils_js_1.hasProp)(configVikePrerender, p, 'boolean') && !(0, utils_js_1.hasProp)(configVikePrerender, p, 'undefined'))
59
- return { prop: `prerender.${p}`, errMsg: 'should be a boolean' };
60
- }
61
- {
62
- const p = 'disableAutoRun';
63
- if (!(0, utils_js_1.hasProp)(configVikePrerender, p, 'boolean') && !(0, utils_js_1.hasProp)(configVikePrerender, p, 'undefined'))
64
- return { prop: `prerender.${p}`, errMsg: 'should be a boolean' };
65
- }
66
- {
67
- const p = 'parallel';
68
- if (!(0, utils_js_1.hasProp)(configVikePrerender, p, 'boolean') &&
69
- !(0, utils_js_1.hasProp)(configVikePrerender, p, 'number') &&
70
- !(0, utils_js_1.hasProp)(configVikePrerender, p, 'undefined'))
71
- return { prop: `prerender.${p}`, errMsg: 'should be a boolean or a number' };
72
- }
73
- }
74
- return null;
75
- }