vike 0.4.235 → 0.4.236
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 +29 -12
- 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 +34 -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/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 +3 -3
- 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/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 +14 -14
- package/dist/esm/node/runtime/globalContext.js +31 -14
- 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 +35 -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/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 +3 -3
- package/dist/esm/utils/debugGlob.js +1 -1
- package/dist/esm/utils/parseNpmPackage.js +1 -1
- package/package.json +2 -5
- package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.d.ts +0 -5
|
@@ -29,7 +29,7 @@ const globalObject = getGlobalObject('runtime-client-routing/prefetch.ts', {
|
|
|
29
29
|
});
|
|
30
30
|
function getPageContextPrefetched(pageContext) {
|
|
31
31
|
const prefetchSettings = getPrefetchSettings(pageContext, null);
|
|
32
|
-
//
|
|
32
|
+
// TO-DO/pageContext-prefetch: I guess we need linkTag to make this condition work
|
|
33
33
|
if (!prefetchSettings.pageContext)
|
|
34
34
|
return null;
|
|
35
35
|
const key = getCacheKey(pageContext.urlPathname);
|
|
@@ -37,7 +37,7 @@ function getPageContextPrefetched(pageContext) {
|
|
|
37
37
|
if (!found || found.result.is404ServerSideRouted || isExpired(found))
|
|
38
38
|
return null;
|
|
39
39
|
const pageContextPrefetched = found.result.pageContextFromServerHooks;
|
|
40
|
-
/*
|
|
40
|
+
/* TO-DO/pageContext-prefetch: make it work for when resultMaxAge is Infinity.
|
|
41
41
|
// We discard the prefetched pageContext whenever we use it, so that the user always sees fresh data upon naivgating.
|
|
42
42
|
delete globalObject.prefetchedPageContexts[key]
|
|
43
43
|
*/
|
|
@@ -61,7 +61,7 @@ async function prefetchPageContextFromServerHooks(pageContextLink, resultMaxAge)
|
|
|
61
61
|
setPageContextPrefetchCache(pageContextLink, result, resultMaxAge);
|
|
62
62
|
}
|
|
63
63
|
function populatePageContextPrefetchCache(pageContext /*& VikeConfigPublicPageLazy*/, result) {
|
|
64
|
-
//
|
|
64
|
+
// TO-DO/pageContext-prefetch: replace with using pageContext.config.prerender instead. (For being able to do that: eager configs need to be accessible without have to use VikeConfigPublicPageLazy as it isn't available here.)
|
|
65
65
|
if (!isBrilloutDocpress())
|
|
66
66
|
return;
|
|
67
67
|
setPageContextPrefetchCache(pageContext, result, null);
|
|
@@ -79,7 +79,7 @@ function setPageContextPrefetchCache(pageContext, result, resultMaxAge) {
|
|
|
79
79
|
}
|
|
80
80
|
function getResultMaxAge() {
|
|
81
81
|
const pageContextCurrent = getPageContextCurrent();
|
|
82
|
-
//
|
|
82
|
+
// TO-DO/pageContext-prefetch: remove this dirty hack used by @brillout/docpress and, instead, use Vike's default if pageContextCurrent isn't defined yet.
|
|
83
83
|
if (!pageContextCurrent)
|
|
84
84
|
return Infinity;
|
|
85
85
|
const prefetchSettings = getPrefetchSettings(pageContextCurrent, null);
|
|
@@ -94,7 +94,7 @@ function getResultMaxAge() {
|
|
|
94
94
|
* @param url - The URL of the page you want to prefetch.
|
|
95
95
|
*/
|
|
96
96
|
async function prefetch(url,
|
|
97
|
-
/*
|
|
97
|
+
/* TO-DO/pageContext-prefetch:
|
|
98
98
|
options?: {
|
|
99
99
|
pageContext?: boolean
|
|
100
100
|
staticAssets?: boolean
|
|
@@ -196,11 +196,11 @@ async function prefetchOnEvent(linkTag, event) {
|
|
|
196
196
|
}
|
|
197
197
|
else {
|
|
198
198
|
if (isBrilloutDocpress()) {
|
|
199
|
-
//
|
|
199
|
+
// TO-DO/pageContext-prefetch: remove this dirty hack used by @brillout/docpress and, instead, use Vike's default if pageContextCurrent isn't defined yet.
|
|
200
200
|
prefetchSettings = { staticAssets: 'hover', pageContext: Infinity };
|
|
201
201
|
}
|
|
202
202
|
else {
|
|
203
|
-
//
|
|
203
|
+
// TO-DO/pageContext-prefetch: consider pageContextLink
|
|
204
204
|
return;
|
|
205
205
|
}
|
|
206
206
|
}
|
|
@@ -225,7 +225,7 @@ async function prefetchOnEvent(linkTag, event) {
|
|
|
225
225
|
const key = getCacheKey(urlOfLink);
|
|
226
226
|
const found = globalObject.prefetchedPageContexts[key];
|
|
227
227
|
if (!found || isExpired(found)) {
|
|
228
|
-
//
|
|
228
|
+
// TO-DO/pageContext-prefetch: move this logic in getPrefetchSettings()
|
|
229
229
|
const resultMaxAge = prefetchSettings.pageContext;
|
|
230
230
|
await prefetchPageContextFromServerHooks(pageContextLink, resultMaxAge);
|
|
231
231
|
}
|
|
@@ -236,7 +236,7 @@ async function prefetchOnEvent(linkTag, event) {
|
|
|
236
236
|
function isExpired(found) {
|
|
237
237
|
return Date.now() - found.resultFetchedAt > found.resultMaxAge;
|
|
238
238
|
}
|
|
239
|
-
//
|
|
239
|
+
// TO-DO/next-major-release: make it sync
|
|
240
240
|
async function getPageContextLink(urlOfLink) {
|
|
241
241
|
const pageContextLink = await createPageContextClientSide(urlOfLink);
|
|
242
242
|
let pageContextFromRoute;
|
|
@@ -257,7 +257,7 @@ function getCacheKey(url) {
|
|
|
257
257
|
const key = url.split('#')[0];
|
|
258
258
|
return key;
|
|
259
259
|
}
|
|
260
|
-
//
|
|
260
|
+
// TO-DO/pageContext-prefetch: remove
|
|
261
261
|
function isBrilloutDocpress() {
|
|
262
262
|
return '_isBrilloutDocpress' in window;
|
|
263
263
|
}
|
|
@@ -95,6 +95,7 @@ declare function getPageContextBegin(isForErrorPage: boolean, { urlOriginal, isB
|
|
|
95
95
|
urlOriginal: string;
|
|
96
96
|
headers: Record<string, string> | null;
|
|
97
97
|
headersOriginal?: unknown;
|
|
98
|
+
headersResponse: Headers;
|
|
98
99
|
is404: boolean | null;
|
|
99
100
|
isClientSideNavigation: boolean;
|
|
100
101
|
abortReason?: unknown;
|
|
@@ -119,6 +120,7 @@ declare function getPageContextBegin(isForErrorPage: boolean, { urlOriginal, isB
|
|
|
119
120
|
urlOriginal: string;
|
|
120
121
|
headers: Record<string, string> | null;
|
|
121
122
|
headersOriginal?: unknown;
|
|
123
|
+
headersResponse: Headers;
|
|
122
124
|
is404: boolean | null;
|
|
123
125
|
isClientSideNavigation: boolean;
|
|
124
126
|
abortReason?: unknown;
|
|
@@ -90,7 +90,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
90
90
|
// TO-DO/eventually: create helper assertPageContextFromHook()
|
|
91
91
|
assert(!('urlOriginal' in pageContextSerialized));
|
|
92
92
|
objectAssign(pageContext, pageContextSerialized);
|
|
93
|
-
//
|
|
93
|
+
// TO-DO/pageContext-prefetch: remove or change, because this only makes sense for a pre-rendered page
|
|
94
94
|
populatePageContextPrefetchCache(pageContext, { pageContextFromServerHooks: pageContextSerialized });
|
|
95
95
|
}
|
|
96
96
|
else {
|
|
@@ -188,7 +188,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
188
188
|
if (result.is404ServerSideRouted)
|
|
189
189
|
return;
|
|
190
190
|
pageContextFromServerHooks = result.pageContextFromServerHooks;
|
|
191
|
-
//
|
|
191
|
+
// TO-DO/pageContext-prefetch: remove or change, because this only makes sense for a pre-rendered page
|
|
192
192
|
populatePageContextPrefetchCache(pageContext, result);
|
|
193
193
|
}
|
|
194
194
|
catch (err) {
|
|
@@ -462,7 +462,7 @@ async function getPageContextBegin(isForErrorPage, { urlOriginal, isBackwardNavi
|
|
|
462
462
|
previousPageContext,
|
|
463
463
|
...pageContextInitClient,
|
|
464
464
|
});
|
|
465
|
-
//
|
|
465
|
+
// TO-DO/next-major-release: remove
|
|
466
466
|
Object.defineProperty(pageContext, '_previousPageContext', {
|
|
467
467
|
get() {
|
|
468
468
|
assertWarning(false, 'pageContext._previousPageContext has been renamed pageContext.previousPageContext', {
|
|
@@ -15,7 +15,7 @@ function skipLink(linkTag) {
|
|
|
15
15
|
// Purposely last because disableAutomaticLinkInterception will be removed in the next major release
|
|
16
16
|
!isVikeLink(linkTag));
|
|
17
17
|
}
|
|
18
|
-
//
|
|
18
|
+
// TO-DO/next-major-release: remove this in favor of synchronously checking whether URL matches the route of a page (possible since Async Route Functions will be deprecated)
|
|
19
19
|
function isVikeLink(linkTag) {
|
|
20
20
|
const disableAutomaticLinkInterception = isDisableAutomaticLinkInterception();
|
|
21
21
|
if (!disableAutomaticLinkInterception) {
|
|
@@ -16,13 +16,13 @@ async function createPageContextClientSide() {
|
|
|
16
16
|
isPrerendering: false,
|
|
17
17
|
isHydration: true,
|
|
18
18
|
_globalContext: globalContext,
|
|
19
|
-
_pageFilesAll: globalContext._pageFilesAll, //
|
|
19
|
+
_pageFilesAll: globalContext._pageFilesAll, // TO-DO/next-major-release: remove
|
|
20
20
|
isBackwardNavigation: null,
|
|
21
21
|
_hasPageContextFromServer: true,
|
|
22
22
|
});
|
|
23
23
|
objectAssign(pageContextCreated, getPageContextSerializedInHtml());
|
|
24
24
|
// Sets pageContext.config to global configs
|
|
25
|
-
augmentType(pageContextCreated,
|
|
25
|
+
augmentType(pageContextCreated, createPageContextShared(pageContextCreated, globalContext._vikeConfigPublicGlobal));
|
|
26
26
|
// Sets pageContext.config to local configs (overrides the pageContext.config set above)
|
|
27
27
|
augmentType(pageContextCreated, await loadPageConfigsLazyClientSideAndExecHook(pageContextCreated));
|
|
28
28
|
assertPristineUrl();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
//
|
|
1
|
+
// TO-DO/next-major-release: remove this file
|
|
2
2
|
export {};
|
|
@@ -23,13 +23,14 @@ declare function createGetGlobalContextClient<GlobalContextAddendum extends obje
|
|
|
23
23
|
pages: {
|
|
24
24
|
[k: string]: import("../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
|
|
25
25
|
};
|
|
26
|
-
} &
|
|
26
|
+
} & {
|
|
27
27
|
/**
|
|
28
28
|
* Whether the environment is client-side or server-side / pre-rendering.
|
|
29
29
|
*
|
|
30
30
|
* We recommend using `import.meta.env.SSR` instead, see https://vike.dev/globalContext
|
|
31
31
|
*/
|
|
32
32
|
isClientSide: true;
|
|
33
|
-
} & Awaited<GlobalContextAddendum
|
|
34
|
-
|
|
35
|
-
declare function
|
|
33
|
+
} & Awaited<GlobalContextAddendum>>;
|
|
34
|
+
type NeverExported = never;
|
|
35
|
+
declare function getGlobalContext(): Promise<NeverExported>;
|
|
36
|
+
declare function getGlobalContextSync(): NeverExported;
|
|
@@ -46,7 +46,6 @@ function createGetGlobalContextClient(virtualFileExports, isClientRouting, addGl
|
|
|
46
46
|
return globalContext;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
// The type is never used: it's the type of the server-side getGlobalContext() that is used.
|
|
50
49
|
async function getGlobalContext() {
|
|
51
50
|
const globalContext = await globalObject.globalContextPromise;
|
|
52
51
|
return globalContext;
|
|
@@ -22,7 +22,7 @@ async function execHookOnRenderClient(pageContext, prepareForPublicUsage) {
|
|
|
22
22
|
assertUsage(false, `No onRenderClient() hook defined for URL '${urlToShowToUser}', but it's needed, see https://vike.dev/onRenderClient`);
|
|
23
23
|
}
|
|
24
24
|
else {
|
|
25
|
-
//
|
|
25
|
+
// TO-DO/next-major-release: remove
|
|
26
26
|
// V0.4 design
|
|
27
27
|
const pageClientsFilesLoaded = pageContext._pageFilesLoaded.filter((p) => p.fileType === '.page.client');
|
|
28
28
|
let errMsg;
|
|
@@ -30,9 +30,9 @@ async function loadPageConfigsLazyClientSide(pageId, pageFilesAll, pageConfigs,
|
|
|
30
30
|
}
|
|
31
31
|
throw err;
|
|
32
32
|
}
|
|
33
|
-
const
|
|
33
|
+
const configPublicPageLazy = resolveVikeConfigPublicPageLazy(pageFilesClientSide, pageConfigLoaded, pageConfigGlobal);
|
|
34
34
|
const pageContextAddendum = {};
|
|
35
|
-
objectAssign(pageContextAddendum,
|
|
35
|
+
objectAssign(pageContextAddendum, configPublicPageLazy);
|
|
36
36
|
objectAssign(pageContextAddendum, { _pageFilesLoaded: pageFilesClientSide });
|
|
37
37
|
return pageContextAddendum;
|
|
38
38
|
}
|
|
@@ -3,14 +3,14 @@ export { preparePageContextForPublicUsageClientMinimal };
|
|
|
3
3
|
import { objectAssign } from '../runtime-server-routing/utils.js';
|
|
4
4
|
import { assertPropertyGetters, preparePageContextForPublicUsage, } from '../../shared/preparePageContextForPublicUsage.js';
|
|
5
5
|
function preparePageContextForPublicUsageClientShared(pageContext) {
|
|
6
|
-
//
|
|
6
|
+
// TO-DO/soon/proxy: use proxy
|
|
7
7
|
const Page = pageContext.config?.Page ||
|
|
8
|
-
//
|
|
8
|
+
// TO-DO/next-major-release: remove
|
|
9
9
|
pageContext.exports?.Page;
|
|
10
10
|
objectAssign(pageContext, { Page });
|
|
11
|
-
//
|
|
11
|
+
// TO-DO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage()
|
|
12
12
|
assertPropertyGetters(pageContext);
|
|
13
|
-
//
|
|
13
|
+
// TO-DO/next-major-release: remove
|
|
14
14
|
// - Requires https://github.com/vikejs/vike-vue/issues/198
|
|
15
15
|
// - Last time I tried to remove it (https://github.com/vikejs/vike/commit/705fd23598d9d69bf46a52c8550216cd7117ce71) the tests were failing as expected: only the Vue integrations that used shallowReactive() failed.
|
|
16
16
|
supportVueReactiviy(pageContext);
|
|
@@ -84,7 +84,7 @@ async function getViteInfo(viteConfigFromUserApiOptions, operation) {
|
|
|
84
84
|
const root = normalizeViteRoot(viteConfigResolved.root ?? process.cwd());
|
|
85
85
|
globalObject.root = root;
|
|
86
86
|
// - Find options `vike(options)` set in vite.config.js
|
|
87
|
-
// -
|
|
87
|
+
// - TO-DO/next-major-release: remove
|
|
88
88
|
// - Add Vike's Vite plugin if missing
|
|
89
89
|
let vikeVitePluginOptions;
|
|
90
90
|
const found = findVikeVitePlugin(viteConfigResolved);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
//
|
|
1
|
+
// TO-DO/next-major-release: remove
|
|
2
2
|
console.warn("[vike][Warning] importBuild.js is not needed anymore; it has no effect. Remove `import 'dist/server/importBuild.js'` to remove this warning. More infos at https://vike.dev/importBuild.js");
|
|
3
3
|
export {};
|
|
@@ -12,7 +12,7 @@ function isPrerenderAutoRunEnabled(vikeConfig) {
|
|
|
12
12
|
!globalObject.isDisabled &&
|
|
13
13
|
vikeConfig.config.disableAutoFullBuild !== 'prerender');
|
|
14
14
|
}
|
|
15
|
-
//
|
|
15
|
+
// TO-DO/next-major-release: remove
|
|
16
16
|
function temp_disablePrerenderAutoRun() {
|
|
17
17
|
globalObject.isDisabled = true;
|
|
18
18
|
}
|
|
@@ -22,7 +22,7 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
|
|
|
22
22
|
defaultLocalValue = true;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
//
|
|
25
|
+
// TO-DO/next-major-release: remove
|
|
26
26
|
// Backwards compatibility for `vike({prerender:true})` in vite.config.js
|
|
27
27
|
{
|
|
28
28
|
const valuesWithDefinedAt = vikeConfig._from.configsCumulative.prerender?.values ?? [];
|
|
@@ -37,7 +37,7 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
|
|
|
37
37
|
isPrerenderingEnabled: vikeConfig._pageConfigs.length > 0 &&
|
|
38
38
|
vikeConfig._pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
|
|
39
39
|
});
|
|
40
|
-
//
|
|
40
|
+
// TO-DO/next-major-release: remove
|
|
41
41
|
if (vikeConfig._pageConfigs.length === 0 && defaultLocalValue)
|
|
42
42
|
prerenderConfigGlobal.isPrerenderingEnabled = true;
|
|
43
43
|
return prerenderConfigGlobal;
|
|
@@ -559,8 +559,9 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
559
559
|
})) & import("../../shared/getPageFiles.js").VikeConfigPublicPageLazy) & {
|
|
560
560
|
Page: unknown;
|
|
561
561
|
_isHtmlOnly: boolean;
|
|
562
|
-
_passToClient:
|
|
562
|
+
_passToClient: import("../runtime/html/serializeContext.js").PassToClient;
|
|
563
563
|
_pageFilePathsLoaded: string[];
|
|
564
|
+
headersResponse: Headers;
|
|
564
565
|
} & {
|
|
565
566
|
__getPageAssets: () => Promise<import("../runtime/renderPage/getPageAssets.js").PageAsset[]>;
|
|
566
567
|
})) & {
|
|
@@ -49,7 +49,7 @@ async function runPrerender(options = {}, trigger) {
|
|
|
49
49
|
const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
|
|
50
50
|
if (!isPrerenderingEnabled) {
|
|
51
51
|
assert(trigger !== 'auto-run');
|
|
52
|
-
/*
|
|
52
|
+
/* TO-DO/next-major-release: use this assertUsage() again.
|
|
53
53
|
* - Make sure https://github.com/magne4000/vite-plugin-vercel/pull/156 is merged before using this assertUsage() again. (Otherwise vite-plugin-vercel will trigger this assertUsage() call.)
|
|
54
54
|
* - Done: PR is merged as of June 20205
|
|
55
55
|
assertUsage(
|
|
@@ -131,7 +131,7 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
|
|
|
131
131
|
}
|
|
132
132
|
});
|
|
133
133
|
// Old design
|
|
134
|
-
//
|
|
134
|
+
// TO-DO/next-major-release: remove
|
|
135
135
|
await Promise.all(globalContext._pageFilesAll
|
|
136
136
|
.filter((p) => {
|
|
137
137
|
assertExportNames(p);
|
|
@@ -294,7 +294,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
|
|
|
294
294
|
urlOriginal,
|
|
295
295
|
...prerenderContext._pageContextInit,
|
|
296
296
|
};
|
|
297
|
-
const pageContext =
|
|
297
|
+
const pageContext = createPageContextServerSide(pageContextInit, globalContext, {
|
|
298
298
|
isPrerendering: true,
|
|
299
299
|
});
|
|
300
300
|
assert(pageContext.isPrerendering === true);
|
|
@@ -385,7 +385,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
385
385
|
}
|
|
386
386
|
}
|
|
387
387
|
// Old design
|
|
388
|
-
//
|
|
388
|
+
// TO-DO/next-major-release: remove
|
|
389
389
|
if (globalContext._pageConfigs.length === 0) {
|
|
390
390
|
const hookTimeout = getHookTimeoutDefault('onBeforePrerender');
|
|
391
391
|
const pageFilesWithOnBeforePrerenderHook = globalContext._pageFilesAll.filter((p) => {
|
|
@@ -425,7 +425,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
425
425
|
assertUsage(isCallable(hookFn), `${msgPrefix} should be a function.`);
|
|
426
426
|
prerenderContext.pageContexts.forEach((pageContext) => {
|
|
427
427
|
Object.defineProperty(pageContext, 'url', {
|
|
428
|
-
//
|
|
428
|
+
// TO-DO/next-major-release: remove warning
|
|
429
429
|
get() {
|
|
430
430
|
assertWarning(false, msgPrefix +
|
|
431
431
|
' uses pageContext.url but it should use pageContext.urlOriginal instead, see https://vike.dev/migration/0.4.23', { showStackTrace: true, onlyOnce: true });
|
|
@@ -455,7 +455,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
455
455
|
}
|
|
456
456
|
const errPrefix = `The ${hookName}() hook exported by ${hookFilePath}`;
|
|
457
457
|
const rightUsage = `${errPrefix} should return ${pc.cyan('null')}, ${pc.cyan('undefined')}, or ${pc.cyan('{ prerenderContext: { pageContexts } }')}`;
|
|
458
|
-
//
|
|
458
|
+
// TO-DO/next-major-release: remove
|
|
459
459
|
if (hasProp(result, 'globalContext')) {
|
|
460
460
|
assertUsage(isObjectWithKeys(result, ['globalContext']) &&
|
|
461
461
|
hasProp(result, 'globalContext', 'object') &&
|
|
@@ -472,7 +472,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
472
472
|
hasProp(result.prerenderContext, 'pageContexts', 'array'), rightUsage);
|
|
473
473
|
prerenderContext.pageContexts = result.prerenderContext.pageContexts;
|
|
474
474
|
prerenderContext.pageContexts.forEach((pageContext) => {
|
|
475
|
-
//
|
|
475
|
+
// TO-DO/next-major-release: remove
|
|
476
476
|
if (pageContext.url && !isPropertyGetter(pageContext, 'url')) {
|
|
477
477
|
assertWarning(false, msgPrefix +
|
|
478
478
|
' provided pageContext.url but it should provide pageContext.urlOriginal instead, see https://vike.dev/migration/0.4.23', { onlyOnce: true });
|
|
@@ -533,10 +533,6 @@ function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerende
|
|
|
533
533
|
async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPrerenderList, partial) {
|
|
534
534
|
const isV1 = globalContext._pageConfigs.length > 0;
|
|
535
535
|
const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
|
|
536
|
-
/* TODO/after-v1-design-release: document setting `prerender: false` as an alternative to using prerender.partial (both in the warnings and the docs)
|
|
537
|
-
const optOutName = isV1 ? 'prerender' : 'doNotPrerender'
|
|
538
|
-
const msgAddendum = `Explicitly opt-out by setting the config ${optOutName} to ${isV1 ? 'false' : 'true'} or use the option prerender.partial`
|
|
539
|
-
*/
|
|
540
536
|
globalContext._allPageIds
|
|
541
537
|
.filter((pageId) => !prerenderedPageContexts[pageId])
|
|
542
538
|
.filter((pageId) => !doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
@@ -639,7 +635,7 @@ function normalizeOnPrerenderHookResult(prerenderResult, prerenderHookFile, hook
|
|
|
639
635
|
return prerenderElement;
|
|
640
636
|
}
|
|
641
637
|
}
|
|
642
|
-
//
|
|
638
|
+
// TO-DO/next-major-release: remove
|
|
643
639
|
function checkOutdatedOptions(options) {
|
|
644
640
|
assertUsage(options.root === undefined, 'Option `prerender({ root })` deprecated: set `prerender({ viteConfig: { root }})` instead.', { showStackTrace: true });
|
|
645
641
|
assertUsage(options.configFile === undefined, 'Option `prerender({ configFile })` deprecated: set `prerender({ viteConfig: { configFile }})` instead.', { showStackTrace: true });
|
|
@@ -684,7 +680,7 @@ function assertIsNotAbort(err, urlOriginal) {
|
|
|
684
680
|
assertUsage(false, `${pc.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${pc.cyan(abortCaller)} isn't supported for pre-rendered pages`);
|
|
685
681
|
}
|
|
686
682
|
function preparePrerenderContextForPublicUsage(prerenderContext) {
|
|
687
|
-
//
|
|
683
|
+
// TO-DO/next-major-release: remove
|
|
688
684
|
if (!('prerenderPageContexts' in prerenderContext)) {
|
|
689
685
|
Object.defineProperty(prerenderContext, 'prerenderPageContexts', {
|
|
690
686
|
get() {
|
|
@@ -21,8 +21,10 @@ export type { GlobalContextServerInternal as GlobalContextServerInternal };
|
|
|
21
21
|
export type { GlobalContextServer };
|
|
22
22
|
import type { ViteManifest } from '../../types/ViteManifest.js';
|
|
23
23
|
import type { ResolvedConfig, ViteDevServer } from 'vite';
|
|
24
|
+
import { type PageRoutes } from '../../shared/route/loadPageRoutes.js';
|
|
24
25
|
import type { ViteConfigRuntime } from '../vite/shared/getViteConfigRuntime.js';
|
|
25
26
|
import type { GlobalContext } from '../../types/PageContext.js';
|
|
27
|
+
import type { Hook } from '../../shared/hooks/getHook.js';
|
|
26
28
|
declare const vikeConfigErrorRecoverMsg: "Vike config loaded";
|
|
27
29
|
type GlobalContextServer = Pick<GlobalContextServerInternal, 'assetsManifest' | 'config' | 'viteConfig' | 'viteConfigRuntime' | 'pages' | 'baseServer' | 'baseAssets' | 'isClientSide'> & Vike.GlobalContext & Vike.GlobalContextServer;
|
|
28
30
|
type GlobalContextServerInternal = Awaited<ReturnType<typeof setGlobalContext>>;
|
|
@@ -64,8 +66,8 @@ declare function getGlobalContextServerInternal(): Promise<{
|
|
|
64
66
|
baseServer: string;
|
|
65
67
|
baseAssets: string;
|
|
66
68
|
isClientSide: false;
|
|
67
|
-
_pageRoutes:
|
|
68
|
-
_onBeforeRouteHook:
|
|
69
|
+
_pageRoutes: PageRoutes;
|
|
70
|
+
_onBeforeRouteHook: Hook | null;
|
|
69
71
|
}) | (Record<string, unknown> & {
|
|
70
72
|
isGlobalContext: true;
|
|
71
73
|
_isOriginalObject: true;
|
|
@@ -104,8 +106,8 @@ declare function getGlobalContextServerInternal(): Promise<{
|
|
|
104
106
|
baseServer: string;
|
|
105
107
|
baseAssets: string;
|
|
106
108
|
isClientSide: false;
|
|
107
|
-
_pageRoutes:
|
|
108
|
-
_onBeforeRouteHook:
|
|
109
|
+
_pageRoutes: PageRoutes;
|
|
110
|
+
_onBeforeRouteHook: Hook | null;
|
|
109
111
|
}) | (Record<string, unknown> & {
|
|
110
112
|
isGlobalContext: true;
|
|
111
113
|
_isOriginalObject: true;
|
|
@@ -144,8 +146,8 @@ declare function getGlobalContextServerInternal(): Promise<{
|
|
|
144
146
|
baseServer: string;
|
|
145
147
|
baseAssets: string;
|
|
146
148
|
isClientSide: false;
|
|
147
|
-
_pageRoutes:
|
|
148
|
-
_onBeforeRouteHook:
|
|
149
|
+
_pageRoutes: PageRoutes;
|
|
150
|
+
_onBeforeRouteHook: Hook | null;
|
|
149
151
|
});
|
|
150
152
|
}>;
|
|
151
153
|
/**
|
|
@@ -164,8 +166,6 @@ declare function getGlobalContextAsync(isProduction: boolean): Promise<GlobalCon
|
|
|
164
166
|
* Get runtime information about your app.
|
|
165
167
|
*
|
|
166
168
|
* https://vike.dev/getGlobalContext
|
|
167
|
-
*
|
|
168
|
-
* @deprecated
|
|
169
169
|
*/
|
|
170
170
|
declare function getGlobalContextSync(): GlobalContext;
|
|
171
171
|
declare function setGlobalContext_viteDevServer(viteDevServer: ViteDevServer): Promise<void>;
|
|
@@ -224,8 +224,8 @@ declare function setGlobalContext(virtualFileExports: unknown): Promise<{
|
|
|
224
224
|
baseServer: string;
|
|
225
225
|
baseAssets: string;
|
|
226
226
|
isClientSide: false;
|
|
227
|
-
_pageRoutes:
|
|
228
|
-
_onBeforeRouteHook:
|
|
227
|
+
_pageRoutes: PageRoutes;
|
|
228
|
+
_onBeforeRouteHook: Hook | null;
|
|
229
229
|
} | {
|
|
230
230
|
_isPrerendering: true;
|
|
231
231
|
viteConfig: ResolvedConfig;
|
|
@@ -246,8 +246,8 @@ declare function setGlobalContext(virtualFileExports: unknown): Promise<{
|
|
|
246
246
|
baseServer: string;
|
|
247
247
|
baseAssets: string;
|
|
248
248
|
isClientSide: false;
|
|
249
|
-
_pageRoutes:
|
|
250
|
-
_onBeforeRouteHook:
|
|
249
|
+
_pageRoutes: PageRoutes;
|
|
250
|
+
_onBeforeRouteHook: Hook | null;
|
|
251
251
|
} | {
|
|
252
252
|
_isPrerendering: false;
|
|
253
253
|
viteConfig: null;
|
|
@@ -268,7 +268,7 @@ declare function setGlobalContext(virtualFileExports: unknown): Promise<{
|
|
|
268
268
|
baseServer: string;
|
|
269
269
|
baseAssets: string;
|
|
270
270
|
isClientSide: false;
|
|
271
|
-
_pageRoutes:
|
|
272
|
-
_onBeforeRouteHook:
|
|
271
|
+
_pageRoutes: PageRoutes;
|
|
272
|
+
_onBeforeRouteHook: Hook | null;
|
|
273
273
|
})>;
|
|
274
274
|
declare function clearGlobalContext(): void;
|
|
@@ -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() {
|
|
@@ -230,6 +232,7 @@ function assertViteManifest(manifest) {
|
|
|
230
232
|
async function loadBuildEntry(outDir) {
|
|
231
233
|
debug('loadBuildEntry()');
|
|
232
234
|
if (globalObject.globalContext) {
|
|
235
|
+
debug('loadBuildEntry() - already done');
|
|
233
236
|
return;
|
|
234
237
|
}
|
|
235
238
|
if (!globalObject.buildEntry) {
|
|
@@ -255,6 +258,8 @@ async function loadBuildEntry(outDir) {
|
|
|
255
258
|
globalObject.buildInfo = buildEntry.buildInfo;
|
|
256
259
|
await setGlobalContext(buildEntry.virtualFileExports);
|
|
257
260
|
}
|
|
261
|
+
// This is the production entry, see:
|
|
262
|
+
// https://github.com/vikejs/vike/blob/798e5465dc3e3e6723b38b601a50350c0a006fb8/packages/vike/node/vite/plugins/pluginBuild/pluginBuildEntry.ts#L47
|
|
258
263
|
async function setGlobalContext_buildEntry(buildEntry) {
|
|
259
264
|
debug('setGlobalContext_buildEntry()');
|
|
260
265
|
setIsProduction(true);
|
|
@@ -264,6 +269,7 @@ async function setGlobalContext_buildEntry(buildEntry) {
|
|
|
264
269
|
assert(globalObject.buildEntry); // ensure no infinite loop
|
|
265
270
|
await loadBuildEntry();
|
|
266
271
|
assertGlobalContextIsDefined();
|
|
272
|
+
debug('setGlobalContext_buildEntry() - done');
|
|
267
273
|
}
|
|
268
274
|
function assertBuildEntry(buildEntry) {
|
|
269
275
|
assert(isObject(buildEntry));
|
|
@@ -360,18 +366,29 @@ async function updateUserFiles() {
|
|
|
360
366
|
return onSuccess();
|
|
361
367
|
}
|
|
362
368
|
async function setGlobalContext(virtualFileExports) {
|
|
369
|
+
debug('setGlobalContext()');
|
|
363
370
|
assert(!getVikeConfigErrorBuild());
|
|
364
|
-
const globalContext = await createGlobalContextShared(virtualFileExports, globalObject,
|
|
371
|
+
const globalContext = await createGlobalContextShared(virtualFileExports, globalObject, addGlobalContextAsync, addGlobalContextSync);
|
|
365
372
|
assertV1Design(
|
|
366
373
|
// pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
|
|
367
374
|
globalContext._pageConfigs.length > 0, globalContext._pageFilesAll);
|
|
368
375
|
assertGlobalContextIsDefined();
|
|
369
376
|
onSetupRuntime();
|
|
377
|
+
debug('setGlobalContext() - done');
|
|
370
378
|
// Never actually used, only used for TypeScript `ReturnType<typeof setGlobalContext>`
|
|
371
379
|
return globalContext;
|
|
372
380
|
}
|
|
373
|
-
async function
|
|
381
|
+
async function addGlobalContextAsync(globalContext) {
|
|
382
|
+
debug('addGlobalContextAsync()');
|
|
374
383
|
const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
|
|
384
|
+
return addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook);
|
|
385
|
+
}
|
|
386
|
+
function addGlobalContextSync(globalContext) {
|
|
387
|
+
debug('addGlobalContextSync()');
|
|
388
|
+
const { pageRoutes, onBeforeRouteHook } = loadPageRoutesSync(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
|
|
389
|
+
return addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook);
|
|
390
|
+
}
|
|
391
|
+
function addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook) {
|
|
375
392
|
const globalContextBase = {
|
|
376
393
|
isClientSide: false,
|
|
377
394
|
_pageRoutes: pageRoutes,
|
|
@@ -430,10 +447,10 @@ async function addGlobalContext(globalContext) {
|
|
|
430
447
|
}
|
|
431
448
|
function clearGlobalContext() {
|
|
432
449
|
debug('clearGlobalContext()');
|
|
433
|
-
objectReplace(globalObject,
|
|
450
|
+
objectReplace(globalObject, getInitialGlobalObject(), ['buildEntryPrevious']);
|
|
434
451
|
}
|
|
435
|
-
function
|
|
436
|
-
debug('
|
|
452
|
+
function getInitialGlobalObject() {
|
|
453
|
+
debug('getInitialGlobalObject()');
|
|
437
454
|
const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = genPromise();
|
|
438
455
|
return {
|
|
439
456
|
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)
|