vike 0.4.235 → 0.4.236-commit-85d361d
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.
- package/dist/cjs/__internal/index.js +1 -1
- package/dist/cjs/client/shared/createGetGlobalContextClient.js +0 -1
- package/dist/cjs/client/shared/preparePageContextForPublicUsageClientShared.js +4 -4
- package/dist/cjs/node/api/prepareViteApiCall.js +1 -1
- package/dist/cjs/node/cli/index.js +1 -1
- package/dist/cjs/node/createPageRenderer.js +1 -1
- package/dist/cjs/node/importBuild.js +1 -1
- package/dist/cjs/node/prerender/context.js +1 -1
- package/dist/cjs/node/prerender/index.js +1 -1
- package/dist/cjs/node/prerender/resolvePrerenderConfig.js +2 -2
- package/dist/cjs/node/prerender/runPrerender.js +9 -13
- package/dist/cjs/node/runtime/globalContext.js +32 -13
- package/dist/cjs/node/runtime/html/injectAssets/injectAssets__public.js +1 -1
- package/dist/cjs/node/runtime/html/injectAssets/injectHtmlTags.js +2 -0
- package/dist/cjs/node/runtime/html/serializeContext.js +73 -15
- package/dist/cjs/node/runtime/index-deprecated.js +1 -1
- package/dist/cjs/node/runtime/index.js +1 -1
- package/dist/cjs/node/runtime/page-files/setup.js +1 -1
- package/dist/cjs/node/runtime/renderPage/assertArguments.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +9 -6
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +4 -4
- package/dist/cjs/node/runtime/renderPage/execHookDataAndOnBeforeRender.js +2 -2
- package/dist/cjs/node/runtime/renderPage/{createHttpResponse/getCacheControl.js → getCacheControl.js} +9 -9
- package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +4 -4
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
- package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +35 -16
- package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -0
- package/dist/cjs/node/runtime/renderPage.js +4 -6
- package/dist/cjs/node/vite/onLoad.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildConfig.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildEntry.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginCommon/assertResolveAlias.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginCommon.js +8 -4
- package/dist/cjs/node/vite/plugins/pluginDev.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginEnvVars.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginFileEnv.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginVirtualFiles.js +1 -1
- package/dist/cjs/node/vite/shared/addSsrMiddleware.js +1 -1
- package/dist/cjs/node/vite/shared/loggerNotProd.js +10 -6
- package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +5 -1
- package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +1 -3
- package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/filesystemRouting.js +4 -6
- package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +1 -1
- package/dist/cjs/node/vite/shared/resolveVikeConfigInternal.js +6 -6
- package/dist/cjs/shared/RenderErrorPage.js +1 -1
- package/dist/cjs/shared/abort.js +1 -1
- package/dist/cjs/shared/createGlobalContextShared.js +20 -7
- package/dist/cjs/shared/createPageContextShared.js +1 -2
- package/dist/cjs/shared/determinePageIdOld.js +1 -1
- package/dist/cjs/shared/error-page.js +3 -3
- package/dist/cjs/shared/getPageContextUrlComputed.js +4 -4
- package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +1 -1
- package/dist/cjs/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +1 -1
- package/dist/cjs/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +1 -1
- package/dist/cjs/shared/getPageFiles/analyzePageClientSide.js +2 -2
- package/dist/cjs/shared/getPageFiles/assert_exports_old_design.js +1 -1
- package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/cjs/shared/getPageFiles/getAllPageIdFiles.js +1 -1
- package/dist/cjs/shared/getPageFiles/getPageFileObject.js +1 -1
- package/dist/cjs/shared/getPageFiles/parseVirtualFileExports.js +1 -1
- package/dist/cjs/shared/getProxyForPublicUsage.js +1 -1
- package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +4 -3
- package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +10 -10
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +1 -1
- package/dist/cjs/shared/preparePageContextForPublicUsage.js +5 -5
- package/dist/cjs/shared/route/abort.js +1 -1
- package/dist/cjs/shared/route/deduceRouteStringFromFilesystemPath.js +1 -1
- package/dist/cjs/shared/route/execHookGuard.js +1 -1
- package/dist/cjs/shared/route/execHookOnBeforeRoute.js +1 -1
- package/dist/cjs/shared/route/index.js +1 -1
- package/dist/cjs/shared/route/loadPageRoutes.js +10 -4
- package/dist/cjs/shared/route/resolveRouteFunction.js +3 -3
- package/dist/cjs/shared/route/resolveRouteString.js +1 -1
- package/dist/cjs/shared/route/routing.js +1 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assertSetup.js +8 -8
- package/dist/cjs/utils/debugGlob.js +1 -1
- package/dist/cjs/utils/parseNpmPackage.js +1 -1
- package/dist/esm/__internal/index.d.ts +1 -1
- package/dist/esm/__internal/index.js +1 -1
- package/dist/esm/client/node.js +1 -1
- package/dist/esm/client/runtime-client-routing/createPageContextClientSide.js +2 -2
- package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +8 -0
- package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.js +6 -6
- package/dist/esm/client/runtime-client-routing/index.js +1 -1
- package/dist/esm/client/runtime-client-routing/isClientSideRoutable.js +1 -1
- package/dist/esm/client/runtime-client-routing/prefetch/getPrefetchSettings.js +6 -6
- package/dist/esm/client/runtime-client-routing/prefetch.js +10 -10
- package/dist/esm/client/runtime-client-routing/renderPageClientSide.d.ts +2 -0
- package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +3 -3
- package/dist/esm/client/runtime-client-routing/skipLink.js +1 -1
- package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +2 -2
- package/dist/esm/client/runtime-server-routing/index.js +1 -1
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +5 -4
- package/dist/esm/client/shared/createGetGlobalContextClient.js +0 -1
- package/dist/esm/client/shared/execHookOnRenderClient.js +1 -1
- package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +2 -2
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +4 -4
- package/dist/esm/node/api/prepareViteApiCall.js +1 -1
- package/dist/esm/node/cli/index.js +1 -1
- package/dist/esm/node/createPageRenderer.js +1 -1
- package/dist/esm/node/importBuild.js +1 -1
- package/dist/esm/node/prerender/context.js +1 -1
- package/dist/esm/node/prerender/index.js +1 -1
- package/dist/esm/node/prerender/resolvePrerenderConfig.js +2 -2
- package/dist/esm/node/prerender/runPrerender.d.ts +2 -1
- package/dist/esm/node/prerender/runPrerender.js +9 -13
- package/dist/esm/node/runtime/globalContext.d.ts +15 -15
- package/dist/esm/node/runtime/globalContext.js +34 -15
- package/dist/esm/node/runtime/html/injectAssets/injectAssets__public.js +1 -1
- package/dist/esm/node/runtime/html/injectAssets/injectHtmlTags.js +2 -0
- package/dist/esm/node/runtime/html/serializeContext.d.ts +7 -1
- package/dist/esm/node/runtime/html/serializeContext.js +73 -15
- package/dist/esm/node/runtime/index-deprecated.js +1 -1
- package/dist/esm/node/runtime/index.js +1 -1
- package/dist/esm/node/runtime/page-files/setup.js +1 -1
- package/dist/esm/node/runtime/renderPage/assertArguments.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +1 -0
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +9 -6
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +4 -4
- package/dist/esm/node/runtime/renderPage/execHookDataAndOnBeforeRender.js +2 -2
- package/dist/esm/node/runtime/renderPage/getCacheControl.d.ts +5 -0
- package/dist/esm/node/runtime/renderPage/{createHttpResponse/getCacheControl.js → getCacheControl.js} +8 -9
- package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +4 -4
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +8 -4
- package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +36 -17
- package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +1 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +4 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -0
- package/dist/esm/node/runtime/renderPage.d.ts +3 -3
- package/dist/esm/node/runtime/renderPage.js +4 -6
- package/dist/esm/node/vite/index.js +1 -1
- package/dist/esm/node/vite/onLoad.js +1 -1
- package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.js +1 -1
- package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildEntry.js +1 -1
- package/dist/esm/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +0 -1
- package/dist/esm/node/vite/plugins/pluginCommon/assertResolveAlias.js +1 -1
- package/dist/esm/node/vite/plugins/pluginCommon.js +8 -4
- package/dist/esm/node/vite/plugins/pluginDev.js +1 -1
- package/dist/esm/node/vite/plugins/pluginEnvVars.js +1 -1
- package/dist/esm/node/vite/plugins/pluginFileEnv.js +1 -1
- package/dist/esm/node/vite/plugins/pluginVirtualFiles.js +1 -1
- package/dist/esm/node/vite/shared/addSsrMiddleware.js +1 -1
- package/dist/esm/node/vite/shared/loggerNotProd.js +10 -0
- package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +5 -1
- package/dist/esm/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +1 -3
- package/dist/esm/node/vite/shared/resolveVikeConfigInternal/filesystemRouting.js +4 -6
- package/dist/esm/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +1 -1
- package/dist/esm/node/vite/shared/resolveVikeConfigInternal.js +6 -6
- package/dist/esm/shared/RenderErrorPage.js +1 -1
- package/dist/esm/shared/abort.js +1 -1
- package/dist/esm/shared/createGlobalContextShared.d.ts +3 -3
- package/dist/esm/shared/createGlobalContextShared.js +20 -7
- package/dist/esm/shared/createPageContextShared.d.ts +2 -3
- package/dist/esm/shared/createPageContextShared.js +1 -2
- package/dist/esm/shared/determinePageIdOld.js +1 -1
- package/dist/esm/shared/error-page.js +3 -3
- package/dist/esm/shared/getPageContextUrlComputed.js +4 -4
- package/dist/esm/shared/getPageFiles/analyzeClientSide.js +1 -1
- package/dist/esm/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +1 -1
- package/dist/esm/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +1 -1
- package/dist/esm/shared/getPageFiles/analyzePageClientSide.js +2 -2
- package/dist/esm/shared/getPageFiles/assert_exports_old_design.js +1 -1
- package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/esm/shared/getPageFiles/getAllPageIdFiles.js +1 -1
- package/dist/esm/shared/getPageFiles/getPageFileObject.js +1 -1
- package/dist/esm/shared/getPageFiles/parseVirtualFileExports.js +1 -1
- package/dist/esm/shared/getProxyForPublicUsage.js +1 -1
- package/dist/esm/shared/hooks/getHook.js +1 -1
- package/dist/esm/shared/page-configs/getConfigDefinedAt.js +4 -3
- package/dist/esm/shared/page-configs/resolveVikeConfigPublic.js +12 -12
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +1 -1
- package/dist/esm/shared/preparePageContextForPublicUsage.js +5 -5
- package/dist/esm/shared/route/abort.js +1 -1
- package/dist/esm/shared/route/deduceRouteStringFromFilesystemPath.js +1 -1
- package/dist/esm/shared/route/execHookGuard.js +1 -1
- package/dist/esm/shared/route/execHookOnBeforeRoute.js +1 -1
- package/dist/esm/shared/route/index.js +1 -1
- package/dist/esm/shared/route/loadPageRoutes.d.ts +5 -0
- package/dist/esm/shared/route/loadPageRoutes.js +10 -4
- package/dist/esm/shared/route/resolveRouteFunction.js +3 -3
- package/dist/esm/shared/route/resolveRouteString.js +1 -1
- package/dist/esm/shared/route/routing.js +1 -1
- package/dist/esm/types/Config.d.ts +9 -1
- package/dist/esm/types/PageContext.d.ts +8 -2
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assertSetup.js +8 -8
- package/dist/esm/utils/debugGlob.js +1 -1
- package/dist/esm/utils/parseNpmPackage.js +1 -1
- package/package.json +3 -6
- package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.d.ts +0 -5
|
@@ -13,7 +13,7 @@ export { setGlobalContext_viteDevServer };
|
|
|
13
13
|
export { setGlobalContext_viteConfig };
|
|
14
14
|
export { setGlobalContext_isPrerendering };
|
|
15
15
|
export { setGlobalContext_isProduction };
|
|
16
|
-
export { setGlobalContext_buildEntry };
|
|
16
|
+
export { setGlobalContext_buildEntry }; // production entry
|
|
17
17
|
export { clearGlobalContext };
|
|
18
18
|
export { assertBuildInfo };
|
|
19
19
|
export { updateUserFiles };
|
|
@@ -30,7 +30,7 @@ import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, obje
|
|
|
30
30
|
import { importServerProductionEntry } from '@brillout/vite-plugin-server-entry/runtime';
|
|
31
31
|
import { virtualFileIdEntryServer } from '../shared/virtualFiles/virtualFileEntry.js';
|
|
32
32
|
import pc from '@brillout/picocolors';
|
|
33
|
-
import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
|
|
33
|
+
import { loadPageRoutes, loadPageRoutesSync } from '../../shared/route/loadPageRoutes.js';
|
|
34
34
|
import { assertV1Design } from '../shared/assertV1Design.js';
|
|
35
35
|
import { resolveBase } from '../shared/resolveBase.js';
|
|
36
36
|
import { createGlobalContextShared, getGlobalContextSyncErrMsg, } from '../../shared/createGlobalContextShared.js';
|
|
@@ -39,7 +39,7 @@ import { logRuntimeError, logRuntimeInfo } from './loggerRuntime.js';
|
|
|
39
39
|
import { getVikeConfigErrorBuild, setVikeConfigError } from '../shared/getVikeConfigError.js';
|
|
40
40
|
import { hasAlreadyLogged } from './renderPage/isNewError.js';
|
|
41
41
|
const debug = createDebugger('vike:globalContext');
|
|
42
|
-
const globalObject = getGlobalObject('runtime/globalContext.ts',
|
|
42
|
+
const globalObject = getGlobalObject('runtime/globalContext.ts', getInitialGlobalObject());
|
|
43
43
|
// Trick to break down TypeScript circular dependency
|
|
44
44
|
// https://chat.deepseek.com/a/chat/s/d7e9f90a-c7f3-4108-9cd5-4ad6caed3539
|
|
45
45
|
const globalObjectTyped = globalObject;
|
|
@@ -99,17 +99,19 @@ async function getGlobalContextAsync(isProduction) {
|
|
|
99
99
|
* Get runtime information about your app.
|
|
100
100
|
*
|
|
101
101
|
* https://vike.dev/getGlobalContext
|
|
102
|
-
*
|
|
103
|
-
* @deprecated
|
|
104
102
|
*/
|
|
105
103
|
function getGlobalContextSync() {
|
|
106
104
|
debug('getGlobalContextSync()');
|
|
107
105
|
const { globalContext } = globalObjectTyped;
|
|
108
106
|
assertUsage(globalContext, getGlobalContextSyncErrMsg);
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
107
|
+
const isProd = globalContext._isProduction;
|
|
108
|
+
assert(typeof isProd === 'boolean');
|
|
109
|
+
assertWarning(isProd,
|
|
110
|
+
// - We discourage users from using it in development because `pageContext.globalContext` is safer: I ain't sure but there could be race conditions when using `getGlobalContextSync()` inside React/Vue components upon HMR.
|
|
111
|
+
// - I don't see any issues with getGlobalContextSync() in production.
|
|
112
|
+
// - getGlobalContextSync() is used in production by vike-vercel
|
|
113
|
+
// - https://discord.com/channels/@me/942519153502339072/1389546794676916344 (PM between Rom and Joël)
|
|
114
|
+
"getGlobalContextSync() shouldn't be used in development, see https://vike.dev/getGlobalContext", { onlyOnce: true });
|
|
113
115
|
return getGlobalContextForPublicUsage();
|
|
114
116
|
}
|
|
115
117
|
function getGlobalContextForPublicUsage() {
|
|
@@ -148,7 +150,9 @@ function setGlobalContext_isPrerendering() {
|
|
|
148
150
|
globalObject.isPrerendering = true;
|
|
149
151
|
setIsProduction(true);
|
|
150
152
|
}
|
|
151
|
-
function setGlobalContext_isProduction(isProduction, tolerateContraditction) {
|
|
153
|
+
function setGlobalContext_isProduction(isProduction, tolerateContraditction = false) {
|
|
154
|
+
if (debug.isActivated)
|
|
155
|
+
debug('setGlobalContext_isProduction()', { isProduction, tolerateContraditction });
|
|
152
156
|
if (globalObject.isProduction === undefined) {
|
|
153
157
|
setIsProduction(isProduction);
|
|
154
158
|
}
|
|
@@ -230,6 +234,7 @@ function assertViteManifest(manifest) {
|
|
|
230
234
|
async function loadBuildEntry(outDir) {
|
|
231
235
|
debug('loadBuildEntry()');
|
|
232
236
|
if (globalObject.globalContext) {
|
|
237
|
+
debug('loadBuildEntry() - already done');
|
|
233
238
|
return;
|
|
234
239
|
}
|
|
235
240
|
if (!globalObject.buildEntry) {
|
|
@@ -255,6 +260,8 @@ async function loadBuildEntry(outDir) {
|
|
|
255
260
|
globalObject.buildInfo = buildEntry.buildInfo;
|
|
256
261
|
await setGlobalContext(buildEntry.virtualFileExports);
|
|
257
262
|
}
|
|
263
|
+
// This is the production entry, see:
|
|
264
|
+
// https://github.com/vikejs/vike/blob/798e5465dc3e3e6723b38b601a50350c0a006fb8/packages/vike/node/vite/plugins/pluginBuild/pluginBuildEntry.ts#L47
|
|
258
265
|
async function setGlobalContext_buildEntry(buildEntry) {
|
|
259
266
|
debug('setGlobalContext_buildEntry()');
|
|
260
267
|
setIsProduction(true);
|
|
@@ -264,6 +271,7 @@ async function setGlobalContext_buildEntry(buildEntry) {
|
|
|
264
271
|
assert(globalObject.buildEntry); // ensure no infinite loop
|
|
265
272
|
await loadBuildEntry();
|
|
266
273
|
assertGlobalContextIsDefined();
|
|
274
|
+
debug('setGlobalContext_buildEntry() - done');
|
|
267
275
|
}
|
|
268
276
|
function assertBuildEntry(buildEntry) {
|
|
269
277
|
assert(isObject(buildEntry));
|
|
@@ -360,18 +368,29 @@ async function updateUserFiles() {
|
|
|
360
368
|
return onSuccess();
|
|
361
369
|
}
|
|
362
370
|
async function setGlobalContext(virtualFileExports) {
|
|
371
|
+
debug('setGlobalContext()');
|
|
363
372
|
assert(!getVikeConfigErrorBuild());
|
|
364
|
-
const globalContext = await createGlobalContextShared(virtualFileExports, globalObject,
|
|
373
|
+
const globalContext = await createGlobalContextShared(virtualFileExports, globalObject, addGlobalContextAsync, addGlobalContextSync);
|
|
365
374
|
assertV1Design(
|
|
366
375
|
// pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
|
|
367
376
|
globalContext._pageConfigs.length > 0, globalContext._pageFilesAll);
|
|
368
377
|
assertGlobalContextIsDefined();
|
|
369
378
|
onSetupRuntime();
|
|
379
|
+
debug('setGlobalContext() - done');
|
|
370
380
|
// Never actually used, only used for TypeScript `ReturnType<typeof setGlobalContext>`
|
|
371
381
|
return globalContext;
|
|
372
382
|
}
|
|
373
|
-
async function
|
|
383
|
+
async function addGlobalContextAsync(globalContext) {
|
|
384
|
+
debug('addGlobalContextAsync()');
|
|
374
385
|
const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
|
|
386
|
+
return addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook);
|
|
387
|
+
}
|
|
388
|
+
function addGlobalContextSync(globalContext) {
|
|
389
|
+
debug('addGlobalContextSync()');
|
|
390
|
+
const { pageRoutes, onBeforeRouteHook } = loadPageRoutesSync(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
|
|
391
|
+
return addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook);
|
|
392
|
+
}
|
|
393
|
+
function addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook) {
|
|
375
394
|
const globalContextBase = {
|
|
376
395
|
isClientSide: false,
|
|
377
396
|
_pageRoutes: pageRoutes,
|
|
@@ -430,10 +449,10 @@ async function addGlobalContext(globalContext) {
|
|
|
430
449
|
}
|
|
431
450
|
function clearGlobalContext() {
|
|
432
451
|
debug('clearGlobalContext()');
|
|
433
|
-
objectReplace(globalObject,
|
|
452
|
+
objectReplace(globalObject, getInitialGlobalObject(), ['buildEntryPrevious']);
|
|
434
453
|
}
|
|
435
|
-
function
|
|
436
|
-
debug('
|
|
454
|
+
function getInitialGlobalObject() {
|
|
455
|
+
debug('getInitialGlobalObject()');
|
|
437
456
|
const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = genPromise();
|
|
438
457
|
return {
|
|
439
458
|
viteDevServerPromise,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { injectAssets__public };
|
|
2
2
|
import { assertUsage, assertWarning, castProp, hasProp } from '../../utils.js';
|
|
3
3
|
import { injectHtmlTagsToString } from '../injectAssets.js';
|
|
4
|
-
//
|
|
4
|
+
// TO-DO/next-major-release: remove
|
|
5
5
|
async function injectAssets__public(htmlString, pageContext) {
|
|
6
6
|
assertWarning(false, '`_injectAssets()` is deprecated and will be removed.', { onlyOnce: true, showStackTrace: true });
|
|
7
7
|
assertUsage(typeof htmlString === 'string', '[injectAssets(htmlString, pageContext)]: Argument `htmlString` should be a string.', { showStackTrace: true });
|
|
@@ -149,6 +149,8 @@ function getTagClosing(tag) {
|
|
|
149
149
|
return tagClosing;
|
|
150
150
|
}
|
|
151
151
|
function injectAtPlaceholder(htmlFragment, htmlString, isFirst) {
|
|
152
|
+
// TO-DO/eventually: soft deprecate in favor of https://github.com/vikejs/vike/issues/695
|
|
153
|
+
// Used by BurdaForward https://github.com/vikejs/vike/discussions/2528#discussioncomment-13637156
|
|
152
154
|
const placeholder = isFirst ? '__VITE_PLUGIN_SSR__ASSETS_FIRST__' : '__VITE_PLUGIN__SSR_ASSETS_LAST__';
|
|
153
155
|
const parts = htmlString.split(placeholder);
|
|
154
156
|
if (parts.length === 1)
|
|
@@ -2,19 +2,25 @@ export { getPageContextClientSerialized };
|
|
|
2
2
|
export { getPageContextClientSerializedAbort };
|
|
3
3
|
export { getGlobalContextClientSerialized };
|
|
4
4
|
export type { PageContextSerialization };
|
|
5
|
+
export type { PassToClient };
|
|
5
6
|
import type { UrlRedirect } from '../../../shared/route/abort.js';
|
|
6
7
|
import type { GlobalContextServerInternal } from '../globalContext.js';
|
|
7
8
|
type PageContextSerialization = {
|
|
8
9
|
pageId: string;
|
|
9
10
|
routeParams: Record<string, string>;
|
|
10
|
-
_passToClient:
|
|
11
|
+
_passToClient: PassToClient;
|
|
11
12
|
is404: null | boolean;
|
|
12
13
|
pageProps?: Record<string, unknown>;
|
|
13
14
|
_pageContextInit: Record<string, unknown>;
|
|
14
15
|
_globalContext: GlobalContextServerInternal;
|
|
16
|
+
isClientSideNavigation: boolean;
|
|
15
17
|
};
|
|
16
18
|
declare function getPageContextClientSerialized(pageContext: PageContextSerialization): string;
|
|
17
19
|
declare function getGlobalContextClientSerialized(pageContext: PageContextSerialization): string;
|
|
20
|
+
type PassToClient = (string | {
|
|
21
|
+
prop: string;
|
|
22
|
+
once?: boolean;
|
|
23
|
+
})[];
|
|
18
24
|
declare function getPageContextClientSerializedAbort(pageContext: Record<string, unknown> & ({
|
|
19
25
|
_urlRedirect: UrlRedirect;
|
|
20
26
|
} | {
|
|
@@ -27,20 +27,41 @@ const passToClientBuiltInPageContext = [
|
|
|
27
27
|
const pageToClientBuiltInPageContextError = ['pageProps', 'is404', isServerSideError];
|
|
28
28
|
function getPageContextClientSerialized(pageContext) {
|
|
29
29
|
const passToClientPageContext = getPassToClientPageContext(pageContext);
|
|
30
|
-
const
|
|
31
|
-
|
|
30
|
+
const getObj = (passToClientEntry) => {
|
|
31
|
+
if (passToClientEntry.once)
|
|
32
|
+
return undefined; // pass it to client-side globalContext
|
|
33
|
+
return { obj: pageContext, objName: 'pageContext' };
|
|
34
|
+
};
|
|
35
|
+
const res = applyPassToClient(passToClientPageContext, getObj);
|
|
36
|
+
const pageContextClient = res.objClient;
|
|
37
|
+
const pageContextClientProps = res.objClientProps;
|
|
38
|
+
if (pageContextClientProps.some((prop) => getPropVal(pageContext._pageContextInit, prop))) {
|
|
32
39
|
pageContextClient[pageContextInitIsPassedToClient] = true;
|
|
33
40
|
}
|
|
34
|
-
const pageContextClientSerialized = serializeObject(pageContextClient,
|
|
41
|
+
const pageContextClientSerialized = serializeObject(pageContextClient, passToClientPageContext, getObj);
|
|
35
42
|
return pageContextClientSerialized;
|
|
36
43
|
}
|
|
37
44
|
function getGlobalContextClientSerialized(pageContext) {
|
|
38
45
|
const passToClient = pageContext._passToClient;
|
|
39
|
-
const
|
|
40
|
-
const
|
|
46
|
+
const globalContext = pageContext._globalContext;
|
|
47
|
+
const getObj = ({ prop, once }) => {
|
|
48
|
+
if (once && getPropVal(pageContext, prop)) {
|
|
49
|
+
assert(typeof pageContext.isClientSideNavigation === 'boolean');
|
|
50
|
+
if (!pageContext.isClientSideNavigation) {
|
|
51
|
+
return { obj: pageContext, objName: 'pageContext' }; // pass it to client-side globalContext
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
return undefined; // already passed to client-side
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return { obj: globalContext, objName: 'globalContext' };
|
|
58
|
+
};
|
|
59
|
+
const res = applyPassToClient(passToClient, getObj);
|
|
60
|
+
const globalContextClient = res.objClient;
|
|
61
|
+
const globalContextClientSerialized = serializeObject(globalContextClient, passToClient, getObj);
|
|
41
62
|
return globalContextClientSerialized;
|
|
42
63
|
}
|
|
43
|
-
function serializeObject(obj,
|
|
64
|
+
function serializeObject(obj, passToClient, getObj) {
|
|
44
65
|
let serialized;
|
|
45
66
|
try {
|
|
46
67
|
serialized = serializeValue(obj);
|
|
@@ -49,11 +70,15 @@ function serializeObject(obj, objName, passToClient) {
|
|
|
49
70
|
const h = (s) => pc.cyan(s);
|
|
50
71
|
let hasWarned = false;
|
|
51
72
|
const propsNonSerializable = [];
|
|
52
|
-
passToClient.forEach((
|
|
73
|
+
passToClient.forEach((entry) => {
|
|
74
|
+
const entryNormalized = normalizePassToClientEntry(entry);
|
|
75
|
+
const { prop } = entryNormalized;
|
|
53
76
|
const res = getPropVal(obj, prop);
|
|
54
77
|
if (!res)
|
|
55
78
|
return;
|
|
56
79
|
const { value } = res;
|
|
80
|
+
const { objName } = getObj(entryNormalized) ?? {};
|
|
81
|
+
assert(objName);
|
|
57
82
|
const varName = `${objName}${getPropKeys(prop).map(getPropAccessNotation).join('')}`;
|
|
58
83
|
try {
|
|
59
84
|
serializeValue(value, varName);
|
|
@@ -103,7 +128,20 @@ function serializeObject(obj, objName, passToClient) {
|
|
|
103
128
|
return serialized;
|
|
104
129
|
}
|
|
105
130
|
function serializeValue(value, varName) {
|
|
106
|
-
return stringify(value, {
|
|
131
|
+
return stringify(value, {
|
|
132
|
+
forbidReactElements: true,
|
|
133
|
+
valueName: varName,
|
|
134
|
+
// Prevent Google from crawling URLs in JSON:
|
|
135
|
+
// - https://github.com/vikejs/vike/discussions/2541#discussioncomment-13660198
|
|
136
|
+
// - https://github.com/vikejs/vike/discussions/2277
|
|
137
|
+
// - https://github.com/vikejs/vike/pull/2542
|
|
138
|
+
replacer(_key, value) {
|
|
139
|
+
if (typeof value === 'string' && value.startsWith('/')) {
|
|
140
|
+
// No need to use a reviver: https://github.com/brillout/json-serializer/blob/70fc8ed3741306391b51655b05df24e6963d1fdb/test/main.spec.ts#L74-L80
|
|
141
|
+
return { replacement: (value = '!' + value) };
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
});
|
|
107
145
|
}
|
|
108
146
|
function getPassToClientPageContext(pageContext) {
|
|
109
147
|
let passToClient = [...pageContext._passToClient, ...passToClientBuiltInPageContext];
|
|
@@ -139,7 +177,7 @@ function getPageContextClientSerializedAbort(pageContext) {
|
|
|
139
177
|
assert(unknownProps.length === 0);
|
|
140
178
|
}
|
|
141
179
|
else {
|
|
142
|
-
//
|
|
180
|
+
// TO-DO/next-major-release: remove
|
|
143
181
|
assertWarning(unknownProps.length === 0, [
|
|
144
182
|
"The following pageContext values won't be available on the client-side:",
|
|
145
183
|
unknownProps.map((p) => ` pageContext[${JSON.stringify(p)}]`),
|
|
@@ -150,16 +188,36 @@ function getPageContextClientSerializedAbort(pageContext) {
|
|
|
150
188
|
}
|
|
151
189
|
return serializeValue(pageContext);
|
|
152
190
|
}
|
|
153
|
-
function applyPassToClient(passToClient,
|
|
154
|
-
const
|
|
155
|
-
|
|
191
|
+
function applyPassToClient(passToClient, getObj) {
|
|
192
|
+
const objClient = {};
|
|
193
|
+
const objClientProps = [];
|
|
194
|
+
passToClient.forEach((entry) => {
|
|
195
|
+
const entryNormalized = normalizePassToClientEntry(entry);
|
|
196
|
+
const { prop } = entryNormalized;
|
|
197
|
+
const { obj } = getObj(entryNormalized) ?? {};
|
|
198
|
+
if (!obj)
|
|
199
|
+
return;
|
|
156
200
|
// Get value from pageContext
|
|
157
|
-
const res = getPropVal(
|
|
201
|
+
const res = getPropVal(obj, prop);
|
|
158
202
|
if (!res)
|
|
159
203
|
return;
|
|
160
204
|
const { value } = res;
|
|
161
205
|
// Set value to pageContextClient
|
|
162
|
-
setPropVal(
|
|
206
|
+
setPropVal(objClient, prop, value);
|
|
207
|
+
objClientProps.push(prop);
|
|
163
208
|
});
|
|
164
|
-
return
|
|
209
|
+
return { objClient, objClientProps };
|
|
210
|
+
}
|
|
211
|
+
function normalizePassToClientEntry(entry) {
|
|
212
|
+
let once;
|
|
213
|
+
let prop;
|
|
214
|
+
if (typeof entry === 'string') {
|
|
215
|
+
prop = entry;
|
|
216
|
+
once = false;
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
prop = entry.prop;
|
|
220
|
+
once = entry.once ?? false;
|
|
221
|
+
}
|
|
222
|
+
return { prop, once };
|
|
165
223
|
}
|
|
@@ -7,7 +7,7 @@ export { pipeWebStream, pipeNodeStream, pipeStream, stampPipe } from './html/str
|
|
|
7
7
|
export { PROJECT_VERSION as version } from './utils.js';
|
|
8
8
|
export { getGlobalContext, getGlobalContextSync, getGlobalContextAsync } from './globalContext.js';
|
|
9
9
|
export { createDevMiddleware } from '../runtime-dev/index.js';
|
|
10
|
-
//
|
|
10
|
+
// TO-DO/next-major-release: remove
|
|
11
11
|
// Deprecated exports
|
|
12
12
|
export * from '../../types/index-dreprecated.js';
|
|
13
13
|
export { injectAssets__public as _injectAssets } from './html/injectAssets/injectAssets__public.js';
|
|
@@ -10,7 +10,7 @@ function assertArguments(...args) {
|
|
|
10
10
|
showStackTrace: true,
|
|
11
11
|
});
|
|
12
12
|
assertUsage(isObject(pageContextInit), `${prefix} called with ${pc.code(`typeof pageContextInit === ${JSON.stringify(typeof pageContextInit)}`)} but ${pc.code('pageContextInit')} should be an object.`, { showStackTrace: true });
|
|
13
|
-
//
|
|
13
|
+
// TO-DO/next-major-release: remove
|
|
14
14
|
if ('url' in pageContextInit) {
|
|
15
15
|
assertWarning(false, '`pageContextInit.url` has been renamed to `pageContextInit.urlOriginal`: replace `renderPage({ url })` with `renderPage({ urlOriginal })`. (See https://vike.dev/migration/0.4.23 for more information.)', { showStackTrace: true, onlyOnce: true });
|
|
16
16
|
pageContextInit.urlOriginal = pageContextInit.url;
|
|
@@ -28,6 +28,7 @@ declare function createHttpResponsePage(htmlRender: HtmlRender, renderHook: null
|
|
|
28
28
|
__getPageAssets: GetPageAssets;
|
|
29
29
|
_globalContext: GlobalContextServerInternal;
|
|
30
30
|
abortStatusCode?: AbortStatusCode;
|
|
31
|
+
headersResponse?: Headers;
|
|
31
32
|
}): Promise<HttpResponse>;
|
|
32
33
|
declare function createHttpResponse404(errMsg404: string): HttpResponse;
|
|
33
34
|
declare function createHttpResponseBaseIsMissing(urlOriginal: string, baseServer: string): HttpResponse;
|
|
@@ -9,8 +9,8 @@ import { assert, assertWarning, escapeHtml } from '../utils.js';
|
|
|
9
9
|
import { getErrorPageId, isErrorPage } from '../../../shared/error-page.js';
|
|
10
10
|
import { getHttpResponseBody, getHttpResponseBodyStreamHandlers } from './getHttpResponseBody.js';
|
|
11
11
|
import { getEarlyHints } from './getEarlyHints.js';
|
|
12
|
-
import { getCacheControl } from './createHttpResponse/getCacheControl.js';
|
|
13
12
|
import { assertNoInfiniteHttpRedirect } from './createHttpResponse/assertNoInfiniteHttpRedirect.js';
|
|
13
|
+
import { cacheControlDisable } from './getCacheControl.js';
|
|
14
14
|
async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
|
|
15
15
|
let statusCode = pageContext.abortStatusCode;
|
|
16
16
|
if (!statusCode) {
|
|
@@ -29,10 +29,13 @@ async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
|
|
|
29
29
|
}
|
|
30
30
|
const earlyHints = getEarlyHints(await pageContext.__getPageAssets());
|
|
31
31
|
const headers = [];
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
headers.push([
|
|
35
|
-
}
|
|
32
|
+
const headersResponse = pageContext.headersResponse || new Headers();
|
|
33
|
+
headersResponse.forEach((value, key) => {
|
|
34
|
+
headers.push([key, value]);
|
|
35
|
+
});
|
|
36
|
+
// An 5xx error page shouldn't be cached (it should be temporary)
|
|
37
|
+
if (statusCode >= 500)
|
|
38
|
+
headersResponse.set('Cache-Control', cacheControlDisable);
|
|
36
39
|
return createHttpResponse(statusCode, 'text/html;charset=utf-8', headers, htmlRender, earlyHints, renderHook);
|
|
37
40
|
}
|
|
38
41
|
function createHttpResponse404(errMsg404) {
|
|
@@ -102,7 +105,7 @@ function createHttpResponse(statusCode, contentType, headers, htmlRender, earlyH
|
|
|
102
105
|
return {
|
|
103
106
|
statusCode,
|
|
104
107
|
headers,
|
|
105
|
-
//
|
|
108
|
+
// TO-DO/next-major-release: remove
|
|
106
109
|
get contentType() {
|
|
107
110
|
assertWarning(false, 'pageContext.httpResponse.contentType is deprecated and will be removed in the next major release. Use pageContext.httpResponse.headers instead, see https://vike.dev/migration/0.4.134', { onlyOnce: true });
|
|
108
111
|
return contentType;
|
|
@@ -13,7 +13,7 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
|
|
|
13
13
|
} | {
|
|
14
14
|
isPrerendering: true;
|
|
15
15
|
ssr?: undefined;
|
|
16
|
-
}):
|
|
16
|
+
}): {
|
|
17
17
|
_isOriginalObject: true;
|
|
18
18
|
isPageContext: true;
|
|
19
19
|
} & {
|
|
@@ -125,7 +125,7 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
|
|
|
125
125
|
url: string;
|
|
126
126
|
} & {
|
|
127
127
|
headers: Record<string, string> | null;
|
|
128
|
-
}
|
|
128
|
+
};
|
|
129
129
|
declare function createPageContextServerSideWithoutGlobalContext(pageContextInit: PageContextInit): {
|
|
130
130
|
_isOriginalObject: true;
|
|
131
131
|
isPageContext: true;
|
|
@@ -3,7 +3,7 @@ export { createPageContextServerSideWithoutGlobalContext };
|
|
|
3
3
|
import { assert, assertUsage, assertWarning, augmentType, normalizeHeaders, objectAssign } from '../utils.js';
|
|
4
4
|
import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
|
|
5
5
|
import { createPageContextObject, createPageContextShared } from '../../../shared/createPageContextShared.js';
|
|
6
|
-
|
|
6
|
+
function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
|
|
7
7
|
urlHandler: null,
|
|
8
8
|
isClientSideNavigation: false,
|
|
9
9
|
}, }) {
|
|
@@ -11,7 +11,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
|
|
|
11
11
|
const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
|
|
12
12
|
objectAssign(pageContextCreated, {
|
|
13
13
|
_globalContext: globalContext,
|
|
14
|
-
_pageFilesAll: globalContext._pageFilesAll, //
|
|
14
|
+
_pageFilesAll: globalContext._pageFilesAll, // TO-DO/next-major-release: remove
|
|
15
15
|
// 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
16
|
_baseServer: globalContext.baseServer,
|
|
17
17
|
_baseAssets: globalContext.baseAssets,
|
|
@@ -33,7 +33,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
|
|
|
33
33
|
}
|
|
34
34
|
else if (pageContextInit.headers) {
|
|
35
35
|
headers = pageContextInit.headers;
|
|
36
|
-
//
|
|
36
|
+
// TO-DO/next-major-release: remove
|
|
37
37
|
assertWarning(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
@@ -41,7 +41,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
|
|
|
41
41
|
}
|
|
42
42
|
objectAssign(pageContextCreated, { headers });
|
|
43
43
|
}
|
|
44
|
-
const pageContextAugmented =
|
|
44
|
+
const pageContextAugmented = createPageContextShared(pageContextCreated, globalContext._vikeConfigPublicGlobal);
|
|
45
45
|
augmentType(pageContextCreated, pageContextAugmented);
|
|
46
46
|
return pageContextCreated;
|
|
47
47
|
}
|
|
@@ -6,7 +6,7 @@ async function execHookDataAndOnBeforeRender(pageContext) {
|
|
|
6
6
|
return;
|
|
7
7
|
}
|
|
8
8
|
const hooks = await execHookServer('data', pageContext);
|
|
9
|
-
const dataHook = hooks[0]; // TO-DO/soon: support cumulative
|
|
9
|
+
const dataHook = hooks[0]; // TO-DO/soon/cumulative-hooks: support cumulative
|
|
10
10
|
if (dataHook) {
|
|
11
11
|
// Note: hookReturn can be anything (e.g. an object) and is to be assigned to pageContext.data
|
|
12
12
|
const pageContextFromHook = {
|
|
@@ -19,7 +19,7 @@ async function execHookDataAndOnBeforeRender(pageContext) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
const res = await execHookServer('onBeforeRender', pageContext);
|
|
22
|
-
const onBeforeRenderHook = res[0]; // TO-DO/soon: support cumulative
|
|
22
|
+
const onBeforeRenderHook = res[0]; // TO-DO/soon/cumulative-hooks: support cumulative
|
|
23
23
|
if (onBeforeRenderHook) {
|
|
24
24
|
const { hookReturn } = onBeforeRenderHook;
|
|
25
25
|
assertOnBeforeRenderHookReturn(hookReturn, onBeforeRenderHook.hookFilePath);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { getCacheControl };
|
|
2
|
+
export { cacheControlDisable };
|
|
3
|
+
import type { PageConfigRuntime } from '../../../types/PageConfig.js';
|
|
4
|
+
declare const cacheControlDisable = "no-store, max-age=0";
|
|
5
|
+
declare function getCacheControl(pageId: string | null, pageConfigs: PageConfigRuntime[]): string;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
export { getCacheControl };
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
export { cacheControlDisable };
|
|
3
|
+
import { getPageConfig } from '../../../shared/page-configs/helpers.js';
|
|
4
|
+
import { getConfigValueRuntime } from '../../../shared/page-configs/getConfigValueRuntime.js';
|
|
5
|
+
const cacheControlDisable = 'no-store, max-age=0';
|
|
6
|
+
function getCacheControl(pageId, pageConfigs) {
|
|
7
|
+
// TO-DO/next-major-release: remove this line
|
|
7
8
|
if (pageConfigs.length === 0)
|
|
8
|
-
return
|
|
9
|
-
if (statusCode > 499)
|
|
10
|
-
return defaultValue;
|
|
9
|
+
return cacheControlDisable;
|
|
11
10
|
if (pageId) {
|
|
12
11
|
const pageConfig = getPageConfig(pageId, pageConfigs);
|
|
13
12
|
const configValue = getConfigValueRuntime(pageConfig, 'cacheControl', 'string');
|
|
@@ -18,5 +17,5 @@ function getCacheControl(pageId, pageConfigs, statusCode) {
|
|
|
18
17
|
// - Disabling caching by default is the safest strategy, because caching is problematic with authentication as described in https://github.com/vikejs/vike/issues/1275#issuecomment-1824366875
|
|
19
18
|
// - Are there use cases when we don't need to disable caching?
|
|
20
19
|
// - When there isn't any <script id="vike_pageContext" type="application/json"> then we can safely have caching. (We don't implement this exception because we're lazy and it's quite a rare situation.)
|
|
21
|
-
return
|
|
20
|
+
return cacheControlDisable;
|
|
22
21
|
}
|
|
@@ -56,7 +56,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
|
|
|
56
56
|
const body = await getHtmlString(htmlRender);
|
|
57
57
|
return body;
|
|
58
58
|
},
|
|
59
|
-
//
|
|
59
|
+
// TO-DO/next-major-release: remove
|
|
60
60
|
async getNodeStream() {
|
|
61
61
|
assertWarning(false, '`pageContext.httpResponse.getNodeStream()` is outdated, use `pageContext.httpResponse.getReadableNodeStream()` instead. ' +
|
|
62
62
|
streamDocs, { onlyOnce: true, showStackTrace: true });
|
|
@@ -66,7 +66,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
|
|
|
66
66
|
}
|
|
67
67
|
return nodeStream;
|
|
68
68
|
},
|
|
69
|
-
//
|
|
69
|
+
// TO-DO/next-major-release: remove
|
|
70
70
|
getWebStream() {
|
|
71
71
|
assertWarning(false, '`pageContext.httpResponse.getWebStream(res)` is outdated, use `pageContext.httpResponse.getReadableWebStream(res)` instead. ' +
|
|
72
72
|
streamDocs, { onlyOnce: true, showStackTrace: true });
|
|
@@ -76,7 +76,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
|
|
|
76
76
|
}
|
|
77
77
|
return webStream;
|
|
78
78
|
},
|
|
79
|
-
//
|
|
79
|
+
// TO-DO/next-major-release: remove
|
|
80
80
|
pipeToWebWritable(writable) {
|
|
81
81
|
assertWarning(false, '`pageContext.httpResponse.pipeToWebWritable(res)` is outdated, use `pageContext.httpResponse.pipe(res)` instead. ' +
|
|
82
82
|
streamDocs, { onlyOnce: true, showStackTrace: true });
|
|
@@ -85,7 +85,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
|
|
|
85
85
|
assertUsage(false, getErrMsg(htmlRender, renderHook, 'pipeToWebWritable()'));
|
|
86
86
|
}
|
|
87
87
|
},
|
|
88
|
-
//
|
|
88
|
+
// TO-DO/next-major-release: remove
|
|
89
89
|
pipeToNodeWritable(writable) {
|
|
90
90
|
assertWarning(false, '`pageContext.httpResponse.pipeToNodeWritable(res)` is outdated, use `pageContext.httpResponse.pipe(res)` instead. ' +
|
|
91
91
|
streamDocs, { onlyOnce: true, showStackTrace: true });
|
|
@@ -9,7 +9,7 @@ function retrieveAssetsProd(clientDependencies, assetsManifest, includeAssetsImp
|
|
|
9
9
|
clientDependencies.forEach(({ id, onlyAssets, eagerlyImported }) => {
|
|
10
10
|
if (eagerlyImported)
|
|
11
11
|
return; // Eagerly imported assets aren't imported with import() and therefore don't create a new Rollup entry and aren't listed in the manifest file
|
|
12
|
-
//
|
|
12
|
+
// TO-DO/next-major-release: remove
|
|
13
13
|
if (includeAssetsImportedByServer &&
|
|
14
14
|
onlyAssets &&
|
|
15
15
|
id.includes('.page.server.') &&
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export { loadPageConfigsLazyServerSideAndExecHook };
|
|
2
2
|
export type { PageContext_loadPageConfigsLazyServerSide };
|
|
3
3
|
export type { PageConfigsLazy };
|
|
4
|
+
import { type VikeConfigPublicPageLazy } from '../../../shared/getPageFiles.js';
|
|
4
5
|
import { PromiseType } from '../utils.js';
|
|
5
6
|
import { PageContextGetPageAssets, type PageAsset } from './getPageAssets.js';
|
|
6
7
|
import { type PageContextDebugRouteMatches } from './debugPageFiles.js';
|
|
7
8
|
import type { GlobalContextServerInternal } from '../globalContext.js';
|
|
8
9
|
import { type PageContextExecHookServer } from './execHookServer.js';
|
|
10
|
+
import type { PassToClient } from '../html/serializeContext.js';
|
|
9
11
|
type PageContextExecuteHook = Omit<PageContextExecHookServer, keyof Awaited<ReturnType<typeof loadPageConfigsLazyServerSide>>>;
|
|
10
12
|
type PageContext_loadPageConfigsLazyServerSide = PageContextGetPageAssets & PageContextDebugRouteMatches & {
|
|
11
13
|
pageId: string;
|
|
@@ -13,19 +15,21 @@ type PageContext_loadPageConfigsLazyServerSide = PageContextGetPageAssets & Page
|
|
|
13
15
|
_globalContext: GlobalContextServerInternal;
|
|
14
16
|
};
|
|
15
17
|
type PageConfigsLazy = PromiseType<ReturnType<typeof loadPageConfigsLazyServerSide>>;
|
|
16
|
-
declare function loadPageConfigsLazyServerSideAndExecHook<PageContext extends PageContext_loadPageConfigsLazyServerSide & PageContextExecuteHook>(pageContext: PageContext): Promise<PageContext &
|
|
18
|
+
declare function loadPageConfigsLazyServerSideAndExecHook<PageContext extends PageContext_loadPageConfigsLazyServerSide & PageContextExecuteHook>(pageContext: PageContext): Promise<PageContext & VikeConfigPublicPageLazy & {
|
|
17
19
|
Page: unknown;
|
|
18
20
|
_isHtmlOnly: boolean;
|
|
19
|
-
_passToClient:
|
|
21
|
+
_passToClient: PassToClient;
|
|
20
22
|
_pageFilePathsLoaded: string[];
|
|
23
|
+
headersResponse: Headers;
|
|
21
24
|
} & {
|
|
22
25
|
__getPageAssets: () => Promise<PageAsset[]>;
|
|
23
26
|
}>;
|
|
24
|
-
declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPageConfigsLazyServerSide): Promise<
|
|
27
|
+
declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPageConfigsLazyServerSide): Promise<VikeConfigPublicPageLazy & {
|
|
25
28
|
Page: unknown;
|
|
26
29
|
_isHtmlOnly: boolean;
|
|
27
|
-
_passToClient:
|
|
30
|
+
_passToClient: PassToClient;
|
|
28
31
|
_pageFilePathsLoaded: string[];
|
|
32
|
+
headersResponse: Headers;
|
|
29
33
|
} & {
|
|
30
34
|
__getPageAssets: () => Promise<PageAsset[]>;
|
|
31
35
|
}>;
|