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
|
@@ -2,24 +2,26 @@ export { loadPageConfigsLazyServerSideAndExecHook };
|
|
|
2
2
|
import { getPageFilesServerSide } from '../../../shared/getPageFiles.js';
|
|
3
3
|
import { resolveVikeConfigPublicPageLazy } from '../../../shared/page-configs/resolveVikeConfigPublic.js';
|
|
4
4
|
import { analyzePageClientSideInit } from '../../../shared/getPageFiles/analyzePageClientSide.js';
|
|
5
|
-
import {
|
|
5
|
+
import { assertUsage, assertWarning, hasProp, objectAssign } from '../utils.js';
|
|
6
6
|
import { getPageAssets } from './getPageAssets.js';
|
|
7
7
|
import { debugPageFiles } from './debugPageFiles.js';
|
|
8
8
|
import { findPageConfig } from '../../../shared/page-configs/findPageConfig.js';
|
|
9
9
|
import { analyzePage } from './analyzePage.js';
|
|
10
10
|
import { loadConfigValues } from '../../../shared/page-configs/loadConfigValues.js';
|
|
11
11
|
import { execHookServer } from './execHookServer.js';
|
|
12
|
+
import { getCacheControl } from './getCacheControl.js';
|
|
12
13
|
async function loadPageConfigsLazyServerSideAndExecHook(pageContext) {
|
|
13
14
|
const pageContextAddendum = await loadPageConfigsLazyServerSide(pageContext);
|
|
14
15
|
objectAssign(pageContext, pageContextAddendum);
|
|
15
16
|
await execHookServer('onCreatePageContext', pageContext);
|
|
16
17
|
return pageContext;
|
|
17
18
|
}
|
|
19
|
+
// TODO/now: define new function resolveAfterLoad() ?
|
|
18
20
|
async function loadPageConfigsLazyServerSide(pageContext) {
|
|
19
21
|
const pageConfig = findPageConfig(pageContext._globalContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig ?
|
|
20
22
|
const globalContext = pageContext._globalContext;
|
|
21
|
-
const [{ pageFilesLoaded,
|
|
22
|
-
|
|
23
|
+
const [{ pageFilesLoaded, configPublicPageLazy }] = await Promise.all([
|
|
24
|
+
loadPageConfigFiles(pageContext._globalContext._pageFilesAll, pageConfig, globalContext._pageConfigGlobal, pageContext.pageId, !globalContext._isProduction),
|
|
23
25
|
analyzePageClientSideInit(pageContext._globalContext._pageFilesAll, pageContext.pageId, {
|
|
24
26
|
sharedPageFilesAlreadyLoaded: true,
|
|
25
27
|
}),
|
|
@@ -29,28 +31,27 @@ async function loadPageConfigsLazyServerSide(pageContext) {
|
|
|
29
31
|
const passToClient = [];
|
|
30
32
|
const errMsg = ' should be an array of strings.';
|
|
31
33
|
if (!isV1Design) {
|
|
32
|
-
|
|
34
|
+
configPublicPageLazy.exportsAll.passToClient?.forEach((e) => {
|
|
33
35
|
assertUsage(hasProp(e, 'exportValue', 'string[]'), `${e.exportSource}${errMsg}`);
|
|
34
36
|
passToClient.push(...e.exportValue);
|
|
35
37
|
});
|
|
36
38
|
}
|
|
37
39
|
else {
|
|
38
|
-
|
|
39
|
-
const {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
assertUsage(isArrayOfStrings(vals), `${e.configDefinedAt}${errMsg}`);
|
|
44
|
-
passToClient.push(...vals);
|
|
40
|
+
configPublicPageLazy.from.configsCumulative.passToClient?.values.forEach((v) => {
|
|
41
|
+
const { value } = v;
|
|
42
|
+
// const { definedAt } = v
|
|
43
|
+
// assertUsage(isArrayOfStrings(value), `+passToClient value defined at ${definedAt}${errMsg}`)
|
|
44
|
+
passToClient.push(...value);
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
const pageContextAddendum = {};
|
|
48
|
-
objectAssign(pageContextAddendum,
|
|
48
|
+
objectAssign(pageContextAddendum, configPublicPageLazy);
|
|
49
49
|
objectAssign(pageContextAddendum, {
|
|
50
|
-
Page:
|
|
50
|
+
Page: configPublicPageLazy.exports.Page,
|
|
51
51
|
_isHtmlOnly: isHtmlOnly,
|
|
52
52
|
_passToClient: passToClient,
|
|
53
53
|
_pageFilePathsLoaded: pageFilesLoaded.map((p) => p.filePath),
|
|
54
|
+
headersResponse: resolveHeadersResponse(pageContext, pageContextAddendum),
|
|
54
55
|
});
|
|
55
56
|
objectAssign(pageContextAddendum, {
|
|
56
57
|
__getPageAssets: async () => {
|
|
@@ -64,7 +65,7 @@ async function loadPageConfigsLazyServerSide(pageContext) {
|
|
|
64
65
|
}
|
|
65
66
|
},
|
|
66
67
|
});
|
|
67
|
-
//
|
|
68
|
+
// TO-DO/next-major-release: remove
|
|
68
69
|
Object.assign(pageContextAddendum, {
|
|
69
70
|
_getPageAssets: async () => {
|
|
70
71
|
assertWarning(false, 'pageContext._getPageAssets() deprecated, see https://vike.dev/preloading', {
|
|
@@ -103,13 +104,31 @@ async function loadPageConfigsLazyServerSide(pageContext) {
|
|
|
103
104
|
});
|
|
104
105
|
return pageContextAddendum;
|
|
105
106
|
}
|
|
106
|
-
async function
|
|
107
|
+
async function loadPageConfigFiles(pageFilesAll, pageConfig, pageConfigGlobal, pageId, isDev) {
|
|
107
108
|
const pageFilesServerSide = getPageFilesServerSide(pageFilesAll, pageId);
|
|
108
109
|
const pageConfigLoaded = !pageConfig ? null : await loadConfigValues(pageConfig, isDev);
|
|
109
110
|
await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
|
|
110
|
-
const
|
|
111
|
+
const configPublicPageLazy = resolveVikeConfigPublicPageLazy(pageFilesServerSide, pageConfigLoaded, pageConfigGlobal);
|
|
111
112
|
return {
|
|
112
|
-
|
|
113
|
+
configPublicPageLazy,
|
|
113
114
|
pageFilesLoaded: pageFilesServerSide,
|
|
114
115
|
};
|
|
115
116
|
}
|
|
117
|
+
function resolveHeadersResponse(pageContext, pageContextAddendum) {
|
|
118
|
+
const headersResponse = mergeHeaders(pageContextAddendum.config.headersResponse);
|
|
119
|
+
if (!headersResponse.get('Cache-Control')) {
|
|
120
|
+
const cacheControl = getCacheControl(pageContext.pageId, pageContext._globalContext._pageConfigs);
|
|
121
|
+
if (cacheControl)
|
|
122
|
+
headersResponse.set('Cache-Control', cacheControl);
|
|
123
|
+
}
|
|
124
|
+
return headersResponse;
|
|
125
|
+
}
|
|
126
|
+
function mergeHeaders(headersList = []) {
|
|
127
|
+
const headersMerged = new Headers();
|
|
128
|
+
headersList.forEach((headers) => {
|
|
129
|
+
new Headers(headers).forEach((value, key) => {
|
|
130
|
+
headersMerged.append(key, value);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
return headersMerged;
|
|
134
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { preparePageContextForPublicUsageServer };
|
|
2
2
|
import { assertPropertyGetters, preparePageContextForPublicUsage, } from '../../../shared/preparePageContextForPublicUsage.js';
|
|
3
3
|
function preparePageContextForPublicUsageServer(pageContext) {
|
|
4
|
-
//
|
|
4
|
+
// TO-DO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage()
|
|
5
5
|
assertPropertyGetters(pageContext);
|
|
6
6
|
pageContext = preparePageContextForPublicUsage(pageContext);
|
|
7
7
|
return pageContext;
|
|
@@ -143,8 +143,9 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
143
143
|
} & import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
|
|
144
144
|
Page: unknown;
|
|
145
145
|
_isHtmlOnly: boolean;
|
|
146
|
-
_passToClient:
|
|
146
|
+
_passToClient: import("../html/serializeContext.js").PassToClient;
|
|
147
147
|
_pageFilePathsLoaded: string[];
|
|
148
|
+
headersResponse: Headers;
|
|
148
149
|
} & {
|
|
149
150
|
__getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
|
|
150
151
|
} & {
|
|
@@ -277,8 +278,9 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
277
278
|
} & import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
|
|
278
279
|
Page: unknown;
|
|
279
280
|
_isHtmlOnly: boolean;
|
|
280
|
-
_passToClient:
|
|
281
|
+
_passToClient: import("../html/serializeContext.js").PassToClient;
|
|
281
282
|
_pageFilePathsLoaded: string[];
|
|
283
|
+
headersResponse: Headers;
|
|
282
284
|
} & {
|
|
283
285
|
__getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
|
|
284
286
|
} & {
|
|
@@ -14,6 +14,7 @@ import { preparePageContextForPublicUsageServer } from './preparePageContextForP
|
|
|
14
14
|
import { execHookGuard } from '../../../shared/route/execHookGuard.js';
|
|
15
15
|
import pc from '@brillout/picocolors';
|
|
16
16
|
import { isServerSideError } from '../../../shared/misc/isServerSideError.js';
|
|
17
|
+
// TODO/now: rename?
|
|
17
18
|
async function renderPageAlreadyRouted(pageContext) {
|
|
18
19
|
// pageContext.pageId can either be the:
|
|
19
20
|
// - ID of the page matching the routing, or the
|
|
@@ -10,7 +10,7 @@ type PageContextInit = Pick<PageContextInternalServer, 'urlOriginal' | 'headersO
|
|
|
10
10
|
/** @deprecated Set `pageContextInit.urlOriginal` instead */ url?: string;
|
|
11
11
|
/** @deprecated Set pageContextInit.headersOriginal instead */ headers?: Record<string, string>;
|
|
12
12
|
};
|
|
13
|
-
type PageContextBegin =
|
|
13
|
+
type PageContextBegin = ReturnType<typeof getPageContextBegin>;
|
|
14
14
|
declare function renderPage<PageContextUserAdded extends {}, PageContextInitUser extends PageContextInit>(pageContextInit: PageContextInitUser): Promise<PageContextInitUser & {
|
|
15
15
|
httpResponse: HttpResponse;
|
|
16
16
|
} & Partial<PageContextServer & PageContextUserAdded>>;
|
|
@@ -18,7 +18,7 @@ declare let asyncHookWrapper: <PageContext>(_httpRequestId: number, ret: () => P
|
|
|
18
18
|
pageContextReturn: Awaited<PageContext>;
|
|
19
19
|
}>;
|
|
20
20
|
declare function renderPage_addAsyncHookwrapper(wrapper: typeof asyncHookWrapper): void;
|
|
21
|
-
declare function getPageContextBegin(pageContextInit: PageContextInit, globalContext: GlobalContextServerInternal, httpRequestId: number):
|
|
21
|
+
declare function getPageContextBegin(pageContextInit: PageContextInit, globalContext: GlobalContextServerInternal, httpRequestId: number): {
|
|
22
22
|
_isOriginalObject: true;
|
|
23
23
|
isPageContext: true;
|
|
24
24
|
} & {
|
|
@@ -132,4 +132,4 @@ declare function getPageContextBegin(pageContextInit: PageContextInit, globalCon
|
|
|
132
132
|
headers: Record<string, string> | null;
|
|
133
133
|
} & {
|
|
134
134
|
_httpRequestId: number;
|
|
135
|
-
}
|
|
135
|
+
};
|
|
@@ -79,7 +79,7 @@ async function renderPagePrepare(pageContextInit, httpRequestId) {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
const { globalContext } = await getGlobalContextServerInternal();
|
|
82
|
-
const pageContextBegin =
|
|
82
|
+
const pageContextBegin = getPageContextBegin(pageContextInit, globalContext, httpRequestId);
|
|
83
83
|
// Check Base URL
|
|
84
84
|
{
|
|
85
85
|
const pageContextHttpResponse = await checkBaseUrl(pageContextBegin, globalContext);
|
|
@@ -169,9 +169,7 @@ async function renderPageOnError(errNominalPage, pageContextBegin, pageContextNo
|
|
|
169
169
|
objectAssign(pageContextErrorPageInit, { pageId: null });
|
|
170
170
|
return handleErrorWithoutErrorPage(pageContextErrorPageInit);
|
|
171
171
|
}
|
|
172
|
-
|
|
173
|
-
objectAssign(pageContextErrorPageInit, { pageId: errorPageId });
|
|
174
|
-
}
|
|
172
|
+
objectAssign(pageContextErrorPageInit, { pageId: errorPageId });
|
|
175
173
|
}
|
|
176
174
|
let pageContextErrorPage;
|
|
177
175
|
try {
|
|
@@ -308,9 +306,9 @@ async function getPageContextErrorPageInit(pageContextBegin, errNominalPage, pag
|
|
|
308
306
|
assert(pageContext.errorWhileRendering);
|
|
309
307
|
return pageContext;
|
|
310
308
|
}
|
|
311
|
-
|
|
309
|
+
function getPageContextBegin(pageContextInit, globalContext, httpRequestId) {
|
|
312
310
|
const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(pageContextInit.urlOriginal);
|
|
313
|
-
const pageContextBegin =
|
|
311
|
+
const pageContextBegin = createPageContextServerSide(pageContextInit, globalContext, {
|
|
314
312
|
isPrerendering: false,
|
|
315
313
|
ssr: {
|
|
316
314
|
urlHandler: _urlHandler,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default plugin;
|
|
2
2
|
export { plugin };
|
|
3
|
-
//
|
|
3
|
+
// TO-DO/next-major-release: remove
|
|
4
4
|
export { plugin as ssr };
|
|
5
5
|
export { getVikeConfig } from './shared/resolveVikeConfigInternal.js';
|
|
6
6
|
export { PROJECT_VERSION as version } from './utils.js';
|
|
@@ -10,7 +10,7 @@ function onLoad() {
|
|
|
10
10
|
assertNodeVersion();
|
|
11
11
|
// package.json#peerDependencies isn't enough as users often ignore it
|
|
12
12
|
// This assertion isn't reliable: the user may still use a Vite version older than 5.1.0 — see https://github.com/vitejs/vite/pull/19355
|
|
13
|
-
// TO-DO/
|
|
13
|
+
// TO-DO/eventually: let's also use this.meta.viteVersion https://github.com/vitejs/vite/pull/20088
|
|
14
14
|
assertVersion('Vite', version, '5.1.0');
|
|
15
15
|
// Ensure we don't bloat the server runtime with heavy dependencies such Vite and esbuild
|
|
16
16
|
assertIsNotProductionRuntime();
|
|
@@ -56,7 +56,7 @@ function pluginBuildConfig() {
|
|
|
56
56
|
async function getEntries(config) {
|
|
57
57
|
const vikeConfig = await getVikeConfigInternal();
|
|
58
58
|
const { _pageConfigs: pageConfigs } = vikeConfig;
|
|
59
|
-
//
|
|
59
|
+
// TO-DO/next-major-release: remove
|
|
60
60
|
const pageFileEntries = await getPageFileEntries(config, resolveIncludeAssetsImportedByServer(vikeConfig.config));
|
|
61
61
|
assertUsage(Object.keys(pageFileEntries).length !== 0 || pageConfigs.length !== 0, 'At least one page should be defined, see https://vike.dev/add');
|
|
62
62
|
if (isViteServerBuild(config)) {
|
|
@@ -33,7 +33,7 @@ function getServerProductionEntryCode(config) {
|
|
|
33
33
|
const importPath = getImportPath(config);
|
|
34
34
|
const buildInfo = {
|
|
35
35
|
versionAtBuildTime: PROJECT_VERSION,
|
|
36
|
-
usesClientRouter: isUsingClientRouter(), //
|
|
36
|
+
usesClientRouter: isUsingClientRouter(), // TO-DO/next-major-release: remove
|
|
37
37
|
viteConfigRuntime: getViteConfigRuntime(config),
|
|
38
38
|
};
|
|
39
39
|
assertBuildInfo(buildInfo);
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
* require() of dist/server/pageFiles.js from node_modules/vike/dist/esm/node/runtime/page-files/setup.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
|
|
7
7
|
* Reproduction: https://github.com/brillout/vite-plugin-ssr-server-import-syntax
|
|
8
8
|
*/
|
|
9
|
-
// TODO/refactor: prefix all other plugins with `plugin` as well?
|
|
10
9
|
export { pluginDistPackageJsonFile };
|
|
11
10
|
import { rollupIsEsm } from '../../shared/rollupIsEsm.js';
|
|
12
11
|
import { isViteServerBuild } from '../../shared/isViteServerBuild.js';
|
|
@@ -14,7 +14,7 @@ import pc from '@brillout/picocolors';
|
|
|
14
14
|
// - @vitejs/plugin-vue2
|
|
15
15
|
// - https://github.com/vikejs/vike/issues/1329
|
|
16
16
|
function assertResolveAlias(config) {
|
|
17
|
-
//
|
|
17
|
+
// TO-DO/eventually: re-implement warning https://github.com/vikejs/vike/issues/1567
|
|
18
18
|
return;
|
|
19
19
|
const aliases = getAliases(config);
|
|
20
20
|
const errPrefix = config.configFile || 'Your Vite configuration';
|
|
@@ -25,13 +25,13 @@ function pluginCommon(vikeVitePluginOptions) {
|
|
|
25
25
|
? normalizeViteRoot(configFromUser.root)
|
|
26
26
|
: await getViteRoot(operation);
|
|
27
27
|
assert(rootResolvedEarly);
|
|
28
|
-
//
|
|
28
|
+
// TO-DO/next-major-release: we can remove setVikeConfigContext() call here since with Vike's CLI it's already called at vike/node/api/prepareViteApiCall.ts
|
|
29
29
|
setVikeConfigContext({ userRootDir: rootResolvedEarly, isDev, vikeVitePluginOptions });
|
|
30
30
|
const vikeConfig = await getVikeConfigInternal();
|
|
31
31
|
return {
|
|
32
32
|
_isDev: isDev,
|
|
33
33
|
_rootResolvedEarly: rootResolvedEarly,
|
|
34
|
-
//
|
|
34
|
+
// TO-DO/next-major-release: remove https://github.com/vikejs/vike/issues/2122
|
|
35
35
|
configVikePromise: Promise.resolve({
|
|
36
36
|
prerender: vikeConfig.prerenderContext.isPrerenderingEnabled,
|
|
37
37
|
}),
|
|
@@ -53,7 +53,11 @@ function pluginCommon(vikeVitePluginOptions) {
|
|
|
53
53
|
configResolved: {
|
|
54
54
|
order: 'post',
|
|
55
55
|
async handler(config) {
|
|
56
|
-
/*
|
|
56
|
+
/* Also externalize linked dependencies by default?
|
|
57
|
+
* - Can this be done while the user sets ssr.external to `string[]`? I guess not?
|
|
58
|
+
* - If not then it's a problem: it makes the default inconsistent.
|
|
59
|
+
* - https://vite.dev/config/ssr-options.html#ssr-external
|
|
60
|
+
* - New setting +transpileLinkedDependencies ?
|
|
57
61
|
overrideViteDefaultSsrExternal(config)
|
|
58
62
|
//*/
|
|
59
63
|
workaroundCI(config);
|
|
@@ -157,7 +161,7 @@ function assertVikeCliOrApi(config) {
|
|
|
157
161
|
onlyOnce: true,
|
|
158
162
|
});
|
|
159
163
|
}
|
|
160
|
-
//
|
|
164
|
+
// TO-DO/next-major-release: remove https://github.com/vikejs/vike/issues/2122
|
|
161
165
|
function temp_supportOldInterface(config) {
|
|
162
166
|
if (!('vitePluginSsr' in config))
|
|
163
167
|
return;
|
|
@@ -20,7 +20,7 @@ function pluginDev() {
|
|
|
20
20
|
config() {
|
|
21
21
|
return {
|
|
22
22
|
appType: 'custom',
|
|
23
|
-
//
|
|
23
|
+
// TO-DO/next-major-release: remove (AFAICT we only need to use config.optimizeDeps for the old design)
|
|
24
24
|
optimizeDeps: {
|
|
25
25
|
exclude: [
|
|
26
26
|
// We exclude Vike's client runtime to be able to use Vite's import.meta.glob()
|
|
@@ -6,7 +6,7 @@ import { getModuleFilePathAbsolute } from '../shared/getFilePath.js';
|
|
|
6
6
|
import { normalizeId } from '../shared/normalizeId.js';
|
|
7
7
|
import { isViteServerBuild_safe } from '../shared/isViteServerBuild.js';
|
|
8
8
|
import { applyRegExpWithMagicString } from '../shared/applyRegExWithMagicString.js';
|
|
9
|
-
//
|
|
9
|
+
// TO-DO/eventually:
|
|
10
10
|
// - Make import.meta.env work inside +config.js
|
|
11
11
|
// - For it to work, we'll probably need the user to define the settings (e.g. `envDir`) for loadEnv() inside vike.config.js instead of vite.config.js
|
|
12
12
|
// - Or stop using Vite's `mode` implementation and have Vike implement its own `mode` feature? (So that the only dependencies are `$ vike build --mode staging` and `$ MODE=staging vike build`.)
|
|
@@ -119,7 +119,7 @@ function pluginFileEnv() {
|
|
|
119
119
|
return modulePath.includes(suffixWrong);
|
|
120
120
|
}
|
|
121
121
|
function skip(id) {
|
|
122
|
-
//
|
|
122
|
+
// TO-DO/next-major-release: remove
|
|
123
123
|
if (extractAssetsRE.test(id) || extractExportNamesRE.test(id))
|
|
124
124
|
return true;
|
|
125
125
|
if (!id.includes(getSuffix('client')) && !id.includes(getSuffix('server')))
|
|
@@ -20,7 +20,7 @@ function pluginVirtualFiles() {
|
|
|
20
20
|
name: 'vike:pluginVirtualFiles',
|
|
21
21
|
async configResolved(config_) {
|
|
22
22
|
config = config_;
|
|
23
|
-
//
|
|
23
|
+
// TO-DO/next-major-release: remove
|
|
24
24
|
if (!isV1Design())
|
|
25
25
|
config.experimental.importGlobRestoreExtension = true;
|
|
26
26
|
},
|
|
@@ -16,7 +16,7 @@ function addSsrMiddleware(middlewares, config, isPreview, isPrerenderingEnabled)
|
|
|
16
16
|
};
|
|
17
17
|
Object.defineProperty(pageContextInit, 'userAgent', {
|
|
18
18
|
get() {
|
|
19
|
-
//
|
|
19
|
+
// TO-DO/next-major-release: assertUsage() instead of assertWarning()
|
|
20
20
|
assertWarning(false, `${pc.cyan('pageContext.userAgent')} is deprecated: use ${pc.cyan("pageContext.headers['user-agent']")} instead.`, {
|
|
21
21
|
showStackTrace: true,
|
|
22
22
|
onlyOnce: true,
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
// TO-DO/eventually:
|
|
2
|
+
// - New hook onLog(): https://github.com/vikejs/vike/issues/1438
|
|
3
|
+
// - Exact same logs between prod and dev, only difference is that some log objects have:
|
|
4
|
+
// - `isDevLog: true`
|
|
5
|
+
// - `willBeLogged: false` in production
|
|
6
|
+
// - `showTimestamp: true`
|
|
7
|
+
// - Never clear screen (it's complex with little benefit)
|
|
8
|
+
// - Add shortcut to clear screen
|
|
9
|
+
// - Maybe rotate colors upon no requests within 30s?
|
|
10
|
+
// - Only show a one-liner init log (instead of Vite's multi-line log)
|
|
1
11
|
// Non-production logger used for:
|
|
2
12
|
// - Development
|
|
3
13
|
// - Preview
|
|
@@ -85,7 +85,7 @@ const configDefinitionsBuiltIn = {
|
|
|
85
85
|
env: { client: true },
|
|
86
86
|
eager: true,
|
|
87
87
|
},
|
|
88
|
-
//
|
|
88
|
+
// TO-DO/next-major-release: remove
|
|
89
89
|
prefetchStaticAssets: {
|
|
90
90
|
env: { client: true },
|
|
91
91
|
},
|
|
@@ -210,6 +210,10 @@ const configDefinitionsBuiltIn = {
|
|
|
210
210
|
env: { server: true },
|
|
211
211
|
global: true,
|
|
212
212
|
},
|
|
213
|
+
headersResponse: {
|
|
214
|
+
env: { server: true },
|
|
215
|
+
cumulative: true,
|
|
216
|
+
},
|
|
213
217
|
};
|
|
214
218
|
function getConfigEnv(configValueSources, configName) {
|
|
215
219
|
const configValueSource = getConfigValueSource(configValueSources, configName);
|
|
@@ -30,9 +30,7 @@ async function crawlPlusFiles(userRootDir) {
|
|
|
30
30
|
: // Fallback to tinyglobby for users that dynamically generate plus files. (Assuming that no plus file is found because of the user's .gitignore list.)
|
|
31
31
|
filesGlob;
|
|
32
32
|
assert(files);
|
|
33
|
-
if (debug.isActivated) {
|
|
34
|
-
assert(filesGit);
|
|
35
|
-
assert(filesGlob);
|
|
33
|
+
if (debug.isActivated && filesGit && filesGlob) {
|
|
36
34
|
assertWarning(deepEqual(filesGlob.slice().sort(), filesGit.slice().sort()), "Git and glob results aren't matching.", { onlyOnce: false });
|
|
37
35
|
}
|
|
38
36
|
// Filter build files
|
|
@@ -32,12 +32,10 @@ function getFilesystemRouteString(locationId) {
|
|
|
32
32
|
function getInheritanceRoot(locationId) {
|
|
33
33
|
return getLogicalPath(locationId, [
|
|
34
34
|
'renderer',
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
// - Not sure if it's a good idea? Could it make config inheritance confusing? Let's try for now and see how it goes.
|
|
40
|
-
// - TO-DO/eventually: update docs https://github.com/vikejs/vike/blob/5fcdc4d5094f1a4dcbefc0b481cdd30a205aef2d/docs/pages/filesystem-routing/%2BPage.mdx?plain=1#L98
|
|
35
|
+
// Enable hooks defined by vike-{react,vue,solid} such as +onBeforeRenderClient to be defined at the root directory. In other words, avoid following error:
|
|
36
|
+
// ```bash
|
|
37
|
+
// [11:09:43.072][/test-preview.test.ts][npm run preview][stderr] Error: [vike][Wrong Usage] /+onBeforeRenderClient.ts sets the value of the config onBeforeRenderClient which is a custom config that is defined with https://vike.dev/meta at a path that doesn't apply to / — see https://vike.dev/config#inheritance
|
|
38
|
+
// ```
|
|
41
39
|
'pages',
|
|
42
40
|
]);
|
|
43
41
|
}
|
|
@@ -347,7 +347,7 @@ function isTemporaryBuildFile(filePath) {
|
|
|
347
347
|
const fileName = path.posix.basename(filePath);
|
|
348
348
|
return /\.build-[a-z0-9]{12}\.mjs$/.test(fileName);
|
|
349
349
|
}
|
|
350
|
-
//
|
|
350
|
+
// TO-DO/next-major-release: remove
|
|
351
351
|
function isHeaderFile(filePath) {
|
|
352
352
|
assertPosixPath(filePath);
|
|
353
353
|
const fileExtensions = getFileExtensions(filePath);
|
|
@@ -41,7 +41,7 @@ let restartVite = false;
|
|
|
41
41
|
let vikeConfigHasBuildError = null;
|
|
42
42
|
let isV1Design_ = null;
|
|
43
43
|
let vikeConfigPromise = null;
|
|
44
|
-
//
|
|
44
|
+
// TO-DO/next-major-release: remove
|
|
45
45
|
let vikeConfigSync = null;
|
|
46
46
|
let vikeConfigCtx = null; // Information provided by Vite's `config` and Vike's CLI. We could, if we want or need to, completely remove the dependency on Vite.
|
|
47
47
|
let prerenderContext;
|
|
@@ -53,14 +53,14 @@ function reloadVikeConfig() {
|
|
|
53
53
|
}
|
|
54
54
|
async function getVikeConfigInternal(
|
|
55
55
|
// I don't remember the logic behind it — neither why we restart Vite's dev server, nor why we sometimes don't.
|
|
56
|
-
// TO-DO:
|
|
56
|
+
// TO-DO/eventually: re-think all that. Some + settings are expected to influence Vite's config (restarting Vite's dev server is needed) while some don't.
|
|
57
57
|
doNotRestartViteOnError = false) {
|
|
58
58
|
assert(vikeConfigCtx);
|
|
59
59
|
const { userRootDir, isDev, vikeVitePluginOptions } = vikeConfigCtx;
|
|
60
60
|
const vikeConfig = await getOrResolveVikeConfig(userRootDir, isDev, vikeVitePluginOptions, doNotRestartViteOnError);
|
|
61
61
|
return vikeConfig;
|
|
62
62
|
}
|
|
63
|
-
//
|
|
63
|
+
// TO-DO/next-major-release: remove
|
|
64
64
|
function getVikeConfigInternalSync() {
|
|
65
65
|
assert(vikeConfigSync);
|
|
66
66
|
return vikeConfigSync;
|
|
@@ -484,7 +484,7 @@ function sortConfigValueSources(configValueSources, locationIdPage) {
|
|
|
484
484
|
return sortAfterInheritanceOrderPage(source1.plusFile, source2.plusFile, locationIdPage, configName);
|
|
485
485
|
}
|
|
486
486
|
})
|
|
487
|
-
//
|
|
487
|
+
// TO-DO/next-major-release: remove
|
|
488
488
|
// Interop with vike(options) in vite.config.js — make it least precedence.
|
|
489
489
|
.sort(makeLast((source) => !source.plusFile));
|
|
490
490
|
});
|
|
@@ -780,7 +780,7 @@ function assertMetaUsage(metaVal, metaConfigDefinedAt) {
|
|
|
780
780
|
}
|
|
781
781
|
configEnv = getConfigEnvValue(def.env, `${metaConfigDefinedAt} sets ${pc.cyan(`meta.${configName}.env`)} to`);
|
|
782
782
|
// Overwrite deprecated value with valid value
|
|
783
|
-
//
|
|
783
|
+
// TO-DO/next-major-release: remove once support for the deprecated values is removed
|
|
784
784
|
if (typeof def.env === 'string')
|
|
785
785
|
def.env = configEnv;
|
|
786
786
|
}
|
|
@@ -1026,7 +1026,7 @@ function determineIsErrorPage(routeFilesystem) {
|
|
|
1026
1026
|
function getConfigEnvValue(val, errMsgIntro) {
|
|
1027
1027
|
const errInvalidValue = `${errMsgIntro} an invalid value ${pc.cyan(JSON.stringify(val))}`;
|
|
1028
1028
|
// Legacy outdated values
|
|
1029
|
-
//
|
|
1029
|
+
// TO-DO/next-major-release: remove
|
|
1030
1030
|
if (typeof val === 'string') {
|
|
1031
1031
|
const valConverted = (() => {
|
|
1032
1032
|
if (val === 'client-only')
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
//
|
|
1
|
+
// TO-DO/next-major-release: remove
|
|
2
2
|
export { RenderErrorPage } from './route/abort.js';
|
package/dist/esm/shared/abort.js
CHANGED
|
@@ -9,10 +9,10 @@ import type { GlobalContextServerInternal } from '../node/runtime/globalContext.
|
|
|
9
9
|
import type { GlobalContextClientInternal } from '../client/runtime-client-routing/globalContext.js';
|
|
10
10
|
import { type Hook } from './hooks/getHook.js';
|
|
11
11
|
declare const getGlobalContextSyncErrMsg = "The global context isn't set yet, call getGlobalContextSync() later or use getGlobalContext() instead.";
|
|
12
|
-
declare function createGlobalContextShared<GlobalContextAddendum extends
|
|
12
|
+
declare function createGlobalContextShared<GlobalContextAddendum extends Record<string, any>>(virtualFileExports: unknown, globalObject: {
|
|
13
13
|
globalContext?: Record<string, unknown>;
|
|
14
14
|
onCreateGlobalContextHooks?: Hook[];
|
|
15
|
-
},
|
|
15
|
+
}, addGlobalContextAsync?: (globalContext: GlobalContextBase) => Promise<GlobalContextAddendum>, addGlobalContextSync?: (globalContext: GlobalContextBase) => GlobalContextAddendum): Promise<{
|
|
16
16
|
/**
|
|
17
17
|
* Useful for distinguishing `globalContext` from other objects and narrowing down TypeScript unions.
|
|
18
18
|
*
|
|
@@ -35,7 +35,7 @@ declare function createGlobalContextShared<GlobalContextAddendum extends object>
|
|
|
35
35
|
pages: {
|
|
36
36
|
[k: string]: import("./page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
|
|
37
37
|
};
|
|
38
|
-
} &
|
|
38
|
+
} & GlobalContextAddendum>;
|
|
39
39
|
type GlobalContextBasePublic = Pick<GlobalContextBase, 'config' | 'pages' | 'isGlobalContext'>;
|
|
40
40
|
type GlobalContextBase = ReturnType<typeof createGlobalContextBase>;
|
|
41
41
|
declare function createGlobalContextBase(virtualFileExports: unknown): {
|
|
@@ -7,10 +7,26 @@ import { execHookGlobal } from './hooks/execHook.js';
|
|
|
7
7
|
import { prepareGlobalContextForPublicUsage } from './prepareGlobalContextForPublicUsage.js';
|
|
8
8
|
import { getHookFromPageConfigGlobalCumulative } from './hooks/getHook.js';
|
|
9
9
|
const getGlobalContextSyncErrMsg = "The global context isn't set yet, call getGlobalContextSync() later or use getGlobalContext() instead.";
|
|
10
|
-
async function createGlobalContextShared(virtualFileExports, globalObject,
|
|
10
|
+
async function createGlobalContextShared(virtualFileExports, globalObject, addGlobalContextAsync, addGlobalContextSync) {
|
|
11
11
|
const globalContext = createGlobalContextBase(virtualFileExports);
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
let isNewGlobalContext;
|
|
13
|
+
if (!globalObject.globalContext) {
|
|
14
|
+
globalObject.globalContext = globalContext;
|
|
15
|
+
isNewGlobalContext = false;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
isNewGlobalContext = true;
|
|
19
|
+
}
|
|
20
|
+
if (addGlobalContextSync &&
|
|
21
|
+
// TODO/next-major-release: remove
|
|
22
|
+
globalContext._pageConfigs.length > 0) {
|
|
23
|
+
const globalContextAddendum = addGlobalContextSync?.(globalContext);
|
|
24
|
+
objectAssign(globalContext, globalContextAddendum);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const globalContextAddendum = await addGlobalContextAsync?.(globalContext);
|
|
28
|
+
objectAssign(globalContext, globalContextAddendum);
|
|
29
|
+
}
|
|
14
30
|
const onCreateGlobalContextHooks = getHookFromPageConfigGlobalCumulative(globalContext._pageConfigGlobal, 'onCreateGlobalContext');
|
|
15
31
|
let hooksCalled = false;
|
|
16
32
|
if (!hooksAreEqual(globalObject.onCreateGlobalContextHooks ?? [], onCreateGlobalContextHooks)) {
|
|
@@ -18,10 +34,7 @@ async function createGlobalContextShared(virtualFileExports, globalObject, addGl
|
|
|
18
34
|
await execHookGlobal('onCreateGlobalContext', globalContext._pageConfigGlobal, null, globalContext, prepareGlobalContextForPublicUsage);
|
|
19
35
|
hooksCalled = true;
|
|
20
36
|
}
|
|
21
|
-
if (
|
|
22
|
-
globalObject.globalContext = globalContext;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
37
|
+
if (isNewGlobalContext) {
|
|
25
38
|
// Singleton: ensure all `globalContext` user-land references are preserved & updated.
|
|
26
39
|
if (hooksCalled) {
|
|
27
40
|
objectReplace(globalObject.globalContext, globalContext);
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
export { createPageContextShared };
|
|
2
2
|
export { createPageContextObject };
|
|
3
3
|
import type { VikeConfigPublicGlobal } from './page-configs/resolveVikeConfigPublic.js';
|
|
4
|
-
import type { PageConfigGlobalRuntime } from '../types/PageConfig.js';
|
|
5
4
|
import { type PageContextPrepareMinimum } from './preparePageContextForPublicUsage.js';
|
|
6
|
-
declare function createPageContextShared<T extends PageContextPrepareMinimum>(pageContextCreated: T,
|
|
5
|
+
declare function createPageContextShared<T extends PageContextPrepareMinimum>(pageContextCreated: T, vikeConfigPublicGlobal: VikeConfigPublicGlobal): T & {
|
|
7
6
|
config: import("../types/index.js").ConfigResolved;
|
|
8
7
|
_source: import("./page-configs/resolveVikeConfigPublic.js").Source;
|
|
9
8
|
_sources: import("./page-configs/resolveVikeConfigPublic.js").Sources;
|
|
10
9
|
_from: import("./page-configs/resolveVikeConfigPublic.js").From;
|
|
11
|
-
}
|
|
10
|
+
};
|
|
12
11
|
declare function createPageContextObject(): {
|
|
13
12
|
_isOriginalObject: true;
|
|
14
13
|
isPageContext: true;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
export { createPageContextShared };
|
|
2
2
|
export { createPageContextObject };
|
|
3
3
|
import { changeEnumerable, objectAssign } from './utils.js';
|
|
4
|
-
|
|
5
|
-
async function createPageContextShared(pageContextCreated, pageConfigGlobal, vikeConfigPublicGlobal) {
|
|
4
|
+
function createPageContextShared(pageContextCreated, vikeConfigPublicGlobal) {
|
|
6
5
|
objectAssign(pageContextCreated, vikeConfigPublicGlobal);
|
|
7
6
|
return pageContextCreated;
|
|
8
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { determinePageIdOld };
|
|
2
2
|
import { slice, assert } from './utils.js';
|
|
3
|
-
//
|
|
3
|
+
// TO-DO/next-major-release: remove
|
|
4
4
|
function determinePageIdOld(filePath) {
|
|
5
5
|
const pageSuffix = '.page.';
|
|
6
6
|
const pageId = slice(filePath.split(pageSuffix), 0, -1).join(pageSuffix);
|