vike 0.4.142-commit-acfc159 → 0.4.143-commit-f03b42d

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 (147) hide show
  1. package/dist/cjs/node/plugin/index.js +2 -2
  2. package/dist/cjs/node/plugin/plugins/buildConfig.js +4 -5
  3. package/dist/cjs/node/plugin/plugins/commonConfig.js +1 -6
  4. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +2 -2
  5. package/dist/cjs/node/plugin/plugins/importUserCode/generateEagerImport.js +19 -8
  6. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +2 -2
  7. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +103 -95
  8. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +37 -27
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +50 -80
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/helpers.js +12 -3
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +25 -25
  12. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +19 -16
  13. package/dist/cjs/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js} +1 -12
  14. package/dist/cjs/node/plugin/shared/loggerNotProd.js +1 -1
  15. package/dist/cjs/node/plugin/utils.js +1 -2
  16. package/dist/cjs/node/prerender/runPrerender.js +13 -16
  17. package/dist/cjs/node/runtime/html/stream.js +4 -1
  18. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
  19. package/dist/cjs/node/runtime/renderPage/loadPageFilesServerSide.js +2 -2
  20. package/dist/cjs/node/shared/virtual-files/virtualFilePageConfigValuesAll.js +1 -1
  21. package/dist/cjs/shared/error-page.js +1 -1
  22. package/dist/cjs/shared/getPageFiles/assertPageConfigs.js +13 -13
  23. package/dist/cjs/shared/getPageFiles/getExports.js +3 -3
  24. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +9 -43
  25. package/dist/cjs/shared/getPageFiles/parsePageConfigsSerialized.js +62 -0
  26. package/dist/cjs/shared/page-configs/assertExports.js +60 -0
  27. package/dist/cjs/shared/page-configs/loadConfigValues.js +18 -0
  28. package/dist/cjs/shared/page-configs/parseConfigValuesImported.js +50 -0
  29. package/dist/cjs/shared/page-configs/utils.js +1 -1
  30. package/dist/cjs/shared/route/loadPageRoutes.js +11 -13
  31. package/dist/cjs/shared/route/resolvePrecedence.js +32 -11
  32. package/dist/cjs/shared/route/resolveRedirects.js +1 -1
  33. package/dist/cjs/shared/route/resolveRouteFunction.js +1 -0
  34. package/dist/cjs/shared/route/resolveRouteString.js +99 -43
  35. package/dist/cjs/shared/utils.js +1 -1
  36. package/dist/cjs/types/defineConfig.js +7 -0
  37. package/dist/cjs/types/index.js +3 -0
  38. package/dist/cjs/utils/objectAssign.js +3 -1
  39. package/dist/cjs/utils/projectInfo.js +1 -1
  40. package/dist/cjs/utils/{resolve.js → requireResolve.js} +3 -3
  41. package/dist/esm/__internal/index.d.ts +3 -3
  42. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +2 -2
  43. package/dist/esm/client/client-routing-runtime/getPageContext.d.ts +2 -2
  44. package/dist/esm/client/client-routing-runtime/getPageId.d.ts +2 -2
  45. package/dist/esm/client/client-routing-runtime/prefetch.js +3 -1
  46. package/dist/esm/client/client-routing-runtime/useClientRouter.js +2 -2
  47. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
  48. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
  49. package/dist/esm/client/shared/loadPageFilesClientSide.d.ts +2 -2
  50. package/dist/esm/client/shared/loadPageFilesClientSide.js +2 -2
  51. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
  52. package/dist/esm/node/plugin/index.js +3 -2
  53. package/dist/esm/node/plugin/plugins/buildConfig.js +4 -5
  54. package/dist/esm/node/plugin/plugins/commonConfig.js +1 -6
  55. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
  56. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.d.ts +13 -2
  57. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.js +19 -8
  58. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +2 -2
  59. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.d.ts +8 -0
  60. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -2
  61. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +104 -96
  62. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.d.ts +5 -0
  63. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +35 -25
  64. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.d.ts +3 -0
  65. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +49 -79
  66. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.js +10 -1
  67. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.d.ts +18 -6
  68. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +25 -25
  69. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.d.ts +2 -2
  70. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +19 -16
  71. package/dist/esm/node/plugin/shared/{getConfigValueSource.d.ts → getConfigValueSourcesRelevant.d.ts} +0 -2
  72. package/dist/esm/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js} +0 -11
  73. package/dist/esm/node/plugin/shared/loggerNotProd.js +2 -2
  74. package/dist/esm/node/plugin/utils.d.ts +1 -2
  75. package/dist/esm/node/plugin/utils.js +1 -2
  76. package/dist/esm/node/prerender/runPrerender.js +13 -16
  77. package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -2
  78. package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +2 -2
  79. package/dist/esm/node/runtime/html/stream.js +4 -1
  80. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
  81. package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -2
  82. package/dist/esm/node/runtime/renderPage/createHttpResponseObject.d.ts +2 -2
  83. package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +2 -2
  84. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +2 -2
  85. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
  86. package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.d.ts +2 -2
  87. package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.js +2 -2
  88. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  89. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +13 -13
  90. package/dist/esm/node/shared/getClientEntryFilePath.d.ts +2 -2
  91. package/dist/esm/node/shared/virtual-files/virtualFilePageConfigValuesAll.js +1 -1
  92. package/dist/esm/shared/addIs404ToPageProps.d.ts +2 -2
  93. package/dist/esm/shared/error-page.d.ts +3 -3
  94. package/dist/esm/shared/error-page.js +1 -1
  95. package/dist/esm/shared/getPageFiles/analyzeClientSide.d.ts +2 -2
  96. package/dist/esm/shared/getPageFiles/assertPageConfigs.d.ts +5 -5
  97. package/dist/esm/shared/getPageFiles/assertPageConfigs.js +12 -12
  98. package/dist/esm/shared/getPageFiles/getExports.d.ts +2 -2
  99. package/dist/esm/shared/getPageFiles/getExports.js +1 -1
  100. package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +3 -3
  101. package/dist/esm/shared/getPageFiles/parseGlobResults.js +9 -43
  102. package/dist/esm/shared/getPageFiles/parsePageConfigsSerialized.d.ts +6 -0
  103. package/dist/esm/shared/getPageFiles/parsePageConfigsSerialized.js +59 -0
  104. package/dist/esm/shared/getPageFiles/setPageFiles.d.ts +3 -3
  105. package/dist/esm/shared/page-configs/Config.d.ts +200 -11
  106. package/dist/esm/shared/page-configs/PageConfig.d.ts +59 -39
  107. package/dist/esm/shared/page-configs/assertExports.d.ts +6 -0
  108. package/dist/esm/shared/page-configs/assertExports.js +54 -0
  109. package/dist/esm/shared/page-configs/findPageConfig.d.ts +2 -2
  110. package/dist/esm/shared/page-configs/loadConfigValues.d.ts +3 -0
  111. package/dist/esm/shared/page-configs/loadConfigValues.js +15 -0
  112. package/dist/esm/shared/page-configs/parseConfigValuesImported.d.ts +3 -0
  113. package/dist/esm/shared/page-configs/parseConfigValuesImported.js +44 -0
  114. package/dist/esm/shared/page-configs/utils.d.ts +3 -2
  115. package/dist/esm/shared/page-configs/utils.js +1 -1
  116. package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
  117. package/dist/esm/shared/route/index.d.ts +3 -3
  118. package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -2
  119. package/dist/esm/shared/route/loadPageRoutes.js +11 -13
  120. package/dist/esm/shared/route/resolvePrecedence.js +33 -12
  121. package/dist/esm/shared/route/resolveRedirects.js +1 -1
  122. package/dist/esm/shared/route/resolveRouteFunction.js +1 -0
  123. package/dist/esm/shared/route/resolveRouteString.d.ts +21 -4
  124. package/dist/esm/shared/route/resolveRouteString.js +98 -42
  125. package/dist/esm/shared/types.d.ts +7 -6
  126. package/dist/esm/shared/utils.d.ts +1 -1
  127. package/dist/esm/shared/utils.js +1 -1
  128. package/dist/esm/types/defineConfig.d.ts +3 -0
  129. package/dist/esm/types/defineConfig.js +4 -0
  130. package/dist/esm/types/index.d.ts +2 -1
  131. package/dist/esm/types/index.js +1 -1
  132. package/dist/esm/utils/objectAssign.js +3 -1
  133. package/dist/esm/utils/projectInfo.d.ts +1 -1
  134. package/dist/esm/utils/projectInfo.js +1 -1
  135. package/dist/esm/utils/requireResolve.d.ts +2 -0
  136. package/dist/esm/utils/{resolve.js → requireResolve.js} +2 -2
  137. package/package.json +3 -3
  138. package/dist/cjs/shared/page-configs/loadPageCode.js +0 -63
  139. package/dist/cjs/utils/assertDefaultExport.js +0 -53
  140. package/dist/esm/shared/page-configs/loadPageCode.d.ts +0 -3
  141. package/dist/esm/shared/page-configs/loadPageCode.js +0 -57
  142. package/dist/esm/utils/assertDefaultExport.d.ts +0 -8
  143. package/dist/esm/utils/assertDefaultExport.js +0 -47
  144. package/dist/esm/utils/resolve.d.ts +0 -2
  145. /package/dist/cjs/shared/getPageFiles/{assertExports.js → assert_exports_old_design.js} +0 -0
  146. /package/dist/esm/shared/getPageFiles/{assertExports.d.ts → assert_exports_old_design.d.ts} +0 -0
  147. /package/dist/esm/shared/getPageFiles/{assertExports.js → assert_exports_old_design.js} +0 -0
@@ -628,7 +628,10 @@ function isStreamPipeWeb(thing) {
628
628
  const __streamPipeNode = '__streamPipeNode';
629
629
  /** @deprecated */
630
630
  function pipeNodeStream(pipe) {
631
- assertWarning(false, 'pipeNodeStream() is outdated, use stampPipe() instead. See https://vike.dev/stream', { onlyOnce: true, showStackTrace: true });
631
+ assertWarning(false, 'pipeNodeStream() is outdated, use stampPipe() instead. See https://vike.dev/stream', {
632
+ onlyOnce: true,
633
+ showStackTrace: true
634
+ });
632
635
  return { [__streamPipeNode]: pipe };
633
636
  }
634
637
  function getStreamPipeNode(thing) {
@@ -1,5 +1,5 @@
1
1
  export { analyzePage };
2
2
  import type { PageFile } from '../../../shared/getPageFiles/getPageFileObject.js';
3
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
3
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
4
4
  import { type AnalysisResult } from '../../../shared/getPageFiles/analyzePageClientSide.js';
5
- declare function analyzePage(pageFilesAll: PageFile[], pageConfig: null | PageConfig, pageId: string): AnalysisResult;
5
+ declare function analyzePage(pageFilesAll: PageFile[], pageConfig: null | PageConfigRuntime, pageId: string): AnalysisResult;
@@ -26,14 +26,14 @@ function analyzePage(pageFilesAll, pageConfig, pageId) {
26
26
  }
27
27
  /* Remove?
28
28
  Object.values(pageConfig.configElements).forEach((configElement) => {
29
- if (configElement.importFilePath) {
29
+ if (configElement.importPath) {
30
30
  const { env } = configElement
31
31
  assert(env)
32
32
  const onlyAssets = env === 'server-only'
33
33
  const eagerlyImported = env === '_routing-eager'
34
34
  if (onlyAssets || eagerlyImported) {
35
35
  clientDependencies.push({
36
- id: configElement.importFilePath,
36
+ id: configElement.importPath,
37
37
  onlyAssets,
38
38
  eagerlyImported
39
39
  })
@@ -4,7 +4,7 @@ export { createHttpResponseObjectRedirect };
4
4
  export type { HttpResponse };
5
5
  import type { GetPageAssets } from './getPageAssets.js';
6
6
  import type { HtmlRender } from '../html/renderHtml.js';
7
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
7
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
8
8
  import type { RenderHook } from './executeOnRenderHtmlHook.js';
9
9
  import type { RedirectStatusCode, AbortStatusCode, UrlRedirect } from '../../../shared/route/abort.js';
10
10
  import { HttpResponseBody } from './getHttpResponseBody.js';
@@ -21,7 +21,7 @@ declare function createHttpResponseObject(htmlRender: null | HtmlRender, renderH
21
21
  is404: null | boolean;
22
22
  errorWhileRendering: null | Error;
23
23
  __getPageAssets: GetPageAssets;
24
- _pageConfigs: PageConfig[];
24
+ _pageConfigs: PageConfigRuntime[];
25
25
  abortStatusCode?: AbortStatusCode;
26
26
  }): Promise<HttpResponse | null>;
27
27
  declare function createHttpResponsePageContextJson(pageContextSerialized: string): Promise<HttpResponse>;
@@ -3,7 +3,7 @@ export type { PageContextDebug };
3
3
  import { RouteMatches } from '../../../shared/route/index.js';
4
4
  import type { ClientDependency } from '../../../shared/getPageFiles/analyzePageClientSide/ClientDependency.js';
5
5
  import type { PageFile } from '../../../shared/getPageFiles.js';
6
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
6
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
7
7
  type PageContextDebug = {
8
8
  _routeMatches: 'ROUTE_ERROR' | RouteMatches;
9
9
  };
@@ -12,7 +12,7 @@ declare function debugPageFiles({ pageContext, isHtmlOnly, isClientRouting, page
12
12
  urlOriginal: string;
13
13
  _pageId: string;
14
14
  _pageFilesAll: PageFile[];
15
- _pageConfigs: PageConfig[];
15
+ _pageConfigs: PageConfigRuntime[];
16
16
  } & PageContextDebug;
17
17
  isHtmlOnly: boolean;
18
18
  isClientRouting: boolean;
@@ -3,7 +3,7 @@ export type { RenderHook };
3
3
  import { type HtmlRender } from '../html/renderHtml.js';
4
4
  import type { PageAsset } from './getPageAssets.js';
5
5
  import { type PageContextForUserConsumptionServerSide } from './preparePageContextForUserConsumptionServerSide.js';
6
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
6
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
7
7
  import type { PageContextSerialization } from '../html/serializePageContextClientSide.js';
8
8
  type GetPageAssets = () => Promise<PageAsset[]>;
9
9
  type RenderHook = {
@@ -13,7 +13,7 @@ type RenderHook = {
13
13
  type HookName = 'onRenderHtml' | 'render';
14
14
  declare function executeOnRenderHtmlHook(pageContext: PageContextForUserConsumptionServerSide & PageContextSerialization & {
15
15
  _pageId: string;
16
- _pageConfigs: PageConfig[];
16
+ _pageConfigs: PageConfigRuntime[];
17
17
  __getPageAssets: GetPageAssets;
18
18
  _isHtmlOnly: boolean;
19
19
  _baseServer: string;
@@ -1,11 +1,11 @@
1
1
  export { handleErrorWithoutErrorPage };
2
2
  import type { PageContextAfterRender } from './renderPageAlreadyRouted.js';
3
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
3
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
4
4
  declare function handleErrorWithoutErrorPage<PageContext extends {
5
5
  isClientSideNavigation: boolean;
6
6
  errorWhileRendering: null | Error;
7
7
  is404: null | boolean;
8
8
  _pageId: null;
9
- _pageConfigs: PageConfig[];
9
+ _pageConfigs: PageConfigRuntime[];
10
10
  urlOriginal: string;
11
11
  }>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
@@ -5,11 +5,11 @@ import { type PageFile } from '../../../shared/getPageFiles.js';
5
5
  import { PromiseType } from '../utils.js';
6
6
  import { PageContextGetPageAssets, type PageAsset } from './getPageAssets.js';
7
7
  import { type PageContextDebug } from './debugPageFiles.js';
8
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
8
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
9
9
  type PageContext_loadPageFilesServerSide = PageContextGetPageAssets & PageContextDebug & {
10
10
  urlOriginal: string;
11
11
  _pageFilesAll: PageFile[];
12
- _pageConfigs: PageConfig[];
12
+ _pageConfigs: PageConfigRuntime[];
13
13
  };
14
14
  type PageFiles = PromiseType<ReturnType<typeof loadPageFilesServerSide>>;
15
15
  declare function loadPageFilesServerSide(pageContext: {
@@ -7,7 +7,7 @@ import { debugPageFiles } from './debugPageFiles.js';
7
7
  import { findPageConfig } from '../../../shared/page-configs/findPageConfig.js';
8
8
  import { analyzePage } from './analyzePage.js';
9
9
  import { getGlobalContext } from '../globalContext.js';
10
- import { loadPageCode } from '../../../shared/page-configs/loadPageCode.js';
10
+ import { loadConfigValues } from '../../../shared/page-configs/loadConfigValues.js';
11
11
  async function loadPageFilesServerSide(pageContext) {
12
12
  const pageConfig = findPageConfig(pageContext._pageConfigs, pageContext._pageId); // Make pageConfig globally available as pageContext._pageConfig?
13
13
  const [{ config, configEntries, exports, exportsAll, pageExports, pageFilesLoaded, pageConfigLoaded }] = await Promise.all([
@@ -82,7 +82,7 @@ async function loadPageFilesServerSide(pageContext) {
82
82
  }
83
83
  async function loadPageFiles(pageFilesAll, pageConfig, pageId, isDev) {
84
84
  const pageFilesServerSide = getPageFilesServerSide(pageFilesAll, pageId);
85
- const pageConfigLoaded = !pageConfig ? null : await loadPageCode(pageConfig, isDev);
85
+ const pageConfigLoaded = !pageConfig ? null : await loadConfigValues(pageConfig, isDev);
86
86
  await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
87
87
  const { config, configEntries, exports, exportsAll, pageExports } = getExports(pageFilesServerSide, pageConfigLoaded);
88
88
  return {
@@ -1,7 +1,7 @@
1
1
  export { preparePageContextForUserConsumptionServerSide };
2
2
  export type { PageContextForUserConsumptionServerSide };
3
3
  import { PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
4
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
4
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
5
5
  import type { ConfigEntries, ExportsAll } from '../../../shared/getPageFiles/getExports.js';
6
6
  import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
7
7
  type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal & {
@@ -18,7 +18,7 @@ type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal
18
18
  exports: Record<string, unknown>;
19
19
  exportsAll: ExportsAll;
20
20
  _pageId: string;
21
- _pageConfigs: PageConfig[];
21
+ _pageConfigs: PageConfigRuntime[];
22
22
  is404: null | boolean;
23
23
  isClientSideNavigation: boolean;
24
24
  pageProps?: Record<string, unknown>;
@@ -10,7 +10,7 @@ import { type PageFile } from '../../../shared/getPageFiles.js';
10
10
  import { type PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
11
11
  import { HttpResponse } from './createHttpResponseObject.js';
12
12
  import { PageContext_loadPageFilesServerSide, type PageFiles } from './loadPageFilesServerSide.js';
13
- import type { PageConfig, PageConfigGlobal } from '../../../shared/page-configs/PageConfig.js';
13
+ import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
14
14
  import { type PageRoutes } from '../../../shared/route/loadPageRoutes.js';
15
15
  import type { OnBeforeRouteHook } from '../../../shared/route/executeOnBeforeRouteHook.js';
16
16
  type PageContextAfterRender = {
@@ -42,8 +42,8 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
42
42
  _baseAssets: string | null;
43
43
  _includeAssetsImportedByServer: boolean;
44
44
  _pageFilesAll: PageFile[];
45
- _pageConfigs: PageConfig[];
46
- _pageConfigGlobal: PageConfigGlobal;
45
+ _pageConfigs: PageConfigRuntime[];
46
+ _pageConfigGlobal: PageConfigGlobalRuntime;
47
47
  _allPageIds: string[];
48
48
  _pageRoutes: PageRoutes;
49
49
  _onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -89,8 +89,8 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
89
89
  _baseAssets: string | null;
90
90
  _includeAssetsImportedByServer: boolean;
91
91
  _pageFilesAll: PageFile[];
92
- _pageConfigs: PageConfig[];
93
- _pageConfigGlobal: PageConfigGlobal;
92
+ _pageConfigs: PageConfigRuntime[];
93
+ _pageConfigGlobal: PageConfigGlobalRuntime;
94
94
  _allPageIds: string[];
95
95
  _pageRoutes: PageRoutes;
96
96
  _onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -137,8 +137,8 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
137
137
  _baseAssets: string | null;
138
138
  _includeAssetsImportedByServer: boolean;
139
139
  _pageFilesAll: PageFile[];
140
- _pageConfigs: PageConfig[];
141
- _pageConfigGlobal: PageConfigGlobal;
140
+ _pageConfigs: PageConfigRuntime[];
141
+ _pageConfigGlobal: PageConfigGlobalRuntime;
142
142
  _allPageIds: string[];
143
143
  _pageRoutes: PageRoutes;
144
144
  _onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -184,8 +184,8 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
184
184
  _baseAssets: string | null;
185
185
  _includeAssetsImportedByServer: boolean;
186
186
  _pageFilesAll: PageFile[];
187
- _pageConfigs: PageConfig[];
188
- _pageConfigGlobal: PageConfigGlobal;
187
+ _pageConfigs: PageConfigRuntime[];
188
+ _pageConfigGlobal: PageConfigGlobalRuntime;
189
189
  _allPageIds: string[];
190
190
  _pageRoutes: PageRoutes;
191
191
  _onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -239,8 +239,8 @@ declare function getPageContextInitEnhanced(pageContextInit: {
239
239
  _baseAssets: string | null;
240
240
  _includeAssetsImportedByServer: boolean;
241
241
  _pageFilesAll: PageFile[];
242
- _pageConfigs: PageConfig[];
243
- _pageConfigGlobal: PageConfigGlobal;
242
+ _pageConfigs: PageConfigRuntime[];
243
+ _pageConfigGlobal: PageConfigGlobalRuntime;
244
244
  _allPageIds: string[];
245
245
  _pageRoutes: PageRoutes;
246
246
  _onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -256,8 +256,8 @@ declare function getPageContextInitEnhanced(pageContextInit: {
256
256
  };
257
257
  type RenderContext = {
258
258
  pageFilesAll: PageFile[];
259
- pageConfigs: PageConfig[];
260
- pageConfigGlobal: PageConfigGlobal;
259
+ pageConfigs: PageConfigRuntime[];
260
+ pageConfigGlobal: PageConfigGlobalRuntime;
261
261
  allPageIds: string[];
262
262
  pageRoutes: PageRoutes;
263
263
  onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -1,3 +1,3 @@
1
1
  export { getClientEntryFilePath };
2
- import type { PageConfig, PageConfigBuildTime } from '../../shared/page-configs/PageConfig.js';
3
- declare function getClientEntryFilePath(pageConfig: PageConfig | PageConfigBuildTime): null | string;
2
+ import type { PageConfigRuntime, PageConfigBuildTime } from '../../shared/page-configs/PageConfig.js';
3
+ declare function getClientEntryFilePath(pageConfig: PageConfigRuntime | PageConfigBuildTime): null | string;
@@ -6,7 +6,7 @@ const idBase = 'virtual:vike:pageConfigValuesAll:';
6
6
  const idBaseClient = `${idBase}client:`;
7
7
  const idBaseServer = `${idBase}server:`;
8
8
  function getVirtualFileIdPageConfigValuesAll(pageId, isForClientSide) {
9
- const id = `${(isForClientSide ? idBaseClient : idBaseServer)}${pageId}`;
9
+ const id = `${isForClientSide ? idBaseClient : idBaseServer}${pageId}`;
10
10
  return id;
11
11
  }
12
12
  function isVirtualFileIdPageConfigValuesAll(id) {
@@ -1,7 +1,7 @@
1
1
  export { addIs404ToPageProps };
2
- import type { PageConfig } from './page-configs/PageConfig.js';
2
+ import type { PageConfigRuntime } from './page-configs/PageConfig.js';
3
3
  declare function addIs404ToPageProps(pageContext: Record<string, unknown> & PageContextAssertIs404): void;
4
4
  type PageContextAssertIs404 = {
5
5
  _pageId: string;
6
- _pageConfigs: PageConfig[];
6
+ _pageConfigs: PageConfigRuntime[];
7
7
  };
@@ -1,8 +1,8 @@
1
1
  export { getErrorPageId };
2
2
  export { isErrorPageId };
3
3
  export { isErrorPage };
4
- import type { PageConfig } from './page-configs/PageConfig.js';
4
+ import type { PageConfigRuntime } from './page-configs/PageConfig.js';
5
5
  import type { PageFile } from './getPageFiles.js';
6
- declare function getErrorPageId(pageFilesAll: PageFile[], pageConfigs: PageConfig[]): string | null;
6
+ declare function getErrorPageId(pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[]): string | null;
7
7
  declare function isErrorPageId(pageId: string, _isV1Design: false): boolean;
8
- declare function isErrorPage(pageId: string, pageConfigs: PageConfig[]): boolean;
8
+ declare function isErrorPage(pageId: string, pageConfigs: PageConfigRuntime[]): boolean;
@@ -30,7 +30,7 @@ function isErrorPage(pageId, pageConfigs) {
30
30
  if (pageConfigs.length > 0) {
31
31
  const pageConfig = pageConfigs.find((p) => p.pageId === pageId);
32
32
  assert(pageConfig);
33
- return pageConfig.isErrorPage;
33
+ return !!pageConfig.isErrorPage;
34
34
  }
35
35
  else {
36
36
  return isErrorPageId(pageId, false);
@@ -1,7 +1,7 @@
1
1
  export { analyzeClientSide };
2
- import type { PageConfig } from '../page-configs/PageConfig.js';
2
+ import type { PageConfigRuntime } from '../page-configs/PageConfig.js';
3
3
  import type { PageFile } from './getPageFileObject.js';
4
- declare function analyzeClientSide(pageConfig: PageConfig | null, pageFilesAll: PageFile[], pageId: string): {
4
+ declare function analyzeClientSide(pageConfig: PageConfigRuntime | null, pageFilesAll: PageFile[], pageId: string): {
5
5
  isClientSideRenderable: boolean;
6
6
  isClientRouting: boolean;
7
7
  };
@@ -1,5 +1,5 @@
1
- export { assertPageConfigs };
2
- export { assertPageConfigGlobal };
3
- import type { PageConfig, PageConfigGlobal } from '../page-configs/PageConfig.js';
4
- declare function assertPageConfigs(pageConfigs: unknown): asserts pageConfigs is PageConfig[];
5
- declare function assertPageConfigGlobal(pageConfigGlobal: unknown): asserts pageConfigGlobal is PageConfigGlobal;
1
+ export { assertPageConfigsSerialized };
2
+ export { assertPageConfigGlobalSerialized };
3
+ import type { PageConfigGlobalRuntimeSerialized, PageConfigRuntimeSerialized } from '../page-configs/PageConfig.js';
4
+ declare function assertPageConfigsSerialized(pageConfigsSerialized: unknown): asserts pageConfigsSerialized is PageConfigRuntimeSerialized[];
5
+ declare function assertPageConfigGlobalSerialized(pageConfigGlobalSerialized: unknown): asserts pageConfigGlobalSerialized is PageConfigGlobalRuntimeSerialized;
@@ -1,16 +1,16 @@
1
- export { assertPageConfigs };
2
- export { assertPageConfigGlobal };
1
+ export { assertPageConfigsSerialized };
2
+ export { assertPageConfigGlobalSerialized };
3
3
  import { assert, isObject, hasProp } from '../utils.js';
4
- function assertPageConfigs(pageConfigs) {
5
- assert(Array.isArray(pageConfigs));
6
- pageConfigs.forEach((pageConfig) => {
7
- assert(isObject(pageConfig));
8
- assert(hasProp(pageConfig, 'pageId', 'string'));
9
- assert(hasProp(pageConfig, 'routeFilesystem'));
4
+ function assertPageConfigsSerialized(pageConfigsSerialized) {
5
+ assert(Array.isArray(pageConfigsSerialized));
6
+ pageConfigsSerialized.forEach((pageConfigSerialized) => {
7
+ assert(isObject(pageConfigSerialized));
8
+ assert(hasProp(pageConfigSerialized, 'pageId', 'string'));
9
+ assert(hasProp(pageConfigSerialized, 'routeFilesystem'));
10
+ assert(hasProp(pageConfigSerialized, 'configValuesSerialized'));
11
+ assert(hasProp(pageConfigSerialized, 'configValuesImported'));
10
12
  });
11
13
  }
12
- function assertPageConfigGlobal(pageConfigGlobal) {
13
- assert(pageConfigGlobal);
14
- assert(hasProp(pageConfigGlobal, 'onBeforeRoute'));
15
- assert(hasProp(pageConfigGlobal, 'onPrerenderStart'));
14
+ function assertPageConfigGlobalSerialized(pageConfigGlobalSerialized) {
15
+ assert(hasProp(pageConfigGlobalSerialized, 'configValuesImported'));
16
16
  }
@@ -4,7 +4,7 @@ export type { ExportsAll };
4
4
  export type { PageContextExports };
5
5
  export type { ConfigEntries };
6
6
  import type { FileType } from './fileTypes.js';
7
- import type { PageConfigLoaded } from './../page-configs/PageConfig.js';
7
+ import type { PageConfigRuntimeLoaded } from './../page-configs/PageConfig.js';
8
8
  import type { PageFile } from './getPageFileObject.js';
9
9
  type ExportsAll = Record<string, {
10
10
  exportValue: unknown;
@@ -35,5 +35,5 @@ type PageContextExports = {
35
35
  /** @deprecated */
36
36
  pageExports: Record<string, unknown>;
37
37
  };
38
- declare function getExports(pageFiles: PageFile[], pageConfig: PageConfigLoaded | null): PageContextExports;
38
+ declare function getExports(pageFiles: PageFile[], pageConfig: PageConfigRuntimeLoaded | null): PageContextExports;
39
39
  declare function getExportUnion(exportsAll: ExportsAll, propName: string): string[];
@@ -2,7 +2,7 @@ export { getExportUnion };
2
2
  export { getExports };
3
3
  import { isScriptFile, isTemplateFile } from '../../utils/isScriptFile.js';
4
4
  import { assert, hasProp, isObject, assertWarning, assertUsage, makeLast, isBrowser } from '../utils.js';
5
- import { assertDefaultExports, forbiddenDefaultExports } from './assertExports.js';
5
+ import { assertDefaultExports, forbiddenDefaultExports } from './assert_exports_old_design.js';
6
6
  import { getConfigDefinedAtString } from '../page-configs/utils.js';
7
7
  import pc from '@brillout/picocolors';
8
8
  function getExports(pageFiles, pageConfig) {
@@ -1,8 +1,8 @@
1
1
  export { parseGlobResults };
2
2
  import { type PageFile } from './getPageFileObject.js';
3
- import type { PageConfig, PageConfigGlobal } from '../page-configs/PageConfig.js';
3
+ import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../page-configs/PageConfig.js';
4
4
  declare function parseGlobResults(pageFilesExports: unknown): {
5
5
  pageFiles: PageFile[];
6
- pageConfigs: PageConfig[];
7
- pageConfigGlobal: PageConfigGlobal;
6
+ pageConfigs: PageConfigRuntime[];
7
+ pageConfigGlobal: PageConfigGlobalRuntime;
8
8
  };
@@ -1,9 +1,10 @@
1
1
  export { parseGlobResults };
2
2
  import { assert, hasProp, isCallable, isObject, cast, assertUsage } from '../utils.js';
3
- import { assertExportValues } from './assertExports.js';
3
+ import { assertExportValues } from './assert_exports_old_design.js';
4
4
  import { getPageFileObject } from './getPageFileObject.js';
5
5
  import { fileTypes } from './fileTypes.js';
6
- import { assertPageConfigGlobal, assertPageConfigs } from './assertPageConfigs.js';
6
+ import { assertPageConfigGlobalSerialized, assertPageConfigsSerialized } from './assertPageConfigs.js';
7
+ import { parsePageConfigsSerialized } from './parsePageConfigsSerialized.js';
7
8
  function parseGlobResults(pageFilesExports) {
8
9
  assert(hasProp(pageFilesExports, 'isGeneratedFile'));
9
10
  assert(pageFilesExports.isGeneratedFile !== false, `vike was re-installed(/re-built). Restart your app.`);
@@ -15,12 +16,12 @@ function parseGlobResults(pageFilesExports) {
15
16
  assert(hasProp(pageFilesExports.pageFilesLazy, '.page'));
16
17
  assert(hasProp(pageFilesExports.pageFilesLazy, '.page.client') || hasProp(pageFilesExports.pageFilesLazy, '.page.server'));
17
18
  assert(hasProp(pageFilesExports, 'pageFilesList', 'string[]'));
18
- assert(hasProp(pageFilesExports, 'pageConfigs'));
19
- assert(hasProp(pageFilesExports, 'pageConfigGlobal'));
20
- const { pageConfigs, pageConfigGlobal } = pageFilesExports;
21
- assertPageConfigs(pageConfigs);
22
- parsePageConfigs(pageConfigs);
23
- assertPageConfigGlobal(pageConfigGlobal);
19
+ assert(hasProp(pageFilesExports, 'pageConfigsSerialized'));
20
+ assert(hasProp(pageFilesExports, 'pageConfigGlobalSerialized'));
21
+ const { pageConfigsSerialized, pageConfigGlobalSerialized } = pageFilesExports;
22
+ assertPageConfigsSerialized(pageConfigsSerialized);
23
+ assertPageConfigGlobalSerialized(pageConfigGlobalSerialized);
24
+ const { pageConfigs, pageConfigGlobal } = parsePageConfigsSerialized(pageConfigsSerialized, pageConfigGlobalSerialized);
24
25
  const pageFilesMap = {};
25
26
  parseGlobResult(pageFilesExports.pageFilesLazy).forEach(({ filePath, pageFile, globValue }) => {
26
27
  pageFile = pageFilesMap[filePath] = pageFilesMap[filePath] ?? pageFile;
@@ -87,38 +88,3 @@ function parseGlobResult(globObject) {
87
88
  function assertLoadModule(globValue) {
88
89
  assert(isCallable(globValue));
89
90
  }
90
- function parsePageConfigs(pageConfigs) {
91
- // TODO: remove
92
- /*
93
- pageConfigs.forEach((pageConfig) => {
94
- Object.entries(pageConfig.configElements).forEach(([configName, configElement]) => {
95
- {
96
- const { configValueSerialized } = configElement
97
- if (configValueSerialized !== undefined) {
98
- configElement.configValue = parse(configValueSerialized)
99
- }
100
- }
101
- if (configName === 'route') {
102
- assertRouteConfigValue(configElement)
103
- }
104
- })
105
- })
106
- */
107
- }
108
- // TODO: use again
109
- // function assertRouteConfigValue(configElement: ConfigElement) {
110
- // assert(hasProp(configElement, 'configValue')) // route files are eagerly loaded
111
- // const { configValue } = configElement
112
- // const configValueType = typeof configValue
113
- // assertUsage(
114
- // configValueType === 'string' || isCallable(configValue),
115
- // `${configElement.configDefinedAt} has an invalid type '${configValueType}': it should be a string or a function instead, see https://vike.dev/route`
116
- // )
117
- // /* We don't do that to avoid unnecessarily bloating the client-side bundle when using Server Routing
118
- // * - When using Server Routing, this file is loaded as well
119
- // * - When using Server Routing, client-side validation is superfluous as Route Strings only need to be validated on the server-side
120
- // if (typeof configValue === 'string') {
121
- // assertRouteString(configValue, `${configElement.configDefinedAt} defines an`)
122
- // }
123
- // */
124
- // }
@@ -0,0 +1,6 @@
1
+ export { parsePageConfigsSerialized };
2
+ import type { PageConfigRuntime, PageConfigGlobalRuntime, PageConfigGlobalRuntimeSerialized, PageConfigRuntimeSerialized } from '../page-configs/PageConfig.js';
3
+ declare function parsePageConfigsSerialized(pageConfigsSerialized: PageConfigRuntimeSerialized[], pageConfigGlobalSerialized: PageConfigGlobalRuntimeSerialized): {
4
+ pageConfigs: PageConfigRuntime[];
5
+ pageConfigGlobal: PageConfigGlobalRuntime;
6
+ };
@@ -0,0 +1,59 @@
1
+ export { parsePageConfigsSerialized };
2
+ import { parse } from '@brillout/json-serializer/parse';
3
+ import { parseConfigValuesImported } from '../page-configs/parseConfigValuesImported.js';
4
+ import { assert, assertUsage, isCallable } from '../utils.js';
5
+ function parsePageConfigsSerialized(pageConfigsSerialized, pageConfigGlobalSerialized) {
6
+ const pageConfigs = pageConfigsSerialized.map((pageConfigSerialized) => {
7
+ const configValues = {};
8
+ {
9
+ const { configValuesSerialized } = pageConfigSerialized;
10
+ Object.entries(configValuesSerialized).forEach(([configName, configValueSeriliazed]) => {
11
+ {
12
+ const { valueSerialized, definedAtInfo } = configValueSeriliazed;
13
+ assert(valueSerialized);
14
+ assert(!configValues[configName]);
15
+ configValues[configName] = {
16
+ value: parse(valueSerialized),
17
+ definedAtInfo
18
+ };
19
+ }
20
+ });
21
+ }
22
+ {
23
+ const { configValuesImported } = pageConfigSerialized;
24
+ const configValuesAddendum = parseConfigValuesImported(configValuesImported);
25
+ Object.assign(configValues, configValuesAddendum);
26
+ }
27
+ const { pageId, isErrorPage, routeFilesystem, loadConfigValuesAll } = pageConfigSerialized;
28
+ assertRouteConfigValue(configValues);
29
+ return {
30
+ pageId,
31
+ isErrorPage,
32
+ routeFilesystem,
33
+ configValues,
34
+ loadConfigValuesAll
35
+ };
36
+ });
37
+ const pageConfigGlobal = { configValues: {} };
38
+ {
39
+ const configValuesAddendum = parseConfigValuesImported(pageConfigGlobalSerialized.configValuesImported);
40
+ Object.assign(pageConfigGlobal.configValues, configValuesAddendum);
41
+ }
42
+ return { pageConfigs, pageConfigGlobal };
43
+ }
44
+ function assertRouteConfigValue(configValues) {
45
+ if (!configValues.route)
46
+ return;
47
+ const { value, definedAtInfo } = configValues.route;
48
+ const configValueType = typeof value;
49
+ assert(definedAtInfo);
50
+ assertUsage(configValueType === 'string' || isCallable(value), `${definedAtInfo.filePath} has an invalid type '${configValueType}': it should be a string or a function instead, see https://vike.dev/route`);
51
+ /* We don't use assertRouteString() in order to avoid unnecessarily bloating the client-side bundle when using Server Routing:
52
+ * - When using Server Routing, this file is loaded => loading assertRouteString() would bloat the client bundle.
53
+ * - assertRouteString() is already called on the server-side
54
+ * - When using Server Routing, client-side validation is superfluous as Route Strings only need to be validated on the server-side
55
+ if (typeof configValue === 'string') {
56
+ assertRouteString(configValue, `${configElement.configDefinedAt} defines an`)
57
+ }
58
+ */
59
+ }
@@ -2,12 +2,12 @@ export { setPageFiles };
2
2
  export { setPageFilesAsync };
3
3
  export { getPageFilesAll };
4
4
  import type { PageFile } from './getPageFileObject.js';
5
- import type { PageConfig, PageConfigGlobal } from '../page-configs/PageConfig.js';
5
+ import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../page-configs/PageConfig.js';
6
6
  declare function setPageFiles(pageFilesExports: unknown): void;
7
7
  declare function setPageFilesAsync(getPageFilesExports: () => Promise<unknown>): void;
8
8
  declare function getPageFilesAll(isClientSide: boolean, isProduction?: boolean): Promise<{
9
9
  pageFilesAll: PageFile[];
10
10
  allPageIds: string[];
11
- pageConfigs: PageConfig[];
12
- pageConfigGlobal: PageConfigGlobal;
11
+ pageConfigs: PageConfigRuntime[];
12
+ pageConfigGlobal: PageConfigGlobalRuntime;
13
13
  }>;