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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/cjs/__internal/index.js +5 -23
  2. package/dist/cjs/node/api/build.js +55 -11
  3. package/dist/cjs/node/api/prepareViteApiCall.js +20 -17
  4. package/dist/cjs/node/api/prerender.js +1 -0
  5. package/dist/cjs/node/api/utils.js +1 -0
  6. package/dist/cjs/node/plugin/index.js +2 -0
  7. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +9 -20
  8. package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
  9. package/dist/cjs/node/plugin/plugins/buildApp.js +72 -0
  10. package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +8 -10
  11. package/dist/cjs/node/plugin/plugins/buildConfig.js +5 -5
  12. package/dist/cjs/node/plugin/plugins/buildEntry/index.js +2 -2
  13. package/dist/cjs/node/plugin/plugins/commonConfig.js +1 -1
  14. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +1 -1
  15. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +8 -2
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +31 -31
  17. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +53 -21
  18. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.js → getVikeConfig/getConfigFileExport.js} +2 -2
  19. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +159 -0
  20. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +3 -3
  21. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +205 -343
  22. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{debug.js → virtual-files/debug.js} +1 -1
  23. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.js → virtual-files/getVirtualFilePageConfigValuesAll.js} +7 -7
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +3 -3
  25. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +1 -4
  26. package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +20 -0
  27. package/dist/cjs/node/plugin/shared/getOutDirs.js +50 -38
  28. package/dist/cjs/node/prerender/runPrerender.js +29 -30
  29. package/dist/cjs/node/runtime/globalContext.js +186 -100
  30. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +2 -3
  31. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -3
  32. package/dist/cjs/node/runtime/html/injectAssets.js +4 -4
  33. package/dist/cjs/node/runtime/html/renderHtml.js +4 -5
  34. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -3
  35. package/dist/cjs/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +2 -4
  36. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +4 -4
  37. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +3 -5
  38. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +5 -4
  39. package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -2
  40. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +10 -9
  41. package/dist/cjs/node/runtime/renderPage.js +27 -30
  42. package/dist/cjs/node/runtime/utils.js +1 -0
  43. package/dist/cjs/node/runtime-dev/createDevMiddleware.js +5 -3
  44. package/dist/cjs/node/shared/resolveBase.js +3 -5
  45. package/dist/cjs/shared/getPageConfigsRuntime.js +20 -0
  46. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +4 -3
  47. package/dist/cjs/shared/getPageFiles.js +1 -3
  48. package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +13 -4
  49. package/dist/cjs/shared/route/loadPageRoutes.js +1 -0
  50. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  51. package/dist/cjs/utils/assertSetup.js +1 -1
  52. package/dist/cjs/utils/debug.js +8 -6
  53. package/dist/cjs/utils/findFile.js +1 -0
  54. package/dist/cjs/utils/objectAssignSafe.js +7 -0
  55. package/dist/esm/__internal/index.d.ts +2 -2
  56. package/dist/esm/__internal/index.js +7 -26
  57. package/dist/esm/client/client-routing-runtime/createPageContext.js +5 -9
  58. package/dist/esm/client/server-routing-runtime/getPageContext.js +3 -4
  59. package/dist/esm/client/shared/loadUserFilesClientSide.js +3 -2
  60. package/dist/esm/node/api/build.js +23 -12
  61. package/dist/esm/node/api/prepareViteApiCall.d.ts +4 -2
  62. package/dist/esm/node/api/prepareViteApiCall.js +20 -17
  63. package/dist/esm/node/api/prerender.js +1 -0
  64. package/dist/esm/node/api/utils.d.ts +1 -0
  65. package/dist/esm/node/api/utils.js +1 -0
  66. package/dist/esm/node/plugin/index.js +2 -0
  67. package/dist/esm/node/plugin/plugins/autoFullBuild.js +10 -21
  68. package/dist/esm/node/plugin/plugins/baseUrls.js +1 -1
  69. package/dist/esm/node/plugin/plugins/buildApp.d.ts +3 -0
  70. package/dist/esm/node/plugin/plugins/buildApp.js +70 -0
  71. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.d.ts +0 -2
  72. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +8 -10
  73. package/dist/esm/node/plugin/plugins/buildConfig.js +6 -6
  74. package/dist/esm/node/plugin/plugins/buildEntry/index.js +2 -2
  75. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -1
  76. package/dist/esm/node/plugin/plugins/commonConfig.js +1 -1
  77. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +1 -1
  78. package/dist/esm/node/plugin/plugins/importUserCode/index.js +8 -2
  79. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.d.ts +6 -0
  80. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +31 -31
  81. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +2 -2
  82. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +52 -20
  83. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.js → getVikeConfig/getConfigFileExport.js} +2 -2
  84. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.d.ts +39 -0
  85. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +154 -0
  86. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.d.ts +2 -2
  87. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +3 -3
  88. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -38
  89. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +208 -346
  90. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{debug.js → virtual-files/debug.js} +1 -1
  91. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.js → virtual-files/getVirtualFilePageConfigValuesAll.js} +7 -7
  92. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +3 -3
  93. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.d.ts → virtual-files/isRuntimeEnvMatch.d.ts} +1 -1
  94. package/dist/esm/node/plugin/plugins/setGlobalContext.js +2 -5
  95. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.d.ts +2 -0
  96. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +17 -0
  97. package/dist/esm/node/plugin/shared/getOutDirs.d.ts +1 -1
  98. package/dist/esm/node/plugin/shared/getOutDirs.js +50 -38
  99. package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +2 -5
  100. package/dist/esm/node/prerender/runPrerender.d.ts +2 -2
  101. package/dist/esm/node/prerender/runPrerender.js +30 -31
  102. package/dist/esm/node/runtime/globalContext.d.ts +31 -29
  103. package/dist/esm/node/runtime/globalContext.js +186 -100
  104. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.d.ts +1 -1
  105. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +2 -3
  106. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +4 -1
  107. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -3
  108. package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -0
  109. package/dist/esm/node/runtime/html/injectAssets.js +4 -4
  110. package/dist/esm/node/runtime/html/renderHtml.js +4 -5
  111. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -1
  112. package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -3
  113. package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.d.ts +1 -1
  114. package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +2 -4
  115. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -0
  116. package/dist/esm/node/runtime/renderPage/getPageAssets.js +4 -4
  117. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -0
  118. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +3 -5
  119. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -0
  120. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +6 -5
  121. package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -0
  122. package/dist/esm/node/runtime/renderPage/log404/index.js +1 -2
  123. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -0
  124. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +21 -5
  125. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +10 -9
  126. package/dist/esm/node/runtime/renderPage.js +28 -31
  127. package/dist/esm/node/runtime/utils.d.ts +1 -0
  128. package/dist/esm/node/runtime/utils.js +1 -0
  129. package/dist/esm/node/runtime-dev/createDevMiddleware.js +5 -3
  130. package/dist/esm/node/shared/resolveBase.d.ts +2 -1
  131. package/dist/esm/node/shared/resolveBase.js +3 -5
  132. package/dist/esm/shared/getPageConfigsRuntime.d.ts +13 -0
  133. package/dist/esm/shared/getPageConfigsRuntime.js +18 -0
  134. package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +1 -1
  135. package/dist/esm/shared/getPageFiles/parseGlobResults.js +4 -3
  136. package/dist/esm/shared/getPageFiles.d.ts +0 -1
  137. package/dist/esm/shared/getPageFiles.js +0 -1
  138. package/dist/esm/shared/page-configs/Config.d.ts +7 -0
  139. package/dist/esm/shared/page-configs/PageConfig.d.ts +9 -5
  140. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +5 -7
  141. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +13 -4
  142. package/dist/esm/shared/route/loadPageRoutes.js +1 -0
  143. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  144. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  145. package/dist/esm/utils/assertSetup.js +1 -1
  146. package/dist/esm/utils/debug.d.ts +1 -1
  147. package/dist/esm/utils/debug.js +8 -6
  148. package/dist/esm/utils/findFile.js +1 -0
  149. package/dist/esm/utils/objectAssignSafe.d.ts +1 -0
  150. package/dist/esm/utils/objectAssignSafe.js +4 -0
  151. package/dist/esm/utils/projectInfo.d.ts +1 -1
  152. package/package.json +2 -2
  153. package/dist/cjs/shared/getPageFiles/getPageFiles.js +0 -48
  154. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.d.ts +0 -6
  155. package/dist/esm/shared/getPageFiles/getPageFiles.d.ts +0 -15
  156. package/dist/esm/shared/getPageFiles/getPageFiles.js +0 -46
  157. /package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.js → virtual-files/isRuntimeEnvMatch.js} +0 -0
  158. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.d.ts → getVikeConfig/getConfigFileExport.d.ts} +0 -0
  159. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{debug.d.ts → virtual-files/debug.d.ts} +0 -0
  160. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.d.ts → virtual-files/getVirtualFilePageConfigValuesAll.d.ts} +0 -0
  161. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.d.ts → virtual-files/getVirtualFilePageConfigs.d.ts} +0 -0
  162. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.js → virtual-files/isRuntimeEnvMatch.js} +0 -0
@@ -5,6 +5,7 @@ export type { GetPageAssets };
5
5
  export type { PageContextGetPageAssets };
6
6
  import { type MediaType } from './inferMediaType.js';
7
7
  import type { ClientDependency } from '../../../shared/getPageFiles/analyzePageClientSide/ClientDependency.js';
8
+ import type { GlobalContext } from '../globalContext.js';
8
9
  import type { ResolveClientEntriesDev } from '../../plugin/shared/resolveClientEntriesDev.js';
9
10
  type PageAsset = {
10
11
  src: string;
@@ -17,6 +18,7 @@ type PageContextGetPageAssets = {
17
18
  _baseServer: string;
18
19
  _baseAssets: string | null;
19
20
  _includeAssetsImportedByServer: boolean;
21
+ _globalContext: GlobalContext;
20
22
  };
21
23
  declare function getPageAssets(pageContext: PageContextGetPageAssets, clientDependencies: ClientDependency[], clientEntries: string[]): Promise<PageAsset[]>;
22
24
  declare function setResolveClientEntriesDev(resolveClientEntriesDev: ResolveClientEntriesDev): void;
@@ -6,13 +6,13 @@ import { retrieveAssetsProd } from './getPageAssets/retrieveAssetsProd.js';
6
6
  import { inferMediaType } from './inferMediaType.js';
7
7
  import { getManifestEntry } from './getPageAssets/getManifestEntry.js';
8
8
  import { sortPageAssetsForEarlyHintsHeader } from './getPageAssets/sortPageAssetsForEarlyHintsHeader.js';
9
- import { getGlobalContext } from '../globalContext.js';
10
9
  const globalObject = getGlobalObject('getPageAssets.ts', {
11
10
  resolveClientEntriesDev: null
12
11
  });
13
12
  async function getPageAssets(pageContext, clientDependencies, clientEntries) {
14
- const globalContext = getGlobalContext();
15
- const isDev = !globalContext.isProduction;
13
+ const globalContext = pageContext._globalContext;
14
+ const { isProduction } = globalContext;
15
+ const isDev = !isProduction;
16
16
  let assetUrls;
17
17
  let clientEntriesSrc;
18
18
  if (isDev) {
@@ -55,7 +55,7 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
55
55
  pageAsset.src = prependBase(toPosixPath(pageAsset.src), baseServerAssets);
56
56
  return pageAsset;
57
57
  });
58
- sortPageAssetsForEarlyHintsHeader(pageAssets);
58
+ await sortPageAssetsForEarlyHintsHeader(pageAssets, isProduction);
59
59
  return pageAssets;
60
60
  }
61
61
  function resolveClientEntriesProd(clientEntry, assetsManifest) {
@@ -1,4 +1,5 @@
1
1
  export { handleErrorWithoutErrorPage };
2
+ import type { GlobalContext } from '../globalContext.js';
2
3
  import type { PageContextAfterRender } from './renderPageAlreadyRouted.js';
3
4
  import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
4
5
  import type { PageFile } from '../../../shared/getPageFiles.js';
@@ -9,5 +10,6 @@ declare function handleErrorWithoutErrorPage<PageContext extends {
9
10
  pageId: null;
10
11
  _pageFilesAll: PageFile[];
11
12
  _pageConfigs: PageConfigRuntime[];
13
+ _globalContext: GlobalContext;
12
14
  urlOriginal: string;
13
15
  }>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
@@ -1,6 +1,5 @@
1
1
  export { handleErrorWithoutErrorPage };
2
2
  import { stringify } from '@brillout/json-serializer/stringify';
3
- import { getGlobalContext } from '../globalContext.js';
4
3
  import { assert, assertWarning, objectAssign } from '../utils.js';
5
4
  import { createHttpResponsePage, createHttpResponseError } from './createHttpResponse.js';
6
5
  import pc from '@brillout/picocolors';
@@ -10,7 +9,7 @@ async function handleErrorWithoutErrorPage(pageContext) {
10
9
  assert(pageContext.errorWhileRendering || pageContext.is404);
11
10
  {
12
11
  const isV1 = pageContext._pageConfigs.length > 0;
13
- warnMissingErrorPage(isV1);
12
+ await warnMissingErrorPage(isV1, pageContext._globalContext.isProduction);
14
13
  }
15
14
  if (!pageContext.isClientSideNavigation) {
16
15
  const httpResponse = createHttpResponseError(pageContext);
@@ -25,9 +24,8 @@ async function handleErrorWithoutErrorPage(pageContext) {
25
24
  return pageContext;
26
25
  }
27
26
  }
28
- function warnMissingErrorPage(isV1) {
29
- const globalContext = getGlobalContext();
30
- if (!globalContext.isProduction) {
27
+ async function warnMissingErrorPage(isV1, isProduction) {
28
+ if (!isProduction) {
31
29
  const msg = [
32
30
  `No ${isV1 ? 'error page' : pc.cyan('_error.page.js')} found,`,
33
31
  'we recommend defining one',
@@ -6,10 +6,12 @@ import { PromiseType } from '../utils.js';
6
6
  import { PageContextGetPageAssets, type PageAsset } from './getPageAssets.js';
7
7
  import { type PageContextDebugRouteMatches } from './debugPageFiles.js';
8
8
  import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
9
+ import type { GlobalContext } from '../globalContext.js';
9
10
  type PageContext_loadUserFilesServerSide = PageContextGetPageAssets & PageContextDebugRouteMatches & {
10
11
  urlOriginal: string;
11
12
  _pageFilesAll: PageFile[];
12
13
  _pageConfigs: PageConfigRuntime[];
14
+ _globalContext: GlobalContext;
13
15
  };
14
16
  type PageFiles = PromiseType<ReturnType<typeof loadUserFilesServerSide>>;
15
17
  declare function loadUserFilesServerSide(pageContext: {
@@ -1,20 +1,21 @@
1
1
  export { loadUserFilesServerSide };
2
- import { getPageFilesServerSide, getPageConfigUserFriendly } from '../../../shared/getPageFiles.js';
2
+ import { getPageFilesServerSide } from '../../../shared/getPageFiles.js';
3
+ import { getPageConfigUserFriendlyOld } from '../../../shared/page-configs/getPageConfigUserFriendly.js';
3
4
  import { analyzePageClientSideInit } from '../../../shared/getPageFiles/analyzePageClientSide.js';
4
5
  import { assert, assertUsage, assertWarning, hasProp, isArrayOfStrings, objectAssign, isArray } from '../utils.js';
5
6
  import { getPageAssets } from './getPageAssets.js';
6
7
  import { debugPageFiles } from './debugPageFiles.js';
7
8
  import { findPageConfig } from '../../../shared/page-configs/findPageConfig.js';
8
9
  import { analyzePage } from './analyzePage.js';
9
- import { getGlobalContext } from '../globalContext.js';
10
10
  import { loadConfigValues } from '../../../shared/page-configs/loadConfigValues.js';
11
11
  async function loadUserFilesServerSide(pageContext) {
12
12
  const pageConfig = findPageConfig(pageContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig?
13
+ const globalContext = pageContext._globalContext;
13
14
  const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
14
- loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext.pageId, !getGlobalContext().isProduction),
15
+ loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext.pageId, !globalContext.isProduction),
15
16
  analyzePageClientSideInit(pageContext._pageFilesAll, pageContext.pageId, { sharedPageFilesAlreadyLoaded: true })
16
17
  ]);
17
- const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = analyzePage(pageContext._pageFilesAll, pageConfig, pageContext.pageId);
18
+ const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = await analyzePage(pageContext._pageFilesAll, pageConfig, pageContext.pageId, globalContext);
18
19
  const isV1Design = !!pageConfig;
19
20
  const passToClient = [];
20
21
  const errMsg = ' should be an array of strings.';
@@ -99,7 +100,7 @@ async function loadPageUserFiles(pageFilesAll, pageConfig, pageId, isDev) {
99
100
  const pageFilesServerSide = getPageFilesServerSide(pageFilesAll, pageId);
100
101
  const pageConfigLoaded = !pageConfig ? null : await loadConfigValues(pageConfig, isDev);
101
102
  await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
102
- const pageContextExports = getPageConfigUserFriendly(pageFilesServerSide, pageConfigLoaded);
103
+ const pageContextExports = getPageConfigUserFriendlyOld(pageFilesServerSide, pageConfigLoaded);
103
104
  return {
104
105
  pageContextExports,
105
106
  pageFilesLoaded: pageFilesServerSide
@@ -1,10 +1,12 @@
1
1
  export { log404 };
2
2
  export { getRoutesInfo };
3
3
  import type { PageRoutes } from '../../../../shared/route/index.js';
4
+ import type { GlobalContext } from '../../globalContext.js';
4
5
  declare function log404(pageContext: {
5
6
  urlPathname: string;
6
7
  errorWhileRendering: null | Error;
7
8
  isClientSideNavigation: boolean;
8
9
  _pageRoutes: PageRoutes;
10
+ _globalContext: GlobalContext;
9
11
  }): Promise<void>;
10
12
  declare function getRoutesInfo(pageRoutes: PageRoutes): string | null;
@@ -2,7 +2,6 @@ export { log404 };
2
2
  // Exported for ./index.spec.ts
3
3
  export { getRoutesInfo };
4
4
  import { noRouteMatch } from '../../../../shared/route/noRouteMatch.js';
5
- import { getGlobalContext } from '../../globalContext.js';
6
5
  import { assert, assertUsage, assertInfo, compareString, stripAnsi, getTerminalWidth, truncateString } from '../../utils.js';
7
6
  import pc from '@brillout/picocolors';
8
7
  async function log404(pageContext) {
@@ -13,7 +12,7 @@ async function log404(pageContext) {
13
12
  'No page found. Create at least one /pages/some-page/+Page.js file.'
14
13
  */
15
14
  );
16
- const globalContext = getGlobalContext();
15
+ const globalContext = pageContext._globalContext;
17
16
  if (!globalContext.isProduction && !isFileRequest(urlPathname) && !pageContext.isClientSideNavigation) {
18
17
  const routesInfo = getRoutesInfo(pageRoutes);
19
18
  let msg = `URL ${pc.cyan(urlPathname)} ${noRouteMatch}`;
@@ -4,6 +4,7 @@ import { PageContextUrlInternal } from '../../../shared/getPageContextUrlCompute
4
4
  import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
5
5
  import type { PageConfigUserFriendly } from '../../../shared/page-configs/getPageConfigUserFriendly.js';
6
6
  import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
7
+ import type { GlobalContext, GlobalContextPublic } from '../globalContext.js';
7
8
  type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal & PageConfigUserFriendly & {
8
9
  urlOriginal: string;
9
10
  /** @deprecated */
@@ -17,5 +18,7 @@ type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal
17
18
  is404: null | boolean;
18
19
  isClientSideNavigation: boolean;
19
20
  pageProps?: Record<string, unknown>;
21
+ _globalContext: GlobalContext;
22
+ globalContext: GlobalContextPublic;
20
23
  } & Record<string, unknown>;
21
24
  declare function preparePageContextForUserConsumptionServerSide(pageContext: PageContextForUserConsumptionServerSide): void;
@@ -5,6 +5,7 @@ export { getPageContextInitEnhanced };
5
5
  export type { PageContextAfterRender };
6
6
  export type { PageContextInitEnhanced };
7
7
  import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
8
+ import type { GlobalContext } from '../globalContext.js';
8
9
  import { HttpResponse } from './createHttpResponse.js';
9
10
  import { PageContext_loadUserFilesServerSide, type PageFiles } from './loadUserFilesServerSide.js';
10
11
  type PageContextAfterRender = {
@@ -45,6 +46,9 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
45
46
  _allPageIds: string[];
46
47
  _pageRoutes: import("../../../__internal/index.js").PageRoutes;
47
48
  _onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
49
+ _globalContext: GlobalContext;
50
+ /** @experimental This is a beta feature https://vike.dev/getGlobalContext */
51
+ globalContext: import("../globalContext.js").GlobalContextPublic;
48
52
  _pageContextInit: {
49
53
  urlOriginal: string;
50
54
  headersOriginal?: unknown;
@@ -96,6 +100,9 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
96
100
  _allPageIds: string[];
97
101
  _pageRoutes: import("../../../__internal/index.js").PageRoutes;
98
102
  _onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
103
+ _globalContext: GlobalContext;
104
+ /** @experimental This is a beta feature https://vike.dev/getGlobalContext */
105
+ globalContext: import("../globalContext.js").GlobalContextPublic;
99
106
  _pageContextInit: {
100
107
  urlOriginal: string;
101
108
  headersOriginal?: unknown;
@@ -130,7 +137,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
130
137
  _urlHandler: null;
131
138
  };
132
139
  }>;
133
- declare function prerender404Page(pageContextInit_: Record<string, unknown> | null): Promise<{
140
+ declare function prerender404Page(pageContextInit_: Record<string, unknown> | null, globalContext: GlobalContext): Promise<{
134
141
  documentHtml: string;
135
142
  pageContextSerialized: null;
136
143
  pageContext: {
@@ -148,6 +155,9 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
148
155
  _allPageIds: string[];
149
156
  _pageRoutes: import("../../../__internal/index.js").PageRoutes;
150
157
  _onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
158
+ _globalContext: GlobalContext;
159
+ /** @experimental This is a beta feature https://vike.dev/getGlobalContext */
160
+ globalContext: import("../globalContext.js").GlobalContextPublic;
151
161
  _pageContextInit: {
152
162
  urlOriginal: string;
153
163
  headersOriginal?: unknown;
@@ -199,6 +209,9 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
199
209
  _allPageIds: string[];
200
210
  _pageRoutes: import("../../../__internal/index.js").PageRoutes;
201
211
  _onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
212
+ _globalContext: GlobalContext;
213
+ /** @experimental This is a beta feature https://vike.dev/getGlobalContext */
214
+ globalContext: import("../globalContext.js").GlobalContextPublic;
202
215
  _pageContextInit: {
203
216
  urlOriginal: string;
204
217
  headersOriginal?: unknown;
@@ -233,18 +246,18 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
233
246
  _urlHandler: null;
234
247
  };
235
248
  } | null>;
236
- type PageContextInitEnhanced = ReturnType<typeof getPageContextInitEnhanced>;
249
+ type PageContextInitEnhanced = Awaited<ReturnType<typeof getPageContextInitEnhanced>>;
237
250
  declare function getPageContextInitEnhanced(pageContextInit: {
238
251
  urlOriginal: string;
239
252
  headersOriginal?: unknown;
240
253
  headers?: unknown;
241
- }, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
254
+ }, globalContext: GlobalContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
242
255
  ssr?: {
243
256
  urlRewrite: null | string;
244
257
  urlHandler: null | ((url: string) => string);
245
258
  isClientSideNavigation: boolean;
246
259
  };
247
- }): {
260
+ }): Promise<{
248
261
  urlOriginal: string;
249
262
  headersOriginal?: unknown;
250
263
  headers?: unknown;
@@ -259,6 +272,9 @@ declare function getPageContextInitEnhanced(pageContextInit: {
259
272
  _allPageIds: string[];
260
273
  _pageRoutes: import("../../../__internal/index.js").PageRoutes;
261
274
  _onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
275
+ _globalContext: GlobalContext;
276
+ /** @experimental This is a beta feature https://vike.dev/getGlobalContext */
277
+ globalContext: import("../globalContext.js").GlobalContextPublic;
262
278
  _pageContextInit: {
263
279
  urlOriginal: string;
264
280
  headersOriginal?: unknown;
@@ -273,4 +289,4 @@ declare function getPageContextInitEnhanced(pageContextInit: {
273
289
  url: string;
274
290
  } & {
275
291
  headers: Record<string, string> | null;
276
- };
292
+ }>;
@@ -7,7 +7,6 @@ import { getHtmlString } from '../html/renderHtml.js';
7
7
  import { assert, assertUsage, assertWarning, hasProp, normalizeHeaders, objectAssign } from '../utils.js';
8
8
  import { serializePageContextClientSide } from '../html/serializePageContextClientSide.js';
9
9
  import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
10
- import { getGlobalContext } from '../globalContext.js';
11
10
  import { createHttpResponsePage, createHttpResponsePageContextJson } from './createHttpResponse.js';
12
11
  import { loadUserFilesServerSide } from './loadUserFilesServerSide.js';
13
12
  import { executeOnRenderHtmlHook } from './executeOnRenderHtmlHook.js';
@@ -81,8 +80,7 @@ async function prerenderPage(pageContext) {
81
80
  return { documentHtml, pageContextSerialized, pageContext };
82
81
  }
83
82
  }
84
- async function prerender404Page(pageContextInit_) {
85
- const globalContext = getGlobalContext();
83
+ async function prerender404Page(pageContextInit_, globalContext) {
86
84
  const errorPageId = getErrorPageId(globalContext.pageFilesAll, globalContext.pageConfigs);
87
85
  if (!errorPageId) {
88
86
  return null;
@@ -102,20 +100,19 @@ async function prerender404Page(pageContextInit_) {
102
100
  };
103
101
  objectAssign(pageContextInit, pageContextInit_);
104
102
  {
105
- const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit);
103
+ const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext);
106
104
  objectAssign(pageContext, pageContextInitEnhanced);
107
105
  }
108
106
  objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
109
107
  return prerenderPage(pageContext);
110
108
  }
111
- function getPageContextInitEnhanced(pageContextInit, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
109
+ async function getPageContextInitEnhanced(pageContextInit, globalContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
112
110
  urlRewrite: null,
113
111
  urlHandler: null,
114
112
  isClientSideNavigation: false
115
113
  } } = {}) {
116
114
  assert(pageContextInit.urlOriginal);
117
- const globalContext = getGlobalContext();
118
- const { baseServer, baseAssets } = resolveBaseRuntime();
115
+ const { baseServer, baseAssets } = resolveBaseRuntime(globalContext);
119
116
  const pageContextInitEnhanced = {};
120
117
  objectAssign(pageContextInitEnhanced, pageContextInit);
121
118
  objectAssign(pageContextInitEnhanced, {
@@ -124,14 +121,18 @@ function getPageContextInitEnhanced(pageContextInit, { ssr: { urlRewrite, urlHan
124
121
  _baseServer: baseServer,
125
122
  _baseAssets: baseAssets,
126
123
  // TODO/now: add meta.default
127
- _includeAssetsImportedByServer: globalContext.vikeConfig.global.config.includeAssetsImportedByServer ?? true,
128
- // TODO: use GloablContext instead
124
+ _includeAssetsImportedByServer: globalContext.config.includeAssetsImportedByServer ?? true,
125
+ // TODO/soon: use GloablContext instead
129
126
  _pageFilesAll: globalContext.pageFilesAll,
130
127
  _pageConfigs: globalContext.pageConfigs,
131
128
  _pageConfigGlobal: globalContext.pageConfigGlobal,
132
129
  _allPageIds: globalContext.allPageIds,
133
130
  _pageRoutes: globalContext.pageRoutes,
134
131
  _onBeforeRouteHook: globalContext.onBeforeRouteHook,
132
+ _globalContext: globalContext,
133
+ // TODO/now: add PageContext['globalContext']
134
+ /** @experimental This is a beta feature https://vike.dev/getGlobalContext */
135
+ globalContext: globalContext.globalContext_public,
135
136
  _pageContextInit: pageContextInit,
136
137
  _urlRewrite: urlRewrite,
137
138
  _urlHandler: urlHandler,
@@ -4,7 +4,7 @@ import { getPageContextInitEnhanced, renderPageAlreadyRouted } from './renderPag
4
4
  import { route } from '../../shared/route/index.js';
5
5
  import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, createUrlFromComponents, isUri, getUrlPretty } from './utils.js';
6
6
  import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled } from '../../shared/route/abort.js';
7
- import { getGlobalContext, initGlobalContext_renderPage } from './globalContext.js';
7
+ import { getGlobalContextInternal, initGlobalContext_renderPage } from './globalContext.js';
8
8
  import { handlePageContextRequestUrl } from './renderPage/handlePageContextRequestUrl.js';
9
9
  import { createHttpResponseFavicon404, createHttpResponseRedirect, createHttpResponsePageContextJson, createHttpResponseError } from './renderPage/createHttpResponse.js';
10
10
  import { logRuntimeError, logRuntimeInfo } from './renderPage/loggerRuntime.js';
@@ -76,25 +76,26 @@ async function renderPageAndPrepare(pageContextInit, httpRequestId) {
76
76
  return handleInvalidConfig(isConfigInvalid.err);
77
77
  }
78
78
  else {
79
- // From now on, gloablContext contains all the configuration data; getVikeConfig() isn't called anymore for this request
79
+ // From now on, globalContext contains all the configuration data; getVikeConfig() isn't called anymore for this request
80
80
  }
81
+ const globalContext = await getGlobalContextInternal();
81
82
  // Check Base URL
82
- assertBaseUrl(pageContextInit);
83
+ await assertBaseUrl(pageContextInit, globalContext);
83
84
  // Normalize URL
84
85
  {
85
- const pageContextHttpResponse = normalizeUrl(pageContextInit, httpRequestId);
86
+ const pageContextHttpResponse = await normalizeUrl(pageContextInit, globalContext, httpRequestId);
86
87
  if (pageContextHttpResponse)
87
88
  return pageContextHttpResponse;
88
89
  }
89
90
  // Permanent redirects (HTTP status code `301`)
90
91
  {
91
- const pageContextHttpResponse = getPermanentRedirect(pageContextInit, httpRequestId);
92
+ const pageContextHttpResponse = await getPermanentRedirect(pageContextInit, globalContext, httpRequestId);
92
93
  if (pageContextHttpResponse)
93
94
  return pageContextHttpResponse;
94
95
  }
95
- return await renderPageAlreadyPrepared(pageContextInit, httpRequestId, []);
96
+ return await renderPageAlreadyPrepared(pageContextInit, globalContext, httpRequestId, []);
96
97
  }
97
- async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, pageContextsFromRewrite) {
98
+ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpRequestId, pageContextsFromRewrite) {
98
99
  assertNoInfiniteAbortLoop(pageContextsFromRewrite.length,
99
100
  // There doesn't seem to be a way to count the number of HTTP redirects (vike don't have access to the HTTP request headers/cookies)
100
101
  // https://stackoverflow.com/questions/9683007/detect-infinite-http-redirect-loop-on-server-side
@@ -106,7 +107,7 @@ async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, pageCon
106
107
  objectAssign(pageContextNominalPageInit, pageContextFromAllRewrites);
107
108
  }
108
109
  {
109
- const pageContextInitEnhanced = getPageContextInitEnhancedSSR(pageContextInit, pageContextNominalPageInit._urlRewrite, httpRequestId);
110
+ const pageContextInitEnhanced = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, pageContextNominalPageInit._urlRewrite, httpRequestId);
110
111
  objectAssign(pageContextNominalPageInit, pageContextInitEnhanced);
111
112
  }
112
113
  let errNominalPage;
@@ -138,10 +139,10 @@ async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, pageCon
138
139
  assert(pageContextNominalPageSuccess === undefined);
139
140
  assert(pageContextNominalPageInit);
140
141
  assert(hasProp(pageContextNominalPageInit, 'urlOriginal', 'string'));
141
- const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextInit, errNominalPage, pageContextNominalPageInit, httpRequestId);
142
+ const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextInit, globalContext, errNominalPage, pageContextNominalPageInit, httpRequestId);
142
143
  // Handle `throw redirect()` and `throw render()` while rendering nominal page
143
144
  if (isAbortError(errNominalPage)) {
144
- const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextInit, pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit);
145
+ const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextInit, pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext);
145
146
  if (handled.pageContextReturn) {
146
147
  // - throw redirect()
147
148
  // - throw render(url)
@@ -154,7 +155,6 @@ async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, pageCon
154
155
  Object.assign(pageContextErrorPageInit, handled.pageContextAbort);
155
156
  }
156
157
  {
157
- const globalContext = getGlobalContext();
158
158
  const errorPageId = getErrorPageId(globalContext.pageFilesAll, globalContext.pageConfigs);
159
159
  if (!errorPageId) {
160
160
  objectAssign(pageContextErrorPageInit, { pageId: null });
@@ -171,7 +171,7 @@ async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, pageCon
171
171
  catch (errErrorPage) {
172
172
  // Handle `throw redirect()` and `throw render()` while rendering error page
173
173
  if (isAbortError(errErrorPage)) {
174
- const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextInit, pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit);
174
+ const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextInit, pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext);
175
175
  // throw render(abortStatusCode)
176
176
  if (!handled.pageContextReturn) {
177
177
  const pageContextAbort = errErrorPage._pageContextAbort;
@@ -287,8 +287,8 @@ async function renderPageNominal(pageContext) {
287
287
  assert(pageContext === pageContextAfterRender);
288
288
  return pageContextAfterRender;
289
289
  }
290
- async function getPageContextErrorPageInit(pageContextInit, errNominalPage, pageContextNominalPagePartial, httpRequestId) {
291
- const pageContextInitEnhanced = getPageContextInitEnhancedSSR(pageContextInit, null, httpRequestId);
290
+ async function getPageContextErrorPageInit(pageContextInit, globalContext, errNominalPage, pageContextNominalPagePartial, httpRequestId) {
291
+ const pageContextInitEnhanced = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, null, httpRequestId);
292
292
  assert(errNominalPage);
293
293
  const pageContext = {};
294
294
  objectAssign(pageContext, pageContextInitEnhanced);
@@ -303,9 +303,9 @@ async function getPageContextErrorPageInit(pageContextInit, errNominalPage, page
303
303
  assert(pageContext.errorWhileRendering);
304
304
  return pageContext;
305
305
  }
306
- function getPageContextInitEnhancedSSR(pageContextInit, urlRewrite, httpRequestId) {
306
+ async function getPageContextInitEnhancedSSR(pageContextInit, globalContext, urlRewrite, httpRequestId) {
307
307
  const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(pageContextInit.urlOriginal);
308
- const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, {
308
+ const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext, {
309
309
  ssr: {
310
310
  urlRewrite,
311
311
  urlHandler: _urlHandler,
@@ -336,10 +336,9 @@ function assertIsNotViteRequest(urlPathname, urlOriginal) {
336
336
  return;
337
337
  assertUsage(false, `${pc.code('renderPage(pageContextInit)')} called with ${pc.code(`pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`)} which is unexpected because the URL ${pc.bold(urlOriginal)} should have already been handled by the development middleware: make sure the ${pc.cyan('createDevMiddleware()')} middleware is executed *before* the ${pc.cyan('renderPage()')} middleware, see ${pc.underline('https://vike.dev/renderPage')}`);
338
338
  }
339
- function normalizeUrl(pageContextInit, httpRequestId) {
340
- const globalContext = getGlobalContext();
341
- const { baseServer } = resolveBaseRuntime();
342
- const { trailingSlash, disableUrlNormalization } = globalContext.vikeConfig.global.config;
339
+ async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
340
+ const { baseServer } = resolveBaseRuntime(globalContext);
341
+ const { trailingSlash, disableUrlNormalization } = globalContext.config;
343
342
  if (disableUrlNormalization)
344
343
  return null;
345
344
  const { urlOriginal } = pageContextInit;
@@ -355,14 +354,13 @@ function normalizeUrl(pageContextInit, httpRequestId) {
355
354
  objectAssign(pageContextHttpResponse, { httpResponse });
356
355
  return pageContextHttpResponse;
357
356
  }
358
- function getPermanentRedirect(pageContextInit, httpRequestId) {
359
- const globalContext = getGlobalContext();
360
- const { baseServer } = resolveBaseRuntime();
357
+ async function getPermanentRedirect(pageContextInit, globalContext, httpRequestId) {
358
+ const { baseServer } = resolveBaseRuntime(globalContext);
361
359
  const urlWithoutBase = removeBaseServer(pageContextInit.urlOriginal, baseServer);
362
360
  let origin = null;
363
361
  let urlTargetExternal = null;
364
362
  let urlTarget = modifyUrlPathname(urlWithoutBase, (urlPathname) => {
365
- const urlTarget = resolveRedirects(globalContext.vikeConfig.global.config.redirects ?? [], urlPathname);
363
+ const urlTarget = resolveRedirects(globalContext.config.redirects ?? [], urlPathname);
366
364
  if (urlTarget === null)
367
365
  return null;
368
366
  if (!isUrl(urlTarget)) {
@@ -389,7 +387,7 @@ function getPermanentRedirect(pageContextInit, httpRequestId) {
389
387
  }
390
388
  if (normalize(urlTarget) === normalize(urlWithoutBase))
391
389
  return null;
392
- const { baseServer } = resolveBaseRuntime();
390
+ const { baseServer } = resolveBaseRuntime(globalContext);
393
391
  if (!originChanged)
394
392
  urlTarget = prependBase(urlTarget, baseServer);
395
393
  assert(urlTarget !== pageContextInit.urlOriginal);
@@ -405,13 +403,12 @@ function normalize(url) {
405
403
  }
406
404
  async function handleAbortError(errAbort, pageContextsFromRewrite, pageContextInit,
407
405
  // handleAbortError() creates a new pageContext object and we don't merge pageContextNominalPageInit to it: we only use some pageContextNominalPageInit information.
408
- pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit) {
409
- logAbortErrorHandled(errAbort, getGlobalContext().isProduction, pageContextNominalPageInit);
406
+ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext) {
407
+ logAbortErrorHandled(errAbort, globalContext.isProduction, pageContextNominalPageInit);
410
408
  const pageContextAbort = errAbort._pageContextAbort;
411
409
  let pageContextSerialized;
412
410
  if (pageContextNominalPageInit.isClientSideNavigation) {
413
411
  if (pageContextAbort.abortStatusCode) {
414
- const globalContext = getGlobalContext();
415
412
  const errorPageId = getErrorPageId(globalContext.pageFilesAll, globalContext.pageConfigs);
416
413
  const abortCall = pageContextAbort._abortCall;
417
414
  assert(abortCall);
@@ -432,7 +429,7 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit) {
432
429
  return { pageContextReturn };
433
430
  }
434
431
  if (pageContextAbort._urlRewrite) {
435
- const pageContextReturn = await renderPageAlreadyPrepared(pageContextInit, httpRequestId, [
432
+ const pageContextReturn = await renderPageAlreadyPrepared(pageContextInit, globalContext, httpRequestId, [
436
433
  ...pageContextsFromRewrite,
437
434
  pageContextAbort
438
435
  ]);
@@ -455,8 +452,8 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit) {
455
452
  assert(pageContextAbort.abortStatusCode);
456
453
  return { pageContextAbort };
457
454
  }
458
- function assertBaseUrl(pageContextInit) {
459
- const { baseServer } = resolveBaseRuntime();
455
+ async function assertBaseUrl(pageContextInit, globalContext) {
456
+ const { baseServer } = resolveBaseRuntime(globalContext);
460
457
  const { urlOriginal } = pageContextInit;
461
458
  const { urlWithoutPageContextRequestSuffix } = handlePageContextRequestUrl(urlOriginal);
462
459
  const { hasBaseServer } = parseUrl(urlWithoutPageContextRequestSuffix, baseServer);
@@ -15,6 +15,7 @@ export * from '../../utils/projectInfo.js';
15
15
  export * from '../../utils/isArray.js';
16
16
  export * from '../../utils/isObject.js';
17
17
  export * from '../../utils/objectAssign.js';
18
+ export * from '../../utils/objectAssignSafe.js';
18
19
  export * from '../../utils/objectReplace.js';
19
20
  export * from '../../utils/PromiseType.js';
20
21
  export * from '../../utils/compareString.js';
@@ -19,6 +19,7 @@ export * from '../../utils/projectInfo.js';
19
19
  export * from '../../utils/isArray.js';
20
20
  export * from '../../utils/isObject.js';
21
21
  export * from '../../utils/objectAssign.js';
22
+ export * from '../../utils/objectAssignSafe.js';
22
23
  export * from '../../utils/objectReplace.js';
23
24
  export * from '../../utils/PromiseType.js';
24
25
  export * from '../../utils/compareString.js';
@@ -1,13 +1,15 @@
1
1
  export { createDevMiddleware };
2
2
  import { createServer } from 'vite';
3
3
  import { prepareViteApiCall } from '../api/prepareViteApiCall.js';
4
+ import { setGlobalContext_isProduction } from '../runtime/globalContext.js';
4
5
  /*
5
6
  * Create server middleware for development with HMR and lazy-transpiling.
6
7
  *
7
8
  * https://vike.dev/createDevMiddleware
8
9
  */
9
10
  async function createDevMiddleware(options = {}) {
10
- const viteConfig = {
11
+ setGlobalContext_isProduction(false);
12
+ const viteConfigFromOptions = {
11
13
  ...options.viteConfig,
12
14
  server: {
13
15
  ...options.viteConfig?.server,
@@ -15,8 +17,8 @@ async function createDevMiddleware(options = {}) {
15
17
  }
16
18
  };
17
19
  if (options.root)
18
- viteConfig.root = options.root;
19
- const { viteConfigEnhanced } = await prepareViteApiCall(viteConfig, 'dev');
20
+ viteConfigFromOptions.root = options.root;
21
+ const { viteConfigEnhanced } = await prepareViteApiCall(viteConfigFromOptions, 'dev');
20
22
  const server = await createServer(viteConfigEnhanced);
21
23
  const devMiddleware = server.middlewares;
22
24
  return { devMiddleware, viteServer: server, viteConfig: server.config };
@@ -2,6 +2,7 @@ export { resolveBase };
2
2
  export { resolveBaseRuntime };
3
3
  export { resolveBaseFromResolvedConfig };
4
4
  import type { ResolvedConfig } from 'vite';
5
+ import type { GlobalContext } from '../runtime/globalContext.js';
5
6
  declare function resolveBaseFromResolvedConfig(baseServer: string | null, baseAssets: string | null, config: ResolvedConfig): {
6
7
  baseServer: string;
7
8
  baseAssets: string;
@@ -10,5 +11,5 @@ type BaseUrlsResolved = {
10
11
  baseServer: string;
11
12
  baseAssets: string;
12
13
  };
13
- declare function resolveBaseRuntime(): BaseUrlsResolved;
14
+ declare function resolveBaseRuntime(globalContext: GlobalContext): BaseUrlsResolved;
14
15
  declare function resolveBase(baseViteOriginal: string | null, baseServerUnresolved: string | null, baseAssetsUnresolved: string | null): BaseUrlsResolved;
@@ -3,17 +3,15 @@ export { resolveBaseRuntime };
3
3
  export { resolveBaseFromResolvedConfig };
4
4
  import { assert, assertUsage, isBaseServer, isBaseAssets } from './utils.js';
5
5
  import pc from '@brillout/picocolors';
6
- import { getGlobalContext } from '../runtime/globalContext.js';
7
6
  function resolveBaseFromResolvedConfig(baseServer, baseAssets, config) {
8
7
  let baseViteOriginal = config._baseViteOriginal;
9
8
  assert(baseViteOriginal === null || typeof baseViteOriginal == 'string');
10
9
  return resolveBase(baseViteOriginal, baseServer, baseAssets);
11
10
  }
12
- function resolveBaseRuntime() {
13
- const globalContext = getGlobalContext();
11
+ function resolveBaseRuntime(globalContext) {
14
12
  const baseViteOriginal = globalContext.viteConfigRuntime._baseViteOriginal;
15
- const baseServerUnresolved = globalContext.vikeConfig.global.config.baseServer ?? null;
16
- const baseAssetsUnresolved = globalContext.vikeConfig.global.config.baseAssets ?? null;
13
+ const baseServerUnresolved = globalContext.config.baseServer ?? null;
14
+ const baseAssetsUnresolved = globalContext.config.baseAssets ?? null;
17
15
  return resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved);
18
16
  }
19
17
  function resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved) {
@@ -0,0 +1,13 @@
1
+ export { getPageConfigsRuntime };
2
+ export { getAllPageIds };
3
+ import type { PageFile } from './getPageFiles.js';
4
+ import { type ConfigUserFriendly } from './page-configs/getPageConfigUserFriendly.js';
5
+ import type { PageConfigGlobalRuntime, PageConfigRuntime } from './page-configs/PageConfig.js';
6
+ declare function getPageConfigsRuntime(virtualFileExports: unknown): {
7
+ pageFilesAll: PageFile[];
8
+ allPageIds: string[];
9
+ pageConfigs: PageConfigRuntime[];
10
+ pageConfigGlobal: PageConfigGlobalRuntime;
11
+ globalConfig: ConfigUserFriendly;
12
+ };
13
+ declare function getAllPageIds(pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[]): string[];
@@ -0,0 +1,18 @@
1
+ export { getPageConfigsRuntime };
2
+ export { getAllPageIds };
3
+ import { parseGlobResults } from './getPageFiles/parseGlobResults.js';
4
+ import { getPageConfigUserFriendlyNew } from './page-configs/getPageConfigUserFriendly.js';
5
+ import { unique } from './utils.js';
6
+ function getPageConfigsRuntime(virtualFileExports) {
7
+ const { pageFilesAll, pageConfigs, pageConfigGlobal } = parseGlobResults(virtualFileExports);
8
+ const allPageIds = getAllPageIds(pageFilesAll, pageConfigs);
9
+ // TODO/now: re-use this call, instead of calling it twice
10
+ const globalConfig = getPageConfigUserFriendlyNew(pageConfigGlobal);
11
+ return { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig };
12
+ }
13
+ function getAllPageIds(pageFilesAll, pageConfigs) {
14
+ const fileIds = pageFilesAll.filter(({ isDefaultPageFile }) => !isDefaultPageFile).map(({ pageId }) => pageId);
15
+ const allPageIds = unique(fileIds);
16
+ const allPageIds2 = pageConfigs.map((p) => p.pageId);
17
+ return [...allPageIds, ...allPageIds2];
18
+ }