vike 0.4.228-commit-f3eb7f0 → 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 (38) hide show
  1. package/dist/cjs/client/server-routing-runtime/utils.js +1 -0
  2. package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +0 -1
  3. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -0
  4. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +3 -2
  5. package/dist/cjs/node/runtime/renderPage/executeHookGeneric.js +18 -0
  6. package/dist/cjs/node/runtime/utils.js +1 -0
  7. package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
  8. package/dist/cjs/shared/createPageContextShared.js +17 -0
  9. package/dist/cjs/shared/hooks/getHook.js +15 -0
  10. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  11. package/dist/esm/client/client-routing-runtime/{createPageContext.d.ts → createPageContextClientSide.d.ts} +8 -4
  12. package/dist/esm/client/client-routing-runtime/{createPageContext.js → createPageContextClientSide.js} +10 -9
  13. package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
  14. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +2 -2
  15. package/dist/esm/client/server-routing-runtime/{getPageContext.d.ts → createPageContextClientSide.d.ts} +8 -3
  16. package/dist/esm/client/server-routing-runtime/{getPageContext.js → createPageContextClientSide.js} +10 -8
  17. package/dist/esm/client/server-routing-runtime/entry.js +2 -2
  18. package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
  19. package/dist/esm/client/server-routing-runtime/utils.js +1 -0
  20. package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +0 -1
  21. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -0
  22. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +8 -5
  23. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +4 -3
  24. package/dist/esm/node/runtime/renderPage/executeHookGeneric.d.ts +8 -0
  25. package/dist/esm/node/runtime/renderPage/executeHookGeneric.js +16 -0
  26. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +15 -7
  27. package/dist/esm/node/runtime/renderPage.d.ts +6 -2
  28. package/dist/esm/node/runtime/utils.d.ts +1 -0
  29. package/dist/esm/node/runtime/utils.js +1 -0
  30. package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
  31. package/dist/esm/shared/createPageContextShared.d.ts +9 -0
  32. package/dist/esm/shared/createPageContextShared.js +15 -0
  33. package/dist/esm/shared/hooks/getHook.d.ts +3 -1
  34. package/dist/esm/shared/hooks/getHook.js +16 -1
  35. package/dist/esm/shared/page-configs/Config.d.ts +6 -1
  36. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  37. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  38. 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);
@@ -31,7 +31,6 @@ function pluginModuleBanner() {
31
31
  id = (0, virtual_files_js_1.removeVirtualIdTag)(id);
32
32
  if (id.startsWith(config.root))
33
33
  id = id.slice(config.root.length + 1);
34
- id = id.replaceAll('*/', '*\\/'); // https://github.com/vikejs/vike/issues/2377
35
34
  const s = new magic_string_1.default(code);
36
35
  // Use legal comment so that esbuild doesn't remove it.
37
36
  // - Terser still removes the comment, but I guess users use terser to minify JavaScript so I guess it's a good thing that comment is removed.
@@ -19,6 +19,11 @@ const configDefinitionsBuiltIn = {
19
19
  onPageTransitionEnd: {
20
20
  env: { client: true }
21
21
  },
22
+ onCreatePageContext: {
23
+ env: { server: true },
24
+ global: true,
25
+ cumulative: true
26
+ },
22
27
  onBeforeRender: {
23
28
  env: { server: true }
24
29
  },
@@ -4,6 +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 createPageContextShared_js_1 = require("../../../shared/createPageContextShared.js");
7
8
  async function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
8
9
  urlHandler: null,
9
10
  isClientSideNavigation: false
@@ -12,7 +13,6 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
12
13
  const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
13
14
  (0, utils_js_1.objectAssign)(pageContextCreated, pageContextInit);
14
15
  (0, utils_js_1.objectAssign)(pageContextCreated, {
15
- _objectCreatedByVike: true,
16
16
  // The following is defined on `pageContext` because we can eventually make these non-global
17
17
  _baseServer: globalContext.baseServer,
18
18
  _baseAssets: globalContext.baseAssets,
@@ -54,6 +54,8 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
54
54
  }
55
55
  (0, utils_js_1.objectAssign)(pageContextCreated, { headers });
56
56
  }
57
+ const pageContextAugmented = await (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext.pageConfigGlobal);
58
+ (0, utils_js_1.augmentType)(pageContextCreated, pageContextAugmented);
57
59
  return pageContextCreated;
58
60
  }
59
61
  function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
@@ -62,7 +64,6 @@ function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
62
64
  }
63
65
  function createPageContext(pageContextInit, isPrerendering) {
64
66
  const pageContext = {
65
- _isPageContextObject: true,
66
67
  isClientSide: false,
67
68
  isPrerendering
68
69
  };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeHookGeneric = executeHookGeneric;
4
+ exports.executeHookGenericGlobalCumulative = executeHookGenericGlobalCumulative;
5
+ const executeHook_js_1 = require("../../../shared/hooks/executeHook.js");
6
+ const getHook_js_1 = require("../../../shared/hooks/getHook.js");
7
+ async function executeHookGeneric(hookName, pageContext) {
8
+ const hook = (0, getHook_js_1.getHookFromPageContext)(pageContext, hookName);
9
+ if (!hook)
10
+ return;
11
+ await (0, executeHook_js_1.executeHook)(() => hook.hookFn(pageContext), hook, pageContext);
12
+ }
13
+ async function executeHookGenericGlobalCumulative(hookName, pageConfigGlobal, pageContext) {
14
+ const hooks = (0, getHook_js_1.getHookFromPageConfigGlobalCumulative)(pageConfigGlobal, hookName);
15
+ await Promise.all(hooks.map(async (hook) => {
16
+ await (0, executeHook_js_1.executeHook)(() => hook.hookFn(pageContext), hook, null);
17
+ }));
18
+ }
@@ -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
+ }
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getHookFromPageContext = getHookFromPageContext;
7
7
  exports.getHookFromPageConfig = getHookFromPageConfig;
8
8
  exports.getHookFromPageConfigGlobal = getHookFromPageConfigGlobal;
9
+ exports.getHookFromPageConfigGlobalCumulative = getHookFromPageConfigGlobalCumulative;
9
10
  exports.assertHook = assertHook;
10
11
  exports.getHook_setIsPrerenderering = getHook_setIsPrerenderering;
11
12
  exports.getHookTimeoutDefault = getHookTimeoutDefault;
@@ -47,6 +48,20 @@ function getHookFromPageConfigGlobal(pageConfigGlobal, hookName) {
47
48
  const hookTimeout = getHookTimeoutGlobal(hookName);
48
49
  return getHook(hookFn, hookName, hookFilePath, hookTimeout);
49
50
  }
51
+ function getHookFromPageConfigGlobalCumulative(pageConfigGlobal, hookName) {
52
+ const configValue = pageConfigGlobal.configValues[hookName];
53
+ if (!configValue?.value)
54
+ return [];
55
+ const val = configValue.value;
56
+ (0, utils_js_1.assert)((0, utils_js_1.isArray)(val));
57
+ return val.map((v, i) => {
58
+ const hookFn = v;
59
+ const hookTimeout = getHookTimeoutGlobal(hookName);
60
+ (0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue.definedAtData));
61
+ const hookFilePath = (0, helpers_js_1.getHookFilePathToShowToUser)(configValue.definedAtData[i]);
62
+ return getHook(hookFn, hookName, hookFilePath, hookTimeout);
63
+ });
64
+ }
50
65
  function getHookTimeoutGlobal(hookName) {
51
66
  // TO-DO/perfection: we could use the global value of configooksTimeout but it requires some non-trivial refactoring
52
67
  const hookTimeout = getHookTimeoutDefault(hookName);
@@ -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-f3eb7f0';
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';
@@ -26,7 +26,6 @@ function pluginModuleBanner() {
26
26
  id = removeVirtualIdTag(id);
27
27
  if (id.startsWith(config.root))
28
28
  id = id.slice(config.root.length + 1);
29
- id = id.replaceAll('*/', '*\\/'); // https://github.com/vikejs/vike/issues/2377
30
29
  const s = new MagicString(code);
31
30
  // Use legal comment so that esbuild doesn't remove it.
32
31
  // - Terser still removes the comment, but I guess users use terser to minify JavaScript so I guess it's a good thing that comment is removed.
@@ -17,6 +17,11 @@ const configDefinitionsBuiltIn = {
17
17
  onPageTransitionEnd: {
18
18
  env: { client: true }
19
19
  },
20
+ onCreatePageContext: {
21
+ env: { server: true },
22
+ global: true,
23
+ cumulative: true
24
+ },
20
25
  onBeforeRender: {
21
26
  env: { server: true }
22
27
  },
@@ -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,7 +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 { createPageContextShared } from '../../../shared/createPageContextShared.js';
5
6
  async function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
6
7
  urlHandler: null,
7
8
  isClientSideNavigation: false
@@ -10,7 +11,6 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
10
11
  const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
11
12
  objectAssign(pageContextCreated, pageContextInit);
12
13
  objectAssign(pageContextCreated, {
13
- _objectCreatedByVike: true,
14
14
  // The following is defined on `pageContext` because we can eventually make these non-global
15
15
  _baseServer: globalContext.baseServer,
16
16
  _baseAssets: globalContext.baseAssets,
@@ -52,6 +52,8 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
52
52
  }
53
53
  objectAssign(pageContextCreated, { headers });
54
54
  }
55
+ const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext.pageConfigGlobal);
56
+ augmentType(pageContextCreated, pageContextAugmented);
55
57
  return pageContextCreated;
56
58
  }
57
59
  function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
@@ -60,7 +62,6 @@ function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
60
62
  }
61
63
  function createPageContext(pageContextInit, isPrerendering) {
62
64
  const pageContext = {
63
- _isPageContextObject: true,
64
65
  isClientSide: false,
65
66
  isPrerendering
66
67
  };
@@ -0,0 +1,8 @@
1
+ export { executeHookGeneric };
2
+ export { executeHookGenericGlobalCumulative };
3
+ import type { PageConfigUserFriendlyOld } from '../../../shared/getPageFiles.js';
4
+ import { type HookName } from '../../../shared/hooks/getHook.js';
5
+ import type { HookNameGlobal } from '../../../shared/page-configs/Config.js';
6
+ import type { PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
7
+ declare function executeHookGeneric(hookName: HookName, pageContext: PageConfigUserFriendlyOld): Promise<void>;
8
+ declare function executeHookGenericGlobalCumulative(hookName: HookNameGlobal, pageConfigGlobal: PageConfigGlobalRuntime, pageContext: object): Promise<void>;
@@ -0,0 +1,16 @@
1
+ export { executeHookGeneric }; // TO-DO/refactor: start using executeHookGeneric() and, eventually, prominently use it
2
+ export { executeHookGenericGlobalCumulative };
3
+ import { executeHook } from '../../../shared/hooks/executeHook.js';
4
+ import { getHookFromPageContext, getHookFromPageConfigGlobalCumulative } from '../../../shared/hooks/getHook.js';
5
+ async function executeHookGeneric(hookName, pageContext) {
6
+ const hook = getHookFromPageContext(pageContext, hookName);
7
+ if (!hook)
8
+ return;
9
+ await executeHook(() => hook.hookFn(pageContext), hook, pageContext);
10
+ }
11
+ async function executeHookGenericGlobalCumulative(hookName, pageConfigGlobal, pageContext) {
12
+ const hooks = getHookFromPageConfigGlobalCumulative(pageConfigGlobal, hookName);
13
+ await Promise.all(hooks.map(async (hook) => {
14
+ await executeHook(() => hook.hookFn(pageContext), hook, null);
15
+ }));
16
+ }
@@ -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
  }>;
@@ -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
+ }
@@ -1,6 +1,7 @@
1
1
  export { getHookFromPageContext };
2
2
  export { getHookFromPageConfig };
3
3
  export { getHookFromPageConfigGlobal };
4
+ export { getHookFromPageConfigGlobalCumulative };
4
5
  export { assertHook };
5
6
  export { getHook_setIsPrerenderering };
6
7
  export type { Hook };
@@ -20,7 +21,7 @@ type HookLoc = {
20
21
  hookName: HookName;
21
22
  hookFilePath: string;
22
23
  };
23
- type HookFn = (arg: unknown) => unknown;
24
+ type HookFn = (arg: object) => unknown;
24
25
  type HookTimeout = {
25
26
  error: number | false;
26
27
  warning: number | false;
@@ -29,6 +30,7 @@ type HooksTimeoutProvidedByUser = false | Partial<Record<HookName, false | Parti
29
30
  declare function getHookFromPageContext(pageContext: PageConfigUserFriendlyOld, hookName: HookName): null | Hook;
30
31
  declare function getHookFromPageConfig(pageConfig: PageConfigRuntime, hookName: HookNamePage): null | Hook;
31
32
  declare function getHookFromPageConfigGlobal(pageConfigGlobal: PageConfigGlobalRuntime, hookName: HookNameGlobal): null | Hook;
33
+ declare function getHookFromPageConfigGlobalCumulative(pageConfigGlobal: PageConfigGlobalRuntime, hookName: HookNameGlobal): Hook[];
32
34
  declare function assertHook<TPageContext extends PageConfigUserFriendlyOld, THookName extends PropertyKey & HookName>(pageContext: TPageContext, hookName: THookName): asserts pageContext is TPageContext & {
33
35
  exports: Record<THookName, Function | undefined>;
34
36
  };
@@ -1,6 +1,7 @@
1
1
  export { getHookFromPageContext };
2
2
  export { getHookFromPageConfig };
3
3
  export { getHookFromPageConfigGlobal };
4
+ export { getHookFromPageConfigGlobalCumulative };
4
5
  export { assertHook };
5
6
  export { getHook_setIsPrerenderering };
6
7
  // TODO/v1-release: remove
@@ -9,7 +10,7 @@ export { getHookTimeoutDefault };
9
10
  import { getGlobalObject } from '../../utils/getGlobalObject.js';
10
11
  import { getHookFilePathToShowToUser } from '../page-configs/helpers.js';
11
12
  import { getConfigValueRuntime } from '../page-configs/getConfigValueRuntime.js';
12
- import { assert, assertUsage, checkType, isCallable, isObject } from '../utils.js';
13
+ import { assert, assertUsage, checkType, isArray, isCallable, isObject } from '../utils.js';
13
14
  import pc from '@brillout/picocolors';
14
15
  const globalObject = getGlobalObject('hooks/getHook.ts', {});
15
16
  function getHookFromPageContext(pageContext, hookName) {
@@ -44,6 +45,20 @@ function getHookFromPageConfigGlobal(pageConfigGlobal, hookName) {
44
45
  const hookTimeout = getHookTimeoutGlobal(hookName);
45
46
  return getHook(hookFn, hookName, hookFilePath, hookTimeout);
46
47
  }
48
+ function getHookFromPageConfigGlobalCumulative(pageConfigGlobal, hookName) {
49
+ const configValue = pageConfigGlobal.configValues[hookName];
50
+ if (!configValue?.value)
51
+ return [];
52
+ const val = configValue.value;
53
+ assert(isArray(val));
54
+ return val.map((v, i) => {
55
+ const hookFn = v;
56
+ const hookTimeout = getHookTimeoutGlobal(hookName);
57
+ assert(isArray(configValue.definedAtData));
58
+ const hookFilePath = getHookFilePathToShowToUser(configValue.definedAtData[i]);
59
+ return getHook(hookFn, hookName, hookFilePath, hookTimeout);
60
+ });
61
+ }
47
62
  function getHookTimeoutGlobal(hookName) {
48
63
  // TO-DO/perfection: we could use the global value of configooksTimeout but it requires some non-trivial refactoring
49
64
  const hookTimeout = getHookTimeoutDefault(hookName);
@@ -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 = '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,6 +330,11 @@ type ConfigBuiltIn = {
330
330
  * https://vike.dev/onBeforeRender
331
331
  */
332
332
  onBeforeRender?: OnBeforeRenderAsync | OnBeforeRenderSync | ImportString | null;
333
+ /** Hook called when a `pageContext` object is created.
334
+ *
335
+ * https://vike.dev/onCreatePageContext
336
+ */
337
+ onCreatePageContext?: (pageContext: PageContextServer) => void | ImportString | null;
333
338
  /** Hook for fetching data.
334
339
  *
335
340
  * https://vike.dev/data
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.228-commit-f3eb7f0";
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-f3eb7f0';
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-f3eb7f0",
3
+ "version": "0.4.228-commit-90cfb1a",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {