vike 0.4.267-commit-b005535 → 0.4.267-commit-7884d91

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 (138) hide show
  1. package/dist/client/runtime-client-routing/createPageContextClient.d.ts +4 -0
  2. package/dist/client/runtime-client-routing/getGlobalContextClientInternal.d.ts +4 -0
  3. package/dist/client/runtime-client-routing/getPageContextFromHooks.d.ts +22 -2
  4. package/dist/client/runtime-client-routing/getPageContextFromHooks.js +4 -5
  5. package/dist/client/runtime-client-routing/renderPageClient.d.ts +472 -9
  6. package/dist/client/runtime-client-routing/renderPageClient.js +11 -5
  7. package/dist/client/runtime-client-routing/streamedValues.d.ts +5 -0
  8. package/dist/client/runtime-client-routing/streamedValues.js +23 -0
  9. package/dist/client/runtime-server-routing/createPageContextClient.d.ts +4 -0
  10. package/dist/client/runtime-server-routing/entry.js +1 -1
  11. package/dist/client/runtime-server-routing/getGlobalContextClientInternal.d.ts +4 -0
  12. package/dist/client/shared/getGlobalContextClientInternalShared.d.ts +4 -0
  13. package/dist/client/shared/getJsonSerializedInHtml.d.ts +2 -2
  14. package/dist/client/shared/getJsonSerializedInHtml.js +9 -6
  15. package/dist/client/shared/streamedValues/asyncIterable.d.ts +4 -0
  16. package/dist/client/shared/streamedValues/asyncIterable.js +26 -0
  17. package/dist/client/shared/streamedValues/lines.d.ts +11 -0
  18. package/dist/client/shared/streamedValues/lines.js +19 -0
  19. package/dist/client/shared/streamedValues/promise.d.ts +4 -0
  20. package/dist/client/shared/streamedValues/promise.js +19 -0
  21. package/dist/client/shared/streamedValues/readableStream.d.ts +4 -0
  22. package/dist/client/shared/streamedValues/readableStream.js +44 -0
  23. package/dist/client/shared/streamedValues/registry.d.ts +21 -0
  24. package/dist/client/shared/streamedValues/registry.js +40 -0
  25. package/dist/client/shared/streamedValues.d.ts +7 -0
  26. package/dist/client/shared/streamedValues.js +82 -0
  27. package/dist/node/api/resolveViteConfigUser.js +2 -2
  28. package/dist/node/prerender/runPrerender.d.ts +12 -4
  29. package/dist/node/prerender/runPrerender.js +60 -15
  30. package/dist/node/vite/assertEnvVite.js +1 -1
  31. package/dist/node/vite/index.js +2 -0
  32. package/dist/node/vite/plugins/build/handleAssetsManifest.js +6 -2
  33. package/dist/node/vite/plugins/build/pluginBuildApp.js +25 -26
  34. package/dist/node/vite/plugins/build/pluginBuildConfig.d.ts +2 -2
  35. package/dist/node/vite/plugins/build/pluginBuildConfig.js +24 -16
  36. package/dist/node/vite/plugins/build/pluginDistFileNames.js +70 -50
  37. package/dist/node/vite/plugins/build/pluginEnvironmentEntries.d.ts +6 -0
  38. package/dist/node/vite/plugins/build/pluginEnvironmentEntries.js +71 -0
  39. package/dist/node/vite/plugins/build/pluginSuppressRollupWarning.js +19 -17
  40. package/dist/node/vite/plugins/pluginCommon.js +9 -6
  41. package/dist/node/vite/plugins/pluginDev/optimizeDeps.js +1 -1
  42. package/dist/node/vite/plugins/pluginReplaceConstantsGlobalThis.js +6 -4
  43. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.d.ts +2 -1
  44. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.js +29 -12
  45. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +3 -2
  46. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFilePageEntry.js +7 -7
  47. package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.d.ts +7 -5
  48. package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js +4 -10
  49. package/dist/node/vite/plugins/pluginVirtualFiles.js +20 -0
  50. package/dist/node/vite/shared/addSsrMiddleware.js +13 -1
  51. package/dist/node/vite/shared/getAssetsDir.d.ts +3 -2
  52. package/dist/node/vite/shared/getAssetsDir.js +3 -3
  53. package/dist/node/vite/shared/isViteCli.d.ts +3 -3
  54. package/dist/node/vite/shared/isViteCli.js +80 -84
  55. package/dist/node/vite/shared/isViteServerSide.js +2 -7
  56. package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.d.ts +1 -1
  57. package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.js +8 -6
  58. package/dist/node/vite/shared/resolveVikeConfigInternal.d.ts +4 -1
  59. package/dist/node/vite/shared/resolveVikeConfigInternal.js +82 -11
  60. package/dist/server/runtime/globalContext.d.ts +20 -0
  61. package/dist/server/runtime/renderPageServer/analyzePage.js +3 -3
  62. package/dist/server/runtime/renderPageServer/createHttpResponse.d.ts +20 -7
  63. package/dist/server/runtime/renderPageServer/createHttpResponse.js +34 -15
  64. package/dist/server/runtime/renderPageServer/createPageContextServer.d.ts +4 -0
  65. package/dist/server/runtime/renderPageServer/execHookOnError.js +1 -1
  66. package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.d.ts +9 -0
  67. package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.js +17 -5
  68. package/dist/server/runtime/renderPageServer/getHttpResponseBody.d.ts +2 -2
  69. package/dist/server/runtime/renderPageServer/getHttpResponseBody.js +17 -2
  70. package/dist/server/runtime/renderPageServer/getPageContextJson.d.ts +8 -0
  71. package/dist/server/runtime/renderPageServer/getPageContextJson.js +47 -0
  72. package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.d.ts +2 -0
  73. package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.js +1 -1
  74. package/dist/server/runtime/renderPageServer/headersResponse.d.ts +11 -2
  75. package/dist/server/runtime/renderPageServer/headersResponse.js +20 -1
  76. package/dist/server/runtime/renderPageServer/html/injectAssets/getHtmlTags.js +5 -4
  77. package/dist/server/runtime/renderPageServer/html/injectAssets.d.ts +3 -2
  78. package/dist/server/runtime/renderPageServer/html/injectAssets.js +7 -1
  79. package/dist/server/runtime/renderPageServer/html/renderHtml.js +4 -2
  80. package/dist/server/runtime/renderPageServer/html/serializeContext.d.ts +5 -1
  81. package/dist/server/runtime/renderPageServer/html/serializeContext.js +12 -9
  82. package/dist/server/runtime/renderPageServer/html/stream.d.ts +13 -6
  83. package/dist/server/runtime/renderPageServer/html/stream.js +121 -31
  84. package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.d.ts +30 -0
  85. package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.js +92 -0
  86. package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +4 -0
  87. package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.js +5 -1
  88. package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.d.ts +15 -0
  89. package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.js +61 -0
  90. package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +314 -1
  91. package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.js +21 -12
  92. package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.d.ts +4 -0
  93. package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.js +12 -0
  94. package/dist/server/runtime/renderPageServer/streamedValues/lines.d.ts +10 -0
  95. package/dist/server/runtime/renderPageServer/streamedValues/lines.js +49 -0
  96. package/dist/server/runtime/renderPageServer/streamedValues/promise.d.ts +4 -0
  97. package/dist/server/runtime/renderPageServer/streamedValues/promise.js +14 -0
  98. package/dist/server/runtime/renderPageServer/streamedValues/pump.d.ts +10 -0
  99. package/dist/server/runtime/renderPageServer/streamedValues/pump.js +67 -0
  100. package/dist/server/runtime/renderPageServer/streamedValues/readableStream.d.ts +4 -0
  101. package/dist/server/runtime/renderPageServer/streamedValues/readableStream.js +12 -0
  102. package/dist/server/runtime/renderPageServer/streamedValues/registry.d.ts +28 -0
  103. package/dist/server/runtime/renderPageServer/streamedValues/registry.js +33 -0
  104. package/dist/server/runtime/renderPageServer.d.ts +4 -0
  105. package/dist/server/runtime/renderPageServer.js +17 -8
  106. package/dist/shared-server-client/createGlobalContextShared.d.ts +8 -0
  107. package/dist/shared-server-client/createGlobalContextShared.js +2 -1
  108. package/dist/shared-server-client/getPageContextPublicShared.js +0 -2
  109. package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.d.ts +8 -0
  110. package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.js +17 -7
  111. package/dist/shared-server-client/hooks/execHook.d.ts +1 -1
  112. package/dist/shared-server-client/hooks/execHook.js +2 -2
  113. package/dist/shared-server-client/route/abort.d.ts +1 -1
  114. package/dist/shared-server-client/route/abort.js +4 -2
  115. package/dist/shared-server-client/streamedValues.d.ts +22 -0
  116. package/dist/shared-server-client/streamedValues.js +24 -0
  117. package/dist/shared-server-node/vike-environments.d.ts +4 -0
  118. package/dist/shared-server-node/vike-environments.js +10 -0
  119. package/dist/shared-server-node/virtualFileId.d.ts +7 -5
  120. package/dist/shared-server-node/virtualFileId.js +42 -42
  121. package/dist/types/Config.d.ts +1 -1
  122. package/dist/types/PageConfig.d.ts +13 -5
  123. package/dist/types/PageContext.d.ts +18 -1
  124. package/dist/utils/PROJECT_VERSION.d.ts +1 -1
  125. package/dist/utils/PROJECT_VERSION.js +1 -1
  126. package/dist/utils/assertViteVersion.d.ts +1 -3
  127. package/dist/utils/assertViteVersion.js +6 -9
  128. package/dist/utils/deepEqual.d.ts +2 -1
  129. package/dist/utils/deepEqual.js +21 -6
  130. package/dist/utils/getContentTypeFromUrl.d.ts +2 -0
  131. package/dist/utils/getContentTypeFromUrl.js +39 -0
  132. package/dist/utils/injectRollupInputs.d.ts +2 -2
  133. package/dist/utils/injectRollupInputs.js +2 -2
  134. package/dist/utils/isDev.js +2 -7
  135. package/dist/utils/parseUrl-extras.js +4 -0
  136. package/package.json +6 -6
  137. package/dist/shared-server-client/addIs404ToPageProps.d.ts +0 -2
  138. package/dist/shared-server-client/addIs404ToPageProps.js +0 -17
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: '0.4.267-commit-b005535';
1
+ export declare const PROJECT_VERSION: '0.4.267-commit-7884d91';
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.267-commit-b005535';
2
+ export const PROJECT_VERSION = '0.4.267-commit-7884d91';
@@ -1,4 +1,2 @@
1
1
  export { assertViteVersion };
2
- export { viteVersionMin };
3
- declare const viteVersionMin = "6.3.0";
4
- declare function assertViteVersion(viteVersion: string): void;
2
+ declare function assertViteVersion(viteVersion: string | undefined): void;
@@ -1,14 +1,11 @@
1
1
  export { assertViteVersion };
2
- export { viteVersionMin };
2
+ import { assertUsage } from './assert.js';
3
3
  import { assertVersion } from './assertVersion.js';
4
- const viteVersionMin = '6.3.0';
5
- // package.json#peerDependencies isn't enough, as users often ignore it
4
+ const viteVersionMin = '7.1.0';
5
+ // - package.json#peerDependencies isn't enough, as users often ignore it
6
+ // - `import { version } from 'vite'` isn't reliable: the user may still use an older Vite version — see https://github.com/vitejs/vite/pull/19355
6
7
  function assertViteVersion(viteVersion) {
7
- // - This assertion isn't reliable: the user may still use a Vite version older than 6.0.0 — see https://github.com/vitejs/vite/pull/19355
8
- // - TO-DO/eventually: let's also use this.meta.viteVersion
9
- // - this.meta.viteVersion was released in vite@7.0.0 => let's use it only after Vike requires a Vite version above 7.0.0
10
- // - https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md#700-2025-06-24
11
- // - https://github.com/vitejs/vite/pull/20088
12
- // - We can then remove the assertUsage() at isViteServerSide.ts — see viteVersionMin export usage
8
+ // `viteVersion` is `undefined` on Vite 6 and older (their `config` hook has no `this`); assertVersion() needs a string
9
+ assertUsage(viteVersion, `You're using an old Vite version — update Vite to ${viteVersionMin} or above.`);
13
10
  assertVersion('Vite', viteVersion, [viteVersionMin]);
14
11
  }
@@ -1 +1,2 @@
1
- export declare function deepEqual(x: any, y: any): boolean;
1
+ export { deepEqual };
2
+ declare function deepEqual(x: any, y: any): boolean;
@@ -1,7 +1,22 @@
1
- // https://stackoverflow.com/questions/201183/how-to-determine-equality-for-two-javascript-objects/32922084#32922084
2
- export function deepEqual(x, y) {
3
- const ok = Object.keys, tx = typeof x, ty = typeof y;
4
- return x && y && tx === 'object' && tx === ty
5
- ? ok(x).length === ok(y).length && ok(x).every((key) => deepEqual(x[key], y[key]))
6
- : x === y;
1
+ export { deepEqual };
2
+ import { assertIsNotBrowser } from './assertIsNotBrowser.js';
3
+ // If client-side needs it then use a more minimal version to save client-side KBs:
4
+ // https://github.com/vikejs/vike/blob/165d572a5994ccd0e56e43fe2993b1cef117ee7f/packages/vike/src/utils/deepEqual.ts
5
+ assertIsNotBrowser();
6
+ function deepEqual(x, y) {
7
+ return deepEqualCyclic(x, y, new Map());
8
+ }
9
+ // Supports cyclic objects, e.g. Vite plugins
10
+ function deepEqualCyclic(x, y, seen) {
11
+ if (x === y)
12
+ return true;
13
+ if (!x || !y || typeof x !== 'object' || typeof y !== 'object')
14
+ return false;
15
+ // A pair seen before is either being compared higher up (a cycle) or already found equal
16
+ const seenY = seen.get(x) ?? new Set();
17
+ if (seenY.has(y))
18
+ return true;
19
+ seen.set(x, seenY.add(y));
20
+ const keys = Object.keys(x);
21
+ return keys.length === Object.keys(y).length && keys.every((key) => deepEqualCyclic(x[key], y[key], seen));
7
22
  }
@@ -0,0 +1,2 @@
1
+ export { getContentTypeFromUrl };
2
+ declare function getContentTypeFromUrl(url: string): string | null;
@@ -0,0 +1,39 @@
1
+ export { getContentTypeFromUrl };
2
+ import { parseUrl } from './parseUrl.js';
3
+ import { assertIsNotBrowser } from './assertIsNotBrowser.js';
4
+ assertIsNotBrowser();
5
+ const contentTypes = new Map(Object.entries({
6
+ atom: 'application/atom+xml;charset=utf-8',
7
+ rss: 'application/rss+xml;charset=utf-8',
8
+ xml: 'application/xml;charset=utf-8',
9
+ json: 'application/json',
10
+ jsonld: 'application/ld+json',
11
+ webmanifest: 'application/manifest+json',
12
+ txt: 'text/plain;charset=utf-8',
13
+ md: 'text/markdown;charset=utf-8',
14
+ csv: 'text/csv;charset=utf-8',
15
+ ics: 'text/calendar;charset=utf-8',
16
+ html: 'text/html;charset=utf-8',
17
+ htm: 'text/html;charset=utf-8',
18
+ css: 'text/css;charset=utf-8',
19
+ js: 'text/javascript;charset=utf-8',
20
+ mjs: 'text/javascript;charset=utf-8',
21
+ svg: 'image/svg+xml',
22
+ png: 'image/png',
23
+ jpg: 'image/jpeg',
24
+ jpeg: 'image/jpeg',
25
+ gif: 'image/gif',
26
+ webp: 'image/webp',
27
+ avif: 'image/avif',
28
+ ico: 'image/x-icon',
29
+ pdf: 'application/pdf',
30
+ }));
31
+ // Content-Type of the URL's file extension, or `null` if unknown, see https://vike.dev/pageContext#content
32
+ function getContentTypeFromUrl(url) {
33
+ const { pathname } = parseUrl(url, '/');
34
+ // Last non-empty segment, see https://vike.dev/url-normalization
35
+ const fileName = pathname.split('/').filter(Boolean).pop() ?? '';
36
+ const i = fileName.lastIndexOf('.');
37
+ const fileExtension = i > 0 ? fileName.slice(i + 1).toLowerCase() : null;
38
+ return (fileExtension && contentTypes.get(fileExtension)) || null;
39
+ }
@@ -1,7 +1,7 @@
1
1
  export { injectRollupInputs };
2
2
  export { normalizeRollupInput };
3
- import type { ResolvedConfig, Rollup } from 'vite';
3
+ import type { Rollup } from 'vite';
4
4
  type InputOption = Rollup.InputOption;
5
5
  type InputsMap = Record<string, string>;
6
- declare function injectRollupInputs(inputsNew: InputsMap, config: ResolvedConfig): InputsMap;
6
+ declare function injectRollupInputs(inputsNew: InputsMap, inputCurrent: InputOption | undefined): InputsMap;
7
7
  declare function normalizeRollupInput(input?: InputOption): InputsMap;
@@ -3,8 +3,8 @@ export { normalizeRollupInput };
3
3
  import { assert } from './assert.js';
4
4
  import { isObject } from './isObject.js';
5
5
  import { isArray } from './isArray.js';
6
- function injectRollupInputs(inputsNew, config) {
7
- const inputsCurrent = normalizeRollupInput(config.build.rollupOptions.input);
6
+ function injectRollupInputs(inputsNew, inputCurrent) {
7
+ const inputsCurrent = normalizeRollupInput(inputCurrent);
8
8
  const input = {
9
9
  ...inputsNew,
10
10
  ...inputsCurrent,
@@ -1,15 +1,10 @@
1
1
  export { isDevCheck };
2
2
  export { applyDev };
3
3
  export { applyPreview };
4
- import { assertUsage } from './assert.js';
4
+ import { assert } from './assert.js';
5
5
  function isDevCheck(configEnv) {
6
6
  const { isPreview, command } = configEnv;
7
- // Note that:
8
- // - `assertVersion('Vite', version, '5.1.0')` isn't enough: https://github.com/vitejs/vite/pull/19355
9
- // - We'll eventually be able to make this an assert() instead of assertUsage() once Vike requires a Vite version that supports this.meta.viteVersion
10
- // - https://github.com/vitejs/vite/pull/20088
11
- // - Released at 7.0.0: https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md#700-2025-06-24
12
- assertUsage(typeof isPreview === 'boolean', 'You are using an old Vite version; make sure to use Vite 5.1.0 or above.');
7
+ assert(typeof isPreview === 'boolean');
13
8
  return command === 'serve' && !isPreview;
14
9
  }
15
10
  function applyDev(_, env) {
@@ -10,6 +10,7 @@ import { assertUrlComponents, createUrlFromComponents, isBaseServer, parseUrl }
10
10
  import { assert } from './assert.js';
11
11
  import { slice } from './slice.js';
12
12
  import { assertIsNotBrowser } from './assertIsNotBrowser.js';
13
+ import { getContentTypeFromUrl } from './getContentTypeFromUrl.js';
13
14
  assertIsNotBrowser();
14
15
  function prependBase(url, baseServer) {
15
16
  if (baseServer.startsWith('http')) {
@@ -61,6 +62,9 @@ function normalizeUrlPathname(urlOriginal, trailingSlash, baseServer) {
61
62
  if (urlPathnameNormalized === '/') {
62
63
  return urlPathnameNormalized;
63
64
  }
65
+ // A file URL such as /feed.atom doesn't get a trailing slash
66
+ if (getContentTypeFromUrl(urlPathnameNormalized))
67
+ trailingSlash = false;
64
68
  // If the Base URL has a trailing slash, then Vite (as of vite@5.0.0-beta.19) expects the root URL to also have a trailing slash, see https://github.com/vikejs/vike/issues/1258#issuecomment-1812226260
65
69
  if (baseServer.endsWith('/') && baseServer !== '/' && normalize(baseServer) === urlPathnameNormalized) {
66
70
  trailingSlash = true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.267-commit-b005535",
3
+ "version": "0.4.267-commit-7884d91",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {
@@ -125,11 +125,11 @@
125
125
  "@babel/core": "^7.28.5",
126
126
  "@babel/types": "^7.28.5",
127
127
  "@brillout/import": "^0.2.6",
128
- "@brillout/json-serializer": "^0.5.25",
128
+ "@brillout/json-serializer": "^0.5.27",
129
129
  "@brillout/picocolors": "^1.0.31",
130
- "@brillout/vite-plugin-server-entry": "^0.7.21",
130
+ "@brillout/vite-plugin-server-entry": "^0.7.23",
131
131
  "@universal-deploy/store": "^0.2.2",
132
- "@universal-deploy/vite": "^0.1.13",
132
+ "@universal-deploy/vite": "^0.1.14",
133
133
  "@universal-middleware/core": "^0.4.18",
134
134
  "@universal-middleware/node": "^0.2.2",
135
135
  "cac": "^6.0.0",
@@ -143,12 +143,12 @@
143
143
  "sirv": "^3.0.2",
144
144
  "source-map-support": "^0.5.0",
145
145
  "tinyglobby": "^0.2.17",
146
- "vite": ">=6.3.0",
146
+ "vite": ">=7.1.0",
147
147
  "vite-plugin-wrapper": "^0.1.1"
148
148
  },
149
149
  "peerDependencies": {
150
150
  "react-streaming": ">=0.3.42",
151
- "vite": ">=6.3.0"
151
+ "vite": ">=7.1.0"
152
152
  },
153
153
  "peerDependenciesMeta": {
154
154
  "react-streaming": {
@@ -1,2 +0,0 @@
1
- export { addIs404ToPageProps };
2
- declare function addIs404ToPageProps(pageContext: Record<string, unknown>): void;
@@ -1,17 +0,0 @@
1
- export { addIs404ToPageProps };
2
- import { assertWarning } from '../utils/assert.js';
3
- import { isObject } from '../utils/isObject.js';
4
- function addIs404ToPageProps(pageContext) {
5
- addIs404(pageContext);
6
- }
7
- function addIs404(pageContext) {
8
- if (pageContext.is404 === undefined || pageContext.is404 === null)
9
- return;
10
- const pageProps = pageContext.pageProps || {};
11
- if (!isObject(pageProps)) {
12
- assertWarning(false, 'pageContext.pageProps should be an object', { showStackTrace: true, onlyOnce: true });
13
- return;
14
- }
15
- pageProps.is404 = pageProps.is404 || pageContext.is404;
16
- pageContext.pageProps = pageProps;
17
- }