vike 0.4.250-commit-193dea3 → 0.4.250-commit-2686732

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 (43) hide show
  1. package/dist/client/runtime-client-routing/createPageContextClientSide.d.ts +19 -1
  2. package/dist/client/runtime-client-routing/createPageContextClientSide.js +19 -11
  3. package/dist/client/runtime-client-routing/getPageContextFromHooks.d.ts +58 -70
  4. package/dist/client/runtime-client-routing/renderPageClient.d.ts +100 -98
  5. package/dist/client/runtime-server-routing/createPageContextClientSide.d.ts +14 -1
  6. package/dist/client/runtime-server-routing/createPageContextClientSide.js +10 -4
  7. package/dist/node/prerender/context.d.ts +1 -1
  8. package/dist/node/prerender/context.js +2 -2
  9. package/dist/node/prerender/resolvePrerenderConfig.d.ts +4 -4
  10. package/dist/node/prerender/resolvePrerenderConfig.js +17 -11
  11. package/dist/node/prerender/runPrerender.d.ts +2 -5
  12. package/dist/node/prerender/runPrerender.js +6 -6
  13. package/dist/node/vite/onLoad.js +3 -2
  14. package/dist/node/vite/plugins/build/pluginBuildApp.js +1 -1
  15. package/dist/node/vite/plugins/build/pluginModuleBanner.js +2 -1
  16. package/dist/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +5 -0
  17. package/dist/node/vite/shared/resolveVikeConfigInternal.js +6 -6
  18. package/dist/server/onLoad.js +2 -0
  19. package/dist/server/runtime/logErrorServer.d.ts +2 -2
  20. package/dist/server/runtime/loggerRuntime.d.ts +2 -2
  21. package/dist/server/runtime/renderPageServer/createPageContextServerSide.d.ts +12 -10
  22. package/dist/server/runtime/renderPageServer/createPageContextServerSide.js +11 -11
  23. package/dist/server/runtime/renderPageServer/execHookOnError.d.ts +2 -2
  24. package/dist/server/runtime/renderPageServer/execHookOnError.js +3 -1
  25. package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +1 -4
  26. package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +4 -16
  27. package/dist/server/runtime/renderPageServer.d.ts +2 -9
  28. package/dist/shared-server-client/createGlobalContextShared.js +1 -1
  29. package/dist/shared-server-client/createPageContextShared.d.ts +12 -2
  30. package/dist/shared-server-client/createPageContextShared.js +1 -0
  31. package/dist/shared-server-client/getPageContextUrlComputed.d.ts +5 -2
  32. package/dist/shared-server-client/hooks/execHook.d.ts +5 -7
  33. package/dist/shared-server-client/hooks/execHook.js +77 -12
  34. package/dist/shared-server-client/prepareGlobalContextForPublicUsage.d.ts +2 -0
  35. package/dist/shared-server-client/preparePageContextForPublicUsage.d.ts +2 -3
  36. package/dist/types/Config.d.ts +81 -71
  37. package/dist/types/Config.js +1 -0
  38. package/dist/types/PageContext.d.ts +33 -26
  39. package/dist/utils/PROJECT_VERSION.d.ts +1 -1
  40. package/dist/utils/PROJECT_VERSION.js +1 -1
  41. package/dist/utils/installUncaughtErrorHandlers.d.ts +2 -0
  42. package/dist/utils/installUncaughtErrorHandlers.js +20 -0
  43. package/package.json +2 -2
@@ -72,10 +72,7 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
72
72
  isClientSide: false;
73
73
  isPrerendering: boolean;
74
74
  _requestId: number;
75
- } & Pick<import("../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
76
- url?: string;
77
- headers?: Record<string, string>;
78
- } & {
75
+ } & import("../../types/PageContext.js").PageContextInit & {
79
76
  _globalContext: ({
80
77
  _globalConfigPublic: {
81
78
  pages: {
@@ -170,7 +167,7 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
170
167
  _pageFilesAll: PageFile[];
171
168
  _baseServer: string;
172
169
  _baseAssets: string;
173
- _pageContextInit: import("../../server/runtime/renderPageServer.js").PageContextInit;
170
+ _pageContextInit: import("../../types/PageContext.js").PageContextInit;
174
171
  _urlHandler: ((url: string) => string) | null;
175
172
  isClientSideNavigation: boolean;
176
173
  } & {
@@ -45,7 +45,7 @@ async function runPrerender(options = {}, trigger) {
45
45
  const viteConfig = await resolveViteConfig(options.viteConfig || {}, 'build', 'production');
46
46
  const vikeConfig = await getVikeConfigInternal();
47
47
  const { outDirServer } = getOutDirs(viteConfig, undefined);
48
- const prerenderConfigGlobal = resolvePrerenderConfigGlobal(vikeConfig);
48
+ const prerenderConfigGlobal = await resolvePrerenderConfigGlobal(vikeConfig);
49
49
  const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
50
50
  if (!isPrerenderingEnabled) {
51
51
  assert(trigger !== 'auto-run');
@@ -117,8 +117,8 @@ async function runPrerender(options = {}, trigger) {
117
117
  }
118
118
  async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext) {
119
119
  // V1 design
120
- pageConfigs.forEach((pageConfig) => {
121
- const prerenderConfigLocal = resolvePrerenderConfigLocal(pageConfig);
120
+ await Promise.all(pageConfigs.map(async (pageConfig) => {
121
+ const prerenderConfigLocal = await resolvePrerenderConfigLocal(pageConfig);
122
122
  const { pageId } = pageConfig;
123
123
  if (!prerenderConfigLocal) {
124
124
  if (!defaultLocalValue) {
@@ -131,7 +131,7 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
131
131
  doNotPrerenderList.push({ pageId });
132
132
  }
133
133
  }
134
- });
134
+ }));
135
135
  // Old design
136
136
  // TO-DO/next-major-release: remove
137
137
  await Promise.all(globalContext._pageFilesAll
@@ -218,7 +218,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
218
218
  if (doNotPrerenderList.find((p) => p.pageId === pageId))
219
219
  return;
220
220
  const { hookName, hookFilePath } = hook;
221
- const prerenderResult = await execHookDirectWithoutPageContext(() => hook.hookFn(), hook);
221
+ const prerenderResult = await execHookDirectWithoutPageContext(() => hook.hookFn(), hook, globalContext);
222
222
  const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
223
223
  // Handle result
224
224
  await Promise.all(result.map(async ({ url, pageContext }) => {
@@ -446,7 +446,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
446
446
  preservePropertyGetters(pageContext);
447
447
  });
448
448
  const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
449
- let result = await execHookDirectWithoutPageContext(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
449
+ let result = await execHookDirectWithoutPageContext(() => hookFn(prerenderContextPublic), onPrerenderStartHook, globalContext);
450
450
  // Before applying result
451
451
  prerenderContext.pageContexts.forEach((pageContext) => {
452
452
  ;
@@ -4,11 +4,12 @@ import { assertIsNotProductionRuntime, markSetup_vikeVitePlugin } from '../../ut
4
4
  import { assertNodeVersion } from '../../utils/assertNodeVersion.js';
5
5
  import { version as viteVersion } from 'vite';
6
6
  import { assertViteVersion } from '../../utils/assertViteVersion.js';
7
+ import { installUncaughtErrorHandlers } from '../../utils/installUncaughtErrorHandlers.js';
7
8
  function onLoad() {
8
9
  markSetup_vikeVitePlugin();
9
10
  assertIsNotBrowser();
10
11
  assertNodeVersion();
11
12
  assertViteVersion(viteVersion);
12
- // Ensure we don't bloat the server runtime with heavy dependencies such Vite and esbuild
13
- assertIsNotProductionRuntime();
13
+ assertIsNotProductionRuntime(); // Don't bloat server with heavy dependencies like Vite and esbuild
14
+ installUncaughtErrorHandlers();
14
15
  }
@@ -129,7 +129,7 @@ async function triggerPrerendering(config, viteEnv, bundle) {
129
129
  // - Issue & reproduction: https://github.com/vikejs/vike/issues/1154#issuecomment-1965954636
130
130
  if (!bundle[getManifestFilePathRelative(config.build.manifest)])
131
131
  return;
132
- if (!isPrerenderAutoRunEnabled(vikeConfig))
132
+ if (!(await isPrerenderAutoRunEnabled(vikeConfig)))
133
133
  return;
134
134
  const configInline = getFullBuildInlineConfig(config);
135
135
  const res = await runPrerenderFromAutoRun(configInline);
@@ -6,7 +6,8 @@ import { getMagicString } from '../../shared/getMagicString.js';
6
6
  // - Terser removes legal comments, but I guess users use terser to minify JavaScript so I guess it's a good thing that comment is removed.
7
7
  // - Rollup's banner feature doesn't work with Vite: https://github.com/vitejs/vite/issues/8412
8
8
  // - But, anyways, we want to prepend the banner at the beginning of each module, not at the beginning of each file (I believe that's what Rollup's banner feature does).
9
- // - Potential alternative: https://github.com/vitejs/vite/issues/21228#issuecomment-3627899741
9
+ // - Potential alternative: Rolldown's `postBanner` https://x.com/voidzerodev/status/2001683010446299613
10
+ // - Potential alternative: Rolldown's `//#region` https://github.com/vitejs/vite/issues/21228#issuecomment-3627899741
10
11
  function pluginModuleBanner() {
11
12
  let config;
12
13
  let isEnabled = false;
@@ -33,6 +33,11 @@ const configDefinitionsBuiltIn = {
33
33
  global: true,
34
34
  cumulative: true,
35
35
  },
36
+ onHookCall: {
37
+ env: { server: true, client: true },
38
+ global: true,
39
+ cumulative: true,
40
+ },
36
41
  onBeforeRender: {
37
42
  env: { server: true },
38
43
  },
@@ -164,7 +164,7 @@ async function resolveVikeConfigInternal_withErrorHandling(userRootDir, isDev, v
164
164
  }
165
165
  else {
166
166
  logErrorServerDev(err, null);
167
- resolve(getVikeConfigDummy(esbuildCache));
167
+ resolve(await getVikeConfigDummy(esbuildCache));
168
168
  }
169
169
  }
170
170
  }
@@ -178,7 +178,7 @@ async function resolveVikeConfigInternal(userRootDir, vikeVitePluginOptions, esb
178
178
  temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir);
179
179
  setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved);
180
180
  const globalConfigPublic = resolveGlobalConfig(pageConfigGlobal, pageConfigs);
181
- const prerenderContext = resolvePrerenderContext({
181
+ const prerenderContext = await resolvePrerenderContext({
182
182
  config: globalConfigPublic.config,
183
183
  _from: globalConfigPublic._from,
184
184
  _pageConfigs: pageConfigs,
@@ -1092,8 +1092,8 @@ function isGlobalLocation(locationId, plusFilesByLocationId) {
1092
1092
  .map(([locationId]) => locationId);
1093
1093
  return locationIdsPage.every((locId) => isInherited(locationId, locId));
1094
1094
  }
1095
- function resolvePrerenderContext(vikeConfig) {
1096
- const { isPrerenderingEnabled, isPrerenderingEnabledForAllPages } = resolvePrerenderConfigGlobal(vikeConfig);
1095
+ async function resolvePrerenderContext(vikeConfig) {
1096
+ const { isPrerenderingEnabled, isPrerenderingEnabledForAllPages } = await resolvePrerenderConfigGlobal(vikeConfig);
1097
1097
  globalObject.prerenderContext ?? (globalObject.prerenderContext = {
1098
1098
  isPrerenderingEnabled: false,
1099
1099
  isPrerenderingEnabledForAllPages: false,
@@ -1121,14 +1121,14 @@ function restartViteDevServer() {
1121
1121
  })();
1122
1122
  swallowViteLogForceOptimization_disable();
1123
1123
  }
1124
- function getVikeConfigDummy(esbuildCache) {
1124
+ async function getVikeConfigDummy(esbuildCache) {
1125
1125
  const pageConfigsDummy = [];
1126
1126
  const pageConfigGlobalDummy = {
1127
1127
  configValueSources: {},
1128
1128
  configDefinitions: {},
1129
1129
  };
1130
1130
  const globalConfigPublicDummy = resolveGlobalConfig(pageConfigGlobalDummy, pageConfigsDummy);
1131
- const prerenderContextDummy = resolvePrerenderContext({
1131
+ const prerenderContextDummy = await resolvePrerenderContext({
1132
1132
  config: globalConfigPublicDummy.config,
1133
1133
  _from: globalConfigPublicDummy._from,
1134
1134
  _pageConfigs: pageConfigsDummy,
@@ -4,9 +4,11 @@ import { assertNodeVersion } from '../utils/assertNodeVersion.js';
4
4
  import { setAssertAlwaysShowStackTrace } from '../utils/assert.js';
5
5
  import { installRequireShim } from '@brillout/require-shim';
6
6
  import { isDebugError } from '../utils/debug.js';
7
+ import { installUncaughtErrorHandlers } from '../utils/installUncaughtErrorHandlers.js';
7
8
  function onLoad() {
8
9
  assertIsNotBrowser();
9
10
  assertNodeVersion();
11
+ installUncaughtErrorHandlers();
10
12
  if (isDebugError()) {
11
13
  // Is also executed upon `$ vike build` because node/vite/utils.ts imports server/utils.ts
12
14
  Error.stackTraceLimit = Infinity;
@@ -1,5 +1,5 @@
1
1
  export { logErrorServer };
2
2
  export { hasAlreadyLogged };
3
- import type { PageContextCreatedServerMinimum } from './renderPageServer/createPageContextServerSide.js';
4
- declare function logErrorServer(err: unknown, pageContext: PageContextCreatedServerMinimum | null): void;
3
+ import type { PageContextCreatedServerBase } from './renderPageServer/createPageContextServerSide.js';
4
+ declare function logErrorServer(err: unknown, pageContext: PageContextCreatedServerBase | null): void;
5
5
  declare function hasAlreadyLogged(err: unknown): boolean;
@@ -4,10 +4,10 @@ export { setLogRuntimeDev };
4
4
  export { assertPageContext_logRuntime };
5
5
  export type { PageContext_logRuntime };
6
6
  import type { LogType } from '../../node/vite/shared/loggerDev.js';
7
- import type { PageContextCreatedServerMinimum } from './renderPageServer/createPageContextServerSide.js';
7
+ import type { PageContextCreatedServerBase } from './renderPageServer/createPageContextServerSide.js';
8
8
  type LogRuntimeInfo = (msg: string, pageContext: PageContext_logRuntime, logType: LogType) => void;
9
9
  type LogRuntimeError = (err: unknown, pageContext: PageContext_logRuntime) => void;
10
- type PageContext_logRuntime = null | (PageContextCreatedServerMinimum & {
10
+ type PageContext_logRuntime = null | (PageContextCreatedServerBase & {
11
11
  _requestId: number;
12
12
  });
13
13
  declare function setLogRuntimeDev(logRuntimeErrorDev: LogRuntimeError, logRuntimeInfoDev: LogRuntimeInfo): void;
@@ -1,10 +1,10 @@
1
1
  export { createPageContextServerSide };
2
2
  export { createPageContextServerSideWithoutGlobalContext };
3
3
  export type { PageContextCreatedServer };
4
- export type { PageContextCreatedServerMinimum };
4
+ export type { PageContextCreatedServerBase };
5
5
  import type { GlobalContextServerInternal } from '../globalContext.js';
6
6
  import type { PageContextInit } from '../renderPageServer.js';
7
- type PageContextCreatedServerMinimum = ReturnType<typeof createPageContextServerSideWithoutGlobalContext>;
7
+ type PageContextCreatedServerBase = ReturnType<typeof createPageContextBase>;
8
8
  type PageContextCreatedServer = Awaited<ReturnType<typeof createPageContextServerSide>>;
9
9
  declare function createPageContextServerSide(pageContextInit: PageContextInit, globalContext: GlobalContextServerInternal, args: {
10
10
  requestId: number;
@@ -21,10 +21,7 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
21
21
  isClientSide: false;
22
22
  isPrerendering: boolean;
23
23
  _requestId: number;
24
- } & Pick<import("../../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
25
- url?: string;
26
- headers?: Record<string, string>;
27
- } & {
24
+ } & PageContextInit & {
28
25
  _globalContext: ({
29
26
  _globalConfigPublic: {
30
27
  pages: {
@@ -156,7 +153,12 @@ declare function createPageContextServerSideWithoutGlobalContext(pageContextInit
156
153
  isClientSide: false;
157
154
  isPrerendering: boolean;
158
155
  _requestId: number;
159
- } & Pick<import("../../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
160
- url?: string;
161
- headers?: Record<string, string>;
162
- };
156
+ } & PageContextInit;
157
+ declare function createPageContextBase(pageContextInit: PageContextInit | null, isPrerendering: boolean, requestId: number): {
158
+ _isOriginalObject: true;
159
+ isPageContext: true;
160
+ } & {
161
+ isClientSide: false;
162
+ isPrerendering: boolean;
163
+ _requestId: number;
164
+ } & PageContextInit;
@@ -5,8 +5,8 @@ import { getPageContextUrlComputed } from '../../../shared-server-client/getPage
5
5
  import { createPageContextObject, createPageContextShared, } from '../../../shared-server-client/createPageContextShared.js';
6
6
  function createPageContextServerSide(pageContextInit, globalContext, args) {
7
7
  assert(pageContextInit.urlOriginal);
8
- const pageContextCreated = createPageContext(pageContextInit, args.isPrerendering, args.requestId);
9
- objectAssign(pageContextCreated, {
8
+ const pageContext = createPageContextBase(pageContextInit, args.isPrerendering, args.requestId);
9
+ objectAssign(pageContext, {
10
10
  _globalContext: globalContext,
11
11
  _pageFilesAll: globalContext._pageFilesAll, // TO-DO/next-major-release: remove
12
12
  // We use pageContext._baseServer and pageContext._baseAssets instead of pageContext._globalContext.baseServer and pageContext._globalContext.baseAssets because the Base URLs can (eventually one day if needed) be made non-global
@@ -16,10 +16,10 @@ function createPageContextServerSide(pageContextInit, globalContext, args) {
16
16
  _urlHandler: args.isPrerendering ? null : args.urlHandler,
17
17
  isClientSideNavigation: args.isPrerendering ? false : args.isClientSideNavigation,
18
18
  });
19
- objectAssign(pageContextCreated, globalContext._globalConfigPublic);
19
+ objectAssign(pageContext, globalContext._globalConfigPublic);
20
20
  // pageContext.urlParsed
21
- const pageContextUrlComputed = getPageContextUrlComputed(pageContextCreated);
22
- objectAssign(pageContextCreated, pageContextUrlComputed);
21
+ const pageContextUrlComputed = getPageContextUrlComputed(pageContext);
22
+ objectAssign(pageContext, pageContextUrlComputed);
23
23
  // pageContext.headers
24
24
  {
25
25
  let headers;
@@ -35,18 +35,18 @@ function createPageContextServerSide(pageContextInit, globalContext, args) {
35
35
  else {
36
36
  headers = null;
37
37
  }
38
- objectAssign(pageContextCreated, { headers });
38
+ objectAssign(pageContext, { headers });
39
39
  }
40
- const pageContextAugmented = createPageContextShared(pageContextCreated, globalContext._globalConfigPublic);
41
- updateType(pageContextCreated, pageContextAugmented);
42
- return pageContextCreated;
40
+ const pageContextAugmented = createPageContextShared(pageContext, globalContext._globalConfigPublic);
41
+ updateType(pageContext, pageContextAugmented);
42
+ return pageContext;
43
43
  }
44
44
  /** Use this as last resort — prefer passing richer `pageContext` objects to the runtime logger */
45
45
  function createPageContextServerSideWithoutGlobalContext(pageContextInit, requestId) {
46
- const pageContext = createPageContext(pageContextInit, false, requestId);
46
+ const pageContext = createPageContextBase(pageContextInit, false, requestId);
47
47
  return pageContext;
48
48
  }
49
- function createPageContext(pageContextInit, isPrerendering, requestId) {
49
+ function createPageContextBase(pageContextInit, isPrerendering, requestId) {
50
50
  const pageContext = createPageContextObject();
51
51
  objectAssign(pageContext, {
52
52
  isClientSide: false,
@@ -1,3 +1,3 @@
1
1
  export { execHookOnError };
2
- import type { PageContextCreatedServerMinimum } from './createPageContextServerSide.js';
3
- declare function execHookOnError(err: unknown, pageContext: PageContextCreatedServerMinimum | null): void;
2
+ import type { PageContextCreatedServerBase } from './createPageContextServerSide.js';
3
+ declare function execHookOnError(err: unknown, pageContext: PageContextCreatedServerBase | null): void;
@@ -1,5 +1,6 @@
1
1
  export { execHookOnError };
2
2
  import { isObject, getGlobalObject } from '../../utils.js';
3
+ import { execHookBase } from '../../../shared-server-client/hooks/execHook.js';
3
4
  import { getGlobalContextServerInternalOptional } from '../globalContext.js';
4
5
  import { getHookFromPageConfigGlobalCumulative } from '../../../shared-server-client/hooks/getHook.js';
5
6
  const globalObject = getGlobalObject('renderPageServer/execHookOnError.ts', {
@@ -17,7 +18,8 @@ function execHookOnError(err, pageContext) {
17
18
  const hooks = getHookFromPageConfigGlobalCumulative(globalContext._pageConfigGlobal, 'onError');
18
19
  for (const hook of hooks) {
19
20
  try {
20
- hook.hookFn(err, pageContext);
21
+ // TODO/refactor: stop using any
22
+ execHookBase(() => hook.hookFn(err, pageContext), hook, globalContext, pageContext);
21
23
  }
22
24
  catch (hookErr) {
23
25
  console.error(hookErr);
@@ -21,10 +21,7 @@ declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPage
21
21
  isClientSide: false;
22
22
  isPrerendering: boolean;
23
23
  _requestId: number;
24
- } & Pick<import("../../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
25
- url?: string;
26
- headers?: Record<string, string>;
27
- } & {
24
+ } & import("../renderPageServer.js").PageContextInit & {
28
25
  _globalContext: ({
29
26
  _globalConfigPublic: {
30
27
  pages: {
@@ -29,10 +29,7 @@ declare function prerenderPage(pageContext: Parameters<typeof prerenderPageEntry
29
29
  isClientSide: false;
30
30
  isPrerendering: boolean;
31
31
  _requestId: number;
32
- } & Pick<import("../../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
33
- url?: string;
34
- headers?: Record<string, string>;
35
- } & {
32
+ } & import("../renderPageServer.js").PageContextInit & {
36
33
  _globalContext: ({
37
34
  _globalConfigPublic: {
38
35
  pages: {
@@ -193,10 +190,7 @@ declare function prerenderPage(pageContext: Parameters<typeof prerenderPageEntry
193
190
  isClientSide: false;
194
191
  isPrerendering: boolean;
195
192
  _requestId: number;
196
- } & Pick<import("../../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
197
- url?: string;
198
- headers?: Record<string, string>;
199
- } & {
193
+ } & import("../renderPageServer.js").PageContextInit & {
200
194
  _globalContext: ({
201
195
  _globalConfigPublic: {
202
196
  pages: {
@@ -365,10 +359,7 @@ declare function prerenderPageEntry(pageContext: PageContextCreatedServer & Page
365
359
  isClientSide: false;
366
360
  isPrerendering: boolean;
367
361
  _requestId: number;
368
- } & Pick<import("../../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
369
- url?: string;
370
- headers?: Record<string, string>;
371
- } & {
362
+ } & import("../renderPageServer.js").PageContextInit & {
372
363
  _globalContext: ({
373
364
  _globalConfigPublic: {
374
365
  pages: {
@@ -529,10 +520,7 @@ declare function prerenderPageEntry(pageContext: PageContextCreatedServer & Page
529
520
  isClientSide: false;
530
521
  isPrerendering: boolean;
531
522
  _requestId: number;
532
- } & Pick<import("../../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
533
- url?: string;
534
- headers?: Record<string, string>;
535
- } & {
523
+ } & import("../renderPageServer.js").PageContextInit & {
536
524
  _globalContext: ({
537
525
  _globalConfigPublic: {
538
526
  pages: {
@@ -5,12 +5,8 @@ import { type PageContextAborted } from '../../shared-server-client/route/abort.
5
5
  import { type GlobalContextServerInternal } from './globalContext.js';
6
6
  import { type HttpResponse } from './renderPageServer/createHttpResponse.js';
7
7
  import type { PageContextServer } from '../../types/index.js';
8
- import type { PageContextInternalServer } from '../../types/PageContext.js';
8
+ import type { PageContextInit } from '../../types/PageContext.js';
9
9
  import { type AsyncStore } from './asyncHook.js';
10
- type PageContextInit = Pick<PageContextInternalServer, 'urlOriginal' | 'headersOriginal'> & {
11
- /** @deprecated Set `pageContextInit.urlOriginal` instead */ url?: string;
12
- /** @deprecated Set pageContextInit.headersOriginal instead */ headers?: Record<string, string>;
13
- };
14
10
  type PageContextBegin = ReturnType<typeof getPageContextBegin>;
15
11
  declare function renderPageServer<PageContextUserAdded extends {}, PageContextInitUser extends PageContextInit>(pageContextInit: PageContextInitUser): Promise<PageContextInitUser & {
16
12
  httpResponse: HttpResponse;
@@ -22,10 +18,7 @@ declare function getPageContextBegin(pageContextInit: PageContextInit, globalCon
22
18
  isClientSide: false;
23
19
  isPrerendering: boolean;
24
20
  _requestId: number;
25
- } & Pick<PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
26
- /** @deprecated Set `pageContextInit.urlOriginal` instead */ url?: string;
27
- /** @deprecated Set pageContextInit.headersOriginal instead */ headers?: Record<string, string>;
28
- } & {
21
+ } & PageContextInit & {
29
22
  _globalContext: ({
30
23
  _globalConfigPublic: {
31
24
  pages: {
@@ -54,7 +54,7 @@ addGlobalContextTmp, addGlobalContextAsync) {
54
54
  let hooksCalled = false;
55
55
  if (!hooksAreEqual(globalObject.onCreateGlobalContextHooks ?? [], onCreateGlobalContextHooks)) {
56
56
  globalObject.onCreateGlobalContextHooks = onCreateGlobalContextHooks;
57
- await execHookGlobal('onCreateGlobalContext', globalContext._pageConfigGlobal, null, globalContext, prepareGlobalContextForPublicUsage);
57
+ await execHookGlobal('onCreateGlobalContext', globalContext, null, globalContext, prepareGlobalContextForPublicUsage);
58
58
  hooksCalled = true;
59
59
  }
60
60
  if (isNewGlobalContext) {
@@ -1,8 +1,18 @@
1
1
  export { createPageContextShared };
2
2
  export { createPageContextObject };
3
+ export type { PageContextCreated };
4
+ export type { PageContextCreatedBase };
3
5
  import type { GlobalConfigPublic } from './page-configs/resolveVikeConfigPublic.js';
4
- import { type PageContextPrepareMinimum } from './preparePageContextForPublicUsage.js';
5
- declare function createPageContextShared<T extends PageContextPrepareMinimum>(pageContextCreated: T, globalConfigPublic: GlobalConfigPublic): T & GlobalConfigPublic;
6
+ import type { PageContextCreatedClient } from '../client/runtime-client-routing/createPageContextClientSide.js';
7
+ import type { PageContextCreatedServer } from '../server/runtime/renderPageServer/createPageContextServerSide.js';
8
+ import type { PageContextCreatedClient_ServerRouting } from '../client/runtime-server-routing/createPageContextClientSide.js';
9
+ type PageContextCreated = PageContextCreatedServer | PageContextCreatedClient | PageContextCreatedClient_ServerRouting;
10
+ type PageContextCreatedBase = {
11
+ _isOriginalObject: true;
12
+ isPageContext: true;
13
+ isClientSide: boolean;
14
+ };
15
+ declare function createPageContextShared<T extends Record<string, unknown>>(pageContextCreated: T, globalConfigPublic: GlobalConfigPublic): T & GlobalConfigPublic;
6
16
  declare function createPageContextObject(): {
7
17
  _isOriginalObject: true;
8
18
  isPageContext: true;
@@ -1,6 +1,7 @@
1
1
  export { createPageContextShared };
2
2
  export { createPageContextObject };
3
3
  import { changeEnumerable, objectAssign } from './utils.js';
4
+ //*/
4
5
  function createPageContextShared(pageContextCreated, globalConfigPublic) {
5
6
  objectAssign(pageContextCreated, globalConfigPublic);
6
7
  return pageContextCreated;
@@ -3,8 +3,9 @@ export type { PageContextUrlInternal };
3
3
  export type { PageContextUrlClient };
4
4
  export type { PageContextUrlServer };
5
5
  export type { PageContextUrlSource };
6
- import { type PageContextPrepareMinimum } from './preparePageContextForPublicUsage.js';
7
6
  import { type UrlPublic } from './utils.js';
7
+ import type { GlobalContextPrepareMinimum } from './prepareGlobalContextForPublicUsage.js';
8
+ import type { PageContextCreatedBase } from './createPageContextShared.js';
8
9
  type PageContextUrlComputed = {
9
10
  /** Parsed information about the current URL */
10
11
  urlParsed: UrlPublic;
@@ -17,8 +18,10 @@ type PageContextUrl = {
17
18
  /** The URL of the HTTP request */
18
19
  urlOriginal: string;
19
20
  } & PageContextUrlComputed;
20
- type PageContextUrlInternal = PageContextPrepareMinimum & PageContextUrl & {
21
+ type PageContextUrlInternal = PageContextUrl & {
21
22
  _urlRewrite?: string;
23
+ } & PageContextCreatedBase & {
24
+ _globalContext: GlobalContextPrepareMinimum;
22
25
  };
23
26
  type PageContextUrlClient = PageContextUrl;
24
27
  type PageContextUrlServer = PageContextUrl & {
@@ -5,6 +5,7 @@ export { execHookDirectSingle };
5
5
  export { execHookDirectSingleWithReturn };
6
6
  export { execHookDirectWithoutPageContext };
7
7
  export { execHookDirectSync };
8
+ export { execHookBase };
8
9
  export { getPageContext_sync };
9
10
  export { providePageContext };
10
11
  export { isUserHookError };
@@ -13,32 +14,29 @@ import type { PageContextClient, PageContextServer } from '../../types/PageConte
13
14
  import type { Hook, HookLoc } from './getHook.js';
14
15
  import type { PageContextConfig } from '../getPageFiles.js';
15
16
  import type { HookName, HookNameGlobal } from '../../types/Config.js';
16
- import type { PageConfigGlobalRuntime } from '../../types/PageConfig.js';
17
+ import type { PageContextCreated } from '../createPageContextShared.js';
17
18
  import type { PageContextForPublicUsageServer } from '../../server/runtime/renderPageServer/preparePageContextForPublicUsageServer.js';
18
19
  import type { PageContextForPublicUsageClientShared } from '../../client/shared/preparePageContextForPublicUsageClientShared.js';
19
20
  import { type PageContextPrepareMinimum } from '../preparePageContextForPublicUsage.js';
20
21
  import type { GlobalContextPrepareMinimum } from '../prepareGlobalContextForPublicUsage.js';
21
- import type { PageContextCreatedClient } from '../../client/runtime-client-routing/createPageContextClientSide.js';
22
- import type { PageContextCreatedServer } from '../../server/runtime/renderPageServer/createPageContextServerSide.js';
23
- import type { PageContextCreatedClient_ServerRouting } from '../../client/runtime-server-routing/createPageContextClientSide.js';
24
22
  type PageContextExecHook = PageContextCreated & PageContextConfig & PageContextForPublicUsage;
25
- type PageContextCreated = PageContextCreatedServer | PageContextCreatedClient | PageContextCreatedClient_ServerRouting;
26
23
  type PageContextForPublicUsage = PageContextForPublicUsageServer | PageContextForPublicUsageClientShared;
27
24
  type HookWithResult = Hook & {
28
25
  hookReturn: unknown;
29
26
  };
30
27
  declare function execHook<PageContext extends PageContextExecHook>(hookName: HookName, pageContext: PageContext, preparePageContextForPublicUsage: (pageContext: PageContext) => PageContext): Promise<HookWithResult[]>;
31
- declare function execHookGlobal<HookArg extends GlobalContextPrepareMinimum>(hookName: HookNameGlobal, pageConfigGlobal: PageConfigGlobalRuntime, pageContext: PageContextPrepareMinimum | null, hookArg: HookArg, prepareForPublicUsage: (hookArg: HookArg) => HookArg): Promise<void>;
28
+ declare function execHookGlobal<HookArg extends GlobalContextPrepareMinimum>(hookName: HookNameGlobal, globalContext: GlobalContextPrepareMinimum, pageContext: PageContextPrepareMinimum | null, hookArg: HookArg, prepareForPublicUsage: (hookArg: HookArg) => HookArg): Promise<void>;
32
29
  declare function execHookDirect<PageContext extends PageContextPrepareMinimum>(hooks: Hook[], pageContext: PageContext, preparePageContextForPublicUsage: (pageContext: PageContext) => PageContext): Promise<HookWithResult[]>;
33
30
  declare function execHookDirectSingle<PageContext extends PageContextExecHook>(hook: Hook, pageContext: PageContext, preparePageContextForPublicUsage: (pageContext: PageContext) => PageContext): Promise<void>;
34
31
  declare function execHookDirectSingleWithReturn<PageContext extends PageContextExecHook>(hook: Hook, pageContext: PageContext, preparePageContextForPublicUsage: (pageContext: PageContext) => PageContext): Promise<{
35
32
  hookReturn: unknown;
36
33
  }>;
37
34
  declare function isUserHookError(err: unknown): false | HookLoc;
38
- declare function execHookDirectWithoutPageContext<HookReturn>(hookFnCaller: () => HookReturn, hook: Omit<Hook, 'hookFn'>): Promise<HookReturn>;
35
+ declare function execHookDirectWithoutPageContext<HookReturn>(hookFnCaller: () => HookReturn, hook: Omit<Hook, 'hookFn'>, globalContext: GlobalContextPrepareMinimum): Promise<HookReturn>;
39
36
  declare function execHookDirectSync<PageContext extends PageContextPrepareMinimum>(hook: Omit<Hook, 'hookTimeout'>, pageContext: PageContext, preparePageContextForPublicUsage: (pageContext: PageContext) => PageContext): {
40
37
  hookReturn: unknown;
41
38
  };
39
+ declare function execHookBase<HookReturn>(hookFnCaller: () => HookReturn, hook: Omit<Hook, 'hookTimeout' | 'hookFn'>, globalContext: GlobalContextPrepareMinimum, pageContext: PageContextPrepareMinimum | null): HookReturn | Promise<HookReturn>;
42
40
  declare function getPageContext_sync<PageContext = PageContextClient | PageContextServer>(): null | PageContext;
43
41
  /**
44
42
  * Provide `pageContext` for universal hooks.