vike 0.4.171-commit-bb72501 → 0.4.171-commit-f9548df

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 (58) hide show
  1. package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +12 -4
  2. package/dist/cjs/node/prerender/runPrerender.js +30 -11
  3. package/dist/cjs/node/prerender/utils.js +1 -0
  4. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +7 -7
  5. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
  6. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
  7. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +22 -3
  8. package/dist/cjs/node/runtime/utils.js +1 -0
  9. package/dist/cjs/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +50 -42
  10. package/dist/cjs/shared/route/index.js +2 -2
  11. package/dist/cjs/shared/route/resolveRouteFunction.js +2 -2
  12. package/dist/cjs/shared/utils.js +2 -0
  13. package/dist/cjs/utils/assert.js +1 -1
  14. package/dist/cjs/utils/assertNodeVersion.js +1 -1
  15. package/dist/cjs/utils/changeEnumerable.js +9 -0
  16. package/dist/cjs/utils/normalizeHeaders.js +13 -0
  17. package/dist/cjs/utils/objectAssign.js +1 -1
  18. package/dist/cjs/utils/objectDefineProperty.js +8 -0
  19. package/dist/cjs/utils/projectInfo.js +1 -1
  20. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +4 -2
  21. package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -3
  22. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +11 -7
  23. package/dist/esm/client/shared/loadUserFilesClientSide.js +4 -4
  24. package/dist/esm/node/plugin/shared/addSsrMiddleware.js +9 -4
  25. package/dist/esm/node/prerender/runPrerender.js +31 -12
  26. package/dist/esm/node/prerender/utils.d.ts +1 -0
  27. package/dist/esm/node/prerender/utils.js +1 -0
  28. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +7 -7
  29. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -9
  30. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
  31. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  32. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
  33. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +55 -46
  34. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +23 -4
  35. package/dist/esm/node/runtime/utils.d.ts +1 -0
  36. package/dist/esm/node/runtime/utils.js +1 -0
  37. package/dist/esm/shared/{addUrlComputedProps.d.ts → getPageContextUrlComputed.d.ts} +23 -21
  38. package/dist/esm/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +50 -42
  39. package/dist/esm/shared/route/index.d.ts +3 -3
  40. package/dist/esm/shared/route/index.js +2 -2
  41. package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
  42. package/dist/esm/shared/route/resolveRouteFunction.js +2 -2
  43. package/dist/esm/shared/types.d.ts +24 -4
  44. package/dist/esm/shared/utils.d.ts +2 -0
  45. package/dist/esm/shared/utils.js +2 -0
  46. package/dist/esm/types/index.d.ts +1 -1
  47. package/dist/esm/utils/assert.js +1 -1
  48. package/dist/esm/utils/assertNodeVersion.js +1 -1
  49. package/dist/esm/utils/changeEnumerable.d.ts +2 -0
  50. package/dist/esm/utils/changeEnumerable.js +5 -0
  51. package/dist/esm/utils/normalizeHeaders.d.ts +1 -0
  52. package/dist/esm/utils/normalizeHeaders.js +9 -0
  53. package/dist/esm/utils/objectAssign.js +1 -1
  54. package/dist/esm/utils/objectDefineProperty.d.ts +4 -0
  55. package/dist/esm/utils/objectDefineProperty.js +4 -0
  56. package/dist/esm/utils/projectInfo.d.ts +2 -2
  57. package/dist/esm/utils/projectInfo.js +1 -1
  58. package/package.json +2 -2
@@ -5,7 +5,7 @@ export { runPrerender_forceExit };
5
5
  import '../runtime/page-files/setup.js';
6
6
  import path from 'path';
7
7
  import { route } from '../../shared/route/index.js';
8
- import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable, getOutDirs, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, handleNodeEnv_prerender, pLimit, assertPathFilesystemAbsolute, isArray } from './utils.js';
8
+ import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable, getOutDirs, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, handleNodeEnv_prerender, pLimit, assertPathFilesystemAbsolute, isArray, changeEnumerable } from './utils.js';
9
9
  import { prerenderPage, prerender404Page, getRenderContext, getPageContextInitEnhanced } from '../runtime/renderPage/renderPageAlreadyRouted.js';
10
10
  import pc from '@brillout/picocolors';
11
11
  import { cpus } from 'os';
@@ -19,7 +19,7 @@ import { getConfigValueFilePathToShowToUser } from '../../shared/page-configs/he
19
19
  import { getConfigValue } from '../../shared/page-configs/getConfigValue.js';
20
20
  import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
21
21
  import { isErrorPage } from '../../shared/error-page.js';
22
- import { addUrlComputedProps } from '../../shared/addUrlComputedProps.js';
22
+ import { getPageContextUrlComputed } from '../../shared/getPageContextUrlComputed.js';
23
23
  import { isAbortError } from '../../shared/route/abort.js';
24
24
  import { loadUserFilesServerSide } from '../runtime/renderPage/loadUserFilesServerSide.js';
25
25
  import { getHookFromPageConfig, getHookFromPageConfigGlobal, getHookTimeoutDefault, setIsPrerenderering } from '../../shared/hooks/getHook.js';
@@ -240,9 +240,9 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
240
240
  prerenderContext.pageContexts.push(pageContextNew);
241
241
  if (pageContext) {
242
242
  objectAssign(pageContextNew, {
243
- _pageContextAlreadyProvidedByOnPrerenderHook: true,
244
- ...pageContext
243
+ _pageContextAlreadyProvidedByOnPrerenderHook: true
245
244
  });
245
+ objectAssign(pageContextNew, pageContext);
246
246
  }
247
247
  });
248
248
  })));
@@ -300,14 +300,11 @@ function createPageContext(urlOriginal, renderContext, prerenderContext) {
300
300
  _prerenderContext: prerenderContext
301
301
  };
302
302
  const pageContextInit = {
303
- urlOriginal,
304
- ...prerenderContext.pageContextInit
303
+ urlOriginal
305
304
  };
305
+ objectAssign(pageContextInit, prerenderContext.pageContextInit);
306
306
  {
307
- const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, renderContext, {
308
- // We set `enumerable` to `false` to avoid computed URL properties from being iterated & copied in a onPrerenderStart() hook, e.g. /examples/i18n/
309
- urlComputedPropsNonEnumerable: true
310
- });
307
+ const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, renderContext);
311
308
  objectAssign(pageContext, pageContextInitEnhanced);
312
309
  }
313
310
  return pageContext;
@@ -382,6 +379,8 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
382
379
  pageContext._urlOriginalBeforeHook = pageContext.urlOriginal;
383
380
  });
384
381
  const docLink = 'https://vike.dev/i18n#pre-rendering';
382
+ // Set `enumerable` to `false` to avoid computed URL properties from being iterated & copied in onPrerenderStart() hook, e.g. /examples/i18n/
383
+ const { restoreEnumerable, addPageContextComputedUrl } = makePageContextComputedUrlNonEnumerable(prerenderContext.pageContexts);
385
384
  let result = await executeHook(() => hookFn({
386
385
  pageContexts: prerenderContext.pageContexts,
387
386
  // TODO/v1-release: remove warning
@@ -393,6 +392,7 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
393
392
  return prerenderContext.pageContexts;
394
393
  }
395
394
  }), onPrerenderStartHook, null);
395
+ restoreEnumerable();
396
396
  if (result === null || result === undefined) {
397
397
  return;
398
398
  }
@@ -430,9 +430,8 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
430
430
  hookName
431
431
  };
432
432
  }
433
- // Restore as URL computed props are lost when user makes a pageContext copy
434
- addUrlComputedProps(pageContext);
435
433
  });
434
+ addPageContextComputedUrl(prerenderContext.pageContexts);
436
435
  }
437
436
  async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete) {
438
437
  const globalContext = getGlobalContext();
@@ -714,3 +713,23 @@ function assertIsNotAbort(err, urlOr404) {
714
713
  assert(abortCall);
715
714
  assertUsage(false, `${pc.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOr404} but ${pc.cyan(abortCaller)} isn't supported for pre-rendered pages`);
716
715
  }
716
+ function makePageContextComputedUrlNonEnumerable(pageContexts) {
717
+ change(false);
718
+ return { restoreEnumerable, addPageContextComputedUrl };
719
+ function restoreEnumerable() {
720
+ change(true);
721
+ }
722
+ function addPageContextComputedUrl(pageContexts) {
723
+ // Add URL computed props to the user-generated pageContext copies
724
+ pageContexts.forEach((pageContext) => {
725
+ const pageContextUrlComputed = getPageContextUrlComputed(pageContext);
726
+ objectAssign(pageContext, pageContextUrlComputed);
727
+ });
728
+ }
729
+ function change(enumerable) {
730
+ pageContexts.forEach((pageContext) => {
731
+ changeEnumerable(pageContext, 'urlPathname', enumerable);
732
+ changeEnumerable(pageContext, 'urlParsed', enumerable);
733
+ });
734
+ }
735
+ }
@@ -13,3 +13,4 @@ export * from '../../utils/assertNodeEnv.js';
13
13
  export * from '../../utils/pLimit.js';
14
14
  export * from '../../utils/assertPathFilesystemAbsolute.js';
15
15
  export * from '../../utils/isArray.js';
16
+ export * from '../../utils/changeEnumerable.js';
@@ -15,3 +15,4 @@ export * from '../../utils/assertNodeEnv.js';
15
15
  export * from '../../utils/pLimit.js';
16
16
  export * from '../../utils/assertPathFilesystemAbsolute.js';
17
17
  export * from '../../utils/isArray.js';
18
+ export * from '../../utils/changeEnumerable.js';
@@ -63,13 +63,13 @@ function getRenderHook(pageContext) {
63
63
  assertUsage(false, [
64
64
  `No ${hookName}() hook found, see https://vike.dev/${hookName}`
65
65
  /*
66
- 'See https://vike.dev/render-modes for more information.',
67
- [
68
- // 'Loaded config files (none of them define the onRenderHtml() hook):',
69
- 'Loaded server-side page files (none of them `export { render }`):',
70
- ...pageContext._pageFilePathsLoaded.map((f, i) => ` (${i + 1}): ${f}`)
71
- ].join('\n')
72
- */
66
+ 'See https://vike.dev/render-modes for more information.',
67
+ [
68
+ // 'Loaded config files (none of them define the onRenderHtml() hook):',
69
+ 'Loaded server-side page files (none of them `export { render }`):',
70
+ ...pageContext._pageFilePathsLoaded.map((f, i) => ` (${i + 1}): ${f}`)
71
+ ].join('\n')
72
+ */
73
73
  ].join(' '));
74
74
  }
75
75
  return hookFound;
@@ -14,19 +14,11 @@ type PageContext_loadUserFilesServerSide = PageContextGetPageAssets & PageContex
14
14
  type PageFiles = PromiseType<ReturnType<typeof loadUserFilesServerSide>>;
15
15
  declare function loadUserFilesServerSide(pageContext: {
16
16
  _pageId: string;
17
- } & PageContext_loadUserFilesServerSide): Promise<{
17
+ } & PageContext_loadUserFilesServerSide): Promise<import("../../../shared/getPageFiles/getExports.js").PageContextExports & {
18
18
  Page: unknown;
19
19
  _isHtmlOnly: boolean;
20
20
  _passToClient: string[];
21
21
  _pageFilePathsLoaded: string[];
22
- source: import("../../../shared/getPageFiles/getExports.js").Source;
23
- sources: import("../../../shared/getPageFiles/getExports.js").Sources;
24
- from: import("../../../shared/getPageFiles/getExports.js").From;
25
- config: Record<string, unknown>;
26
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
27
- exports: Record<string, unknown>;
28
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
29
- pageExports: Record<string, unknown>;
30
22
  } & {
31
23
  __getPageAssets: () => Promise<PageAsset[]>;
32
24
  }>;
@@ -10,7 +10,7 @@ import { getGlobalContext } from '../globalContext.js';
10
10
  import { loadConfigValues } from '../../../shared/page-configs/loadConfigValues.js';
11
11
  async function loadUserFilesServerSide(pageContext) {
12
12
  const pageConfig = findPageConfig(pageContext._pageConfigs, pageContext._pageId); // Make pageConfig globally available as pageContext._pageConfig?
13
- const [{ pageFilesLoaded, pageConfigLoaded, ...pageContextExports }] = await Promise.all([
13
+ const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
14
14
  loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext._pageId, !getGlobalContext().isProduction),
15
15
  analyzePageClientSideInit(pageContext._pageFilesAll, pageContext._pageId, { sharedPageFilesAlreadyLoaded: true })
16
16
  ]);
@@ -35,8 +35,8 @@ async function loadUserFilesServerSide(pageContext) {
35
35
  });
36
36
  }
37
37
  const pageContextAddendum = {};
38
+ objectAssign(pageContextAddendum, pageContextExports);
38
39
  objectAssign(pageContextAddendum, {
39
- ...pageContextExports,
40
40
  Page: pageContextExports.exports.Page,
41
41
  _isHtmlOnly: isHtmlOnly,
42
42
  _passToClient: passToClient,
@@ -101,8 +101,7 @@ async function loadPageUserFiles(pageFilesAll, pageConfig, pageId, isDev) {
101
101
  await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
102
102
  const pageContextExports = getPageContextExports(pageFilesServerSide, pageConfigLoaded);
103
103
  return {
104
- ...pageContextExports,
105
- pageFilesLoaded: pageFilesServerSide,
106
- pageConfigLoaded
104
+ pageContextExports,
105
+ pageFilesLoaded: pageFilesServerSide
107
106
  };
108
107
  }
@@ -1,6 +1,6 @@
1
1
  export { preparePageContextForUserConsumptionServerSide };
2
2
  export type { PageContextForUserConsumptionServerSide };
3
- import { PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
3
+ import { PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
4
4
  import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
5
5
  import type { PageContextExports } from '../../../shared/getPageFiles/getExports.js';
6
6
  import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
@@ -9,7 +9,7 @@ type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal
9
9
  /** @deprecated */
10
10
  url: string;
11
11
  urlPathname: string;
12
- urlParsed: PageContextUrlComputedPropsInternal['urlParsed'];
12
+ urlParsed: PageContextUrlInternal['urlParsed'];
13
13
  routeParams: Record<string, string>;
14
14
  Page: unknown;
15
15
  _pageId: string;
@@ -1,10 +1,10 @@
1
1
  export { preparePageContextForUserConsumptionServerSide };
2
2
  import { assert, isPlainObject, isObject } from '../utils.js';
3
3
  import { sortPageContext } from '../../../shared/sortPageContext.js';
4
- import { assertPageContextUrlComputedProps } from '../../../shared/addUrlComputedProps.js';
4
+ import { assertPageContextUrl } from '../../../shared/getPageContextUrlComputed.js';
5
5
  import { addIs404ToPageProps } from '../../../shared/addIs404ToPageProps.js';
6
6
  function preparePageContextForUserConsumptionServerSide(pageContext) {
7
- assertPageContextUrlComputedProps(pageContext);
7
+ assertPageContextUrl(pageContext);
8
8
  assert(isPlainObject(pageContext.routeParams));
9
9
  assert('Page' in pageContext);
10
10
  assert(isObject(pageContext.pageExports));
@@ -7,7 +7,7 @@ export type { RenderContext };
7
7
  export type { PageContextAfterRender };
8
8
  export type { PageContextInitEnhanced };
9
9
  import { type PageFile } from '../../../shared/getPageFiles.js';
10
- import { type PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
10
+ import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
11
11
  import { HttpResponse } from './createHttpResponseObject.js';
12
12
  import { PageContext_loadUserFilesServerSide, type PageFiles } from './loadUserFilesServerSide.js';
13
13
  import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
@@ -24,7 +24,7 @@ declare function renderPageAlreadyRouted<PageContext extends {
24
24
  routeParams: Record<string, string>;
25
25
  errorWhileRendering: null | Error;
26
26
  _httpRequestId: number;
27
- } & PageContextInitEnhanced & PageContextUrlComputedPropsInternal & PageContext_loadUserFilesServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
27
+ } & PageContextInitEnhanced & PageContextUrlInternal & PageContext_loadUserFilesServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
28
28
  declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles & {
29
29
  routeParams: Record<string, string>;
30
30
  _pageId: string;
@@ -38,6 +38,8 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
38
38
  pageContextSerialized: null;
39
39
  pageContext: {
40
40
  urlOriginal: string;
41
+ headersOriginal?: unknown;
42
+ headers?: unknown;
41
43
  } & {
42
44
  _objectCreatedByVike: boolean;
43
45
  _baseServer: string;
@@ -51,25 +53,23 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
51
53
  _onBeforeRouteHook: Hook | null;
52
54
  _pageContextInit: {
53
55
  urlOriginal: string;
56
+ headersOriginal?: unknown;
57
+ headers?: unknown;
54
58
  };
55
59
  _urlRewrite: string | null;
56
60
  _urlHandler: ((url: string) => string) | null;
57
61
  isClientSideNavigation: boolean;
58
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
59
- _urlRewrite: string | null;
60
62
  } & {
63
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
64
+ urlPathname: string;
65
+ url: string;
66
+ } & {
67
+ headers: Record<string, string> | null;
68
+ } & import("../../../shared/getPageFiles/getExports.js").PageContextExports & {
61
69
  Page: unknown;
62
70
  _isHtmlOnly: boolean;
63
71
  _passToClient: string[];
64
72
  _pageFilePathsLoaded: string[];
65
- source: import("../../../shared/getPageFiles/getExports.js").Source;
66
- sources: import("../../../shared/getPageFiles/getExports.js").Sources;
67
- from: import("../../../shared/getPageFiles/getExports.js").From;
68
- config: Record<string, unknown>;
69
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
70
- exports: Record<string, unknown>;
71
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
72
- pageExports: Record<string, unknown>;
73
73
  } & {
74
74
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
75
75
  } & {
@@ -89,6 +89,8 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
89
89
  pageContextSerialized: string;
90
90
  pageContext: {
91
91
  urlOriginal: string;
92
+ headersOriginal?: unknown;
93
+ headers?: unknown;
92
94
  } & {
93
95
  _objectCreatedByVike: boolean;
94
96
  _baseServer: string;
@@ -102,25 +104,23 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
102
104
  _onBeforeRouteHook: Hook | null;
103
105
  _pageContextInit: {
104
106
  urlOriginal: string;
107
+ headersOriginal?: unknown;
108
+ headers?: unknown;
105
109
  };
106
110
  _urlRewrite: string | null;
107
111
  _urlHandler: ((url: string) => string) | null;
108
112
  isClientSideNavigation: boolean;
109
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
110
- _urlRewrite: string | null;
111
113
  } & {
114
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
115
+ urlPathname: string;
116
+ url: string;
117
+ } & {
118
+ headers: Record<string, string> | null;
119
+ } & import("../../../shared/getPageFiles/getExports.js").PageContextExports & {
112
120
  Page: unknown;
113
121
  _isHtmlOnly: boolean;
114
122
  _passToClient: string[];
115
123
  _pageFilePathsLoaded: string[];
116
- source: import("../../../shared/getPageFiles/getExports.js").Source;
117
- sources: import("../../../shared/getPageFiles/getExports.js").Sources;
118
- from: import("../../../shared/getPageFiles/getExports.js").From;
119
- config: Record<string, unknown>;
120
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
121
- exports: Record<string, unknown>;
122
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
123
- pageExports: Record<string, unknown>;
124
124
  } & {
125
125
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
126
126
  } & {
@@ -141,6 +141,8 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
141
141
  pageContextSerialized: null;
142
142
  pageContext: {
143
143
  urlOriginal: string;
144
+ headersOriginal?: unknown;
145
+ headers?: unknown;
144
146
  } & {
145
147
  _objectCreatedByVike: boolean;
146
148
  _baseServer: string;
@@ -154,25 +156,23 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
154
156
  _onBeforeRouteHook: Hook | null;
155
157
  _pageContextInit: {
156
158
  urlOriginal: string;
159
+ headersOriginal?: unknown;
160
+ headers?: unknown;
157
161
  };
158
162
  _urlRewrite: string | null;
159
163
  _urlHandler: ((url: string) => string) | null;
160
164
  isClientSideNavigation: boolean;
161
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
162
- _urlRewrite: string | null;
163
165
  } & {
166
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
167
+ urlPathname: string;
168
+ url: string;
169
+ } & {
170
+ headers: Record<string, string> | null;
171
+ } & import("../../../shared/getPageFiles/getExports.js").PageContextExports & {
164
172
  Page: unknown;
165
173
  _isHtmlOnly: boolean;
166
174
  _passToClient: string[];
167
175
  _pageFilePathsLoaded: string[];
168
- source: import("../../../shared/getPageFiles/getExports.js").Source;
169
- sources: import("../../../shared/getPageFiles/getExports.js").Sources;
170
- from: import("../../../shared/getPageFiles/getExports.js").From;
171
- config: Record<string, unknown>;
172
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
173
- exports: Record<string, unknown>;
174
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
175
- pageExports: Record<string, unknown>;
176
176
  } & {
177
177
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
178
178
  } & {
@@ -192,6 +192,8 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
192
192
  pageContextSerialized: string;
193
193
  pageContext: {
194
194
  urlOriginal: string;
195
+ headersOriginal?: unknown;
196
+ headers?: unknown;
195
197
  } & {
196
198
  _objectCreatedByVike: boolean;
197
199
  _baseServer: string;
@@ -205,25 +207,23 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
205
207
  _onBeforeRouteHook: Hook | null;
206
208
  _pageContextInit: {
207
209
  urlOriginal: string;
210
+ headersOriginal?: unknown;
211
+ headers?: unknown;
208
212
  };
209
213
  _urlRewrite: string | null;
210
214
  _urlHandler: ((url: string) => string) | null;
211
215
  isClientSideNavigation: boolean;
212
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
213
- _urlRewrite: string | null;
214
216
  } & {
217
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
218
+ urlPathname: string;
219
+ url: string;
220
+ } & {
221
+ headers: Record<string, string> | null;
222
+ } & import("../../../shared/getPageFiles/getExports.js").PageContextExports & {
215
223
  Page: unknown;
216
224
  _isHtmlOnly: boolean;
217
225
  _passToClient: string[];
218
226
  _pageFilePathsLoaded: string[];
219
- source: import("../../../shared/getPageFiles/getExports.js").Source;
220
- sources: import("../../../shared/getPageFiles/getExports.js").Sources;
221
- from: import("../../../shared/getPageFiles/getExports.js").From;
222
- config: Record<string, unknown>;
223
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
224
- exports: Record<string, unknown>;
225
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
226
- pageExports: Record<string, unknown>;
227
227
  } & {
228
228
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
229
229
  } & {
@@ -242,8 +242,9 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
242
242
  type PageContextInitEnhanced = ReturnType<typeof getPageContextInitEnhanced>;
243
243
  declare function getPageContextInitEnhanced(pageContextInit: {
244
244
  urlOriginal: string;
245
- }, renderContext: RenderContext, { urlComputedPropsNonEnumerable, ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
246
- urlComputedPropsNonEnumerable?: boolean;
245
+ headersOriginal?: unknown;
246
+ headers?: unknown;
247
+ }, renderContext: RenderContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
247
248
  ssr?: {
248
249
  urlRewrite: null | string;
249
250
  urlHandler: null | ((url: string) => string);
@@ -251,6 +252,8 @@ declare function getPageContextInitEnhanced(pageContextInit: {
251
252
  };
252
253
  }): {
253
254
  urlOriginal: string;
255
+ headersOriginal?: unknown;
256
+ headers?: unknown;
254
257
  } & {
255
258
  _objectCreatedByVike: boolean;
256
259
  _baseServer: string;
@@ -264,12 +267,18 @@ declare function getPageContextInitEnhanced(pageContextInit: {
264
267
  _onBeforeRouteHook: Hook | null;
265
268
  _pageContextInit: {
266
269
  urlOriginal: string;
270
+ headersOriginal?: unknown;
271
+ headers?: unknown;
267
272
  };
268
273
  _urlRewrite: string | null;
269
274
  _urlHandler: ((url: string) => string) | null;
270
275
  isClientSideNavigation: boolean;
271
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
272
- _urlRewrite: string | null;
276
+ } & {
277
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
278
+ urlPathname: string;
279
+ url: string;
280
+ } & {
281
+ headers: Record<string, string> | null;
273
282
  };
274
283
  type RenderContext = {
275
284
  pageFilesAll: PageFile[];
@@ -6,9 +6,9 @@ export { getRenderContext };
6
6
  import { getErrorPageId } from '../../../shared/error-page.js';
7
7
  import { getHtmlString } from '../html/renderHtml.js';
8
8
  import { getPageFilesAll } from '../../../shared/getPageFiles.js';
9
- import { assert, assertUsage, hasProp, objectAssign } from '../utils.js';
9
+ import { assert, assertUsage, assertWarning, hasProp, normalizeHeaders, objectAssign } from '../utils.js';
10
10
  import { serializePageContextClientSide } from '../html/serializePageContextClientSide.js';
11
- import { addUrlComputedProps } from '../../../shared/addUrlComputedProps.js';
11
+ import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
12
12
  import { getGlobalContext } from '../globalContext.js';
13
13
  import { createHttpResponseObject, createHttpResponsePageContextJson } from './createHttpResponseObject.js';
14
14
  import { loadUserFilesServerSide } from './loadUserFilesServerSide.js';
@@ -116,7 +116,7 @@ async function prerender404Page(renderContext, pageContextInit_) {
116
116
  objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
117
117
  return prerenderPage(pageContext);
118
118
  }
119
- function getPageContextInitEnhanced(pageContextInit, renderContext, { urlComputedPropsNonEnumerable = false, ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
119
+ function getPageContextInitEnhanced(pageContextInit, renderContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
120
120
  urlRewrite: null,
121
121
  urlHandler: null,
122
122
  isClientSideNavigation: false
@@ -143,7 +143,26 @@ function getPageContextInitEnhanced(pageContextInit, renderContext, { urlCompute
143
143
  _urlHandler: urlHandler,
144
144
  isClientSideNavigation
145
145
  });
146
- addUrlComputedProps(pageContextInitEnhanced, !urlComputedPropsNonEnumerable);
146
+ // pageContext.urlParsed
147
+ const pageContextUrlComputed = getPageContextUrlComputed(pageContextInitEnhanced);
148
+ objectAssign(pageContextInitEnhanced, pageContextUrlComputed);
149
+ // pageContext.headers
150
+ {
151
+ let headers;
152
+ if (pageContextInit.headersOriginal) {
153
+ headers = normalizeHeaders(pageContextInit.headersOriginal);
154
+ assertUsage(!('headers' in pageContextInit), "You're defining pageContextInit.headersOriginal as well as pageContextInit.headers but you should only define pageContextInit.headersOriginal instead, see https://vike.dev/headers");
155
+ }
156
+ else if (pageContextInit.headers) {
157
+ headers = pageContextInit.headers;
158
+ // TODO/next-major-release: assertUsage() instead of assertWarning()
159
+ assertWarning(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
160
+ }
161
+ else {
162
+ headers = null;
163
+ }
164
+ objectAssign(pageContextInitEnhanced, { headers });
165
+ }
147
166
  return pageContextInitEnhanced;
148
167
  }
149
168
  // TODO: remove getRenderContext() in favor of getGlobalObject() + reloadGlobalContext()
@@ -50,3 +50,4 @@ export * from '../../utils/formatHintLog.js';
50
50
  export * from '../../utils/joinEnglish.js';
51
51
  export * from '../../utils/isArrayOfStrings.js';
52
52
  export * from '../../utils/escapeHtml.js';
53
+ export * from '../../utils/normalizeHeaders.js';
@@ -53,3 +53,4 @@ export * from '../../utils/formatHintLog.js';
53
53
  export * from '../../utils/joinEnglish.js';
54
54
  export * from '../../utils/isArrayOfStrings.js';
55
55
  export * from '../../utils/escapeHtml.js';
56
+ export * from '../../utils/normalizeHeaders.js';
@@ -1,9 +1,9 @@
1
- export { addUrlComputedProps };
2
- export { assertPageContextUrlComputedProps };
3
- export type { PageContextUrlComputedPropsInternal };
4
- export type { PageContextUrlComputedPropsClient };
5
- export type { PageContextUrlComputedPropsServer };
6
- export type { PageContextUrlSources };
1
+ export { getPageContextUrlComputed };
2
+ export { assertPageContextUrl };
3
+ export type { PageContextUrlInternal };
4
+ export type { PageContextUrlClient };
5
+ export type { PageContextUrlServer };
6
+ export type { PageContextUrlSource };
7
7
  export type { Url };
8
8
  type Url = {
9
9
  /** The URL origin, e.g. `https://example.com` of `https://example.com/product/42?details=yes#reviews` */
@@ -27,23 +27,24 @@ type Url = {
27
27
  /** @deprecated */
28
28
  searchString: null | string;
29
29
  };
30
- type PageContextUrlComputedPropsClient = {
30
+ type PageContextUrlComputed = {
31
+ /** Parsed information about the current URL */
32
+ urlParsed: Url;
33
+ /** The URL pathname, e.g. `/product/42` of `https://example.com/product/42?details=yes#reviews` */
34
+ urlPathname: string;
31
35
  /** @deprecated */
32
36
  url: string;
37
+ };
38
+ type PageContextUrl = {
33
39
  /** The URL of the HTTP request */
34
40
  urlOriginal: string;
35
- /** The URL pathname, e.g. `/product/42` of `https://example.com/product/42?details=yes#reviews` */
36
- urlPathname: string;
37
- /** Parsed information about the current URL */
38
- urlParsed: Url;
39
- };
40
- /** For Vike internal use */
41
- type PageContextUrlComputedPropsInternal = PageContextUrlComputedPropsClient & {
41
+ } & PageContextUrlComputed;
42
+ type PageContextUrlInternal = PageContextUrl & {
42
43
  _urlRewrite: string | null;
43
44
  };
44
- type HashProps = 'hash' | 'hashString' | 'hashOriginal';
45
- type PageContextUrlComputedPropsServer = PageContextUrlComputedPropsClient & {
46
- urlParsed: Omit<PageContextUrlComputedPropsClient['urlParsed'], HashProps> & {
45
+ type PageContextUrlClient = PageContextUrl;
46
+ type PageContextUrlServer = PageContextUrl & {
47
+ urlParsed: Omit<PageContextUrl['urlParsed'], HashProps> & {
47
48
  /** Only available on the client-side */
48
49
  hash: '';
49
50
  /** Only available on the client-side */
@@ -52,14 +53,15 @@ type PageContextUrlComputedPropsServer = PageContextUrlComputedPropsClient & {
52
53
  hashOriginal: null;
53
54
  };
54
55
  };
55
- declare function addUrlComputedProps<PageContext extends Record<string, unknown> & PageContextUrlSources>(pageContext: PageContext, enumerable?: boolean): asserts pageContext is PageContext & PageContextUrlComputedPropsInternal;
56
- type PageContextUrlSources = {
56
+ type HashProps = 'hash' | 'hashString' | 'hashOriginal';
57
+ declare function getPageContextUrlComputed(pageContext: PageContextUrlSource): PageContextUrlComputed;
58
+ type PageContextUrlSource = {
57
59
  urlOriginal: string;
58
60
  urlLogical?: string;
59
61
  _urlRewrite: string | null;
60
62
  _baseServer: string;
61
63
  _urlHandler: null | ((url: string) => string);
62
64
  };
63
- declare function assertPageContextUrlComputedProps(pageContext: {
65
+ declare function assertPageContextUrl(pageContext: {
64
66
  urlOriginal: string;
65
- } & PageContextUrlComputedPropsClient): void;
67
+ } & PageContextUrlClient): void;