vike 0.4.237-commit-92dc549 → 0.4.237-commit-fd8294f

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 (77) hide show
  1. package/dist/cjs/client/runtime-server-routing/utils.js +1 -1
  2. package/dist/cjs/node/api/build.js +4 -30
  3. package/dist/cjs/node/prerender/runPrerender.js +5 -6
  4. package/dist/cjs/node/runtime/renderPage/analyzePage.js +3 -1
  5. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +1 -1
  6. package/dist/cjs/node/runtime/renderPage/execHookOnRenderHtml.js +1 -11
  7. package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +42 -46
  8. package/dist/cjs/node/runtime/renderPage/{renderPageAlreadyRouted.js → renderPageAfterRoute.js} +3 -4
  9. package/dist/cjs/node/runtime/renderPage.js +6 -9
  10. package/dist/cjs/node/runtime/utils.js +1 -1
  11. package/dist/cjs/node/vite/plugins/pluginBuild/handleAssetsManifest.js +3 -5
  12. package/dist/cjs/node/vite/plugins/pluginBuild/pluginAutoFullBuild.js +8 -26
  13. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildApp.js +2 -9
  14. package/dist/cjs/node/vite/plugins/pluginDev/determineOptimizeDeps.js +3 -2
  15. package/dist/cjs/node/vite/plugins/pluginFileEnv.js +4 -3
  16. package/dist/cjs/node/vite/shared/getOutDirs.js +5 -4
  17. package/dist/cjs/node/vite/shared/isViteServerSide.js +46 -19
  18. package/dist/cjs/shared/page-configs/{loadPageEntry.js → loadAndParseVirtualFilePageEntry.js} +2 -2
  19. package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +5 -0
  20. package/dist/cjs/shared/route/execHookOnBeforeRoute.js +0 -1
  21. package/dist/cjs/shared/route/index.js +0 -1
  22. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  23. package/dist/cjs/utils/{augmentType.js → updateType.js} +3 -3
  24. package/dist/esm/__internal/index.d.ts +1 -1
  25. package/dist/esm/client/runtime-client-routing/createPageContextClientSide.js +2 -2
  26. package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +6 -6
  27. package/dist/esm/client/runtime-client-routing/utils.d.ts +1 -1
  28. package/dist/esm/client/runtime-client-routing/utils.js +1 -1
  29. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +3 -3
  30. package/dist/esm/client/runtime-server-routing/utils.d.ts +1 -1
  31. package/dist/esm/client/runtime-server-routing/utils.js +1 -1
  32. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +2 -2
  33. package/dist/esm/node/api/build.js +5 -31
  34. package/dist/esm/node/prerender/runPrerender.d.ts +9 -300
  35. package/dist/esm/node/prerender/runPrerender.js +6 -7
  36. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +4 -3
  37. package/dist/esm/node/runtime/renderPage/analyzePage.js +3 -1
  38. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +2 -2
  39. package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.d.ts +0 -1
  40. package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.js +1 -11
  41. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -4
  42. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +1 -1
  43. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +105 -19
  44. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +44 -48
  45. package/dist/esm/node/runtime/renderPage/{renderPageAlreadyRouted.d.ts → renderPageAfterRoute.d.ts} +20 -4
  46. package/dist/esm/node/runtime/renderPage/{renderPageAlreadyRouted.js → renderPageAfterRoute.js} +5 -6
  47. package/dist/esm/node/runtime/renderPage.js +8 -11
  48. package/dist/esm/node/runtime/utils.d.ts +1 -1
  49. package/dist/esm/node/runtime/utils.js +1 -1
  50. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.d.ts +0 -1
  51. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.js +5 -7
  52. package/dist/esm/node/vite/plugins/pluginBuild/pluginAutoFullBuild.js +10 -28
  53. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildApp.js +2 -9
  54. package/dist/esm/node/vite/plugins/pluginDev/determineOptimizeDeps.js +3 -2
  55. package/dist/esm/node/vite/plugins/pluginFileEnv.js +4 -3
  56. package/dist/esm/node/vite/shared/getOutDirs.js +5 -4
  57. package/dist/esm/node/vite/shared/isViteServerSide.d.ts +1 -1
  58. package/dist/esm/node/vite/shared/isViteServerSide.js +46 -19
  59. package/dist/esm/shared/page-configs/loadAndParseVirtualFilePageEntry.d.ts +3 -0
  60. package/dist/esm/shared/page-configs/{loadPageEntry.js → loadAndParseVirtualFilePageEntry.js} +2 -2
  61. package/dist/esm/shared/page-configs/resolveVikeConfigPublic.js +5 -0
  62. package/dist/esm/shared/route/execHookOnBeforeRoute.d.ts +3 -3
  63. package/dist/esm/shared/route/execHookOnBeforeRoute.js +0 -1
  64. package/dist/esm/shared/route/index.d.ts +5 -6
  65. package/dist/esm/shared/route/index.js +0 -1
  66. package/dist/esm/types/Config.d.ts +2 -4
  67. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  68. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  69. package/dist/esm/utils/updateType.d.ts +3 -0
  70. package/dist/esm/utils/updateType.js +7 -0
  71. package/package.json +3 -3
  72. package/dist/cjs/node/runtime/renderPage/debugPageFiles.js +0 -52
  73. package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +0 -23
  74. package/dist/esm/node/runtime/renderPage/debugPageFiles.js +0 -47
  75. package/dist/esm/shared/page-configs/loadPageEntry.d.ts +0 -3
  76. package/dist/esm/utils/augmentType.d.ts +0 -3
  77. package/dist/esm/utils/augmentType.js +0 -7
@@ -1,43 +1,39 @@
1
- export { loadPageConfigsLazyServerSideAndExecHook };
2
- import { getPageFilesServerSide, } from '../../../shared/getPageFiles.js';
1
+ export { loadPageConfigsLazyServerSide };
2
+ import { getPageFilesServerSide } from '../../../shared/getPageFiles.js';
3
3
  import { resolveVikeConfigPublicPageLazyLoaded } from '../../../shared/page-configs/resolveVikeConfigPublic.js';
4
4
  import { analyzePageClientSideInit } from '../../../shared/getPageFiles/analyzePageClientSide.js';
5
- import { assertUsage, assertWarning, hasProp, isArray, isObject, objectAssign } from '../utils.js';
5
+ import { assertUsage, assertWarning, hasProp, isArray, isObject, objectAssign, updateType, } from '../utils.js';
6
6
  import { getPageAssets } from './getPageAssets.js';
7
- import { debugPageFiles } from './debugPageFiles.js';
8
7
  import { findPageConfig } from '../../../shared/page-configs/findPageConfig.js';
9
8
  import { analyzePage } from './analyzePage.js';
10
- import { loadPageEntry } from '../../../shared/page-configs/loadPageEntry.js';
9
+ import { loadAndParseVirtualFilePageEntry } from '../../../shared/page-configs/loadAndParseVirtualFilePageEntry.js';
11
10
  import { execHookServer } from './execHookServer.js';
12
11
  import { getCacheControl } from './getCacheControl.js';
13
- async function loadPageConfigsLazyServerSideAndExecHook(pageContext) {
14
- const pageContextAddendum = await loadPageConfigsLazyServerSide(pageContext);
15
- objectAssign(pageContext, pageContextAddendum);
12
+ async function loadPageConfigsLazyServerSide(pageContext) {
13
+ objectAssign(pageContext, {
14
+ _pageConfig: findPageConfig(pageContext._globalContext._pageConfigs, pageContext.pageId),
15
+ });
16
+ // Load the page's + files
17
+ updateType(pageContext, await loadPageUserFiles(pageContext));
18
+ // Resolve new computed pageContext properties
19
+ updateType(pageContext, await resolvePageContext(pageContext));
20
+ // Execute +onCreatePageContext
16
21
  await execHookServer('onCreatePageContext', pageContext);
17
22
  return pageContext;
18
23
  }
19
- // TODO/now: define new function resolveAfterLoad() ?
20
- async function loadPageConfigsLazyServerSide(pageContext) {
21
- const pageConfig = findPageConfig(pageContext._globalContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig ?
22
- const globalContext = pageContext._globalContext;
23
- const [{ pageFilesLoaded, configPublicPageLazy }] = await Promise.all([
24
- loadPageConfigFiles(pageContext._globalContext._pageFilesAll, pageConfig, globalContext._pageConfigGlobal, pageContext.pageId, !globalContext._isProduction),
25
- analyzePageClientSideInit(pageContext._globalContext._pageFilesAll, pageContext.pageId, {
26
- sharedPageFilesAlreadyLoaded: true,
27
- }),
28
- ]);
29
- const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = await analyzePage(pageContext._globalContext._pageFilesAll, pageConfig, pageContext.pageId, globalContext);
30
- const isV1Design = !!pageConfig;
24
+ async function resolvePageContext(pageContext) {
25
+ const { isHtmlOnly, clientEntries, clientDependencies } = analyzePage(pageContext);
31
26
  const passToClient = [];
32
27
  const errMsgSuffix = ' should be an array of strings.';
28
+ const isV1Design = !!pageContext._pageConfig;
33
29
  if (!isV1Design) {
34
- configPublicPageLazy.exportsAll.passToClient?.forEach((e) => {
30
+ pageContext.exportsAll.passToClient?.forEach((e) => {
35
31
  assertUsage(hasProp(e, 'exportValue', 'string[]'), `${e.exportSource}${errMsgSuffix}`);
36
32
  passToClient.push(...e.exportValue);
37
33
  });
38
34
  }
39
35
  else {
40
- configPublicPageLazy.from.configsCumulative.passToClient?.values.forEach((v) => {
36
+ pageContext.from.configsCumulative.passToClient?.values.forEach((v) => {
41
37
  const { value, definedAt } = v;
42
38
  const errMsg = `+passToClient value defined at ${definedAt}${errMsgSuffix}`;
43
39
  //*/ TO-DO/next-major-release: remove the passToClient once setting from the public API
@@ -57,16 +53,13 @@ async function loadPageConfigsLazyServerSide(pageContext) {
57
53
  passToClient.push(...valS);
58
54
  });
59
55
  }
60
- const pageContextAddendum = {};
61
- objectAssign(pageContextAddendum, configPublicPageLazy);
62
- objectAssign(pageContextAddendum, {
63
- Page: configPublicPageLazy.exports.Page,
56
+ objectAssign(pageContext, {
57
+ Page: pageContext.exports.Page,
64
58
  _isHtmlOnly: isHtmlOnly,
65
59
  _passToClient: passToClient,
66
- _pageFilePathsLoaded: pageFilesLoaded.map((p) => p.filePath),
67
- headersResponse: resolveHeadersResponse(pageContext, pageContextAddendum),
60
+ headersResponse: resolveHeadersResponse(pageContext),
68
61
  });
69
- objectAssign(pageContextAddendum, {
62
+ objectAssign(pageContext, {
70
63
  __getPageAssets: async () => {
71
64
  if ('_pageAssets' in pageContext) {
72
65
  return pageContext._pageAssets;
@@ -79,14 +72,14 @@ async function loadPageConfigsLazyServerSide(pageContext) {
79
72
  },
80
73
  });
81
74
  // TO-DO/next-major-release: remove
82
- Object.assign(pageContextAddendum, {
75
+ Object.assign(pageContext, {
83
76
  _getPageAssets: async () => {
84
77
  assertWarning(false, 'pageContext._getPageAssets() deprecated, see https://vike.dev/preloading', {
85
78
  onlyOnce: true,
86
79
  showStackTrace: true,
87
80
  });
88
81
  const pageAssetsOldFormat = [];
89
- (await pageContextAddendum.__getPageAssets()).forEach((p) => {
82
+ (await pageContext.__getPageAssets()).forEach((p) => {
90
83
  if (p.assetType === 'script' && p.isEntry) {
91
84
  pageAssetsOldFormat.push({
92
85
  src: p.src,
@@ -105,30 +98,33 @@ async function loadPageConfigsLazyServerSide(pageContext) {
105
98
  return pageAssetsOldFormat;
106
99
  },
107
100
  });
108
- debugPageFiles({
109
- pageContext,
110
- isHtmlOnly,
111
- isClientRouting,
112
- pageFilesLoaded,
113
- pageFilesClientSide,
114
- pageFilesServerSide,
115
- clientEntries,
116
- clientDependencies,
117
- });
118
- return pageContextAddendum;
101
+ return pageContext;
102
+ }
103
+ async function loadPageUserFiles(pageContext) {
104
+ const [{ configPublicPageLazy }] = await Promise.all([
105
+ loadPageUserFiles_v1Design(pageContext),
106
+ analyzePageClientSideInit(pageContext._globalContext._pageFilesAll, pageContext.pageId, {
107
+ sharedPageFilesAlreadyLoaded: true,
108
+ }),
109
+ ]);
110
+ objectAssign(pageContext, configPublicPageLazy);
111
+ return pageContext;
119
112
  }
120
- async function loadPageConfigFiles(pageFilesAll, pageConfig, pageConfigGlobal, pageId, isDev) {
121
- const pageFilesServerSide = getPageFilesServerSide(pageFilesAll, pageId);
122
- const pageConfigLoaded = !pageConfig ? null : await loadPageEntry(pageConfig, isDev);
113
+ async function loadPageUserFiles_v1Design(pageContext) {
114
+ const pageFilesServerSide = getPageFilesServerSide(pageContext._pageFilesAll, pageContext.pageId);
115
+ const isDev = !pageContext._globalContext._isProduction;
116
+ const pageConfigLoaded = !pageContext._pageConfig
117
+ ? null
118
+ : await loadAndParseVirtualFilePageEntry(pageContext._pageConfig, isDev);
123
119
  await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
124
- const configPublicPageLazy = resolveVikeConfigPublicPageLazyLoaded(pageFilesServerSide, pageConfigLoaded, pageConfigGlobal);
120
+ const configPublicPageLazy = resolveVikeConfigPublicPageLazyLoaded(pageFilesServerSide, pageConfigLoaded, pageContext._globalContext._pageConfigGlobal);
125
121
  return {
126
122
  configPublicPageLazy,
127
123
  pageFilesLoaded: pageFilesServerSide,
128
124
  };
129
125
  }
130
- function resolveHeadersResponse(pageContext, pageContextAddendum) {
131
- const headersResponse = mergeHeaders(pageContextAddendum.config.headersResponse);
126
+ function resolveHeadersResponse(pageContext) {
127
+ const headersResponse = mergeHeaders(pageContext.config.headersResponse);
132
128
  if (!headersResponse.get('Cache-Control')) {
133
129
  const cacheControl = getCacheControl(pageContext.pageId, pageContext._globalContext._pageConfigs);
134
130
  if (cacheControl)
@@ -1,4 +1,4 @@
1
- export { renderPageAlreadyRouted };
1
+ export { renderPageAfterRoute };
2
2
  export { prerenderPage };
3
3
  export type { PageContextAfterRender };
4
4
  import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
@@ -10,7 +10,7 @@ type PageContextAfterRender = {
10
10
  httpResponse: HttpResponse;
11
11
  errorWhileRendering: null | Error;
12
12
  };
13
- declare function renderPageAlreadyRouted<PageContext extends {
13
+ declare function renderPageAfterRoute<PageContext extends {
14
14
  pageId: string;
15
15
  _pageContextAlreadyProvidedByOnPrerenderHook?: true;
16
16
  is404: null | boolean;
@@ -118,11 +118,19 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
118
118
  url: string;
119
119
  } & {
120
120
  headers: Record<string, string> | null;
121
+ } & import("../../../shared/route/index.js").PageContextAfterRoute & {
122
+ is404: boolean | null;
123
+ pageId: string;
124
+ } & {
125
+ _pageConfig: import("../../../types/PageConfig.js").PageConfigRuntime | null;
126
+ } & {
127
+ _pageConfig: null | import("../../../types/PageConfig.js").PageConfigRuntime;
121
128
  } & import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazyLoaded & {
129
+ _pageConfig: null | import("../../../types/PageConfig.js").PageConfigRuntime;
130
+ } & {
122
131
  Page: unknown;
123
132
  _isHtmlOnly: boolean;
124
133
  _passToClient: import("../html/serializeContext.js").PassToClient;
125
- _pageFilePathsLoaded: string[];
126
134
  headersResponse: Headers;
127
135
  } & {
128
136
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
@@ -229,11 +237,19 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
229
237
  url: string;
230
238
  } & {
231
239
  headers: Record<string, string> | null;
240
+ } & import("../../../shared/route/index.js").PageContextAfterRoute & {
241
+ is404: boolean | null;
242
+ pageId: string;
243
+ } & {
244
+ _pageConfig: import("../../../types/PageConfig.js").PageConfigRuntime | null;
245
+ } & {
246
+ _pageConfig: null | import("../../../types/PageConfig.js").PageConfigRuntime;
232
247
  } & import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazyLoaded & {
248
+ _pageConfig: null | import("../../../types/PageConfig.js").PageConfigRuntime;
249
+ } & {
233
250
  Page: unknown;
234
251
  _isHtmlOnly: boolean;
235
252
  _passToClient: import("../html/serializeContext.js").PassToClient;
236
- _pageFilePathsLoaded: string[];
237
253
  headersResponse: Headers;
238
254
  } & {
239
255
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
@@ -1,11 +1,11 @@
1
- export { renderPageAlreadyRouted };
1
+ export { renderPageAfterRoute };
2
2
  export { prerenderPage };
3
3
  import { getErrorPageId } from '../../../shared/error-page.js';
4
4
  import { getHtmlString } from '../html/renderHtml.js';
5
- import { assert, assertUsage, augmentType, hasProp, objectAssign } from '../utils.js';
5
+ import { assert, assertUsage, updateType, hasProp, objectAssign } from '../utils.js';
6
6
  import { getPageContextClientSerialized } from '../html/serializeContext.js';
7
7
  import { createHttpResponsePage, createHttpResponsePageContextJson } from './createHttpResponse.js';
8
- import { loadPageConfigsLazyServerSideAndExecHook, } from './loadPageConfigsLazyServerSide.js';
8
+ import { loadPageConfigsLazyServerSide, } from './loadPageConfigsLazyServerSide.js';
9
9
  import { execHookOnRenderHtml } from './execHookOnRenderHtml.js';
10
10
  import { execHookDataAndOnBeforeRender } from './execHookDataAndOnBeforeRender.js';
11
11
  import { logRuntimeError } from '../loggerRuntime.js';
@@ -14,8 +14,7 @@ import { preparePageContextForPublicUsageServer } from './preparePageContextForP
14
14
  import { execHookGuard } from '../../../shared/route/execHookGuard.js';
15
15
  import pc from '@brillout/picocolors';
16
16
  import { isServerSideError } from '../../../shared/misc/isServerSideError.js';
17
- // TODO/now: rename?
18
- async function renderPageAlreadyRouted(pageContext) {
17
+ async function renderPageAfterRoute(pageContext) {
19
18
  // pageContext.pageId can either be the:
20
19
  // - ID of the page matching the routing, or the
21
20
  // - ID of the error page `_error.page.js`.
@@ -24,7 +23,7 @@ async function renderPageAlreadyRouted(pageContext) {
24
23
  assert(isError ===
25
24
  (pageContext.pageId ===
26
25
  getErrorPageId(pageContext._globalContext._pageFilesAll, pageContext._globalContext._pageConfigs)));
27
- augmentType(pageContext, await loadPageConfigsLazyServerSideAndExecHook(pageContext));
26
+ updateType(pageContext, await loadPageConfigsLazyServerSide(pageContext));
28
27
  if (!isError) {
29
28
  await execHookGuard(pageContext, (pageContext) => preparePageContextForPublicUsageServer(pageContext));
30
29
  }
@@ -1,9 +1,9 @@
1
1
  export { renderPage };
2
2
  export { renderPage_addAsyncHookwrapper };
3
- import { renderPageAlreadyRouted } from './renderPage/renderPageAlreadyRouted.js';
3
+ import { renderPageAfterRoute } from './renderPage/renderPageAfterRoute.js';
4
4
  import { createPageContextServerSide, createPageContextServerSideWithoutGlobalContext, } from './renderPage/createPageContextServerSide.js';
5
5
  import { route } from '../../shared/route/index.js';
6
- import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, isUri, getUrlPretty, augmentType, } from './utils.js';
6
+ import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, isUri, getUrlPretty, updateType, } from './utils.js';
7
7
  import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled, } from '../../shared/route/abort.js';
8
8
  import { getGlobalContextServerInternal, initGlobalContext_renderPage, } from './globalContext.js';
9
9
  import { handlePageContextRequestUrl } from './renderPage/handlePageContextRequestUrl.js';
@@ -16,7 +16,7 @@ import pc from '@brillout/picocolors';
16
16
  import { getPageContextClientSerializedAbort, getPageContextClientSerialized } from './html/serializeContext.js';
17
17
  import { getErrorPageId } from '../../shared/error-page.js';
18
18
  import { handleErrorWithoutErrorPage } from './renderPage/handleErrorWithoutErrorPage.js';
19
- import { loadPageConfigsLazyServerSideAndExecHook } from './renderPage/loadPageConfigsLazyServerSide.js';
19
+ import { loadPageConfigsLazyServerSide } from './renderPage/loadPageConfigsLazyServerSide.js';
20
20
  import { resolveRedirects } from './renderPage/resolveRedirects.js';
21
21
  import { getVikeConfigError } from '../shared/getVikeConfigError.js';
22
22
  const globalObject = getGlobalObject('runtime/renderPage.ts', {
@@ -153,7 +153,7 @@ async function renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRe
153
153
  async function renderPageOnError(errNominalPage, pageContextBegin, pageContextNominalPageBegin, globalContext, httpRequestId, pageContextsFromRewrite) {
154
154
  assert(pageContextNominalPageBegin);
155
155
  assert(hasProp(pageContextNominalPageBegin, 'urlOriginal', 'string'));
156
- const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextBegin, errNominalPage, pageContextNominalPageBegin);
156
+ const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextBegin, errNominalPage);
157
157
  // Handle `throw redirect()` and `throw render()` while rendering nominal page
158
158
  if (isAbortError(errNominalPage)) {
159
159
  const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
@@ -178,7 +178,7 @@ async function renderPageOnError(errNominalPage, pageContextBegin, pageContextNo
178
178
  }
179
179
  let pageContextErrorPage;
180
180
  try {
181
- pageContextErrorPage = await renderPageAlreadyRouted(pageContextErrorPageInit);
181
+ pageContextErrorPage = await renderPageAfterRoute(pageContextErrorPageInit);
182
182
  }
183
183
  catch (errErrorPage) {
184
184
  // Handle `throw redirect()` and `throw render()` while rendering error page
@@ -293,11 +293,11 @@ async function renderPageNominal(pageContext) {
293
293
  assert(hasProp(pageContext, 'pageId', 'string'));
294
294
  assert(pageContext.errorWhileRendering === null);
295
295
  // Render
296
- const pageContextAfterRender = await renderPageAlreadyRouted(pageContext);
296
+ const pageContextAfterRender = await renderPageAfterRoute(pageContext);
297
297
  assert(pageContext === pageContextAfterRender);
298
298
  return pageContextAfterRender;
299
299
  }
300
- async function getPageContextErrorPageInit(pageContextBegin, errNominalPage, pageContextNominalPagePartial) {
300
+ async function getPageContextErrorPageInit(pageContextBegin, errNominalPage) {
301
301
  const pageContext = forkPageContext(pageContextBegin);
302
302
  assert(errNominalPage);
303
303
  objectAssign(pageContext, {
@@ -305,9 +305,6 @@ async function getPageContextErrorPageInit(pageContextBegin, errNominalPage, pag
305
305
  errorWhileRendering: errNominalPage,
306
306
  routeParams: {},
307
307
  });
308
- objectAssign(pageContext, {
309
- _debugRouteMatches: pageContextNominalPagePartial._debugRouteMatches || 'ROUTING_ERROR',
310
- });
311
308
  assert(pageContext.errorWhileRendering);
312
309
  return pageContext;
313
310
  }
@@ -423,7 +420,7 @@ pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalCont
423
420
  objectAssign(pageContext, { pageId: errorPageId });
424
421
  objectAssign(pageContext, pageContextAbort);
425
422
  objectAssign(pageContext, pageContextErrorPageInit, true);
426
- augmentType(pageContext, await loadPageConfigsLazyServerSideAndExecHook(pageContext));
423
+ updateType(pageContext, await loadPageConfigsLazyServerSide(pageContext));
427
424
  // We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
428
425
  pageContextSerialized = getPageContextClientSerialized(pageContext, false);
429
426
  }
@@ -55,7 +55,7 @@ export * from '../../utils/isVikeReactApp.js';
55
55
  export * from '../../utils/getPropAccessNotation.js';
56
56
  export * from '../../utils/PROJECT_VERSION.js';
57
57
  export * from '../../utils/genPromise.js';
58
- export * from '../../utils/augmentType.js';
58
+ export * from '../../utils/updateType.js';
59
59
  export * from '../../utils/changeEnumerable.js';
60
60
  export * from '../../utils/getViteRPC.js';
61
61
  export * from '../../utils/isRunnableDevEnvironment.js';
@@ -59,7 +59,7 @@ export * from '../../utils/isVikeReactApp.js';
59
59
  export * from '../../utils/getPropAccessNotation.js';
60
60
  export * from '../../utils/PROJECT_VERSION.js';
61
61
  export * from '../../utils/genPromise.js';
62
- export * from '../../utils/augmentType.js';
62
+ export * from '../../utils/updateType.js';
63
63
  export * from '../../utils/changeEnumerable.js';
64
64
  export * from '../../utils/getViteRPC.js';
65
65
  export * from '../../utils/isRunnableDevEnvironment.js';
@@ -12,7 +12,6 @@ declare function handleAssetsManifest_getBuildConfig(config: UserConfig): Promis
12
12
  readonly ssrEmitAssets: true | undefined;
13
13
  readonly cssMinify: "esbuild" | undefined;
14
14
  readonly manifest: true;
15
- readonly copyPublicDir: boolean | undefined;
16
15
  }>;
17
16
  declare function handleAssetsManifest(config: ResolvedConfig, viteEnv: Environment, options: {
18
17
  dir: string | undefined;
@@ -11,9 +11,9 @@ import { assert, assertWarning, getGlobalObject, isEqualStringList, isObject, pL
11
11
  import { parseVirtualFileId } from '../../../shared/virtualFileId.js';
12
12
  import { getAssetsDir } from '../../shared/getAssetsDir.js';
13
13
  import pc from '@brillout/picocolors';
14
- import { getVikeConfigInternal, isV1Design } from '../../shared/resolveVikeConfigInternal.js';
14
+ import { isV1Design } from '../../shared/resolveVikeConfigInternal.js';
15
15
  import { getOutDirs } from '../../shared/getOutDirs.js';
16
- import { isViteServerSide_onlySsrEnv, isViteServerSide, isViteServerSide_withoutEnv, } from '../../shared/isViteServerSide.js';
16
+ import { isViteServerSide_onlySsrEnv, isViteServerSide } from '../../shared/isViteServerSide.js';
17
17
  import { set_macro_ASSETS_MANIFEST } from './pluginBuildEntry.js';
18
18
  import { getManifestFilePathRelative } from '../../shared/getManifestFilePathRelative.js';
19
19
  const globalObject = getGlobalObject('build/handleAssetsManifest.ts', {
@@ -280,7 +280,6 @@ async function writeManifestFile(manifest, manifestFilePath) {
280
280
  await fs.writeFile(manifestFilePath, manifestFileContent, 'utf-8');
281
281
  }
282
282
  async function handleAssetsManifest_getBuildConfig(config) {
283
- const vikeConfig = await getVikeConfigInternal();
284
283
  const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
285
284
  return {
286
285
  // https://github.com/vikejs/vike/issues/1339
@@ -288,10 +287,9 @@ async function handleAssetsManifest_getBuildConfig(config) {
288
287
  // Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
289
288
  cssMinify: isFixEnabled ? 'esbuild' : undefined,
290
289
  manifest: true,
291
- copyPublicDir: vikeConfig.config.vite6BuilderApp
292
- ? // Already set by vike:build:pluginBuildApp
293
- undefined
294
- : !isViteServerSide_withoutEnv(config),
290
+ /* Already set by vike:build:pluginBuildApp
291
+ copyPublicDir: !isViteServerSide_withoutEnv(config),
292
+ */
295
293
  };
296
294
  }
297
295
  async function handleAssetsManifest(config, viteEnv, options, bundle) {
@@ -1,6 +1,5 @@
1
1
  export { pluginAutoFullBuild };
2
2
  export { isPrerenderForceExit };
3
- import { build } from 'vite';
4
3
  import { assert, assertWarning, getGlobalObject, onSetupBuild } from '../../utils.js';
5
4
  import { isPrerenderAutoRunEnabled, wasPrerenderRun } from '../../../prerender/context.js';
6
5
  import { isViteCliCall, getViteConfigFromCli } from '../../shared/isViteCliCall.js';
@@ -9,8 +8,8 @@ import { logErrorHint } from '../../../runtime/renderPage/logErrorHint.js';
9
8
  import { getVikeConfigInternal } from '../../shared/resolveVikeConfigInternal.js';
10
9
  import { isVikeCliOrApi } from '../../../api/context.js';
11
10
  import { handleAssetsManifest, handleAssetsManifest_assertUsageCssTarget } from './handleAssetsManifest.js';
12
- import { isViteClientSide, isViteServerSide_onlySsrEnv } from '../../shared/isViteServerSide.js';
13
- import { runPrerender_forceExit, runPrerenderFromAutoRun } from '../../../prerender/runPrerenderEntry.js';
11
+ import { isViteServerSide_onlySsrEnv } from '../../shared/isViteServerSide.js';
12
+ import { runPrerenderFromAutoRun } from '../../../prerender/runPrerenderEntry.js';
14
13
  import { getManifestFilePathRelative } from '../../shared/getManifestFilePathRelative.js';
15
14
  const globalObject = getGlobalObject('build/pluginAutoFullBuild.ts', {
16
15
  forceExit: false,
@@ -54,16 +53,12 @@ function pluginAutoFullBuild() {
54
53
  closeBundle: {
55
54
  sequential: true,
56
55
  order: 'post',
57
- async handler() {
56
+ handler() {
58
57
  onSetupBuild();
59
58
  handleAssetsManifest_assertUsageCssTarget(config, this.environment);
60
- const vikeConfig = await getVikeConfigInternal();
61
- if (globalObject.forceExit &&
62
- // Let vike:build:pluginBuildApp force exit
63
- !vikeConfig.config.vite6BuilderApp) {
64
- runPrerender_forceExit();
65
- assert(false);
66
- }
59
+ /* Let vike:build:pluginBuildApp force exit
60
+ runPrerender_forceExit()
61
+ */
67
62
  },
68
63
  },
69
64
  },
@@ -72,10 +67,9 @@ function pluginAutoFullBuild() {
72
67
  async function triggerFullBuild(config, viteEnv, bundle) {
73
68
  const vikeConfig = await getVikeConfigInternal();
74
69
  // Whether builder.buildApp() is being used, see plugin:build:pluginBuildApp
75
- const isBuilderApp = vikeConfig.config.vite6BuilderApp;
76
70
  // If builder.buildApp() => trigger at end of `this.environment.name === 'ssr'`.
77
71
  // Else => trigger at end of client-side build.
78
- if (isBuilderApp ? !isViteServerSide_onlySsrEnv(config, viteEnv) : !isViteClientSide(config, viteEnv))
72
+ if (!isViteServerSide_onlySsrEnv(config, viteEnv))
79
73
  return;
80
74
  if (isEntirelyDisabled(vikeConfig))
81
75
  return;
@@ -86,27 +80,15 @@ async function triggerFullBuild(config, viteEnv, bundle) {
86
80
  if (!bundle[getManifestFilePathRelative(config.build.manifest)])
87
81
  return;
88
82
  const configInline = getFullBuildInlineConfig(config);
89
- if (!isBuilderApp) {
90
- await build(setSSR(configInline));
91
- }
92
- else {
93
- // The server build is already called by builder.buildApp()
94
- }
83
+ /* Already triggered by vike:build:pluginBuildApp
84
+ await build(setSSR(configInline))
85
+ */
95
86
  if (isPrerenderAutoRunEnabled(vikeConfig)) {
96
87
  const res = await runPrerenderFromAutoRun(configInline);
97
88
  globalObject.forceExit = res.forceExit;
98
89
  assert(wasPrerenderRun());
99
90
  }
100
91
  }
101
- function setSSR(configInline) {
102
- return {
103
- ...configInline,
104
- build: {
105
- ...configInline.build,
106
- ssr: true,
107
- },
108
- };
109
- }
110
92
  async function abortViteBuildSsr() {
111
93
  const vikeConfig = await getVikeConfigInternal();
112
94
  if (vikeConfig.config.disableAutoFullBuild !== true && isViteCliCall() && getViteConfigFromCli()?.build.ssr) {
@@ -3,7 +3,6 @@ import { runPrerender_forceExit } from '../../../prerender/runPrerenderEntry.js'
3
3
  import { resolveOutDir } from '../../shared/getOutDirs.js';
4
4
  import { assert } from '../../utils.js';
5
5
  import { isPrerenderForceExit } from './pluginAutoFullBuild.js';
6
- import { getVikeConfigInternal } from '../../shared/resolveVikeConfigInternal.js';
7
6
  function pluginBuildApp() {
8
7
  return [
9
8
  {
@@ -12,10 +11,7 @@ function pluginBuildApp() {
12
11
  enforce: 'pre',
13
12
  config: {
14
13
  order: 'pre',
15
- async handler(_config) {
16
- const vikeConfig = await getVikeConfigInternal();
17
- if (!vikeConfig.config.vite6BuilderApp)
18
- return;
14
+ handler(_config) {
19
15
  return {
20
16
  builder: {
21
17
  // Can be overridden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
@@ -37,10 +33,7 @@ function pluginBuildApp() {
37
33
  {
38
34
  name: 'vike:build:pluginBuildApp',
39
35
  apply: 'build',
40
- async config(config) {
41
- const vikeConfig = await getVikeConfigInternal();
42
- if (!vikeConfig.config.vite6BuilderApp)
43
- return;
36
+ config(config) {
44
37
  return {
45
38
  environments: {
46
39
  ssr: {
@@ -13,8 +13,9 @@ async function determineOptimizeDeps(config) {
13
13
  const { entriesClient, entriesServer, includeClient, includeServer } = await getPageDeps(config, pageConfigs);
14
14
  config.optimizeDeps.include = add(config.optimizeDeps.include, includeClient);
15
15
  config.optimizeDeps.entries = add(config.optimizeDeps.entries, entriesClient);
16
- // Workaround until https://github.com/vitejs/vite-plugin-react/issues/650
17
- // - TODO/soon: remove workaround once https://github.com/vitejs/vite/pull/20495 is released
16
+ // Workaround for https://github.com/vitejs/vite-plugin-react/issues/650
17
+ // - The issue was closed as completed with https://github.com/vitejs/vite/pull/20495 but it doesn't fix the issue and the workaround is still needed.
18
+ // - TO-DO/eventually: try removing the workaround and see if the CI fails (at test/@cloudflare_vite-plugin/) — maybe the issue will get fixed at some point.
18
19
  includeServer.push('react/jsx-dev-runtime');
19
20
  for (const envName in config.environments) {
20
21
  const env = config.environments[envName];
@@ -7,6 +7,7 @@ import { getModuleFilePathAbsolute } from '../shared/getFilePath.js';
7
7
  import { getExportNames } from '../shared/parseEsModule.js';
8
8
  import { normalizeId } from '../shared/normalizeId.js';
9
9
  import { isV1Design } from '../shared/resolveVikeConfigInternal.js';
10
+ import { isViteServerSide, isViteServerSide_extraSafe } from '../shared/isViteServerSide.js';
10
11
  function pluginFileEnv() {
11
12
  let config;
12
13
  let viteDevServer;
@@ -28,7 +29,7 @@ function pluginFileEnv() {
28
29
  const importers = Array.from(moduleInfo.importers)
29
30
  .map((m) => m.id)
30
31
  .filter((id) => id !== null);
31
- assertFileEnv(id, !!options?.ssr, importers,
32
+ assertFileEnv(id, isViteServerSide_extraSafe(config, options, this.environment), importers,
32
33
  // In dev, we only show a warning because we don't want to disrupt when the user plays with settings such as [ssr](https://vike.dev/ssr).
33
34
  true);
34
35
  },
@@ -40,7 +41,7 @@ function pluginFileEnv() {
40
41
  return;
41
42
  if (skip(id))
42
43
  return;
43
- const isServerSide = !!options?.ssr;
44
+ const isServerSide = isViteServerSide_extraSafe(config, options, this.environment);
44
45
  if (!isWrongEnv(id, isServerSide))
45
46
  return;
46
47
  const { importers } = this.getModuleInfo(id);
@@ -66,7 +67,7 @@ function pluginFileEnv() {
66
67
  */
67
68
  return;
68
69
  }
69
- assertFileEnv(moduleId, !!config.build.ssr, importers, false);
70
+ assertFileEnv(moduleId, isViteServerSide(config, this.environment), importers, false);
70
71
  });
71
72
  },
72
73
  configResolved(config_) {
@@ -7,7 +7,7 @@ import { isViteServerSide, isViteServerSide_withoutEnv } from './isViteServerSid
7
7
  const debug = createDebugger('vike:outDir');
8
8
  function getOutDirs(configGlobal, viteEnv) {
9
9
  debug('getOutDirs()', new Error().stack);
10
- const outDir = getOutDirFromResolvedConfig(configGlobal);
10
+ const outDir = getOutDirFromResolvedConfig(configGlobal, viteEnv);
11
11
  assertOutDirResolved(outDir, configGlobal, viteEnv);
12
12
  const outDirs = getOutDirsAll(outDir, configGlobal.root);
13
13
  assertNormalization(outDirs.outDirRoot);
@@ -114,7 +114,8 @@ function assertOutDirResolved(outDir, configGlobal, viteEnv) {
114
114
  assert('/client'.length === '/server'.length);
115
115
  const outDirCorrected = outDir.slice(0, -1 * '/client'.length);
116
116
  const wrongUsage = `You've set Vite's config.build.outDir to ${pc.cyan(outDir)} but you should set it to ${pc.cyan(outDirCorrected)} instead.`;
117
- if (isViteServerSide_withoutEnv(configGlobal, viteEnv)) {
117
+ const isServerSide = isViteServerSide_withoutEnv(configGlobal, viteEnv);
118
+ if (isServerSide) {
118
119
  assertUsage(outDir.endsWith('/server'), wrongUsage);
119
120
  }
120
121
  else {
@@ -128,8 +129,8 @@ function getOutDirFromViteUserConfig(config) {
128
129
  outDir = normalizeOutDir(outDir);
129
130
  return outDir;
130
131
  }
131
- function getOutDirFromResolvedConfig(config) {
132
- let outDir = config.build.outDir;
132
+ function getOutDirFromResolvedConfig(config, viteEnv) {
133
+ let outDir = viteEnv?.config.build?.outDir ?? config.build.outDir;
133
134
  assert(outDir);
134
135
  outDir = normalizeOutDir(outDir);
135
136
  return outDir;
@@ -9,8 +9,8 @@ type ViteEnv = {
9
9
  name?: string;
10
10
  config: EnvironmentOptions | Environment['config'];
11
11
  };
12
- declare function isViteServerSide_withoutEnv(configGlobal: ResolvedConfig | UserConfig, viteEnv?: ViteEnv): boolean;
13
12
  declare function isViteServerSide(configGlobal: ResolvedConfig | UserConfig, viteEnv: ViteEnv): boolean;
13
+ declare function isViteServerSide_withoutEnv(configGlobal: ResolvedConfig | UserConfig, viteEnv?: ViteEnv | undefined): boolean;
14
14
  declare function isViteClientSide(configGlobal: ResolvedConfig, viteEnv: ViteEnv): boolean;
15
15
  declare function isViteServerSide_onlySsrEnv(configGlobal: ResolvedConfig, viteEnv: ViteEnv): boolean;
16
16
  declare function isViteServerSide_extraSafe(config: ResolvedConfig, options: {