vike 0.4.228-commit-ae4784f → 0.4.228-commit-90cfb1a

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 (34) hide show
  1. package/dist/cjs/client/server-routing-runtime/utils.js +1 -0
  2. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +3 -4
  3. package/dist/cjs/node/runtime/renderPage/executeHookGeneric.js +2 -2
  4. package/dist/cjs/node/runtime/universal-middleware.js +7 -1
  5. package/dist/cjs/node/runtime/utils.js +1 -0
  6. package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
  7. package/dist/cjs/shared/createPageContextShared.js +17 -0
  8. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  9. package/dist/esm/client/client-routing-runtime/{createPageContext.d.ts → createPageContextClientSide.d.ts} +8 -4
  10. package/dist/esm/client/client-routing-runtime/{createPageContext.js → createPageContextClientSide.js} +10 -9
  11. package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
  12. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +2 -2
  13. package/dist/esm/client/server-routing-runtime/{getPageContext.d.ts → createPageContextClientSide.d.ts} +8 -3
  14. package/dist/esm/client/server-routing-runtime/{getPageContext.js → createPageContextClientSide.js} +10 -8
  15. package/dist/esm/client/server-routing-runtime/entry.js +2 -2
  16. package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
  17. package/dist/esm/client/server-routing-runtime/utils.js +1 -0
  18. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +8 -5
  19. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +4 -5
  20. package/dist/esm/node/runtime/renderPage/executeHookGeneric.d.ts +2 -3
  21. package/dist/esm/node/runtime/renderPage/executeHookGeneric.js +2 -2
  22. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +15 -7
  23. package/dist/esm/node/runtime/renderPage.d.ts +6 -2
  24. package/dist/esm/node/runtime/universal-middleware.js +7 -1
  25. package/dist/esm/node/runtime/utils.d.ts +1 -0
  26. package/dist/esm/node/runtime/utils.js +1 -0
  27. package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
  28. package/dist/esm/shared/createPageContextShared.d.ts +9 -0
  29. package/dist/esm/shared/createPageContextShared.js +15 -0
  30. package/dist/esm/shared/hooks/getHook.d.ts +1 -1
  31. package/dist/esm/shared/page-configs/Config.d.ts +3 -3
  32. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  33. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  34. package/package.json +1 -1
@@ -30,3 +30,4 @@ __exportStar(require("../../utils/parseUrl.js"), exports);
30
30
  __exportStar(require("../../utils/slice.js"), exports);
31
31
  __exportStar(require("../../utils/unique.js"), exports); // Only used by Server Routing (not needed for Client Routing)
32
32
  __exportStar(require("../../utils/getPropAccessNotation.js"), exports);
33
+ __exportStar(require("../../utils/augmentType.js"), exports);
@@ -4,7 +4,7 @@ exports.createPageContextServerSide = createPageContextServerSide;
4
4
  exports.createPageContextServerSideWithoutGlobalContext = createPageContextServerSideWithoutGlobalContext;
5
5
  const utils_js_1 = require("../utils.js");
6
6
  const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
7
- const executeHookGeneric_js_1 = require("./executeHookGeneric.js");
7
+ const createPageContextShared_js_1 = require("../../../shared/createPageContextShared.js");
8
8
  async function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
9
9
  urlHandler: null,
10
10
  isClientSideNavigation: false
@@ -13,7 +13,6 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
13
13
  const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
14
14
  (0, utils_js_1.objectAssign)(pageContextCreated, pageContextInit);
15
15
  (0, utils_js_1.objectAssign)(pageContextCreated, {
16
- _objectCreatedByVike: true,
17
16
  // The following is defined on `pageContext` because we can eventually make these non-global
18
17
  _baseServer: globalContext.baseServer,
19
18
  _baseAssets: globalContext.baseAssets,
@@ -55,7 +54,8 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
55
54
  }
56
55
  (0, utils_js_1.objectAssign)(pageContextCreated, { headers });
57
56
  }
58
- await (0, executeHookGeneric_js_1.executeHookGenericGlobalCumulative)('onCreatePageContext', globalContext, pageContextCreated);
57
+ const pageContextAugmented = await (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext.pageConfigGlobal);
58
+ (0, utils_js_1.augmentType)(pageContextCreated, pageContextAugmented);
59
59
  return pageContextCreated;
60
60
  }
61
61
  function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
@@ -64,7 +64,6 @@ function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
64
64
  }
65
65
  function createPageContext(pageContextInit, isPrerendering) {
66
66
  const pageContext = {
67
- _isPageContextObject: true,
68
67
  isClientSide: false,
69
68
  isPrerendering
70
69
  };
@@ -10,8 +10,8 @@ async function executeHookGeneric(hookName, pageContext) {
10
10
  return;
11
11
  await (0, executeHook_js_1.executeHook)(() => hook.hookFn(pageContext), hook, pageContext);
12
12
  }
13
- async function executeHookGenericGlobalCumulative(hookName, globalContext, pageContext) {
14
- const hooks = (0, getHook_js_1.getHookFromPageConfigGlobalCumulative)(globalContext.pageConfigGlobal, hookName);
13
+ async function executeHookGenericGlobalCumulative(hookName, pageConfigGlobal, pageContext) {
14
+ const hooks = (0, getHook_js_1.getHookFromPageConfigGlobalCumulative)(pageConfigGlobal, hookName);
15
15
  await Promise.all(hooks.map(async (hook) => {
16
16
  await (0, executeHook_js_1.executeHook)(() => hook.hookFn(pageContext), hook, null);
17
17
  }));
@@ -3,7 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = universalVikeHandler;
4
4
  const index_js_1 = require("./index.js");
5
5
  async function universalVikeHandler(request, context, runtime) {
6
- const pageContextInit = { ...context, ...runtime, urlOriginal: request.url, headersOriginal: request.headers };
6
+ const pageContextInit = {
7
+ ...context,
8
+ ...runtime,
9
+ runtime,
10
+ urlOriginal: request.url,
11
+ headersOriginal: request.headers
12
+ };
7
13
  const pageContext = await (0, index_js_1.renderPage)(pageContextInit);
8
14
  const response = pageContext.httpResponse;
9
15
  const readable = response.getReadableWebStream();
@@ -75,3 +75,4 @@ __exportStar(require("../../utils/getPropAccessNotation.js"), exports);
75
75
  __exportStar(require("../../utils/PROJECT_VERSION.js"), exports);
76
76
  __exportStar(require("../../utils/genPromise.js"), exports);
77
77
  __exportStar(require("../../utils/makePublicCopy.js"), exports);
78
+ __exportStar(require("../../utils/augmentType.js"), exports);
@@ -12,7 +12,7 @@ function assertPageContextProvidedByUser(pageContextProvidedByUser, { hookName,
12
12
  (0, utils_js_1.assert)(!hookName.endsWith(')'));
13
13
  const errPrefix = `The ${picocolors_1.default.cyan('pageContext')} object provided by the ${hookName}() hook defined by ${hookFilePath}`;
14
14
  (0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(pageContextProvidedByUser), `${errPrefix} should be an object (but it's ${picocolors_1.default.cyan(`typeof pageContext === ${JSON.stringify(typeof pageContextProvidedByUser)}`)} instead)`);
15
- (0, utils_js_1.assertUsage)(!('_objectCreatedByVike' in pageContextProvidedByUser), `${errPrefix} shouldn't be the whole ${picocolors_1.default.cyan('pageContext')} object, see https://vike.dev/pageContext-manipulation#do-not-return-entire-pagecontext`);
15
+ (0, utils_js_1.assertUsage)(!('_isPageContextObject' in pageContextProvidedByUser), `${errPrefix} shouldn't be the whole ${picocolors_1.default.cyan('pageContext')} object, see https://vike.dev/pageContext-manipulation#do-not-return-entire-pagecontext`);
16
16
  // In principle, it's possible to use onBeforeRoute()` to override and define the whole routing.
17
17
  // Is that a good idea to allow users to do this? Beyond deep integration with Vue Router or React Router, is there a use case for this?
18
18
  (0, utils_js_1.assertWarning)(!('pageId' in pageContextProvidedByUser), `${errPrefix} sets ${picocolors_1.default.cyan('pageContext.pageId')} which means that Vike's routing is overriden. This is an experimental feature: make sure to contact a vike maintainer before using this.`, { onlyOnce: true });
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPageContextShared = createPageContextShared;
4
+ const executeHookGeneric_js_1 = require("../node/runtime/renderPage/executeHookGeneric.js");
5
+ const getPageConfigUserFriendly_js_1 = require("./page-configs/getPageConfigUserFriendly.js");
6
+ const utils_js_1 = require("./utils.js");
7
+ async function createPageContextShared(pageContextCreated, pageConfigGlobal) {
8
+ const pageConfigGlobalUserFriendly = (0, getPageConfigUserFriendly_js_1.getPageConfigGlobalUserFriendly)({
9
+ pageConfigGlobalValues: pageConfigGlobal.configValues
10
+ });
11
+ (0, utils_js_1.objectAssign)(pageContextCreated, {
12
+ _isPageContextObject: true,
13
+ ...pageConfigGlobalUserFriendly
14
+ }, true);
15
+ await (0, executeHookGeneric_js_1.executeHookGenericGlobalCumulative)('onCreatePageContext', pageConfigGlobal, pageContextCreated);
16
+ return pageContextCreated;
17
+ }
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROJECT_VERSION = void 0;
4
4
  // Automatically updated by @brillout/release-me
5
- exports.PROJECT_VERSION = '0.4.228-commit-ae4784f';
5
+ exports.PROJECT_VERSION = '0.4.228-commit-90cfb1a';
@@ -1,13 +1,11 @@
1
- export { createPageContext };
2
- declare function createPageContext(urlOriginal: string): Promise<{
3
- _isPageContextObject: boolean;
1
+ export { createPageContextClientSide };
2
+ declare function createPageContextClientSide(urlOriginal: string): Promise<{
4
3
  isClientSide: boolean;
5
4
  isPrerendering: boolean;
6
5
  urlOriginal: string;
7
6
  globalContext: {
8
7
  [x: string]: unknown;
9
8
  };
10
- _objectCreatedByVike: boolean;
11
9
  _urlHandler: null;
12
10
  _urlRewrite: null;
13
11
  _baseServer: string;
@@ -21,4 +19,10 @@ declare function createPageContext(urlOriginal: string): Promise<{
21
19
  urlParsed: import("./utils.js").UrlPublic;
22
20
  urlPathname: string;
23
21
  url: string;
22
+ } & {
23
+ config: import("../../types/index.js").ConfigResolved;
24
+ _source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
25
+ _sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
26
+ _from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
27
+ _isPageContextObject: boolean;
24
28
  }>;
@@ -1,24 +1,23 @@
1
- export { createPageContext };
1
+ export { createPageContextClientSide };
2
+ import { createPageContextShared } from '../../shared/createPageContextShared.js';
2
3
  import { getPageConfigsRuntime } from '../../shared/getPageConfigsRuntime.js';
3
4
  import { getPageContextUrlComputed } from '../../shared/getPageContextUrlComputed.js';
4
5
  import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
5
6
  import { getBaseServer } from './getBaseServer.js';
6
7
  import { getGlobalContext } from './globalContextClientSide.js';
7
- import { assert, isBaseServer, objectAssign } from './utils.js';
8
+ import { assert, augmentType, isBaseServer, objectAssign } from './utils.js';
8
9
  // @ts-ignore
9
10
  import * as virtualFileExports from 'virtual:vike:importUserCode:client:client-routing';
10
11
  const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal } = getPageConfigsRuntime(virtualFileExports);
11
- async function createPageContext(urlOriginal) {
12
+ async function createPageContextClientSide(urlOriginal) {
12
13
  const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
13
14
  const baseServer = getBaseServer();
14
15
  assert(isBaseServer(baseServer));
15
- const pageContext = {
16
- _isPageContextObject: true,
16
+ const pageContextCreated = {
17
17
  isClientSide: true,
18
18
  isPrerendering: false,
19
19
  urlOriginal,
20
20
  globalContext: getGlobalContext(),
21
- _objectCreatedByVike: true,
22
21
  _urlHandler: null,
23
22
  _urlRewrite: null,
24
23
  _baseServer: baseServer,
@@ -29,7 +28,9 @@ async function createPageContext(urlOriginal) {
29
28
  _pageRoutes: pageRoutes,
30
29
  _onBeforeRouteHook: onBeforeRouteHook
31
30
  };
32
- const pageContextUrlComputed = getPageContextUrlComputed(pageContext);
33
- objectAssign(pageContext, pageContextUrlComputed);
34
- return pageContext;
31
+ const pageContextUrlComputed = getPageContextUrlComputed(pageContextCreated);
32
+ objectAssign(pageContextCreated, pageContextUrlComputed);
33
+ const pageContextAugmented = await createPageContextShared(pageContextCreated, pageConfigGlobal);
34
+ augmentType(pageContextCreated, pageContextAugmented);
35
+ return pageContextCreated;
35
36
  }
@@ -10,7 +10,7 @@ import { isErrorFetchingStaticAssets, loadUserFilesClientSide } from '../shared/
10
10
  import { skipLink } from './skipLink.js';
11
11
  import { disableClientRouting } from './renderPageClientSide.js';
12
12
  import { isClientSideRoutable } from './isClientSideRoutable.js';
13
- import { createPageContext } from './createPageContext.js';
13
+ import { createPageContextClientSide } from './createPageContextClientSide.js';
14
14
  import { route } from '../../shared/route/index.js';
15
15
  import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
16
16
  import { getPageContextFromServerHooks } from './getPageContextFromHooks.js';
@@ -238,7 +238,7 @@ function isExpired(found) {
238
238
  }
239
239
  // TODO/next-major-release: make it sync
240
240
  async function getPageContextLink(urlOfLink) {
241
- const pageContextLink = await createPageContext(urlOfLink);
241
+ const pageContextLink = await createPageContextClientSide(urlOfLink);
242
242
  let pageContextFromRoute;
243
243
  try {
244
244
  pageContextFromRoute = await route(pageContextLink);
@@ -5,7 +5,7 @@ export { firstRenderStartPromise };
5
5
  export { getPageContextClient };
6
6
  import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject, hasProp, augmentType, genPromise, isCallable, catchInfiniteLoop } from './utils.js';
7
7
  import { getPageContextFromClientHooks, getPageContextFromServerHooks, getPageContextFromHooks_isHydration, getPageContextFromHooks_serialized, setPageContextInitIsPassedToClient } from './getPageContextFromHooks.js';
8
- import { createPageContext } from './createPageContext.js';
8
+ import { createPageContextClientSide } from './createPageContextClientSide.js';
9
9
  import { addLinkPrefetchHandlers, addLinkPrefetchHandlers_unwatch, addLinkPrefetchHandlers_watch, getPageContextPrefetched, populatePageContextPrefetchCache } from './prefetch.js';
10
10
  import { assertInfo, assertWarning, isReact } from './utils.js';
11
11
  import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
@@ -217,7 +217,7 @@ async function renderPageClientSide(renderArgs) {
217
217
  }
218
218
  }
219
219
  async function getPageContextBegin(isForErrorPage) {
220
- const pageContext = await createPageContext(urlOriginal);
220
+ const pageContext = await createPageContextClientSide(urlOriginal);
221
221
  objectAssign(pageContext, {
222
222
  isBackwardNavigation,
223
223
  isClientSideNavigation,
@@ -1,6 +1,5 @@
1
- export { getPageContext };
2
- declare function getPageContext(): Promise<{
3
- _isPageContextObject: boolean;
1
+ export { createPageContextClientSide };
2
+ declare function createPageContextClientSide(): Promise<{
4
3
  isPrerendering: boolean;
5
4
  isClientSide: boolean;
6
5
  isHydration: true;
@@ -16,4 +15,10 @@ declare function getPageContext(): Promise<{
16
15
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
17
16
  } & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
18
17
  _pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
18
+ } & {
19
+ config: import("../../types/index.js").ConfigResolved;
20
+ _source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
21
+ _sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
22
+ _from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
23
+ _isPageContextObject: boolean;
19
24
  }>;
@@ -1,16 +1,16 @@
1
- export { getPageContext };
2
- import { assertUsage, assertWarning, objectAssign } from './utils.js';
1
+ export { createPageContextClientSide };
2
+ import { assertUsage, assertWarning, augmentType, objectAssign } from './utils.js';
3
3
  import { getPageContextSerializedInHtml } from '../shared/getPageContextSerializedInHtml.js';
4
4
  import { loadUserFilesClientSide } from '../shared/loadUserFilesClientSide.js';
5
5
  import { getCurrentUrl } from '../shared/getCurrentUrl.js';
6
6
  import { getPageConfigsRuntime } from '../../shared/getPageConfigsRuntime.js';
7
7
  // @ts-ignore
8
8
  import * as virtualFileExports from 'virtual:vike:importUserCode:client:server-routing';
9
+ import { createPageContextShared } from '../../shared/createPageContextShared.js';
9
10
  const { pageFilesAll, pageConfigs, pageConfigGlobal } = getPageConfigsRuntime(virtualFileExports);
10
11
  const urlFirst = getCurrentUrl({ withoutHash: true });
11
- async function getPageContext() {
12
- const pageContext = {
13
- _isPageContextObject: true,
12
+ async function createPageContextClientSide() {
13
+ const pageContextCreated = {
14
14
  isPrerendering: false,
15
15
  isClientSide: true,
16
16
  isHydration: true,
@@ -18,10 +18,12 @@ async function getPageContext() {
18
18
  _hasPageContextFromServer: true,
19
19
  _hasPageContextFromClient: false
20
20
  };
21
- objectAssign(pageContext, getPageContextSerializedInHtml());
22
- objectAssign(pageContext, await loadPageUserFiles(pageContext.pageId));
21
+ objectAssign(pageContextCreated, getPageContextSerializedInHtml());
22
+ objectAssign(pageContextCreated, await loadPageUserFiles(pageContextCreated.pageId));
23
+ const pageContextAugmented = await createPageContextShared(pageContextCreated, pageConfigGlobal);
24
+ augmentType(pageContextCreated, pageContextAugmented);
23
25
  assertPristineUrl();
24
- return pageContext;
26
+ return pageContextCreated;
25
27
  }
26
28
  function assertPristineUrl() {
27
29
  const urlCurrent = getCurrentUrl({ withoutHash: true });
@@ -1,6 +1,6 @@
1
1
  import { assertServerRouting } from '../../utils/assertRoutingType.js';
2
2
  assertServerRouting();
3
- import { getPageContext } from './getPageContext.js';
3
+ import { createPageContextClientSide } from './createPageContextClientSide.js';
4
4
  import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
5
5
  import { assertHook } from '../../shared/hooks/getHook.js';
6
6
  import { assertSingleInstance_onClientEntryServerRouting } from './utils.js';
@@ -12,7 +12,7 @@ if (import.meta.env.DEV)
12
12
  removeFoucBuster();
13
13
  hydrate();
14
14
  async function hydrate() {
15
- const pageContext = await getPageContext();
15
+ const pageContext = await createPageContextClientSide();
16
16
  await executeOnRenderClientHook(pageContext, false);
17
17
  assertHook(pageContext, 'onHydrationEnd');
18
18
  await pageContext.exports.onHydrationEnd?.(pageContext);
@@ -10,3 +10,4 @@ export * from '../../utils/parseUrl.js';
10
10
  export * from '../../utils/slice.js';
11
11
  export * from '../../utils/unique.js';
12
12
  export * from '../../utils/getPropAccessNotation.js';
13
+ export * from '../../utils/augmentType.js';
@@ -14,3 +14,4 @@ export * from '../../utils/parseUrl.js';
14
14
  export * from '../../utils/slice.js';
15
15
  export * from '../../utils/unique.js'; // Only used by Server Routing (not needed for Client Routing)
16
16
  export * from '../../utils/getPropAccessNotation.js';
17
+ export * from '../../utils/augmentType.js';
@@ -1,9 +1,9 @@
1
1
  export { createPageContextServerSide };
2
2
  export { createPageContextServerSideWithoutGlobalContext };
3
- export type { PageContextServerSideCreated };
3
+ export type { PageContextCreatedServerSide };
4
4
  import type { GlobalContextInternal } from '../globalContext.js';
5
5
  import type { PageContextInit } from '../renderPage.js';
6
- type PageContextServerSideCreated = Awaited<ReturnType<typeof createPageContextServerSide>>;
6
+ type PageContextCreatedServerSide = Awaited<ReturnType<typeof createPageContextServerSide>>;
7
7
  declare function createPageContextServerSide(pageContextInit: PageContextInit, globalContext: GlobalContextInternal, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } }: {
8
8
  isPrerendering: false;
9
9
  ssr: {
@@ -14,14 +14,12 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
14
14
  isPrerendering: true;
15
15
  ssr?: undefined;
16
16
  }): Promise<{
17
- _isPageContextObject: boolean;
18
17
  isClientSide: boolean;
19
18
  isPrerendering: boolean;
20
19
  } & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
21
20
  url?: string;
22
21
  headers?: Record<string, string>;
23
22
  } & {
24
- _objectCreatedByVike: boolean;
25
23
  _baseServer: string;
26
24
  _baseAssets: string;
27
25
  _includeAssetsImportedByServer: boolean;
@@ -74,9 +72,14 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
74
72
  url: string;
75
73
  } & {
76
74
  headers: Record<string, string> | null;
75
+ } & {
76
+ config: import("../../../types/index.js").ConfigResolved;
77
+ _source: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Source;
78
+ _sources: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
79
+ _from: import("../../../shared/page-configs/getPageConfigUserFriendly.js").From;
80
+ _isPageContextObject: boolean;
77
81
  }>;
78
82
  declare function createPageContextServerSideWithoutGlobalContext(pageContextInit: PageContextInit): {
79
- _isPageContextObject: boolean;
80
83
  isClientSide: boolean;
81
84
  isPrerendering: boolean;
82
85
  } & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
@@ -1,8 +1,8 @@
1
1
  export { createPageContextServerSide };
2
2
  export { createPageContextServerSideWithoutGlobalContext };
3
- import { assert, assertUsage, assertWarning, normalizeHeaders, objectAssign } from '../utils.js';
3
+ import { assert, assertUsage, assertWarning, augmentType, normalizeHeaders, objectAssign } from '../utils.js';
4
4
  import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
5
- import { executeHookGenericGlobalCumulative } from './executeHookGeneric.js';
5
+ import { createPageContextShared } from '../../../shared/createPageContextShared.js';
6
6
  async function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
7
7
  urlHandler: null,
8
8
  isClientSideNavigation: false
@@ -11,7 +11,6 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
11
11
  const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
12
12
  objectAssign(pageContextCreated, pageContextInit);
13
13
  objectAssign(pageContextCreated, {
14
- _objectCreatedByVike: true,
15
14
  // The following is defined on `pageContext` because we can eventually make these non-global
16
15
  _baseServer: globalContext.baseServer,
17
16
  _baseAssets: globalContext.baseAssets,
@@ -53,7 +52,8 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
53
52
  }
54
53
  objectAssign(pageContextCreated, { headers });
55
54
  }
56
- await executeHookGenericGlobalCumulative('onCreatePageContext', globalContext, pageContextCreated);
55
+ const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext.pageConfigGlobal);
56
+ augmentType(pageContextCreated, pageContextAugmented);
57
57
  return pageContextCreated;
58
58
  }
59
59
  function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
@@ -62,7 +62,6 @@ function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
62
62
  }
63
63
  function createPageContext(pageContextInit, isPrerendering) {
64
64
  const pageContext = {
65
- _isPageContextObject: true,
66
65
  isClientSide: false,
67
66
  isPrerendering
68
67
  };
@@ -3,7 +3,6 @@ export { executeHookGenericGlobalCumulative };
3
3
  import type { PageConfigUserFriendlyOld } from '../../../shared/getPageFiles.js';
4
4
  import { type HookName } from '../../../shared/hooks/getHook.js';
5
5
  import type { HookNameGlobal } from '../../../shared/page-configs/Config.js';
6
- import type { GlobalContextInternal } from '../globalContext.js';
7
- import type { PageContextServerSideCreated } from './createPageContextServerSide.js';
6
+ import type { PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
8
7
  declare function executeHookGeneric(hookName: HookName, pageContext: PageConfigUserFriendlyOld): Promise<void>;
9
- declare function executeHookGenericGlobalCumulative(hookName: HookNameGlobal, globalContext: GlobalContextInternal, pageContext: PageContextServerSideCreated): Promise<void>;
8
+ declare function executeHookGenericGlobalCumulative(hookName: HookNameGlobal, pageConfigGlobal: PageConfigGlobalRuntime, pageContext: object): Promise<void>;
@@ -8,8 +8,8 @@ async function executeHookGeneric(hookName, pageContext) {
8
8
  return;
9
9
  await executeHook(() => hook.hookFn(pageContext), hook, pageContext);
10
10
  }
11
- async function executeHookGenericGlobalCumulative(hookName, globalContext, pageContext) {
12
- const hooks = getHookFromPageConfigGlobalCumulative(globalContext.pageConfigGlobal, hookName);
11
+ async function executeHookGenericGlobalCumulative(hookName, pageConfigGlobal, pageContext) {
12
+ const hooks = getHookFromPageConfigGlobalCumulative(pageConfigGlobal, hookName);
13
13
  await Promise.all(hooks.map(async (hook) => {
14
14
  await executeHook(() => hook.hookFn(pageContext), hook, null);
15
15
  }));
@@ -4,7 +4,7 @@ export type { PageContextAfterRender };
4
4
  import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
5
5
  import { HttpResponse } from './createHttpResponse.js';
6
6
  import { PageContext_loadUserFilesServerSide, type PageFiles } from './loadUserFilesServerSide.js';
7
- import type { PageContextServerSideCreated } from './createPageContextServerSide.js';
7
+ import type { PageContextCreatedServerSide } from './createPageContextServerSide.js';
8
8
  type PageContextAfterRender = {
9
9
  httpResponse: HttpResponse;
10
10
  errorWhileRendering: null | Error;
@@ -16,8 +16,8 @@ declare function renderPageAlreadyRouted<PageContext extends {
16
16
  routeParams: Record<string, string>;
17
17
  errorWhileRendering: null | Error;
18
18
  _httpRequestId: number;
19
- } & PageContextServerSideCreated & PageContextUrlInternal & PageContext_loadUserFilesServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
20
- declare function prerenderPage(pageContext: PageContextServerSideCreated & PageFiles & {
19
+ } & PageContextCreatedServerSide & PageContextUrlInternal & PageContext_loadUserFilesServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
20
+ declare function prerenderPage(pageContext: PageContextCreatedServerSide & PageFiles & {
21
21
  routeParams: Record<string, string>;
22
22
  pageId: string;
23
23
  _urlRewrite: null;
@@ -29,14 +29,12 @@ declare function prerenderPage(pageContext: PageContextServerSideCreated & PageF
29
29
  documentHtml: string;
30
30
  pageContextSerialized: null;
31
31
  pageContext: {
32
- _isPageContextObject: boolean;
33
32
  isClientSide: boolean;
34
33
  isPrerendering: boolean;
35
34
  } & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
36
35
  url?: string;
37
36
  headers?: Record<string, string>;
38
37
  } & {
39
- _objectCreatedByVike: boolean;
40
38
  _baseServer: string;
41
39
  _baseAssets: string;
42
40
  _includeAssetsImportedByServer: boolean;
@@ -88,6 +86,12 @@ declare function prerenderPage(pageContext: PageContextServerSideCreated & PageF
88
86
  url: string;
89
87
  } & {
90
88
  headers: Record<string, string> | null;
89
+ } & {
90
+ config: import("../../../types/index.js").ConfigResolved;
91
+ _source: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Source;
92
+ _sources: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
93
+ _from: import("../../../shared/page-configs/getPageConfigUserFriendly.js").From;
94
+ _isPageContextObject: boolean;
91
95
  } & import("../../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
92
96
  Page: unknown;
93
97
  _isHtmlOnly: boolean;
@@ -111,14 +115,12 @@ declare function prerenderPage(pageContext: PageContextServerSideCreated & PageF
111
115
  documentHtml: string;
112
116
  pageContextSerialized: string;
113
117
  pageContext: {
114
- _isPageContextObject: boolean;
115
118
  isClientSide: boolean;
116
119
  isPrerendering: boolean;
117
120
  } & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
118
121
  url?: string;
119
122
  headers?: Record<string, string>;
120
123
  } & {
121
- _objectCreatedByVike: boolean;
122
124
  _baseServer: string;
123
125
  _baseAssets: string;
124
126
  _includeAssetsImportedByServer: boolean;
@@ -170,6 +172,12 @@ declare function prerenderPage(pageContext: PageContextServerSideCreated & PageF
170
172
  url: string;
171
173
  } & {
172
174
  headers: Record<string, string> | null;
175
+ } & {
176
+ config: import("../../../types/index.js").ConfigResolved;
177
+ _source: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Source;
178
+ _sources: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
179
+ _from: import("../../../shared/page-configs/getPageConfigUserFriendly.js").From;
180
+ _isPageContextObject: boolean;
173
181
  } & import("../../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
174
182
  Page: unknown;
175
183
  _isHtmlOnly: boolean;
@@ -19,14 +19,12 @@ declare let asyncHookWrapper: <PageContext>(_httpRequestId: number, ret: () => P
19
19
  }>;
20
20
  declare function renderPage_addAsyncHookwrapper(wrapper: typeof asyncHookWrapper): void;
21
21
  declare function getPageContextBegin(pageContextInit: PageContextInit, globalContext: GlobalContextInternal, httpRequestId: number): Promise<{
22
- _isPageContextObject: boolean;
23
22
  isClientSide: boolean;
24
23
  isPrerendering: boolean;
25
24
  } & Pick<PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
26
25
  /** @deprecated Set `pageContextInit.urlOriginal` instead */ url?: string;
27
26
  /** @deprecated Set pageContextInit.headersOriginal instead */ headers?: Record<string, string>;
28
27
  } & {
29
- _objectCreatedByVike: boolean;
30
28
  _baseServer: string;
31
29
  _baseAssets: string;
32
30
  _includeAssetsImportedByServer: boolean;
@@ -78,6 +76,12 @@ declare function getPageContextBegin(pageContextInit: PageContextInit, globalCon
78
76
  url: string;
79
77
  } & {
80
78
  headers: Record<string, string> | null;
79
+ } & {
80
+ config: import("../../types/index.js").ConfigResolved;
81
+ _source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
82
+ _sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
83
+ _from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
84
+ _isPageContextObject: boolean;
81
85
  } & {
82
86
  _httpRequestId: number;
83
87
  }>;
@@ -1,6 +1,12 @@
1
1
  import { renderPage } from './index.js';
2
2
  export default async function universalVikeHandler(request, context, runtime) {
3
- const pageContextInit = { ...context, ...runtime, urlOriginal: request.url, headersOriginal: request.headers };
3
+ const pageContextInit = {
4
+ ...context,
5
+ ...runtime,
6
+ runtime,
7
+ urlOriginal: request.url,
8
+ headersOriginal: request.headers
9
+ };
4
10
  const pageContext = await renderPage(pageContextInit);
5
11
  const response = pageContext.httpResponse;
6
12
  const readable = response.getReadableWebStream();
@@ -55,3 +55,4 @@ export * from '../../utils/getPropAccessNotation.js';
55
55
  export * from '../../utils/PROJECT_VERSION.js';
56
56
  export * from '../../utils/genPromise.js';
57
57
  export * from '../../utils/makePublicCopy.js';
58
+ export * from '../../utils/augmentType.js';
@@ -59,3 +59,4 @@ export * from '../../utils/getPropAccessNotation.js';
59
59
  export * from '../../utils/PROJECT_VERSION.js';
60
60
  export * from '../../utils/genPromise.js';
61
61
  export * from '../../utils/makePublicCopy.js';
62
+ export * from '../../utils/augmentType.js';
@@ -7,7 +7,7 @@ function assertPageContextProvidedByUser(pageContextProvidedByUser, { hookName,
7
7
  assert(!hookName.endsWith(')'));
8
8
  const errPrefix = `The ${pc.cyan('pageContext')} object provided by the ${hookName}() hook defined by ${hookFilePath}`;
9
9
  assertUsage(isObject(pageContextProvidedByUser), `${errPrefix} should be an object (but it's ${pc.cyan(`typeof pageContext === ${JSON.stringify(typeof pageContextProvidedByUser)}`)} instead)`);
10
- assertUsage(!('_objectCreatedByVike' in pageContextProvidedByUser), `${errPrefix} shouldn't be the whole ${pc.cyan('pageContext')} object, see https://vike.dev/pageContext-manipulation#do-not-return-entire-pagecontext`);
10
+ assertUsage(!('_isPageContextObject' in pageContextProvidedByUser), `${errPrefix} shouldn't be the whole ${pc.cyan('pageContext')} object, see https://vike.dev/pageContext-manipulation#do-not-return-entire-pagecontext`);
11
11
  // In principle, it's possible to use onBeforeRoute()` to override and define the whole routing.
12
12
  // Is that a good idea to allow users to do this? Beyond deep integration with Vue Router or React Router, is there a use case for this?
13
13
  assertWarning(!('pageId' in pageContextProvidedByUser), `${errPrefix} sets ${pc.cyan('pageContext.pageId')} which means that Vike's routing is overriden. This is an experimental feature: make sure to contact a vike maintainer before using this.`, { onlyOnce: true });
@@ -0,0 +1,9 @@
1
+ export { createPageContextShared };
2
+ import type { PageConfigGlobalRuntime } from './page-configs/PageConfig.js';
3
+ declare function createPageContextShared<T extends object>(pageContextCreated: T, pageConfigGlobal: PageConfigGlobalRuntime): Promise<T & {
4
+ config: import("./page-configs/Config/PageContextConfig.js").ConfigResolved;
5
+ _source: import("./page-configs/getPageConfigUserFriendly.js").Source;
6
+ _sources: import("./page-configs/getPageConfigUserFriendly.js").Sources;
7
+ _from: import("./page-configs/getPageConfigUserFriendly.js").From;
8
+ _isPageContextObject: boolean;
9
+ }>;
@@ -0,0 +1,15 @@
1
+ export { createPageContextShared };
2
+ import { executeHookGenericGlobalCumulative } from '../node/runtime/renderPage/executeHookGeneric.js';
3
+ import { getPageConfigGlobalUserFriendly } from './page-configs/getPageConfigUserFriendly.js';
4
+ import { objectAssign } from './utils.js';
5
+ async function createPageContextShared(pageContextCreated, pageConfigGlobal) {
6
+ const pageConfigGlobalUserFriendly = getPageConfigGlobalUserFriendly({
7
+ pageConfigGlobalValues: pageConfigGlobal.configValues
8
+ });
9
+ objectAssign(pageContextCreated, {
10
+ _isPageContextObject: true,
11
+ ...pageConfigGlobalUserFriendly
12
+ }, true);
13
+ await executeHookGenericGlobalCumulative('onCreatePageContext', pageConfigGlobal, pageContextCreated);
14
+ return pageContextCreated;
15
+ }
@@ -21,7 +21,7 @@ type HookLoc = {
21
21
  hookName: HookName;
22
22
  hookFilePath: string;
23
23
  };
24
- type HookFn = (arg: unknown) => unknown;
24
+ type HookFn = (arg: object) => unknown;
25
25
  type HookTimeout = {
26
26
  error: number | false;
27
27
  warning: number | false;
@@ -45,7 +45,7 @@ import type { PageContextClient, PageContextServer } from '../types.js';
45
45
  import type { InlineConfig } from 'vite';
46
46
  type HookName = HookNamePage | HookNameGlobal | HookNameOldDesign;
47
47
  type HookNamePage = 'onHydrationEnd' | 'onBeforePrerenderStart' | 'onBeforeRender' | 'onPageTransitionStart' | 'onPageTransitionEnd' | 'onRenderHtml' | 'onRenderClient' | 'guard' | 'data';
48
- type HookNameGlobal = 'onCreatePageContext' | 'onBeforePrerender' | 'onBeforeRoute' | 'onPrerenderStart';
48
+ type HookNameGlobal = 'onBeforePrerender' | 'onBeforeRoute' | 'onPrerenderStart' | 'onCreatePageContext';
49
49
  type HookNameOldDesign = 'render' | 'prerender';
50
50
  type ConfigNameBuiltIn = Exclude<keyof Config, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart' | 'vite' | 'redirects'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
51
51
  type ConfigNameGlobal = 'onPrerenderStart' | 'onBeforeRoute' | 'prerender' | 'disableAutoFullBuild' | 'includeAssetsImportedByServer' | 'baseAssets' | 'baseServer' | 'redirects' | 'trailingSlash' | 'disableUrlNormalization' | 'vite';
@@ -330,9 +330,9 @@ type ConfigBuiltIn = {
330
330
  * https://vike.dev/onBeforeRender
331
331
  */
332
332
  onBeforeRender?: OnBeforeRenderAsync | OnBeforeRenderSync | ImportString | null;
333
- /** Hook called when a page starts rendering.
333
+ /** Hook called when a `pageContext` object is created.
334
334
  *
335
- * https://vike.dev/onCreatePageContext TODO/now
335
+ * https://vike.dev/onCreatePageContext
336
336
  */
337
337
  onCreatePageContext?: (pageContext: PageContextServer) => void | ImportString | null;
338
338
  /** Hook for fetching data.
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.228-commit-ae4784f";
1
+ export declare const PROJECT_VERSION: "0.4.228-commit-90cfb1a";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.228-commit-ae4784f';
2
+ export const PROJECT_VERSION = '0.4.228-commit-90cfb1a';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.228-commit-ae4784f",
3
+ "version": "0.4.228-commit-90cfb1a",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {