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
@@ -65,6 +65,8 @@ const logErrorHint_js_1 = require("../runtime/renderPage/logErrorHint.js");
65
65
  const executeHook_js_1 = require("../../shared/hooks/executeHook.js");
66
66
  const getConfigValueBuildTime_js_1 = require("../../shared/page-configs/getConfigValueBuildTime.js");
67
67
  const prepareViteApiCall_js_1 = require("../api/prepareViteApiCall.js");
68
+ const context_js_1 = require("./context.js");
69
+ const resolvePrerenderConfig_js_1 = require("./resolvePrerenderConfig.js");
68
70
  async function runPrerenderFromAPI(options = {}) {
69
71
  return await runPrerender(options, 'prerender()');
70
72
  // - We purposely propagate the error to the user land, so that the error interrupts the user land. It's also, I guess, a nice-to-have that the user has control over the error.
@@ -84,16 +86,20 @@ async function runPrerenderFromCLIPrerenderCommand() {
84
86
  runPrerender_forceExit();
85
87
  }
86
88
  async function runPrerenderFromAutoRun(viteConfig) {
89
+ let prerenderContextPublic;
87
90
  try {
88
- await runPrerender({ viteConfig });
91
+ const ret = await runPrerender({ viteConfig });
92
+ prerenderContextPublic = ret.prerenderContextPublic;
89
93
  }
90
94
  catch (err) {
91
95
  console.error(err);
92
96
  (0, logErrorHint_js_1.logErrorHint)(err);
93
97
  process.exit(1);
94
98
  }
99
+ return { prerenderContextPublic };
95
100
  }
96
101
  async function runPrerender(options = {}, standaloneTrigger) {
102
+ (0, context_js_1.setContextIsPrerendering)();
97
103
  checkOutdatedOptions(options);
98
104
  (0, utils_js_1.onSetupPrerender)();
99
105
  (0, globalContext_js_1.setGlobalContext_isPrerendering)();
@@ -107,7 +113,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
107
113
  const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(viteConfig);
108
114
  const { outDirClient } = (0, utils_js_1.getOutDirs)(viteConfig);
109
115
  const { root } = viteConfig;
110
- const prerenderConfig = vikeConfig.vikeConfigGlobal.prerender;
116
+ const prerenderConfig = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfig)(vikeConfig.global.config.prerender);
111
117
  validatePrerenderConfig(prerenderConfig);
112
118
  if (!prerenderConfig) {
113
119
  (0, utils_js_1.assert)(standaloneTrigger);
@@ -120,43 +126,48 @@ async function runPrerender(options = {}, standaloneTrigger) {
120
126
  await (0, globalContext_js_1.initGlobalContext_runPrerender)();
121
127
  const globalContext = (0, globalContext_js_1.getGlobalContext)();
122
128
  globalContext.pageFilesAll.forEach(assertExportNames);
123
- const prerenderContext = {};
124
- (0, utils_js_1.objectAssign)(prerenderContext, {
125
- _urlHandler: null,
126
- _noExtraDir: noExtraDir ?? false,
129
+ const prerenderContext = {
130
+ noExtraDir: noExtraDir ?? false,
127
131
  pageContexts: [],
128
- pageContextInit: options.pageContextInit ?? null
129
- });
132
+ pageContextInit: options.pageContextInit ?? null,
133
+ prerenderedPageContexts: {},
134
+ output: []
135
+ };
130
136
  const doNotPrerenderList = [];
131
137
  await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
132
138
  await callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList);
133
139
  await handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit);
134
140
  await callOnPrerenderStartHook(prerenderContext);
135
- const prerenderedPageContexts = {};
136
141
  let prerenderedCount = 0;
142
+ // Write files as soon as pages finish rendering (instead of writing all files at once only after all pages have rendered).
137
143
  const onComplete = async (htmlFile) => {
138
144
  prerenderedCount++;
139
145
  if (htmlFile.pageId) {
140
- prerenderedPageContexts[htmlFile.pageId] = htmlFile.pageContext;
146
+ prerenderContext.prerenderedPageContexts[htmlFile.pageId] = htmlFile.pageContext;
141
147
  }
142
- await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, logLevel);
148
+ await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
143
149
  };
144
150
  await routeAndPrerender(prerenderContext, concurrencyLimit, onComplete);
145
- warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerenderList);
146
- await prerender404(prerenderedPageContexts, prerenderContext, onComplete);
151
+ warnContradictoryNoPrerenderList(prerenderContext.prerenderedPageContexts, doNotPrerenderList);
152
+ await prerender404(prerenderContext, onComplete);
147
153
  if (logLevel === 'info') {
148
154
  console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
149
155
  }
150
- warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial);
151
- return { viteConfig };
156
+ warnMissingPages(prerenderContext.prerenderedPageContexts, doNotPrerenderList, partial);
157
+ const prerenderContextPublic = makePublic(prerenderContext);
158
+ return { viteConfig, prerenderContextPublic };
152
159
  }
153
160
  async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurrencyLimit) {
154
161
  // V1 design
155
162
  pageConfigs.forEach((pageConfig) => {
156
163
  const configName = 'prerender';
157
- const configValue = (0, getConfigValueBuildTime_js_1.getConfigValueBuildTime)(pageConfig, configName, 'boolean');
158
- if (configValue?.value === false) {
159
- const configValueFilePathToShowToUser = (0, helpers_js_1.getConfigValueFilePathToShowToUser)(configValue.definedAtData);
164
+ const configValue = (0, getConfigValueBuildTime_js_1.getConfigValueBuildTime)(pageConfig, configName);
165
+ if (!configValue)
166
+ return;
167
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(configValue, 'value', 'array'));
168
+ if (configValue.value[0] === false) {
169
+ (0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue.definedAtData));
170
+ const configValueFilePathToShowToUser = (0, helpers_js_1.getConfigValueFilePathToShowToUser)(configValue.definedAtData[0]);
160
171
  (0, utils_js_1.assert)(configValueFilePathToShowToUser);
161
172
  doNotPrerenderList.push({
162
173
  pageId: pageConfig.pageId,
@@ -339,7 +350,7 @@ function createPageContext(urlOriginal, prerenderContext) {
339
350
  const pageContext = {
340
351
  _urlHandler: null,
341
352
  _urlRewrite: null,
342
- _noExtraDir: prerenderContext._noExtraDir,
353
+ _noExtraDir: prerenderContext.noExtraDir,
343
354
  _prerenderContext: prerenderContext
344
355
  };
345
356
  const pageContextInit = {
@@ -425,17 +436,20 @@ async function callOnPrerenderStartHook(prerenderContext) {
425
436
  const docLink = 'https://vike.dev/i18n#pre-rendering';
426
437
  // Set `enumerable` to `false` to avoid computed URL properties from being iterated & copied in onPrerenderStart() hook, e.g. /examples/i18n/
427
438
  const { restoreEnumerable, addPageContextComputedUrl } = makePageContextComputedUrlNonEnumerable(prerenderContext.pageContexts);
428
- let result = await (0, executeHook_js_1.executeHook)(() => hookFn({
429
- pageContexts: prerenderContext.pageContexts,
439
+ let result = await (0, executeHook_js_1.executeHook)(() => {
440
+ const prerenderContextPublic = makePublic(prerenderContext);
430
441
  // TODO/v1-release: remove warning
431
- get prerenderPageContexts() {
432
- (0, utils_js_1.assertWarning)(false, `prerenderPageContexts has been renamed pageContexts, see ${docLink}`, {
433
- showStackTrace: true,
434
- onlyOnce: true
435
- });
436
- return prerenderContext.pageContexts;
437
- }
438
- }), onPrerenderStartHook, null);
442
+ Object.defineProperty(prerenderContextPublic, 'prerenderPageContexts', {
443
+ get() {
444
+ (0, utils_js_1.assertWarning)(false, `prerenderPageContexts has been renamed pageContexts, see ${docLink}`, {
445
+ showStackTrace: true,
446
+ onlyOnce: true
447
+ });
448
+ return prerenderContext.pageContexts;
449
+ }
450
+ });
451
+ return hookFn(prerenderContextPublic);
452
+ }, onPrerenderStartHook, null);
439
453
  restoreEnumerable();
440
454
  if (result === null || result === undefined) {
441
455
  return;
@@ -542,7 +556,7 @@ async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete)
542
556
  pageContext,
543
557
  htmlString: documentHtml,
544
558
  pageContextSerialized,
545
- doNotCreateExtraDirectory: prerenderContext._noExtraDir,
559
+ doNotCreateExtraDirectory: prerenderContext.noExtraDir,
546
560
  pageId
547
561
  });
548
562
  })));
@@ -577,8 +591,8 @@ function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial)
577
591
  (0, utils_js_1.assertWarning)(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender#partial) to suppress this warning.`, { onlyOnce: true });
578
592
  });
579
593
  }
580
- async function prerender404(prerenderedPageContexts, prerenderContext, onComplete) {
581
- if (!Object.values(prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
594
+ async function prerender404(prerenderContext, onComplete) {
595
+ if (!Object.values(prerenderContext.prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
582
596
  let result;
583
597
  try {
584
598
  result = await (0, renderPageAlreadyRouted_js_1.prerender404Page)(prerenderContext.pageContextInit);
@@ -601,22 +615,23 @@ async function prerender404(prerenderedPageContexts, prerenderContext, onComplet
601
615
  }
602
616
  }
603
617
  }
604
- async function writeFiles({ urlOriginal, pageContext, htmlString, pageContextSerialized, doNotCreateExtraDirectory }, root, outDirClient, onPagePrerender, logLevel) {
618
+ async function writeFiles({ urlOriginal, pageContext, htmlString, pageContextSerialized, doNotCreateExtraDirectory }, root, outDirClient, onPagePrerender, output, logLevel) {
605
619
  (0, utils_js_1.assert)(urlOriginal.startsWith('/'));
606
620
  const writeJobs = [
607
- write(urlOriginal, pageContext, '.html', htmlString, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, logLevel)
621
+ write(urlOriginal, pageContext, 'HTML', htmlString, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel)
608
622
  ];
609
623
  if (pageContextSerialized !== null) {
610
- writeJobs.push(write(urlOriginal, pageContext, '.pageContext.json', pageContextSerialized, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, logLevel));
624
+ writeJobs.push(write(urlOriginal, pageContext, 'JSON', pageContextSerialized, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel));
611
625
  }
612
626
  await Promise.all(writeJobs);
613
627
  }
614
- async function write(urlOriginal, pageContext, fileExtension, fileContent, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, logLevel) {
628
+ async function write(urlOriginal, pageContext, fileType, fileContent, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel) {
615
629
  let fileUrl;
616
- if (fileExtension === '.html') {
630
+ if (fileType === 'HTML') {
617
631
  fileUrl = (0, utils_js_1.urlToFile)(urlOriginal, '.html', doNotCreateExtraDirectory);
618
632
  }
619
633
  else {
634
+ (0, utils_js_1.assert)(fileType === 'JSON');
620
635
  fileUrl = (0, getPageContextRequestUrl_js_1.getPageContextRequestUrl)(urlOriginal);
621
636
  }
622
637
  (0, utils_js_1.assertPosixPath)(fileUrl);
@@ -628,6 +643,12 @@ async function write(urlOriginal, pageContext, fileExtension, fileContent, root,
628
643
  (0, utils_js_1.assertPosixPath)(outDirClient);
629
644
  (0, utils_js_1.assertPosixPath)(filePathRelative);
630
645
  const filePath = path_1.default.posix.join(outDirClient, filePathRelative);
646
+ output.push({
647
+ filePath,
648
+ fileType,
649
+ fileContent,
650
+ pageContext
651
+ });
631
652
  if (onPagePrerender) {
632
653
  const prerenderPageContext = {};
633
654
  (0, utils_js_1.objectAssign)(prerenderPageContext, pageContext);
@@ -796,3 +817,9 @@ prerenderConfig) {
796
817
  (0, utils_js_1.assertUsage)(false, `Setting ${picocolors_1.default.cyan(`prerender.${prop}`)} ${errMsg}`);
797
818
  }
798
819
  }
820
+ function makePublic(prerenderContext) {
821
+ const prerenderContextPublic = (0, utils_js_1.makePublicCopy)(prerenderContext, 'prerenderContext', [
822
+ 'pageContexts'
823
+ ]);
824
+ return prerenderContextPublic;
825
+ }
@@ -22,9 +22,9 @@ __exportStar(require("../../utils/projectInfo.js"), exports);
22
22
  __exportStar(require("../../utils/objectAssign.js"), exports);
23
23
  __exportStar(require("../../utils/isObjectWithKeys.js"), exports);
24
24
  __exportStar(require("../../utils/isCallable.js"), exports);
25
- __exportStar(require("../../utils/getOutDirs.js"), exports);
25
+ __exportStar(require("../plugin/getOutDirs.js"), exports);
26
26
  __exportStar(require("../../utils/isPropertyGetter.js"), exports);
27
- __exportStar(require("../../utils/filesystemPathHandling.js"), exports);
27
+ __exportStar(require("../../utils/toPosixPath.js"), exports);
28
28
  __exportStar(require("../../utils/urlToFile.js"), exports);
29
29
  __exportStar(require("../../utils/isPlainObject.js"), exports);
30
30
  __exportStar(require("../../utils/assertSetup.js"), exports);
@@ -33,3 +33,4 @@ __exportStar(require("../../utils/isFilePathAbsoluteFilesystem.js"), exports);
33
33
  __exportStar(require("../../utils/isArray.js"), exports);
34
34
  __exportStar(require("../../utils/isObject.js"), exports);
35
35
  __exportStar(require("../../utils/changeEnumerable.js"), exports);
36
+ __exportStar(require("../../utils/makePublicCopy.js"), exports);
@@ -8,7 +8,6 @@ exports.getGlobalContextAsync = getGlobalContextAsync;
8
8
  exports.getGlobalContext = getGlobalContext;
9
9
  exports.getViteDevServer = getViteDevServer;
10
10
  exports.getViteConfig = getViteConfig;
11
- exports.getRuntimeManifest = getRuntimeManifest;
12
11
  exports.initGlobalContext_renderPage = initGlobalContext_renderPage;
13
12
  exports.initGlobalContext_runPrerender = initGlobalContext_runPrerender;
14
13
  exports.initGlobalContext_getGlobalContextAsync = initGlobalContext_getGlobalContextAsync;
@@ -19,14 +18,13 @@ exports.setGlobalContext_isViteDev = setGlobalContext_isViteDev;
19
18
  exports.setGlobalContext_isPrerendering = setGlobalContext_isPrerendering;
20
19
  exports.setGlobalContext_buildEntry = setGlobalContext_buildEntry;
21
20
  exports.clearGlobalContext = clearGlobalContext;
21
+ exports.assertBuildInfo = assertBuildInfo;
22
+ exports.getViteConfigRuntime = getViteConfigRuntime;
22
23
  const utils_js_1 = require("./utils.js");
23
24
  const runtime_1 = require("@brillout/vite-plugin-server-entry/runtime");
24
25
  const virtualFileImportUserCode_js_1 = require("../shared/virtual-files/virtualFileImportUserCode.js");
25
26
  const getPageFiles_js_1 = require("../../shared/getPageFiles/getPageFiles.js");
26
- const assertPluginManifest_js_1 = require("../shared/assertPluginManifest.js");
27
- const assertRuntimeManifest_js_1 = require("../shared/assertRuntimeManifest.js");
28
27
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
29
- const resolveBase_js_1 = require("../shared/resolveBase.js");
30
28
  const loadPageRoutes_js_1 = require("../../shared/route/loadPageRoutes.js");
31
29
  const assertV1Design_js_1 = require("../shared/assertV1Design.js");
32
30
  const debug = (0, utils_js_1.createDebugger)('vike:globalContext');
@@ -53,28 +51,8 @@ async function getGlobalContextAsync(isProduction) {
53
51
  return makePublic(globalContext);
54
52
  }
55
53
  function makePublic(globalContext) {
56
- const globalContextPublic = {
57
- // TODO/now: add viteConfig and vikeConfig
58
- assetsManifest: globalContext.assetsManifest
59
- };
60
- // Add internals (and prepended _ prefix to their keys)
61
- {
62
- const publicKeys = Object.keys(globalContextPublic);
63
- (0, utils_js_1.objectKeys)(globalContext)
64
- .filter((key) => !publicKeys.includes(key))
65
- .forEach((key) => {
66
- const keyPublic = `_${key}`;
67
- Object.defineProperty(globalContextPublic, keyPublic, {
68
- enumerable: true,
69
- get() {
70
- (0, utils_js_1.assertWarning)(false, `Using internal globalContext.${keyPublic} which is discouraged: it may break in any minor version update. Instead, reach out on GitHub and elaborate your use case.`, {
71
- onlyOnce: true
72
- });
73
- return globalContext[key];
74
- }
75
- });
76
- });
77
- }
54
+ // TODO/now: add viteConfig and vikeConfig
55
+ const globalContextPublic = (0, utils_js_1.makePublicCopy)(globalContext, 'globalContext', ['assetsManifest']);
78
56
  return globalContextPublic;
79
57
  }
80
58
  function setGlobalContext_viteDevServer(viteDevServer) {
@@ -164,7 +142,7 @@ async function initGlobalContext(isProduction) {
164
142
  (0, utils_js_1.assert)(viteDevServer);
165
143
  (0, utils_js_1.assert)(!isPrerendering);
166
144
  const { globalConfig, userFiles } = await getPageRuntimeInfo(isProduction);
167
- const pluginManifest = getRuntimeManifest(vikeConfig.vikeConfigGlobal, viteConfig);
145
+ const viteConfigRuntime = getViteConfigRuntime(viteConfig);
168
146
  globalObject.globalContext = {
169
147
  isProduction: false,
170
148
  isPrerendering: false,
@@ -175,20 +153,14 @@ async function initGlobalContext(isProduction) {
175
153
  global: globalConfig
176
154
  },
177
155
  ...userFiles,
178
- baseServer: pluginManifest.baseServer,
179
- baseAssets: pluginManifest.baseAssets,
180
- includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
181
- trailingSlash: pluginManifest.trailingSlash,
182
- disableUrlNormalization: pluginManifest.disableUrlNormalization
156
+ viteConfigRuntime
183
157
  };
184
158
  }
185
159
  else {
186
160
  const buildEntry = await getBuildEntry(globalObject.outDirRoot, isPrerendering);
187
- const { assetsManifest, pluginManifest } = buildEntry;
161
+ const { assetsManifest, buildInfo } = buildEntry;
188
162
  (0, getPageFiles_js_1.setPageFiles)(buildEntry.pageFiles);
189
163
  const { globalConfig, userFiles } = await getPageRuntimeInfo(isProduction);
190
- assertViteManifest(assetsManifest);
191
- (0, assertPluginManifest_js_1.assertPluginManifest)(pluginManifest);
192
164
  const globalContext = {
193
165
  isProduction: true,
194
166
  assetsManifest,
@@ -197,12 +169,8 @@ async function initGlobalContext(isProduction) {
197
169
  },
198
170
  ...userFiles,
199
171
  viteDevServer: null,
200
- baseServer: pluginManifest.baseServer,
201
- baseAssets: pluginManifest.baseAssets,
202
- includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
203
- trailingSlash: pluginManifest.trailingSlash,
204
- usesClientRouter: pluginManifest.usesClientRouter,
205
- disableUrlNormalization: pluginManifest.disableUrlNormalization
172
+ viteConfigRuntime: buildInfo.viteConfigRuntime,
173
+ usesClientRouter: buildInfo.usesClientRouter
206
174
  };
207
175
  if (isPrerendering) {
208
176
  (0, utils_js_1.assert)(viteConfig);
@@ -237,19 +205,6 @@ async function getPageRuntimeInfo(isProduction) {
237
205
  pageConfigs.length > 0, pageFilesAll);
238
206
  return { userFiles, globalConfig };
239
207
  }
240
- function getRuntimeManifest(vikeConfigGlobal, viteConfig) {
241
- const { includeAssetsImportedByServer, trailingSlash, disableUrlNormalization } = vikeConfigGlobal;
242
- const { baseServer, baseAssets } = (0, resolveBase_js_1.resolveBaseFromResolvedConfig)(vikeConfigGlobal.baseServer, vikeConfigGlobal.baseAssets, viteConfig);
243
- const manifest = {
244
- baseServer,
245
- baseAssets,
246
- includeAssetsImportedByServer,
247
- trailingSlash,
248
- disableUrlNormalization
249
- };
250
- (0, assertRuntimeManifest_js_1.assertRuntimeManifest)(manifest);
251
- return manifest;
252
- }
253
208
  function assertViteManifest(manifest) {
254
209
  (0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(manifest));
255
210
  /* We should include these assertions but we don't as a workaround for PWA manifests: https://github.com/vikejs/vike/issues/769
@@ -282,17 +237,48 @@ async function getBuildEntry(outDir, isPrerendering) {
282
237
  (0, utils_js_1.assert)(globalObject.buildEntry);
283
238
  }
284
239
  const { buildEntry } = globalObject;
285
- (0, utils_js_1.assert)((0, utils_js_1.isObject)(buildEntry));
286
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pageFiles', 'object'));
287
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'assetsManifest', 'object'));
288
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pluginManifest', 'object'));
240
+ assertBuildEntry(buildEntry);
289
241
  return buildEntry;
290
242
  }
291
243
  function setGlobalContext_buildEntry(buildEntry) {
292
244
  debug('setGlobalContext_buildEntry()');
245
+ assertBuildEntry(buildEntry);
293
246
  globalObject.buildEntry = buildEntry;
294
247
  globalObject.buildEntryPrevious = buildEntry;
295
248
  }
249
+ function assertBuildEntry(buildEntry) {
250
+ (0, utils_js_1.assert)((0, utils_js_1.isObject)(buildEntry));
251
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pageFiles', 'object'));
252
+ const { pageFiles } = buildEntry;
253
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'assetsManifest', 'object'));
254
+ const { assetsManifest } = buildEntry;
255
+ assertViteManifest(assetsManifest);
256
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'buildInfo', 'object'));
257
+ const { buildInfo } = buildEntry;
258
+ assertBuildInfo(buildInfo);
259
+ (0, utils_js_1.checkType)({ pageFiles, assetsManifest, buildInfo });
260
+ }
261
+ function assertBuildInfo(buildInfo) {
262
+ (0, utils_js_1.assert)((0, utils_js_1.isObject)(buildInfo));
263
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildInfo, 'versionAtBuildTime', 'string'));
264
+ assertVersionAtBuildTime(buildInfo.versionAtBuildTime);
265
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildInfo, 'viteConfigRuntime', 'object'));
266
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildInfo.viteConfigRuntime, '_baseViteOriginal', 'string'));
267
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildInfo, 'usesClientRouter', 'boolean'));
268
+ (0, utils_js_1.checkType)({ ...buildInfo, viteConfigRuntime: buildInfo.viteConfigRuntime });
269
+ }
270
+ function assertVersionAtBuildTime(versionAtBuildTime) {
271
+ const versionAtRuntime = utils_js_1.projectInfo.projectVersion;
272
+ const pretty = (version) => picocolors_1.default.bold(`vike@${version}`);
273
+ (0, utils_js_1.assertUsage)(versionAtBuildTime === versionAtRuntime, `Re-build your app (you're using ${pretty(versionAtRuntime)} but your app was built with ${pretty(versionAtBuildTime)})`);
274
+ }
275
+ function getViteConfigRuntime(viteConfig) {
276
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(viteConfig, '_baseViteOriginal', 'string'));
277
+ const viteConfigRuntime = {
278
+ _baseViteOriginal: viteConfig._baseViteOriginal
279
+ };
280
+ return viteConfigRuntime;
281
+ }
296
282
  function initDevEntry() {
297
283
  (0, getPageFiles_js_1.setPageFilesAsync)(getPageFilesExports);
298
284
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
- // TODO/v1-release: remove
2
+ // TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
3
3
  // This doesn't do anything anymore. (It's kept to avoid introducing a breaking change.)
@@ -23,6 +23,7 @@ const preparePageContextForUserConsumptionServerSide_js_1 = require("./preparePa
23
23
  const executeGuardHook_js_1 = require("../../../shared/route/executeGuardHook.js");
24
24
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
25
25
  const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
26
+ const resolveBase_js_1 = require("../../shared/resolveBase.js");
26
27
  async function renderPageAlreadyRouted(pageContext) {
27
28
  // pageContext.pageId can either be the:
28
29
  // - ID of the page matching the routing, or the
@@ -119,14 +120,16 @@ function getPageContextInitEnhanced(pageContextInit, { ssr: { urlRewrite, urlHan
119
120
  } } = {}) {
120
121
  (0, utils_js_1.assert)(pageContextInit.urlOriginal);
121
122
  const globalContext = (0, globalContext_js_1.getGlobalContext)();
123
+ const { baseServer, baseAssets } = (0, resolveBase_js_1.resolveBaseRuntime)();
122
124
  const pageContextInitEnhanced = {};
123
125
  (0, utils_js_1.objectAssign)(pageContextInitEnhanced, pageContextInit);
124
126
  (0, utils_js_1.objectAssign)(pageContextInitEnhanced, {
125
127
  _objectCreatedByVike: true,
126
128
  // The following is defined on `pageContext` because we can eventually make these non-global
127
- _baseServer: globalContext.baseServer,
128
- _baseAssets: globalContext.baseAssets,
129
- _includeAssetsImportedByServer: globalContext.includeAssetsImportedByServer,
129
+ _baseServer: baseServer,
130
+ _baseAssets: baseAssets,
131
+ // TODO/now: add meta.default
132
+ _includeAssetsImportedByServer: globalContext.vikeConfig.global.config.includeAssetsImportedByServer ?? true,
130
133
  // TODO: use GloablContext instead
131
134
  _pageFilesAll: globalContext.pageFilesAll,
132
135
  _pageConfigs: globalContext.pageConfigs,
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.redirectsErrPrefix = void 0;
6
7
  exports.resolveRedirects = resolveRedirects;
7
8
  exports.resolveRouteStringRedirect = resolveRouteStringRedirect;
8
9
  const assertIsNotBrowser_js_1 = require("../../../utils/assertIsNotBrowser.js");
@@ -11,8 +12,8 @@ const resolveUrlPathname_js_1 = require("../../../shared/route/resolveUrlPathnam
11
12
  const resolveRouteString_js_1 = require("../../../shared/route/resolveRouteString.js");
12
13
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
13
14
  (0, assertIsNotBrowser_js_1.assertIsNotBrowser)(); // Don't bloat the client
14
- // TODO/next-major-release: update
15
- const configSrc = '[vite.config.js > vike({ redirects })]';
15
+ const redirectsErrPrefix = '[+redirects]';
16
+ exports.redirectsErrPrefix = redirectsErrPrefix;
16
17
  function resolveRedirects(redirectsAll, urlPathname) {
17
18
  const redirects = merge(redirectsAll);
18
19
  for (const [urlSource, urlTarget] of Object.entries(redirects)) {
@@ -23,9 +24,9 @@ function resolveRedirects(redirectsAll, urlPathname) {
23
24
  return null;
24
25
  }
25
26
  function resolveRouteStringRedirect(urlSource, urlTarget, urlPathname) {
26
- (0, resolveRouteString_js_1.assertRouteString)(urlSource, `${configSrc} Invalid`);
27
+ (0, resolveRouteString_js_1.assertRouteString)(urlSource, `${redirectsErrPrefix} Invalid`);
27
28
  // Is allowing any protocol a safety issue? https://github.com/vikejs/vike/pull/1292#issuecomment-1828043917
28
- (0, utils_js_1.assertUsageUrlRedirectTarget)(urlTarget, `${configSrc} The URL redirection target`, true);
29
+ (0, utils_js_1.assertUsageUrlRedirectTarget)(urlTarget, `${redirectsErrPrefix} The URL redirection target`, true);
29
30
  assertParams(urlSource, urlTarget);
30
31
  const match = (0, resolveRouteString_js_1.resolveRouteString)(urlSource, urlPathname);
31
32
  if (!match)
@@ -41,7 +42,7 @@ function assertParams(urlSource, urlTarget) {
41
42
  routeSegments.forEach((routeSegment) => {
42
43
  if (routeSegment.startsWith('@') || routeSegment.startsWith('*')) {
43
44
  const segments = urlSource.split('/');
44
- (0, utils_js_1.assertUsage)(segments.includes(routeSegment), `${configSrc} The redirection source URL ${picocolors_1.default.string(urlSource)} is missing the URL parameter ${picocolors_1.default.string(routeSegment)} used by the redirection target URL ${picocolors_1.default.string(urlTarget)}`);
45
+ (0, utils_js_1.assertUsage)(segments.includes(routeSegment), `${redirectsErrPrefix} The redirection source URL ${picocolors_1.default.string(urlSource)} is missing the URL parameter ${picocolors_1.default.string(routeSegment)} used by the redirection target URL ${picocolors_1.default.string(urlTarget)}`);
45
46
  }
46
47
  });
47
48
  }
@@ -23,6 +23,7 @@ const error_page_js_1 = require("../../shared/error-page.js");
23
23
  const handleErrorWithoutErrorPage_js_1 = require("./renderPage/handleErrorWithoutErrorPage.js");
24
24
  const loadUserFilesServerSide_js_1 = require("./renderPage/loadUserFilesServerSide.js");
25
25
  const resolveRedirects_js_1 = require("./renderPage/resolveRedirects.js");
26
+ const resolveBase_js_1 = require("../shared/resolveBase.js");
26
27
  const globalObject = (0, utils_js_1.getGlobalObject)('runtime/renderPage.ts', {
27
28
  httpRequestsCount: 0
28
29
  });
@@ -342,14 +343,16 @@ function assertIsNotViteRequest(urlPathname, urlOriginal) {
342
343
  (0, utils_js_1.assertUsage)(false, `${picocolors_1.default.code('renderPage(pageContextInit)')} called with ${picocolors_1.default.code(`pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`)} which is unexpected because the URL ${picocolors_1.default.bold(urlOriginal)} should have already been handled by the development middleware: make sure the ${picocolors_1.default.cyan('createDevMiddleware()')} middleware is executed *before* the ${picocolors_1.default.cyan('renderPage()')} middleware, see ${picocolors_1.default.underline('https://vike.dev/renderPage')}`);
343
344
  }
344
345
  function normalizeUrl(pageContextInit, httpRequestId) {
345
- const { trailingSlash, disableUrlNormalization, baseServer } = (0, globalContext_js_1.getGlobalContext)();
346
+ const globalContext = (0, globalContext_js_1.getGlobalContext)();
347
+ const { baseServer } = (0, resolveBase_js_1.resolveBaseRuntime)();
348
+ const { trailingSlash, disableUrlNormalization } = globalContext.vikeConfig.global.config;
346
349
  if (disableUrlNormalization)
347
350
  return null;
348
351
  const { urlOriginal } = pageContextInit;
349
352
  const { isPageContextRequest } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
350
353
  if (isPageContextRequest)
351
354
  return null;
352
- const urlNormalized = (0, utils_js_1.normalizeUrlPathname)(urlOriginal, trailingSlash, baseServer);
355
+ const urlNormalized = (0, utils_js_1.normalizeUrlPathname)(urlOriginal, trailingSlash ?? false, baseServer);
353
356
  if (!urlNormalized)
354
357
  return null;
355
358
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(`URL normalized from ${picocolors_1.default.cyan(urlOriginal)} to ${picocolors_1.default.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
@@ -360,7 +363,8 @@ function normalizeUrl(pageContextInit, httpRequestId) {
360
363
  }
361
364
  function getPermanentRedirect(pageContextInit, httpRequestId) {
362
365
  const globalContext = (0, globalContext_js_1.getGlobalContext)();
363
- const urlWithoutBase = (0, utils_js_1.removeBaseServer)(pageContextInit.urlOriginal, globalContext.baseServer);
366
+ const { baseServer } = (0, resolveBase_js_1.resolveBaseRuntime)();
367
+ const urlWithoutBase = (0, utils_js_1.removeBaseServer)(pageContextInit.urlOriginal, baseServer);
364
368
  let origin = null;
365
369
  let urlTargetExternal = null;
366
370
  let urlTarget = (0, utils_js_1.modifyUrlPathname)(urlWithoutBase, (urlPathname) => {
@@ -391,8 +395,9 @@ function getPermanentRedirect(pageContextInit, httpRequestId) {
391
395
  }
392
396
  if (normalize(urlTarget) === normalize(urlWithoutBase))
393
397
  return null;
398
+ const { baseServer } = (0, resolveBase_js_1.resolveBaseRuntime)();
394
399
  if (!originChanged)
395
- urlTarget = (0, utils_js_1.prependBase)(urlTarget, globalContext.baseServer);
400
+ urlTarget = (0, utils_js_1.prependBase)(urlTarget, baseServer);
396
401
  (0, utils_js_1.assert)(urlTarget !== pageContextInit.urlOriginal);
397
402
  }
398
403
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(`Permanent redirection defined by config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
@@ -457,7 +462,7 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit) {
457
462
  return { pageContextAbort };
458
463
  }
459
464
  function assertBaseUrl(pageContextInit) {
460
- const { baseServer } = (0, globalContext_js_1.getGlobalContext)();
465
+ const { baseServer } = (0, resolveBase_js_1.resolveBaseRuntime)();
461
466
  const { urlOriginal } = pageContextInit;
462
467
  const { urlWithoutPageContextRequestSuffix } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
463
468
  const { hasBaseServer } = (0, utils_js_1.parseUrl)(urlWithoutPageContextRequestSuffix, baseServer);
@@ -41,8 +41,8 @@ __exportStar(require("../../utils/compareString.js"), exports);
41
41
  __exportStar(require("../../utils/isObjectWithKeys.js"), exports);
42
42
  __exportStar(require("../../utils/stringifyStringArray.js"), exports);
43
43
  __exportStar(require("../../utils/unique.js"), exports);
44
- __exportStar(require("../../utils/filesystemPathHandling.js"), exports);
45
- __exportStar(require("../../utils/getOutDirs.js"), exports);
44
+ __exportStar(require("../../utils/toPosixPath.js"), exports);
45
+ __exportStar(require("../plugin/getOutDirs.js"), exports);
46
46
  __exportStar(require("../../utils/capitalizeFirstLetter.js"), exports);
47
47
  __exportStar(require("../../utils/debugGlob.js"), exports);
48
48
  __exportStar(require("../../utils/isSameErrorMessage.js"), exports);
@@ -76,3 +76,4 @@ __exportStar(require("../../utils/isVikeReactApp.js"), exports);
76
76
  __exportStar(require("../../utils/getPropAccessNotation.js"), exports);
77
77
  __exportStar(require("../../utils/PROJECT_VERSION.js"), exports);
78
78
  __exportStar(require("../../utils/genPromise.js"), exports);
79
+ __exportStar(require("../../utils/makePublicCopy.js"), exports);
@@ -4,14 +4,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.resolveBase = resolveBase;
7
+ exports.resolveBaseRuntime = resolveBaseRuntime;
7
8
  exports.resolveBaseFromResolvedConfig = resolveBaseFromResolvedConfig;
8
9
  const utils_js_1 = require("./utils.js");
9
10
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
11
+ const globalContext_js_1 = require("../runtime/globalContext.js");
10
12
  function resolveBaseFromResolvedConfig(baseServer, baseAssets, config) {
11
13
  let baseViteOriginal = config._baseViteOriginal;
12
14
  (0, utils_js_1.assert)(baseViteOriginal === null || typeof baseViteOriginal == 'string');
13
15
  return resolveBase(baseViteOriginal, baseServer, baseAssets);
14
16
  }
17
+ function resolveBaseRuntime() {
18
+ const globalContext = (0, globalContext_js_1.getGlobalContext)();
19
+ const baseViteOriginal = globalContext.viteConfigRuntime._baseViteOriginal;
20
+ const baseServerUnresolved = globalContext.vikeConfig.global.config.baseServer ?? null;
21
+ const baseAssetsUnresolved = globalContext.vikeConfig.global.config.baseAssets ?? null;
22
+ return resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved);
23
+ }
15
24
  function resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved) {
16
25
  if (baseViteOriginal === '/__UNSET__')
17
26
  baseViteOriginal = null;
@@ -68,11 +68,11 @@ function getPageConfigUserFriendly(pageFiles, pageConfig) {
68
68
  (0, utils_js_1.assert)(!('default' in exports));
69
69
  (0, utils_js_1.assert)(!('default' in exportsAll));
70
70
  const pageContextExports = {
71
+ config: config,
71
72
  from,
72
73
  source,
73
74
  sources,
74
75
  // TODO/eventually: deprecate/remove every prop below
75
- config,
76
76
  configEntries,
77
77
  exports,
78
78
  exportsAll,
@@ -156,7 +156,7 @@ function getPageConfigUserFriendlyNew(pageConfig) {
156
156
  });
157
157
  });
158
158
  return {
159
- config,
159
+ config: config,
160
160
  configEntries,
161
161
  exportsAll,
162
162
  source,
@@ -9,7 +9,11 @@ async function loadConfigValues(pageConfig, isDev) {
9
9
  !isDev) {
10
10
  return pageConfig;
11
11
  }
12
- const configValuesLoaded = await pageConfig.loadConfigValuesAll();
12
+ const { moduleId, moduleExports } = pageConfig.loadConfigValuesAll();
13
+ const configValuesLoaded = await moduleExports;
14
+ // `configValuesLoaded` is sometimes `undefined` https://github.com/vikejs/vike/discussions/2092
15
+ if (!configValuesLoaded)
16
+ (0, utils_js_1.assert)(false, { moduleExports, configValuesLoaded, moduleId });
13
17
  const configValues = (0, parsePageConfigs_js_1.parseConfigValuesSerialized)(configValuesLoaded.configValuesSerialized);
14
18
  Object.assign(pageConfig.configValues, configValues);
15
19
  (0, utils_js_1.objectAssign)(pageConfig, { isAllLoaded: true });
@@ -32,7 +32,7 @@ __exportStar(require("../utils/isPlainObject.js"), exports);
32
32
  __exportStar(require("../utils/compareString.js"), exports);
33
33
  __exportStar(require("../utils/isNotNullish.js"), exports);
34
34
  __exportStar(require("../utils/stringifyStringArray.js"), exports);
35
- __exportStar(require("../utils/filesystemPathHandling.js"), exports);
35
+ __exportStar(require("../utils/toPosixPath.js"), exports);
36
36
  __exportStar(require("../utils/cast.js"), exports);
37
37
  __exportStar(require("../utils/isPropertyGetter.js"), exports);
38
38
  __exportStar(require("../utils/isPromise.js"), exports);
@@ -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.219';
5
+ exports.PROJECT_VERSION = '0.4.220-commit-9a798ce';