vike 0.4.222 → 0.4.223-commit-6f064ad

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 (158) 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/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +2 -2
  52. package/dist/esm/client/client-routing-runtime/getPageContextCurrent.js +1 -1
  53. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +4 -4
  54. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +1 -1
  55. package/dist/esm/client/client-routing-runtime/history.js +1 -1
  56. package/dist/esm/client/client-routing-runtime/index.d.ts +1 -0
  57. package/dist/esm/client/client-routing-runtime/index.js +1 -0
  58. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +2 -2
  59. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +2 -2
  60. package/dist/esm/client/client-routing-runtime/prefetch.js +3 -3
  61. package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +8 -0
  62. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +12 -3
  63. package/dist/esm/client/client-routing-runtime/scrollRestoration.js +1 -1
  64. package/dist/esm/client/client-routing-runtime/skipLink.js +2 -2
  65. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
  66. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
  67. package/dist/esm/client/shared/getPageContextProxyForUser.js +1 -1
  68. package/dist/esm/client/shared/loadUserFilesClientSide.d.ts +2 -2
  69. package/dist/esm/client/shared/loadUserFilesClientSide.js +2 -2
  70. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
  71. package/dist/esm/node/api/prepareViteApiCall.js +1 -1
  72. package/dist/esm/node/plugin/index.d.ts +6 -2
  73. package/dist/esm/node/plugin/index.js +2 -1
  74. package/dist/esm/node/plugin/plugins/baseUrls.js +9 -2
  75. package/dist/esm/node/plugin/plugins/buildApp.js +14 -7
  76. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +49 -19
  77. package/dist/esm/node/plugin/plugins/buildConfig.js +6 -1
  78. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +14 -6
  79. package/dist/esm/node/plugin/plugins/commonConfig.js +17 -1
  80. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
  81. package/dist/esm/node/plugin/plugins/envVars.js +2 -18
  82. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +3 -3
  83. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +1 -1
  84. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +4 -4
  85. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
  86. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +10 -9
  87. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +8 -5
  88. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +5 -5
  89. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +38 -73
  90. package/dist/esm/node/plugin/shared/findPageFiles.js +3 -3
  91. package/dist/esm/node/plugin/shared/getHttpRequestAsyncStore.js +2 -2
  92. package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +7 -4
  93. package/dist/esm/node/plugin/shared/viteIsSSR.js +20 -11
  94. package/dist/esm/node/prerender/runPrerender.js +3 -1
  95. package/dist/esm/node/runtime/globalContext.d.ts +9 -8
  96. package/dist/esm/node/runtime/globalContext.js +19 -8
  97. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
  98. package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -2
  99. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
  100. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +1 -1
  101. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +2 -0
  102. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +24 -0
  103. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -2
  104. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
  105. package/dist/esm/node/runtime/renderPage/getPageAssets.js +1 -1
  106. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
  107. package/dist/esm/node/runtime/renderPage/handlePageContextRequestUrl.js +1 -1
  108. package/dist/esm/node/runtime/renderPage/isNewError.js +1 -1
  109. package/dist/esm/node/runtime/renderPage/isVikeConfigInvalid.d.ts +6 -0
  110. package/dist/esm/node/runtime/renderPage/isVikeConfigInvalid.js +8 -0
  111. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +3 -3
  112. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +2 -2
  113. package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
  114. package/dist/esm/node/runtime/renderPage/logErrorHint.js +7 -1
  115. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +4 -4
  116. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +12 -12
  117. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -4
  118. package/dist/esm/node/runtime/renderPage.d.ts +5 -5
  119. package/dist/esm/node/runtime/renderPage.js +64 -49
  120. package/dist/esm/node/runtime/universal-middleware.d.ts +1 -0
  121. package/dist/esm/node/runtime/universal-middleware.js +11 -0
  122. package/dist/esm/node/shared/resolveBase.d.ts +1 -9
  123. package/dist/esm/node/shared/resolveBase.js +0 -13
  124. package/dist/esm/shared/getPageConfigsRuntime.d.ts +2 -2
  125. package/dist/esm/shared/getPageConfigsRuntime.js +3 -9
  126. package/dist/esm/shared/getPageContextRequestUrl.js +1 -1
  127. package/dist/esm/shared/getPageContextUrlComputed.js +12 -9
  128. package/dist/esm/shared/getPageFiles.d.ts +1 -1
  129. package/dist/esm/shared/hooks/getHook.d.ts +3 -3
  130. package/dist/esm/shared/hooks/getHook.js +1 -1
  131. package/dist/esm/shared/page-configs/Config.d.ts +3 -1
  132. package/dist/esm/shared/page-configs/PageConfig.d.ts +12 -4
  133. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +24 -16
  134. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +44 -12
  135. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +3 -2
  136. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +2 -8
  137. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +2 -0
  138. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +16 -6
  139. package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
  140. package/dist/esm/shared/route/loadPageRoutes.js +1 -1
  141. package/dist/esm/shared/types.d.ts +6 -0
  142. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  143. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  144. package/dist/esm/utils/assert.js +1 -1
  145. package/dist/esm/utils/assertSetup.js +1 -1
  146. package/dist/esm/utils/assertSingleInstance.js +2 -2
  147. package/dist/esm/utils/findFile.js +1 -1
  148. package/dist/esm/utils/getGlobalObject.d.ts +3 -2
  149. package/dist/esm/utils/getGlobalObject.js +2 -6
  150. package/dist/esm/utils/parseUrl-extras.js +2 -2
  151. package/dist/esm/utils/parseUrl.d.ts +3 -4
  152. package/dist/esm/utils/parseUrl.js +5 -5
  153. package/dist/esm/utils/projectInfo.d.ts +1 -1
  154. package/package.json +16 -3
  155. package/universal-middleware.js +3 -0
  156. package/dist/cjs/node/runtime/renderPage/isConfigInvalid.js +0 -10
  157. package/dist/esm/node/runtime/renderPage/isConfigInvalid.d.ts +0 -6
  158. package/dist/esm/node/runtime/renderPage/isConfigInvalid.js +0 -8
@@ -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('/');
@@ -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
  ];
@@ -30,8 +30,8 @@ async function fixServerAssets(config) {
30
30
  const outDirs = getOutDirs(config);
31
31
  const clientManifest = await loadManifest(outDirs.outDirClient);
32
32
  const serverManifest = await loadManifest(outDirs.outDirServer);
33
- const { clientManifestMod, serverManifestMod, filesToCopy, filesToRemove } = addServerAssets(clientManifest, serverManifest);
34
- await copyAssets(filesToCopy, filesToRemove, config);
33
+ const { clientManifestMod, serverManifestMod, filesToMove, filesToRemove } = addServerAssets(clientManifest, serverManifest);
34
+ await copyAssets(filesToMove, filesToRemove, config);
35
35
  return { clientManifestMod, serverManifestMod };
36
36
  }
37
37
  async function loadManifest(outDir) {
@@ -42,15 +42,15 @@ async function loadManifest(outDir) {
42
42
  assert(manifest);
43
43
  return manifest;
44
44
  }
45
- async function copyAssets(filesToCopy, filesToRemove, config) {
45
+ async function copyAssets(filesToMove, filesToRemove, config) {
46
46
  const { outDirClient, outDirServer } = getOutDirs(config);
47
47
  const assetsDir = getAssetsDir(config);
48
48
  const assetsDirServer = path.posix.join(outDirServer, assetsDir);
49
- if (!filesToCopy.length && !filesToRemove.length && !existsSync(assetsDirServer))
49
+ if (!filesToMove.length && !filesToRemove.length && !existsSync(assetsDirServer))
50
50
  return;
51
51
  assert(existsSync(assetsDirServer));
52
52
  const concurrencyLimit = pLimit(10);
53
- await Promise.all(filesToCopy.map((file) => concurrencyLimit(async () => {
53
+ await Promise.all(filesToMove.map((file) => concurrencyLimit(async () => {
54
54
  const source = path.posix.join(outDirServer, file);
55
55
  const target = path.posix.join(outDirClient, file);
56
56
  await fs.mkdir(path.posix.dirname(target), { recursive: true });
@@ -86,19 +86,20 @@ function addServerAssets(clientManifest, serverManifest) {
86
86
  assert(!entriesServer.has(pageId));
87
87
  entriesServer.set(pageId, { key, ...resources });
88
88
  }
89
- let filesToCopy = [];
89
+ let filesToMove = [];
90
90
  let filesToRemove = [];
91
+ // Copy page assets
91
92
  for (const [pageId, entryClient] of entriesClient.entries()) {
92
93
  const entryServer = entriesServer.get(pageId);
93
94
  if (!entryServer)
94
95
  continue;
95
- const cssToAdd = [];
96
+ const cssToMove = [];
96
97
  const cssToRemove = [];
97
- const assetsToAdd = [];
98
+ const assetsToMove = [];
98
99
  const assetsToRemove = [];
99
100
  entryServer.css.forEach((cssServer) => {
100
101
  if (!entryClient.css.some((cssClient) => cssServer.hash === cssClient.hash)) {
101
- cssToAdd.push(cssServer.src);
102
+ cssToMove.push(cssServer.src);
102
103
  }
103
104
  else {
104
105
  cssToRemove.push(cssServer.src);
@@ -106,17 +107,17 @@ function addServerAssets(clientManifest, serverManifest) {
106
107
  });
107
108
  entryServer.assets.forEach((assetServer) => {
108
109
  if (!entryClient.assets.some((assetClient) => assetServer.hash === assetClient.hash)) {
109
- assetsToAdd.push(assetServer.src);
110
+ assetsToMove.push(assetServer.src);
110
111
  }
111
112
  else {
112
113
  assetsToRemove.push(assetServer.src);
113
114
  }
114
115
  });
115
- if (cssToAdd.length) {
116
+ if (cssToMove.length) {
116
117
  const { key } = entryClient;
117
- filesToCopy.push(...cssToAdd);
118
+ filesToMove.push(...cssToMove);
118
119
  (_a = clientManifest[key]).css ?? (_a.css = []);
119
- clientManifest[key].css?.push(...cssToAdd);
120
+ clientManifest[key].css?.push(...cssToMove);
120
121
  }
121
122
  if (cssToRemove.length) {
122
123
  const { key } = entryServer;
@@ -124,11 +125,11 @@ function addServerAssets(clientManifest, serverManifest) {
124
125
  (_b = serverManifest[key]).css ?? (_b.css = []);
125
126
  serverManifest[key].css = serverManifest[key].css.filter((entry) => !cssToRemove.includes(entry));
126
127
  }
127
- if (assetsToAdd.length) {
128
+ if (assetsToMove.length) {
128
129
  const { key } = entryClient;
129
- filesToCopy.push(...assetsToAdd);
130
+ filesToMove.push(...assetsToMove);
130
131
  (_c = clientManifest[key]).assets ?? (_c.assets = []);
131
- clientManifest[key].assets?.push(...assetsToAdd);
132
+ clientManifest[key].assets?.push(...assetsToMove);
132
133
  }
133
134
  if (assetsToRemove.length) {
134
135
  const { key } = entryServer;
@@ -137,11 +138,40 @@ function addServerAssets(clientManifest, serverManifest) {
137
138
  serverManifest[key].assets = serverManifest[key].assets.filter((entry) => !assetsToRemove.includes(entry));
138
139
  }
139
140
  }
141
+ // Also copy assets of virtual:@brillout/vite-plugin-server-entry:serverEntry
142
+ {
143
+ const filesClientAll = [];
144
+ for (const key in clientManifest) {
145
+ const entry = clientManifest[key];
146
+ filesClientAll.push(entry.file);
147
+ filesClientAll.push(...(entry.assets ?? []));
148
+ filesClientAll.push(...(entry.css ?? []));
149
+ }
150
+ for (const key in serverManifest) {
151
+ const entry = serverManifest[key];
152
+ if (!entry.isEntry)
153
+ continue;
154
+ const resources = collectResources(entry, serverManifest);
155
+ const css = resources.css.map((css) => css.src).filter((file) => !filesClientAll.includes(file));
156
+ const assets = resources.assets.map((asset) => asset.src).filter((file) => !filesClientAll.includes(file));
157
+ filesToMove.push(...css, ...assets);
158
+ if (css.length > 0 || assets.length > 0) {
159
+ assert(!clientManifest[key]);
160
+ clientManifest[key] = {
161
+ ...entry,
162
+ css,
163
+ assets,
164
+ dynamicImports: undefined,
165
+ imports: undefined
166
+ };
167
+ }
168
+ }
169
+ }
140
170
  const clientManifestMod = clientManifest;
141
171
  const serverManifestMod = serverManifest;
142
- filesToCopy = unique(filesToCopy);
143
- filesToRemove = unique(filesToRemove).filter((file) => !filesToCopy.includes(file));
144
- return { clientManifestMod, serverManifestMod, filesToCopy, filesToRemove };
172
+ filesToMove = unique(filesToMove);
173
+ filesToRemove = unique(filesToRemove).filter((file) => !filesToMove.includes(file));
174
+ return { clientManifestMod, serverManifestMod, filesToMove, filesToRemove };
145
175
  }
146
176
  function getPageId(key) {
147
177
  // Normalize from: