vike 0.4.222 → 0.4.223-commit-586dbfb

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 (161) hide show
  1. package/dist/cjs/client/shared/getPageContextProxyForUser.js +1 -1
  2. package/dist/cjs/node/api/prepareViteApiCall.js +1 -1
  3. package/dist/cjs/node/plugin/index.js +6 -4
  4. package/dist/cjs/node/plugin/plugins/baseUrls.js +9 -2
  5. package/dist/cjs/node/plugin/plugins/buildApp.js +14 -7
  6. package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +49 -19
  7. package/dist/cjs/node/plugin/plugins/buildConfig.js +6 -1
  8. package/dist/cjs/node/plugin/plugins/commonConfig.js +17 -1
  9. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
  10. package/dist/cjs/node/plugin/plugins/envVars.js +2 -18
  11. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +2 -2
  12. package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +1 -1
  13. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +4 -4
  14. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
  15. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +11 -10
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +8 -5
  17. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +36 -71
  18. package/dist/cjs/node/plugin/shared/findPageFiles.js +3 -3
  19. package/dist/cjs/node/plugin/shared/getHttpRequestAsyncStore.js +1 -1
  20. package/dist/cjs/node/plugin/shared/viteIsSSR.js +19 -10
  21. package/dist/cjs/node/prerender/runPrerender.js +3 -1
  22. package/dist/cjs/node/runtime/globalContext.js +19 -8
  23. package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +1 -1
  24. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +24 -0
  25. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +1 -1
  26. package/dist/cjs/node/runtime/renderPage/handlePageContextRequestUrl.js +1 -1
  27. package/dist/cjs/node/runtime/renderPage/isNewError.js +1 -1
  28. package/dist/cjs/node/runtime/renderPage/isVikeConfigInvalid.js +10 -0
  29. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
  30. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +7 -1
  31. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -4
  32. package/dist/cjs/node/runtime/renderPage.js +63 -49
  33. package/dist/cjs/node/runtime/universal-middleware.js +14 -0
  34. package/dist/cjs/node/shared/resolveBase.js +0 -13
  35. package/dist/cjs/shared/getPageConfigsRuntime.js +2 -8
  36. package/dist/cjs/shared/getPageContextRequestUrl.js +1 -1
  37. package/dist/cjs/shared/getPageContextUrlComputed.js +12 -9
  38. package/dist/cjs/shared/hooks/getHook.js +1 -1
  39. package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +44 -12
  40. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +2 -8
  41. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +16 -6
  42. package/dist/cjs/shared/route/loadPageRoutes.js +1 -1
  43. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  44. package/dist/cjs/utils/assert.js +1 -1
  45. package/dist/cjs/utils/assertSetup.js +1 -1
  46. package/dist/cjs/utils/assertSingleInstance.js +2 -2
  47. package/dist/cjs/utils/findFile.js +1 -1
  48. package/dist/cjs/utils/getGlobalObject.js +2 -6
  49. package/dist/cjs/utils/parseUrl-extras.js +2 -2
  50. package/dist/cjs/utils/parseUrl.js +5 -5
  51. package/dist/cjs/utils/requireResolve.js +3 -3
  52. package/dist/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +2 -2
  53. package/dist/esm/client/client-routing-runtime/getPageContextCurrent.js +1 -1
  54. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +4 -4
  55. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +1 -1
  56. package/dist/esm/client/client-routing-runtime/history.js +1 -1
  57. package/dist/esm/client/client-routing-runtime/index.d.ts +1 -0
  58. package/dist/esm/client/client-routing-runtime/index.js +1 -0
  59. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +2 -2
  60. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +2 -2
  61. package/dist/esm/client/client-routing-runtime/prefetch.js +3 -3
  62. package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +8 -0
  63. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +12 -3
  64. package/dist/esm/client/client-routing-runtime/scrollRestoration.js +1 -1
  65. package/dist/esm/client/client-routing-runtime/skipLink.js +2 -2
  66. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
  67. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
  68. package/dist/esm/client/shared/getPageContextProxyForUser.js +1 -1
  69. package/dist/esm/client/shared/loadUserFilesClientSide.d.ts +2 -2
  70. package/dist/esm/client/shared/loadUserFilesClientSide.js +2 -2
  71. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
  72. package/dist/esm/node/api/prepareViteApiCall.js +1 -1
  73. package/dist/esm/node/plugin/index.d.ts +6 -2
  74. package/dist/esm/node/plugin/index.js +2 -1
  75. package/dist/esm/node/plugin/plugins/baseUrls.js +9 -2
  76. package/dist/esm/node/plugin/plugins/buildApp.js +14 -7
  77. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +49 -19
  78. package/dist/esm/node/plugin/plugins/buildConfig.js +6 -1
  79. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +14 -6
  80. package/dist/esm/node/plugin/plugins/commonConfig.js +17 -1
  81. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
  82. package/dist/esm/node/plugin/plugins/envVars.js +2 -18
  83. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +3 -3
  84. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +1 -1
  85. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +4 -4
  86. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
  87. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +10 -9
  88. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +8 -5
  89. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +5 -5
  90. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +38 -73
  91. package/dist/esm/node/plugin/shared/findPageFiles.js +3 -3
  92. package/dist/esm/node/plugin/shared/getHttpRequestAsyncStore.js +2 -2
  93. package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +7 -4
  94. package/dist/esm/node/plugin/shared/viteIsSSR.js +20 -11
  95. package/dist/esm/node/prerender/runPrerender.js +3 -1
  96. package/dist/esm/node/runtime/globalContext.d.ts +9 -8
  97. package/dist/esm/node/runtime/globalContext.js +19 -8
  98. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
  99. package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -2
  100. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
  101. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +1 -1
  102. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +2 -0
  103. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +24 -0
  104. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -2
  105. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
  106. package/dist/esm/node/runtime/renderPage/getPageAssets.js +1 -1
  107. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
  108. package/dist/esm/node/runtime/renderPage/handlePageContextRequestUrl.js +1 -1
  109. package/dist/esm/node/runtime/renderPage/isNewError.js +1 -1
  110. package/dist/esm/node/runtime/renderPage/isVikeConfigInvalid.d.ts +6 -0
  111. package/dist/esm/node/runtime/renderPage/isVikeConfigInvalid.js +8 -0
  112. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +3 -3
  113. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +2 -2
  114. package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
  115. package/dist/esm/node/runtime/renderPage/logErrorHint.js +7 -1
  116. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +4 -4
  117. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +12 -12
  118. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -4
  119. package/dist/esm/node/runtime/renderPage.d.ts +5 -5
  120. package/dist/esm/node/runtime/renderPage.js +64 -49
  121. package/dist/esm/node/runtime/universal-middleware.d.ts +1 -0
  122. package/dist/esm/node/runtime/universal-middleware.js +11 -0
  123. package/dist/esm/node/shared/resolveBase.d.ts +1 -9
  124. package/dist/esm/node/shared/resolveBase.js +0 -13
  125. package/dist/esm/shared/getPageConfigsRuntime.d.ts +2 -2
  126. package/dist/esm/shared/getPageConfigsRuntime.js +3 -9
  127. package/dist/esm/shared/getPageContextRequestUrl.js +1 -1
  128. package/dist/esm/shared/getPageContextUrlComputed.js +12 -9
  129. package/dist/esm/shared/getPageFiles.d.ts +1 -1
  130. package/dist/esm/shared/hooks/getHook.d.ts +3 -3
  131. package/dist/esm/shared/hooks/getHook.js +1 -1
  132. package/dist/esm/shared/page-configs/Config.d.ts +3 -1
  133. package/dist/esm/shared/page-configs/PageConfig.d.ts +12 -4
  134. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +24 -16
  135. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +44 -12
  136. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +3 -2
  137. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +2 -8
  138. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +2 -0
  139. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +16 -6
  140. package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
  141. package/dist/esm/shared/route/loadPageRoutes.js +1 -1
  142. package/dist/esm/shared/types.d.ts +6 -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/assert.js +1 -1
  146. package/dist/esm/utils/assertSetup.js +1 -1
  147. package/dist/esm/utils/assertSingleInstance.js +2 -2
  148. package/dist/esm/utils/findFile.js +1 -1
  149. package/dist/esm/utils/getGlobalObject.d.ts +3 -2
  150. package/dist/esm/utils/getGlobalObject.js +2 -6
  151. package/dist/esm/utils/parseUrl-extras.js +2 -2
  152. package/dist/esm/utils/parseUrl.d.ts +3 -4
  153. package/dist/esm/utils/parseUrl.js +5 -5
  154. package/dist/esm/utils/projectInfo.d.ts +1 -1
  155. package/dist/esm/utils/requireResolve.js +3 -3
  156. package/package.json +18 -6
  157. package/universal-middleware.js +3 -0
  158. package/dist/cjs/node/runtime/renderPage/isConfigInvalid.js +0 -10
  159. package/dist/esm/node/runtime/renderPage/isConfigInvalid.d.ts +0 -6
  160. package/dist/esm/node/runtime/renderPage/isConfigInvalid.js +0 -8
  161. package/dist-cjs-fixup.mjs +0 -41
@@ -49,7 +49,7 @@ function parseUrl(url, baseServer) {
49
49
  const pathnameOriginal = urlWithoutHashNorSearch.slice((origin || '').length);
50
50
  assertUrlComponents(url, origin, pathnameOriginal, searchOriginal, hashOriginal);
51
51
  // Base URL
52
- let { pathname, hasBaseServer } = removeBaseServer(pathnameAbsoluteWithBase, baseServer);
52
+ let { pathname, isBaseMissing } = removeBaseServer(pathnameAbsoluteWithBase, baseServer);
53
53
  // pageContext.urlParsed.href
54
54
  const href = createUrlFromComponents(origin, pathname, searchOriginal, hashOriginal);
55
55
  // pageContext.urlParsed.{hostname, port}
@@ -66,7 +66,7 @@ function parseUrl(url, baseServer) {
66
66
  origin,
67
67
  pathname,
68
68
  pathnameOriginal: pathnameOriginal,
69
- hasBaseServer,
69
+ isBaseMissing,
70
70
  search,
71
71
  searchAll,
72
72
  searchOriginal,
@@ -235,7 +235,7 @@ function removeBaseServer(pathnameAbsoluteWithBase, baseServer) {
235
235
  (0, assert_js_1.assert)(baseServer.startsWith('/'));
236
236
  if (baseServer === '/') {
237
237
  const pathname = pathnameAbsoluteWithBase;
238
- return { pathname, hasBaseServer: true };
238
+ return { pathname, isBaseMissing: false };
239
239
  }
240
240
  // Support `url === '/some-base-url' && baseServer === '/some-base-url/'`
241
241
  let baseServerNormalized = baseServer;
@@ -245,7 +245,7 @@ function removeBaseServer(pathnameAbsoluteWithBase, baseServer) {
245
245
  }
246
246
  if (!urlPathname.startsWith(baseServerNormalized)) {
247
247
  const pathname = pathnameAbsoluteWithBase;
248
- return { pathname, hasBaseServer: false };
248
+ return { pathname, isBaseMissing: true };
249
249
  }
250
250
  (0, assert_js_1.assert)(urlPathname.startsWith('/') || urlPathname.startsWith('http'));
251
251
  (0, assert_js_1.assert)(urlPathname.startsWith(baseServerNormalized));
@@ -253,7 +253,7 @@ function removeBaseServer(pathnameAbsoluteWithBase, baseServer) {
253
253
  if (!urlPathname.startsWith('/'))
254
254
  urlPathname = '/' + urlPathname;
255
255
  (0, assert_js_1.assert)(urlPathname.startsWith('/'));
256
- return { pathname: urlPathname, hasBaseServer: true };
256
+ return { pathname: urlPathname, isBaseMissing: false };
257
257
  }
258
258
  function isBaseServer(baseServer) {
259
259
  return baseServer.startsWith('/');
@@ -47,14 +47,14 @@ function addFileExtensionsToRequireResolve() {
47
47
  isScriptFile_js_1.scriptFileExtensionList.forEach((ext) => {
48
48
  (0, assert_js_1.assert)(!ext.includes('.'));
49
49
  ext = `.${ext}`;
50
- if (!require.extensions[ext]) {
51
- require.extensions[ext] = require.extensions['.js'];
50
+ if (!require_.extensions[ext]) {
51
+ require_.extensions[ext] = require_.extensions['.js'];
52
52
  added.push(ext);
53
53
  }
54
54
  });
55
55
  const clean = () => {
56
56
  added.forEach((ext) => {
57
- delete require.extensions[ext];
57
+ delete require_.extensions[ext];
58
58
  });
59
59
  };
60
60
  return clean;
@@ -1,7 +1,7 @@
1
1
  export { setPageContextCurrent };
2
2
  export { getPageContextCurrent };
3
- import type { PageConfigUserFriendly } from '../../shared/getPageFiles.js';
4
- type PageContextCurrent = PageConfigUserFriendly & {
3
+ import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
4
+ type PageContextCurrent = PageConfigUserFriendlyOld & {
5
5
  urlPathname: string;
6
6
  };
7
7
  declare function getPageContextCurrent(): null | PageContextCurrent;
@@ -1,7 +1,7 @@
1
1
  export { setPageContextCurrent };
2
2
  export { getPageContextCurrent };
3
3
  import { getGlobalObject } from './utils.js';
4
- const globalObject = getGlobalObject('getPageContextCurrent.ts', {
4
+ const globalObject = getGlobalObject('client-routing-runtime/getPageContextCurrent.ts', {
5
5
  pageContextCurrent: null
6
6
  });
7
7
  function getPageContextCurrent() {
@@ -5,7 +5,7 @@ export { getPageContextFromClientHooks };
5
5
  export { setPageContextInitIsPassedToClient };
6
6
  export type { PageContextFromServerHooks };
7
7
  export type { PageContextFromClientHooks };
8
- import type { PageConfigUserFriendly, PageFile } from '../../shared/getPageFiles.js';
8
+ import type { PageConfigUserFriendlyOld, PageFile } from '../../shared/getPageFiles.js';
9
9
  import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
10
10
  type PageContext = {
11
11
  urlOriginal: string;
@@ -21,9 +21,9 @@ declare function getPageContextFromHooks_serialized(): PageContextSerialized & {
21
21
  routeParams: Record<string, string>;
22
22
  _hasPageContextFromServer: true;
23
23
  };
24
- declare function getPageContextFromHooks_isHydration(pageContext: PageContextSerialized & PageContext & PageConfigUserFriendly & {
24
+ declare function getPageContextFromHooks_isHydration(pageContext: PageContextSerialized & PageContext & PageConfigUserFriendlyOld & {
25
25
  _hasPageContextFromServer: true;
26
- }): Promise<PageContextSerialized & PageContext & PageConfigUserFriendly & {
26
+ }): Promise<PageContextSerialized & PageContext & PageConfigUserFriendlyOld & {
27
27
  _hasPageContextFromServer: true;
28
28
  } & {
29
29
  _hasPageContextFromClient: boolean;
@@ -45,5 +45,5 @@ type PageContextFromClientHooks = {
45
45
  declare function getPageContextFromClientHooks(pageContext: {
46
46
  pageId: string;
47
47
  _hasPageContextFromServer: boolean;
48
- } & PageContext & PageConfigUserFriendly, isErrorPage: boolean): Promise<PageContextFromClientHooks>;
48
+ } & PageContext & PageConfigUserFriendlyOld, isErrorPage: boolean): Promise<PageContextFromClientHooks>;
49
49
  declare function setPageContextInitIsPassedToClient(pageContext: Record<string, unknown>): void;
@@ -18,7 +18,7 @@ import { executeGuardHook } from '../../shared/route/executeGuardHook.js';
18
18
  import { AbortRender, isAbortPageContext } from '../../shared/route/abort.js';
19
19
  import { pageContextInitIsPassedToClient } from '../../shared/misc/pageContextInitIsPassedToClient.js';
20
20
  import { isServerSideError } from '../../shared/misc/isServerSideError.js';
21
- const globalObject = getGlobalObject('router/getPageContext.ts', {});
21
+ const globalObject = getGlobalObject('client-routing-runtime/getPageContextFromHooks.ts', {});
22
22
  // TODO/eventually: rename
23
23
  function getPageContextFromHooks_serialized() {
24
24
  const pageContextSerialized = getPageContextSerializedInHtml();
@@ -7,7 +7,7 @@ export { monkeyPatchHistoryAPI };
7
7
  import { getCurrentUrl } from '../shared/getCurrentUrl.js';
8
8
  import { assert, assertUsage, getGlobalObject, isObject } from './utils.js';
9
9
  initHistoryState(); // we redundantly call initHistoryState() to ensure it's called early
10
- const globalObject = getGlobalObject('history.ts', { previous: getHistoryInfo() });
10
+ const globalObject = getGlobalObject('client-routing-runtime/history.ts', { previous: getHistoryInfo() });
11
11
  // `window.history.state === null` when:
12
12
  // - The very first render
13
13
  // - Click on `<a href="#some-hash" />`
@@ -1,5 +1,6 @@
1
1
  export { navigate, reload } from './navigate.js';
2
2
  export { prefetch } from './prefetch.js';
3
+ export { getPageContextClient } from './renderPageClientSide.js';
3
4
  export { PROJECT_VERSION as version } from './utils.js';
4
5
  import type { PageContextBuiltInClientWithClientRouting } from '../../shared/types.js';
5
6
  /** @deprecated
@@ -5,4 +5,5 @@
5
5
  // Use package.json#exports to make the imports isomorphic.
6
6
  export { navigate, reload } from './navigate.js';
7
7
  export { prefetch } from './prefetch.js';
8
+ export { getPageContextClient } from './renderPageClientSide.js';
8
9
  export { PROJECT_VERSION as version } from './utils.js';
@@ -1,10 +1,10 @@
1
1
  export { getPrefetchSettings };
2
2
  export { PAGE_CONTEXT_MAX_AGE_DEFAULT };
3
3
  export type { PrefetchSettingResolved };
4
- import type { PageConfigUserFriendly } from '../../../shared/getPageFiles.js';
4
+ import type { PageConfigUserFriendlyOld } from '../../../shared/getPageFiles.js';
5
5
  declare const PAGE_CONTEXT_MAX_AGE_DEFAULT = 5000;
6
6
  type PrefetchSettingResolved = {
7
7
  staticAssets: false | 'hover' | 'viewport';
8
8
  pageContext: false | number;
9
9
  };
10
- declare function getPrefetchSettings(pageContext: PageConfigUserFriendly, linkTag: null | HTMLElement): PrefetchSettingResolved;
10
+ declare function getPrefetchSettings(pageContext: PageConfigUserFriendlyOld, linkTag: null | HTMLElement): PrefetchSettingResolved;
@@ -6,7 +6,7 @@ export { addLinkPrefetchHandlers };
6
6
  export { addLinkPrefetchHandlers_watch };
7
7
  export { addLinkPrefetchHandlers_unwatch };
8
8
  import { type PageContextFromServerHooks, getPageContextFromServerHooks } from './getPageContextFromHooks.js';
9
- import type { PageConfigUserFriendly, PageFile } from '../../shared/getPageFiles.js';
9
+ import type { PageConfigUserFriendlyOld, PageFile } from '../../shared/getPageFiles.js';
10
10
  import { type PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
11
11
  type ResultPageContextFromServer = Awaited<ReturnType<typeof getPageContextFromServerHooks>>;
12
12
  type PageContextForPrefetch = {
@@ -19,7 +19,7 @@ type PageContextForPrefetch = {
19
19
  };
20
20
  declare function getPageContextPrefetched(pageContext: {
21
21
  urlPathname: string;
22
- } & PageConfigUserFriendly): null | PageContextFromServerHooks;
22
+ } & PageConfigUserFriendlyOld): null | PageContextFromServerHooks;
23
23
  declare function populatePageContextPrefetchCache(pageContext: PageContextForPrefetch, result: ResultPageContextFromServer): void;
24
24
  /**
25
25
  * Programmatically prefetch client assets.
@@ -19,7 +19,7 @@ import { PAGE_CONTEXT_MAX_AGE_DEFAULT, getPrefetchSettings } from './prefetch/ge
19
19
  import pc from '@brillout/picocolors';
20
20
  import { normalizeUrlArgument } from './normalizeUrlArgument.js';
21
21
  assertClientRouting();
22
- const globalObject = getGlobalObject('prefetch.ts', {
22
+ const globalObject = getGlobalObject('client-routing-runtime/prefetch.ts', {
23
23
  linkPrefetchHandlerAdded: new WeakSet(),
24
24
  addLinkPrefetchHandlers_debounce: null,
25
25
  mutationObserver: new MutationObserver(addLinkPrefetchHandlers),
@@ -60,8 +60,8 @@ async function prefetchPageContextFromServerHooks(pageContextLink, resultMaxAge)
60
60
  const result = await getPageContextFromServerHooks(pageContextLink, false);
61
61
  setPageContextPrefetchCache(pageContextLink, result, resultMaxAge);
62
62
  }
63
- function populatePageContextPrefetchCache(pageContext /*& PageConfigUserFriendly*/, result) {
64
- // TODO/pageContext-prefetch: replace with using pageContext.config.prerender instead. (For being able to do that: eager configs need to be accessible without have to use PageConfigUserFriendly as it isn't available here.)
63
+ function populatePageContextPrefetchCache(pageContext /*& PageConfigUserFriendlyOld*/, result) {
64
+ // TODO/pageContext-prefetch: replace with using pageContext.config.prerender instead. (For being able to do that: eager configs need to be accessible without have to use PageConfigUserFriendlyOld as it isn't available here.)
65
65
  if (!isBrilloutDocpress())
66
66
  return;
67
67
  setPageContextPrefetchCache(pageContext, result, null);
@@ -2,8 +2,10 @@ export { renderPageClientSide };
2
2
  export { getRenderCount };
3
3
  export { disableClientRouting };
4
4
  export { firstRenderStartPromise };
5
+ export { getPageContextClient };
5
6
  import { type PageContextFromRewrite } from '../../shared/route/abort.js';
6
7
  import { type ScrollTarget } from './setScrollPosition.js';
8
+ import type { PageContextClient } from '../../shared/types.js';
7
9
  declare const firstRenderStartPromise: Promise<void>;
8
10
  type RenderArgs = {
9
11
  scrollTarget: ScrollTarget;
@@ -24,3 +26,9 @@ declare global {
24
26
  }
25
27
  declare function disableClientRouting(err: unknown, log: boolean): void;
26
28
  declare function getRenderCount(): number;
29
+ /**
30
+ * Get the `pageContext` object on the client-side.
31
+ *
32
+ * https://vike.dev/getPageContextClient
33
+ */
34
+ declare function getPageContextClient(): PageContextClient | null;
@@ -2,6 +2,7 @@ export { renderPageClientSide };
2
2
  export { getRenderCount };
3
3
  export { disableClientRouting };
4
4
  export { firstRenderStartPromise };
5
+ export { getPageContextClient };
5
6
  import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject, executeHook, hasProp, augmentType, genPromise, isCallable, catchInfiniteLoop } from './utils.js';
6
7
  import { getPageContextFromClientHooks, getPageContextFromServerHooks, getPageContextFromHooks_isHydration, getPageContextFromHooks_serialized, setPageContextInitIsPassedToClient } from './getPageContextFromHooks.js';
7
8
  import { createPageContext } from './createPageContext.js';
@@ -20,10 +21,9 @@ import { getErrorPageId } from '../../shared/error-page.js';
20
21
  import { setPageContextCurrent } from './getPageContextCurrent.js';
21
22
  import { getRouteStringParameterList } from '../../shared/route/resolveRouteString.js';
22
23
  import { getCurrentUrl } from '../shared/getCurrentUrl.js';
23
- const globalObject = getGlobalObject('renderPageClientSide.ts', (() => {
24
+ const globalObject = getGlobalObject('client-routing-runtime/renderPageClientSide.ts', (() => {
24
25
  const { promise: firstRenderStartPromise, resolve: firstRenderStartPromiseResolve } = genPromise();
25
26
  return {
26
- previousPageContext: null,
27
27
  renderCounter: 0,
28
28
  firstRenderStartPromise,
29
29
  firstRenderStartPromiseResolve
@@ -484,11 +484,12 @@ async function renderPageClientSide(renderArgs) {
484
484
  // Add link prefetch handlers
485
485
  addLinkPrefetchHandlers_watch();
486
486
  addLinkPrefetchHandlers();
487
+ globalObject.renderedPageContext = pageContext;
487
488
  stampFinished(urlOriginal);
488
489
  }
489
490
  }
490
491
  // For Vike tests (but also potentially for Vike users)
491
- // TODO/now add comment linking to usage example
492
+ // https://github.com/vikejs/vike/blob/ffbc5cf16407bcc075f414447e50d997c87c0c94/test/playground/pages/nested-layout/e2e-test.ts#L59
492
493
  function stampFinished(urlOriginal) {
493
494
  window._vike ?? (window._vike = {});
494
495
  window._vike.fullyRenderedUrl = urlOriginal;
@@ -595,3 +596,11 @@ function areKeysEqual(key1, key2) {
595
596
  return false;
596
597
  return key1.length === key2.length && key1.every((_, i) => key1[i] === key2[i]);
597
598
  }
599
+ /**
600
+ * Get the `pageContext` object on the client-side.
601
+ *
602
+ * https://vike.dev/getPageContextClient
603
+ */
604
+ function getPageContextClient() {
605
+ return globalObject.renderedPageContext ?? null;
606
+ }
@@ -6,7 +6,7 @@ export { scrollRestoration_initialRenderIsDone };
6
6
  // - Firefox doesn't restore the scroll position upon page reload but does upon Cmd-Shift-T
7
7
  // See also: https://github.com/cyco130/knave/blob/e9e1bc7687848504293197f1b314b7d12ad0d228/design.md#scroll-restoration
8
8
  import { getGlobalObject, onPageHide, onPageShow } from './utils.js';
9
- const globalObject = getGlobalObject('scrollRestoration.ts', {});
9
+ const globalObject = getGlobalObject('client-routing-runtime/scrollRestoration.ts', {});
10
10
  function scrollRestoration_init() {
11
11
  // Use the native scroll restoration mechanism only for the first render
12
12
  scrollRestoration_enable();
@@ -49,8 +49,8 @@ function isSameAsCurrentUrl(href) {
49
49
  function hasBaseServer(href) {
50
50
  const baseServer = getBaseServer();
51
51
  assert(isBaseServer(baseServer));
52
- const { hasBaseServer } = parseUrl(href, baseServer);
53
- return hasBaseServer;
52
+ const { isBaseMissing } = parseUrl(href, baseServer);
53
+ return !isBaseMissing;
54
54
  }
55
55
  function isDisableAutomaticLinkInterception() {
56
56
  // @ts-ignore
@@ -11,6 +11,6 @@ declare function getPageContext(): Promise<{
11
11
  _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
12
12
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
13
13
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
14
- } & import("../../shared/getPageFiles.js").PageConfigUserFriendly & {
14
+ } & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
15
15
  _pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
16
16
  }>;
@@ -1,6 +1,6 @@
1
1
  export { executeOnRenderClientHook };
2
2
  export type { PageContextBeforeRenderClient };
3
- import type { PageFile, PageConfigUserFriendly } from '../../shared/getPageFiles.js';
3
+ import type { PageFile, PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
4
4
  import { type PageContextForUserConsumptionClientSide } from './preparePageContextForUserConsumptionClientSide.js';
5
5
  import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
6
6
  type PageContextBeforeRenderClient = {
@@ -9,5 +9,5 @@ type PageContextBeforeRenderClient = {
9
9
  urlPathname?: string;
10
10
  pageId: string;
11
11
  _pageConfigs: PageConfigRuntime[];
12
- } & PageConfigUserFriendly & PageContextForUserConsumptionClientSide;
12
+ } & PageConfigUserFriendlyOld & PageContextForUserConsumptionClientSide;
13
13
  declare function executeOnRenderClientHook<PC extends PageContextBeforeRenderClient>(pageContext: PC, isClientRouting: boolean): Promise<void>;
@@ -1,7 +1,7 @@
1
1
  export { getPageContextProxyForUser };
2
2
  import { assert, assertUsage, assertWarning, getGlobalObject, getPropAccessNotation } from '../server-routing-runtime/utils.js';
3
3
  import { notSerializable } from '../../shared/notSerializable.js';
4
- const globalObject = getGlobalObject('getPageContextProxyForUser.ts', {});
4
+ const globalObject = getGlobalObject('shared/getPageContextProxyForUser.ts', {});
5
5
  /**
6
6
  * Throw error when pageContext value isn't:
7
7
  * - serializable, or
@@ -1,9 +1,9 @@
1
1
  export { loadUserFilesClientSide };
2
2
  export { isErrorFetchingStaticAssets };
3
3
  export type { PageContextUserFiles };
4
- import { type PageFile, type PageConfigUserFriendly } from '../../shared/getPageFiles.js';
4
+ import { type PageFile, type PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
5
5
  import type { PageConfigGlobalRuntime, PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
6
- type PageContextUserFilesLoaded = PageConfigUserFriendly & {
6
+ type PageContextUserFilesLoaded = PageConfigUserFriendlyOld & {
7
7
  _pageFilesLoaded: PageFile[];
8
8
  };
9
9
  type PageContextUserFiles = {
@@ -1,7 +1,7 @@
1
1
  export { loadUserFilesClientSide };
2
2
  export { isErrorFetchingStaticAssets };
3
3
  import { getPageFilesClientSide } from '../../shared/getPageFiles.js';
4
- import { getPageConfigUserFriendlyOld } from '../../shared/page-configs/getPageConfigUserFriendly.js';
4
+ import { getPageConfigUserFriendly_oldDesign } from '../../shared/page-configs/getPageConfigUserFriendly.js';
5
5
  import { findPageConfig } from '../../shared/page-configs/findPageConfig.js';
6
6
  import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
7
7
  import { objectAssign } from '../server-routing-runtime/utils.js';
@@ -30,7 +30,7 @@ async function loadUserFilesClientSide(pageId, pageFilesAll, pageConfigs, pageCo
30
30
  }
31
31
  throw err;
32
32
  }
33
- const pageContextExports = getPageConfigUserFriendlyOld(pageFilesClientSide, pageConfigLoaded, pageConfigGlobal);
33
+ const pageContextExports = getPageConfigUserFriendly_oldDesign(pageFilesClientSide, pageConfigLoaded, pageConfigGlobal);
34
34
  const pageContextAddendum = {};
35
35
  objectAssign(pageContextAddendum, pageContextExports);
36
36
  objectAssign(pageContextAddendum, { _pageFilesLoaded: pageFilesClientSide });
@@ -1,9 +1,9 @@
1
1
  export { preparePageContextForUserConsumptionClientSide };
2
2
  export type { PageContextForUserConsumptionClientSide };
3
- import type { PageConfigUserFriendly } from '../../shared/getPageFiles.js';
3
+ import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
4
4
  import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
5
5
  import { PageContextForPassToClientWarning } from './getPageContextProxyForUser.js';
6
- type PageContextForUserConsumptionClientSide = PageConfigUserFriendly & PageContextForPassToClientWarning & {
6
+ type PageContextForUserConsumptionClientSide = PageConfigUserFriendlyOld & PageContextForPassToClientWarning & {
7
7
  pageId: string;
8
8
  _pageConfigs: PageConfigRuntime[];
9
9
  };
@@ -10,7 +10,7 @@ import path from 'path';
10
10
  import { assert, assertUsage, getGlobalObject, isObject, toPosixPath } from './utils.js';
11
11
  import pc from '@brillout/picocolors';
12
12
  import { clearGlobalContext } from '../runtime/globalContext.js';
13
- const globalObject = getGlobalObject('prepareViteApiCall.ts', {});
13
+ const globalObject = getGlobalObject('api/prepareViteApiCall.ts', {});
14
14
  async function prepareViteApiCall(viteConfigFromOptions, operation) {
15
15
  clear();
16
16
  setContextApiOperation(operation);
@@ -1,10 +1,14 @@
1
1
  export default plugin;
2
2
  export { plugin };
3
3
  export { plugin as ssr };
4
+ export { getVikeConfigPublic as getVikeConfig } from './plugins/commonConfig.js';
5
+ export { PROJECT_VERSION as version } from './utils.js';
4
6
  export type { VikeVitePluginOptions as UserConfig };
5
7
  export type { VikeVitePluginOptions };
6
- export { PROJECT_VERSION as version } from './utils.js';
7
- declare function plugin(vikeVitePluginOptions?: VikeVitePluginOptions): any;
8
+ type PluginInterop = Record<string, unknown> & {
9
+ name: string;
10
+ };
11
+ declare function plugin(vikeVitePluginOptions?: VikeVitePluginOptions): PluginInterop[];
8
12
  /** @deprecated Define Vike settings in +config.js instead of vite.config.js */
9
13
  type VikeVitePluginOptions = {
10
14
  /** @deprecated Define Vike settings in +config.js instead of vite.config.js */
@@ -2,6 +2,7 @@ export default plugin;
2
2
  export { plugin };
3
3
  // TODO/v1-release: remove
4
4
  export { plugin as ssr };
5
+ export { getVikeConfigPublic as getVikeConfig } from './plugins/commonConfig.js';
5
6
  export { PROJECT_VERSION as version } from './utils.js';
6
7
  import { assertUsage } from './utils.js';
7
8
  import { buildConfig } from './plugins/buildConfig.js';
@@ -29,7 +30,7 @@ import { workaroundVite6HmrRegression } from './plugins/workaroundVite6HmrRegres
29
30
  import { buildApp } from './plugins/buildApp.js';
30
31
  // We don't call this in ./onLoad.ts to avoid a cyclic dependency with utils.ts
31
32
  setResolveClientEntriesDev(resolveClientEntriesDev);
32
- // Return as `any` to avoid Plugin type mismatches when there are multiple Vite versions installed
33
+ // Return `PluginInterop` instead of `Plugin` to avoid type mismatch upon different Vite versions
33
34
  function plugin(vikeVitePluginOptions = {}) {
34
35
  const plugins = [
35
36
  ...commonConfig(vikeVitePluginOptions),
@@ -1,7 +1,8 @@
1
1
  export { baseUrls };
2
- import { resolveBase, resolveBaseFromResolvedConfig } from '../../shared/resolveBase.js';
2
+ import { resolveBase } from '../../shared/resolveBase.js';
3
3
  import { assert } from '../utils.js';
4
4
  import { getVikeConfig } from './importUserCode/v1-design/getVikeConfig.js';
5
+ import { getVikeConfigPublic } from './commonConfig.js';
5
6
  function baseUrls() {
6
7
  let basesResolved;
7
8
  return {
@@ -11,7 +12,8 @@ function baseUrls() {
11
12
  const isDev = config._isDev;
12
13
  assert(typeof isDev === 'boolean');
13
14
  const baseViteOriginal = config.base ?? '/__UNSET__'; // '/__UNSET__' because Vite resolves `_baseViteOriginal: null` to `undefined`
14
- basesResolved = resolveBase(baseViteOriginal, config.vike.config.baseServer ?? null, config.vike.config.baseAssets ?? null);
15
+ const vike = getVikeConfigPublic(config);
16
+ basesResolved = resolveBase(baseViteOriginal, vike.config.baseServer ?? null, vike.config.baseAssets ?? null);
15
17
  // We cannot define these in configResolved() because Vite picks up the env variables before any configResolved() hook is called
16
18
  process.env.BASE_SERVER = basesResolved.baseServer;
17
19
  process.env.BASE_ASSETS = basesResolved.baseAssets;
@@ -38,3 +40,8 @@ function baseUrls() {
38
40
  }
39
41
  };
40
42
  }
43
+ function resolveBaseFromResolvedConfig(baseServer, baseAssets, config) {
44
+ let baseViteOriginal = config._baseViteOriginal;
45
+ assert(baseViteOriginal === null || typeof baseViteOriginal == 'string');
46
+ return resolveBase(baseViteOriginal, baseServer, baseAssets);
47
+ }
@@ -5,14 +5,19 @@ import { resolveOutDir } from '../shared/getOutDirs.js';
5
5
  import { assert } from '../utils.js';
6
6
  import { getVikeConfig } from './importUserCode/v1-design/getVikeConfig.js';
7
7
  import { getFullBuildInlineConfig } from '../shared/getFullBuildInlineConfig.js';
8
+ import { getVikeConfigPublic } from './commonConfig.js';
8
9
  function buildApp() {
9
10
  let config;
11
+ // `builder.buildApp` can be overriden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
12
+ // In that case, we should'nt `forceExit`.
13
+ let forceExit = false;
10
14
  return [
11
15
  {
12
16
  name: 'vike:buildApp',
13
17
  apply: 'build',
14
18
  config(config) {
15
- if (!config.vike.config.viteEnvironmentAPI)
19
+ const vike = getVikeConfigPublic(config);
20
+ if (!vike.config.viteEnvironmentAPI)
16
21
  return;
17
22
  return {
18
23
  builder: {
@@ -21,6 +26,10 @@ function buildApp() {
21
26
  assert(builder.environments.ssr);
22
27
  await builder.build(builder.environments.client);
23
28
  await builder.build(builder.environments.ssr);
29
+ if (forceExit) {
30
+ runPrerender_forceExit();
31
+ assert(false);
32
+ }
24
33
  }
25
34
  },
26
35
  environments: {
@@ -53,17 +62,15 @@ function buildApp() {
53
62
  config = _config;
54
63
  },
55
64
  async writeBundle() {
56
- if (!config.vike.config.viteEnvironmentAPI)
65
+ const vike = getVikeConfigPublic(config);
66
+ if (!vike.config.viteEnvironmentAPI)
57
67
  return;
58
68
  const vikeConfig = await getVikeConfig(config);
59
69
  if (!isPrerenderAutoRunEnabled(vikeConfig))
60
70
  return;
61
71
  const configInline = getFullBuildInlineConfig(config);
62
- const { forceExit } = await runPrerenderFromAutoRun(configInline, config);
63
- if (forceExit) {
64
- runPrerender_forceExit();
65
- assert(false);
66
- }
72
+ const res = await runPrerenderFromAutoRun(configInline, config);
73
+ forceExit = res.forceExit;
67
74
  }
68
75
  }
69
76
  ];