vike 0.4.228 → 0.4.229
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 +2 -2
- package/dist/cjs/client/client-routing-runtime/globalContext.js +49 -0
- package/dist/cjs/client/server-routing-runtime/globalContext.js +41 -0
- package/dist/cjs/client/server-routing-runtime/utils.js +1 -1
- package/dist/cjs/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
- package/dist/cjs/client/shared/utils.js +22 -0
- package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/handleAssetsManifest.js +10 -5
- package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +3 -10
- package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +9 -5
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +5 -1
- package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +1 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +14 -3
- package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +2 -7
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +13 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +13 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/cjs/node/plugin/shared/getFilePath.js +2 -2
- package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +7 -19
- package/dist/cjs/node/plugin/utils.js +1 -0
- package/dist/cjs/node/prerender/runPrerender.js +44 -41
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +102 -125
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/cjs/node/runtime/html/propKeys.js +47 -0
- package/dist/cjs/node/runtime/html/renderHtml.js +1 -1
- package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
- package/dist/cjs/node/runtime/index-deprecated.js +9 -38
- package/dist/cjs/node/runtime/index.js +56 -2
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +73 -0
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -2
- package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +2 -2
- package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -68
- package/dist/cjs/node/runtime/renderPage.js +102 -81
- package/dist/cjs/node/runtime/universal-middleware.js +7 -1
- package/dist/cjs/node/runtime/utils.js +3 -2
- package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/cjs/shared/createGlobalContextShared.js +54 -0
- package/dist/cjs/shared/createPageContextShared.js +17 -0
- package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/cjs/shared/hooks/executeHookGeneric.js +18 -0
- package/dist/cjs/shared/hooks/getHook.js +45 -27
- package/dist/cjs/shared/htmlElementIds.js +5 -0
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/cjs/shared/route/executeGuardHook.js +1 -1
- package/dist/cjs/shared/route/loadPageRoutes.js +2 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
- package/dist/cjs/utils/getPublicProxy.js +27 -0
- package/dist/cjs/utils/isImportPath.js +21 -0
- package/dist/cjs/utils/objectAssign.js +6 -10
- package/dist/cjs/utils/objectReplace.js +4 -4
- package/dist/cjs/utils/{isNpmPackage.js → parseNpmPackage.js} +23 -23
- package/dist/cjs/utils/path.js +12 -2
- package/dist/cjs/utils/requireResolve.js +134 -53
- package/dist/esm/__internal/index.js +3 -3
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +29 -10
- package/dist/esm/client/client-routing-runtime/createPageContext.js +23 -22
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +5 -4
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +20 -0
- package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +8 -7
- package/dist/esm/client/client-routing-runtime/utils.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/utils.js +0 -1
- package/dist/esm/client/index.d.ts +1 -0
- package/dist/esm/client/index.js +4 -0
- package/dist/esm/client/node.js +1 -3
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +36 -0
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +47 -0
- package/dist/esm/client/server-routing-runtime/entry.js +2 -2
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +17 -0
- package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
- package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/utils.js +1 -1
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +23 -0
- package/dist/esm/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/esm/client/shared/executeOnRenderClientHook.js +5 -4
- package/dist/esm/client/shared/{getPageContextSerializedInHtml.d.ts → getJsonSerializedInHtml.d.ts} +2 -0
- package/dist/esm/client/shared/getJsonSerializedInHtml.js +29 -0
- package/dist/esm/client/shared/removeFoucBuster.js +1 -0
- package/dist/esm/client/shared/utils.d.ts +4 -0
- package/dist/esm/client/shared/utils.js +4 -0
- package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
- package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.js +11 -6
- package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +2 -2
- package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +4 -11
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +10 -6
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +5 -1
- package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -2
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +15 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +3 -8
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.d.ts → pointerImports.d.ts} +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +14 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +13 -10
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/esm/node/plugin/shared/getFilePath.js +3 -3
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +8 -20
- package/dist/esm/node/plugin/utils.d.ts +1 -0
- package/dist/esm/node/plugin/utils.js +1 -0
- package/dist/esm/node/prerender/runPrerender.d.ts +314 -5
- package/dist/esm/node/prerender/runPrerender.js +48 -45
- package/dist/esm/node/prerender/utils.d.ts +1 -1
- package/dist/esm/node/prerender/utils.js +1 -1
- package/dist/esm/node/runtime/globalContext.d.ts +425 -47
- package/dist/esm/node/runtime/globalContext.js +103 -126
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/esm/node/runtime/html/injectAssets.d.ts +3 -3
- package/dist/esm/node/runtime/html/propKeys.d.ts +8 -0
- package/dist/esm/node/runtime/html/propKeys.js +45 -0
- package/dist/esm/node/runtime/html/renderHtml.js +1 -1
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.d.ts → serializeContext.d.ts} +7 -6
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +36 -67
- package/dist/esm/node/runtime/index-deprecated.d.ts +1 -16
- package/dist/esm/node/runtime/index-deprecated.js +9 -36
- package/dist/esm/node/runtime/index.d.ts +23 -1
- package/dist/esm/node/runtime/index.js +38 -3
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +5 -4
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +155 -0
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +71 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -3
- package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -3
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +225 -179
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -69
- package/dist/esm/node/runtime/renderPage.d.ts +146 -7
- package/dist/esm/node/runtime/renderPage.js +105 -84
- package/dist/esm/node/runtime/universal-middleware.js +7 -1
- package/dist/esm/node/runtime/utils.d.ts +3 -2
- package/dist/esm/node/runtime/utils.js +3 -2
- package/dist/esm/shared/VikeNamespace.d.ts +35 -13
- package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/esm/shared/createGlobalContextShared.d.ts +39 -0
- package/dist/esm/shared/createGlobalContextShared.js +51 -0
- package/dist/esm/shared/createPageContextShared.d.ts +9 -0
- package/dist/esm/shared/createPageContextShared.js +15 -0
- package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
- package/dist/esm/shared/hooks/executeHookGeneric.js +16 -0
- package/dist/esm/shared/hooks/getHook.d.ts +5 -3
- package/dist/esm/shared/hooks/getHook.js +47 -29
- package/dist/esm/shared/htmlElementIds.d.ts +2 -0
- package/dist/esm/shared/htmlElementIds.js +2 -0
- package/dist/esm/shared/page-configs/Config.d.ts +12 -2
- package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +1 -1
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/esm/shared/route/executeGuardHook.js +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +2 -1
- package/dist/esm/shared/types.d.ts +64 -32
- package/dist/esm/types/index.d.ts +1 -5
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/catchInfiniteLoop.js +4 -4
- package/dist/esm/utils/getGlobalObject.d.ts +1 -1
- package/dist/esm/utils/getPublicProxy.d.ts +2 -0
- package/dist/esm/utils/getPublicProxy.js +25 -0
- package/dist/esm/utils/isImportPath.d.ts +4 -0
- package/dist/esm/utils/isImportPath.js +19 -0
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +6 -10
- package/dist/esm/utils/objectReplace.d.ts +1 -1
- package/dist/esm/utils/objectReplace.js +4 -4
- package/dist/esm/utils/parseNpmPackage.d.ts +17 -0
- package/dist/esm/utils/{isNpmPackage.js → parseNpmPackage.js} +23 -23
- package/dist/esm/utils/path.d.ts +1 -1
- package/dist/esm/utils/path.js +12 -2
- package/dist/esm/utils/requireResolve.d.ts +20 -7
- package/dist/esm/utils/requireResolve.js +134 -53
- package/package.json +14 -13
- package/dist/cjs/node/runtime/index-common.js +0 -27
- package/dist/cjs/utils/makePublicCopy.js +0 -32
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +0 -19
- package/dist/esm/client/server-routing-runtime/getPageContext.js +0 -44
- package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
- package/dist/esm/node/runtime/index-common.d.ts +0 -8
- package/dist/esm/node/runtime/index-common.js +0 -10
- package/dist/esm/utils/isNpmPackage.d.ts +0 -17
- package/dist/esm/utils/makePublicCopy.d.ts +0 -3
- package/dist/esm/utils/makePublicCopy.js +0 -30
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.renderPage = renderPage;
|
|
7
7
|
exports.renderPage_addAsyncHookwrapper = renderPage_addAsyncHookwrapper;
|
|
8
8
|
const renderPageAlreadyRouted_js_1 = require("./renderPage/renderPageAlreadyRouted.js");
|
|
9
|
+
const createPageContextServerSide_js_1 = require("./renderPage/createPageContextServerSide.js");
|
|
9
10
|
const index_js_1 = require("../../shared/route/index.js");
|
|
10
11
|
const utils_js_1 = require("./utils.js");
|
|
11
12
|
const abort_js_1 = require("../../shared/route/abort.js");
|
|
@@ -18,7 +19,7 @@ const assertArguments_js_1 = require("./renderPage/assertArguments.js");
|
|
|
18
19
|
const index_js_2 = require("./renderPage/log404/index.js");
|
|
19
20
|
const isVikeConfigInvalid_js_1 = require("./renderPage/isVikeConfigInvalid.js");
|
|
20
21
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
21
|
-
const
|
|
22
|
+
const serializeContext_js_1 = require("./html/serializeContext.js");
|
|
22
23
|
const error_page_js_1 = require("../../shared/error-page.js");
|
|
23
24
|
const handleErrorWithoutErrorPage_js_1 = require("./renderPage/handleErrorWithoutErrorPage.js");
|
|
24
25
|
const loadUserFilesServerSide_js_1 = require("./renderPage/loadUserFilesServerSide.js");
|
|
@@ -32,13 +33,13 @@ async function renderPage(pageContextInit) {
|
|
|
32
33
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContextInit, 'urlOriginal', 'string')); // assertUsage() already implemented at assertArguments()
|
|
33
34
|
assertIsUrl(pageContextInit.urlOriginal);
|
|
34
35
|
(0, utils_js_1.onSetupRuntime)();
|
|
35
|
-
const pageContextInvalidRequest =
|
|
36
|
+
const pageContextInvalidRequest = getPageContextInvalidRequest(pageContextInit);
|
|
36
37
|
if (pageContextInvalidRequest)
|
|
37
38
|
return pageContextInvalidRequest;
|
|
38
39
|
const httpRequestId = getRequestId();
|
|
39
40
|
const urlOriginalPretty = (0, utils_js_1.getUrlPretty)(pageContextInit.urlOriginal);
|
|
40
41
|
logHttpRequest(urlOriginalPretty, httpRequestId);
|
|
41
|
-
const { pageContextReturn } = await asyncHookWrapper(httpRequestId, () =>
|
|
42
|
+
const { pageContextReturn } = await asyncHookWrapper(httpRequestId, () => renderPagePrepare(pageContextInit, httpRequestId));
|
|
42
43
|
logHttpResponse(urlOriginalPretty, httpRequestId, pageContextReturn);
|
|
43
44
|
(0, utils_js_1.checkType)(pageContextReturn);
|
|
44
45
|
(0, utils_js_1.assert)(pageContextReturn.httpResponse);
|
|
@@ -52,13 +53,12 @@ let asyncHookWrapper = async (_httpRequestId, ret) => ({
|
|
|
52
53
|
function renderPage_addAsyncHookwrapper(wrapper) {
|
|
53
54
|
asyncHookWrapper = wrapper;
|
|
54
55
|
}
|
|
55
|
-
async function
|
|
56
|
+
async function renderPagePrepare(pageContextInit, httpRequestId) {
|
|
56
57
|
// Invalid config
|
|
57
|
-
if (isVikeConfigInvalid_js_1.isVikeConfigInvalid
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
58
|
+
if (isVikeConfigInvalid_js_1.isVikeConfigInvalid &&
|
|
59
|
+
true // Make TS happy
|
|
60
|
+
) {
|
|
61
|
+
return getPageContextInvalidVikeConfig(isVikeConfigInvalid_js_1.isVikeConfigInvalid.err, pageContextInit, httpRequestId);
|
|
62
62
|
}
|
|
63
63
|
// Prepare context
|
|
64
64
|
try {
|
|
@@ -72,49 +72,52 @@ async function renderPageAndPrepare(pageContextInit, httpRequestId) {
|
|
|
72
72
|
// initGlobalContext_renderPage() doens't call any user hook => err isn't thrown from user code.
|
|
73
73
|
(0, utils_js_1.assert)(!(0, abort_js_1.isAbortError)(err));
|
|
74
74
|
(0, loggerRuntime_js_1.logRuntimeError)(err, httpRequestId);
|
|
75
|
-
const pageContextWithError =
|
|
75
|
+
const pageContextWithError = getPageContextHttpResponseErrorWithoutGlobalContext(err, pageContextInit);
|
|
76
76
|
return pageContextWithError;
|
|
77
77
|
}
|
|
78
78
|
if (isVikeConfigInvalid_js_1.isVikeConfigInvalid) {
|
|
79
|
-
return
|
|
79
|
+
return getPageContextInvalidVikeConfig(isVikeConfigInvalid_js_1.isVikeConfigInvalid.err, pageContextInit, httpRequestId);
|
|
80
80
|
}
|
|
81
81
|
else {
|
|
82
82
|
// `globalContext` now contains the entire Vike config and getVikeConfig() isn't called anymore for this request.
|
|
83
83
|
}
|
|
84
|
-
const globalContext = await (0, globalContext_js_1.
|
|
84
|
+
const { globalContext, globalContext_public } = await (0, globalContext_js_1.getGlobalContextServerInternal)();
|
|
85
|
+
const pageContextBegin = await getPageContextBegin(pageContextInit, globalContext, globalContext_public, httpRequestId);
|
|
85
86
|
// Check Base URL
|
|
86
87
|
{
|
|
87
|
-
const pageContextHttpResponse = await checkBaseUrl(
|
|
88
|
+
const pageContextHttpResponse = await checkBaseUrl(pageContextBegin, globalContext);
|
|
88
89
|
if (pageContextHttpResponse)
|
|
89
90
|
return pageContextHttpResponse;
|
|
90
91
|
}
|
|
91
92
|
// Normalize URL
|
|
92
93
|
{
|
|
93
|
-
const pageContextHttpResponse = await normalizeUrl(
|
|
94
|
+
const pageContextHttpResponse = await normalizeUrl(pageContextBegin, globalContext, httpRequestId);
|
|
94
95
|
if (pageContextHttpResponse)
|
|
95
96
|
return pageContextHttpResponse;
|
|
96
97
|
}
|
|
97
98
|
// Permanent redirects (HTTP status code `301`)
|
|
98
99
|
{
|
|
99
|
-
const pageContextHttpResponse = await getPermanentRedirect(
|
|
100
|
+
const pageContextHttpResponse = await getPermanentRedirect(pageContextBegin, globalContext, httpRequestId);
|
|
100
101
|
if (pageContextHttpResponse)
|
|
101
102
|
return pageContextHttpResponse;
|
|
102
103
|
}
|
|
103
|
-
return await renderPageAlreadyPrepared(
|
|
104
|
+
return await renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRequestId, []);
|
|
104
105
|
}
|
|
105
|
-
async function renderPageAlreadyPrepared(
|
|
106
|
+
async function renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRequestId, pageContextsFromRewrite) {
|
|
107
|
+
const pageContextNominalPageBegin = forkPageContext(pageContextBegin);
|
|
106
108
|
(0, abort_js_1.assertNoInfiniteAbortLoop)(pageContextsFromRewrite.length,
|
|
107
109
|
// There doesn't seem to be a way to count the number of HTTP redirects (vike don't have access to the HTTP request headers/cookies)
|
|
108
110
|
// https://stackoverflow.com/questions/9683007/detect-infinite-http-redirect-loop-on-server-side
|
|
109
111
|
0);
|
|
110
112
|
let pageContextNominalPageSuccess;
|
|
111
113
|
const pageContextFromAllRewrites = (0, abort_js_1.getPageContextFromAllRewrites)(pageContextsFromRewrite);
|
|
112
|
-
|
|
113
|
-
(0, utils_js_1.
|
|
114
|
+
// This is where pageContext._urlRewrite is set
|
|
115
|
+
(0, utils_js_1.assert)(pageContextFromAllRewrites._urlRewrite === null || typeof pageContextFromAllRewrites._urlRewrite === 'string');
|
|
116
|
+
(0, utils_js_1.objectAssign)(pageContextNominalPageBegin, pageContextFromAllRewrites);
|
|
114
117
|
let errNominalPage;
|
|
115
118
|
{
|
|
116
119
|
try {
|
|
117
|
-
pageContextNominalPageSuccess = await renderPageNominal(
|
|
120
|
+
pageContextNominalPageSuccess = await renderPageNominal(pageContextNominalPageBegin);
|
|
118
121
|
}
|
|
119
122
|
catch (err) {
|
|
120
123
|
errNominalPage = err;
|
|
@@ -122,7 +125,7 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
|
|
|
122
125
|
(0, loggerRuntime_js_1.logRuntimeError)(errNominalPage, httpRequestId);
|
|
123
126
|
}
|
|
124
127
|
if (!errNominalPage) {
|
|
125
|
-
(0, utils_js_1.assert)(pageContextNominalPageSuccess ===
|
|
128
|
+
(0, utils_js_1.assert)(pageContextNominalPageSuccess === pageContextNominalPageBegin);
|
|
126
129
|
}
|
|
127
130
|
}
|
|
128
131
|
// Log upon 404
|
|
@@ -138,12 +141,12 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
|
|
|
138
141
|
else {
|
|
139
142
|
(0, utils_js_1.assert)(errNominalPage);
|
|
140
143
|
(0, utils_js_1.assert)(pageContextNominalPageSuccess === undefined);
|
|
141
|
-
(0, utils_js_1.assert)(
|
|
142
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(
|
|
143
|
-
const pageContextErrorPageInit = await getPageContextErrorPageInit(
|
|
144
|
+
(0, utils_js_1.assert)(pageContextNominalPageBegin);
|
|
145
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContextNominalPageBegin, 'urlOriginal', 'string'));
|
|
146
|
+
const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextBegin, errNominalPage, pageContextNominalPageBegin);
|
|
144
147
|
// Handle `throw redirect()` and `throw render()` while rendering nominal page
|
|
145
148
|
if ((0, abort_js_1.isAbortError)(errNominalPage)) {
|
|
146
|
-
const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite,
|
|
149
|
+
const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
|
|
147
150
|
if (handled.pageContextReturn) {
|
|
148
151
|
// - throw redirect()
|
|
149
152
|
// - throw render(url)
|
|
@@ -156,7 +159,7 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
|
|
|
156
159
|
Object.assign(pageContextErrorPageInit, handled.pageContextAbort);
|
|
157
160
|
}
|
|
158
161
|
{
|
|
159
|
-
const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext.
|
|
162
|
+
const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext._pageFilesAll, globalContext._pageConfigs);
|
|
160
163
|
if (!errorPageId) {
|
|
161
164
|
(0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: null });
|
|
162
165
|
return (0, handleErrorWithoutErrorPage_js_1.handleErrorWithoutErrorPage)(pageContextErrorPageInit);
|
|
@@ -172,12 +175,12 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
|
|
|
172
175
|
catch (errErrorPage) {
|
|
173
176
|
// Handle `throw redirect()` and `throw render()` while rendering error page
|
|
174
177
|
if ((0, abort_js_1.isAbortError)(errErrorPage)) {
|
|
175
|
-
const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite,
|
|
178
|
+
const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
|
|
176
179
|
// throw render(abortStatusCode)
|
|
177
180
|
if (!handled.pageContextReturn) {
|
|
178
181
|
const pageContextAbort = errErrorPage._pageContextAbort;
|
|
179
182
|
(0, utils_js_1.assertWarning)(false, `Failed to render error page because ${picocolors_1.default.cyan(pageContextAbort._abortCall)} was called: make sure ${picocolors_1.default.cyan(pageContextAbort._abortCaller)} doesn't occur while the error page is being rendered.`, { onlyOnce: false });
|
|
180
|
-
const pageContextHttpWithError = getPageContextHttpResponseError(errNominalPage,
|
|
183
|
+
const pageContextHttpWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
|
|
181
184
|
return pageContextHttpWithError;
|
|
182
185
|
}
|
|
183
186
|
// `throw redirect()` / `throw render(url)`
|
|
@@ -186,7 +189,7 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
|
|
|
186
189
|
if ((0, isNewError_js_1.isNewError)(errErrorPage, errNominalPage)) {
|
|
187
190
|
(0, loggerRuntime_js_1.logRuntimeError)(errErrorPage, httpRequestId);
|
|
188
191
|
}
|
|
189
|
-
const pageContextWithError = getPageContextHttpResponseError(errNominalPage,
|
|
192
|
+
const pageContextWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
|
|
190
193
|
return pageContextWithError;
|
|
191
194
|
}
|
|
192
195
|
return pageContextErrorPage;
|
|
@@ -238,11 +241,26 @@ function logHttpResponse(urlOriginalPretty, httpRequestId, pageContextReturn) {
|
|
|
238
241
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(msg, httpRequestId, isNominal ? 'info' : 'error');
|
|
239
242
|
}
|
|
240
243
|
function prettyUrl(url) {
|
|
241
|
-
|
|
244
|
+
try {
|
|
245
|
+
url = decodeURI(url);
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
// https://github.com/vikejs/vike/pull/2367#issuecomment-2800967564
|
|
249
|
+
}
|
|
250
|
+
return picocolors_1.default.bold(url);
|
|
242
251
|
}
|
|
243
|
-
function getPageContextHttpResponseError(err,
|
|
244
|
-
const pageContextWithError = (
|
|
245
|
-
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseError)(
|
|
252
|
+
function getPageContextHttpResponseError(err, pageContextBegin) {
|
|
253
|
+
const pageContextWithError = forkPageContext(pageContextBegin);
|
|
254
|
+
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseError)(pageContextBegin);
|
|
255
|
+
(0, utils_js_1.objectAssign)(pageContextWithError, {
|
|
256
|
+
httpResponse,
|
|
257
|
+
errorWhileRendering: err
|
|
258
|
+
});
|
|
259
|
+
return pageContextWithError;
|
|
260
|
+
}
|
|
261
|
+
function getPageContextHttpResponseErrorWithoutGlobalContext(err, pageContextInit) {
|
|
262
|
+
const pageContextWithError = (0, createPageContextServerSide_js_1.createPageContextServerSideWithoutGlobalContext)(pageContextInit);
|
|
263
|
+
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseErrorWithoutGlobalContext)();
|
|
246
264
|
(0, utils_js_1.objectAssign)(pageContextWithError, {
|
|
247
265
|
httpResponse,
|
|
248
266
|
errorWhileRendering: err
|
|
@@ -272,8 +290,8 @@ async function renderPageNominal(pageContext) {
|
|
|
272
290
|
(0, utils_js_1.assert)(pageContext === pageContextAfterRender);
|
|
273
291
|
return pageContextAfterRender;
|
|
274
292
|
}
|
|
275
|
-
async function getPageContextErrorPageInit(
|
|
276
|
-
const pageContext =
|
|
293
|
+
async function getPageContextErrorPageInit(pageContextBegin, errNominalPage, pageContextNominalPagePartial) {
|
|
294
|
+
const pageContext = forkPageContext(pageContextBegin);
|
|
277
295
|
(0, utils_js_1.assert)(errNominalPage);
|
|
278
296
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
279
297
|
is404: false,
|
|
@@ -286,17 +304,17 @@ async function getPageContextErrorPageInit(pageContextInit, globalContext, errNo
|
|
|
286
304
|
(0, utils_js_1.assert)(pageContext.errorWhileRendering);
|
|
287
305
|
return pageContext;
|
|
288
306
|
}
|
|
289
|
-
async function
|
|
307
|
+
async function getPageContextBegin(pageContextInit, globalContext, globalContext_public, httpRequestId) {
|
|
290
308
|
const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(pageContextInit.urlOriginal);
|
|
291
|
-
const
|
|
309
|
+
const pageContextBegin = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, globalContext_public, {
|
|
310
|
+
isPrerendering: false,
|
|
292
311
|
ssr: {
|
|
293
|
-
urlRewrite,
|
|
294
312
|
urlHandler: _urlHandler,
|
|
295
313
|
isClientSideNavigation
|
|
296
314
|
}
|
|
297
315
|
});
|
|
298
|
-
(0, utils_js_1.objectAssign)(
|
|
299
|
-
return
|
|
316
|
+
(0, utils_js_1.objectAssign)(pageContextBegin, { _httpRequestId: httpRequestId });
|
|
317
|
+
return pageContextBegin;
|
|
300
318
|
}
|
|
301
319
|
function handlePageContextUrl(urlOriginal) {
|
|
302
320
|
const { isPageContextRequest } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
|
|
@@ -319,11 +337,12 @@ function assertIsNotViteRequest(urlPathname, urlOriginal) {
|
|
|
319
337
|
return;
|
|
320
338
|
(0, utils_js_1.assertUsage)(false, `${picocolors_1.default.code('renderPage(pageContextInit)')} called with ${picocolors_1.default.code(`pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`)} which is unexpected because the URL ${picocolors_1.default.bold(urlOriginal)} should have already been handled by the development middleware: make sure the ${picocolors_1.default.cyan('createDevMiddleware()')} middleware is executed *before* the ${picocolors_1.default.cyan('renderPage()')} middleware, see ${picocolors_1.default.underline('https://vike.dev/renderPage')}`);
|
|
321
339
|
}
|
|
322
|
-
async function normalizeUrl(
|
|
340
|
+
async function normalizeUrl(pageContextBegin, globalContext, httpRequestId) {
|
|
341
|
+
const pageContext = forkPageContext(pageContextBegin);
|
|
323
342
|
const { trailingSlash, disableUrlNormalization } = globalContext.config;
|
|
324
343
|
if (disableUrlNormalization)
|
|
325
344
|
return null;
|
|
326
|
-
const { urlOriginal } =
|
|
345
|
+
const { urlOriginal } = pageContext;
|
|
327
346
|
const { isPageContextRequest } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
|
|
328
347
|
if (isPageContextRequest)
|
|
329
348
|
return null;
|
|
@@ -331,13 +350,13 @@ async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
|
|
|
331
350
|
if (!urlNormalized)
|
|
332
351
|
return null;
|
|
333
352
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(`URL normalized from ${picocolors_1.default.cyan(urlOriginal)} to ${picocolors_1.default.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
|
|
334
|
-
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlNormalized, statusCode: 301 },
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
return pageContextHttpResponse;
|
|
353
|
+
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlNormalized, statusCode: 301 }, pageContext);
|
|
354
|
+
(0, utils_js_1.objectAssign)(pageContext, { httpResponse });
|
|
355
|
+
return pageContext;
|
|
338
356
|
}
|
|
339
|
-
async function getPermanentRedirect(
|
|
340
|
-
const
|
|
357
|
+
async function getPermanentRedirect(pageContextBegin, globalContext, httpRequestId) {
|
|
358
|
+
const pageContext = forkPageContext(pageContextBegin);
|
|
359
|
+
const urlWithoutBase = (0, utils_js_1.removeBaseServer)(pageContext.urlOriginal, globalContext.baseServer);
|
|
341
360
|
let origin = null;
|
|
342
361
|
let urlTargetExternal = null;
|
|
343
362
|
let urlTarget = (0, utils_js_1.modifyUrlPathname)(urlWithoutBase, (urlPathname) => {
|
|
@@ -370,48 +389,45 @@ async function getPermanentRedirect(pageContextInit, globalContext, httpRequestI
|
|
|
370
389
|
return null;
|
|
371
390
|
if (!originChanged)
|
|
372
391
|
urlTarget = (0, utils_js_1.prependBase)(urlTarget, globalContext.baseServer);
|
|
373
|
-
(0, utils_js_1.assert)(urlTarget !==
|
|
392
|
+
(0, utils_js_1.assert)(urlTarget !== pageContext.urlOriginal);
|
|
374
393
|
}
|
|
375
394
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(`Permanent redirection defined by config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
|
|
376
|
-
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlTarget, statusCode: 301 },
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
return pageContextHttpResponse;
|
|
395
|
+
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlTarget, statusCode: 301 }, pageContext);
|
|
396
|
+
(0, utils_js_1.objectAssign)(pageContext, { httpResponse });
|
|
397
|
+
return pageContext;
|
|
380
398
|
}
|
|
381
399
|
function normalize(url) {
|
|
382
400
|
return url || '/';
|
|
383
401
|
}
|
|
384
|
-
async function handleAbortError(errAbort, pageContextsFromRewrite,
|
|
385
|
-
//
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext) {
|
|
389
|
-
(0, abort_js_1.logAbortErrorHandled)(errAbort, globalContext.isProduction, pageContextNominalPageInit);
|
|
402
|
+
async function handleAbortError(errAbort, pageContextsFromRewrite, pageContextBegin,
|
|
403
|
+
// handleAbortError() creates a new pageContext object and we don't merge pageContextNominalPageBegin to it: we only use some pageContextNominalPageBegin information.
|
|
404
|
+
pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext) {
|
|
405
|
+
(0, abort_js_1.logAbortErrorHandled)(errAbort, globalContext._isProduction, pageContextNominalPageBegin);
|
|
390
406
|
const pageContextAbort = errAbort._pageContextAbort;
|
|
391
407
|
let pageContextSerialized;
|
|
392
|
-
if (
|
|
408
|
+
if (pageContextNominalPageBegin.isClientSideNavigation) {
|
|
393
409
|
if (pageContextAbort.abortStatusCode) {
|
|
394
|
-
const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext.
|
|
410
|
+
const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext._pageFilesAll, globalContext._pageConfigs);
|
|
395
411
|
const abortCall = pageContextAbort._abortCall;
|
|
396
412
|
(0, utils_js_1.assert)(abortCall);
|
|
397
413
|
(0, utils_js_1.assertUsage)(errorPageId, `You called ${picocolors_1.default.cyan(abortCall)} but you didn't define an error page, make sure to define one https://vike.dev/error-page`);
|
|
398
|
-
const pageContext = (
|
|
414
|
+
const pageContext = forkPageContext(pageContextBegin);
|
|
399
415
|
(0, utils_js_1.objectAssign)(pageContext, { pageId: errorPageId });
|
|
400
416
|
(0, utils_js_1.objectAssign)(pageContext, pageContextAbort);
|
|
401
417
|
(0, utils_js_1.objectAssign)(pageContext, pageContextErrorPageInit, true);
|
|
402
418
|
(0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
|
|
403
419
|
// We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
|
|
404
|
-
pageContextSerialized = (0,
|
|
420
|
+
pageContextSerialized = (0, serializeContext_js_1.getPageContextClientSerialized)(pageContext);
|
|
405
421
|
}
|
|
406
422
|
else {
|
|
407
|
-
pageContextSerialized = (0,
|
|
423
|
+
pageContextSerialized = (0, serializeContext_js_1.getPageContextClientSerializedAbort)(pageContextAbort);
|
|
408
424
|
}
|
|
409
425
|
const httpResponse = await (0, createHttpResponse_js_1.createHttpResponsePageContextJson)(pageContextSerialized);
|
|
410
426
|
const pageContextReturn = { httpResponse };
|
|
411
427
|
return { pageContextReturn };
|
|
412
428
|
}
|
|
413
429
|
if (pageContextAbort._urlRewrite) {
|
|
414
|
-
const pageContextReturn = await renderPageAlreadyPrepared(
|
|
430
|
+
const pageContextReturn = await renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRequestId, [
|
|
415
431
|
...pageContextsFromRewrite,
|
|
416
432
|
pageContextAbort
|
|
417
433
|
]);
|
|
@@ -419,22 +435,22 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalConte
|
|
|
419
435
|
return { pageContextReturn };
|
|
420
436
|
}
|
|
421
437
|
if (pageContextAbort._urlRedirect) {
|
|
422
|
-
const pageContextReturn = (
|
|
438
|
+
const pageContextReturn = forkPageContext(pageContextBegin);
|
|
423
439
|
(0, utils_js_1.objectAssign)(pageContextReturn, pageContextAbort);
|
|
424
|
-
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)(pageContextAbort._urlRedirect,
|
|
440
|
+
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)(pageContextAbort._urlRedirect, pageContextBegin);
|
|
425
441
|
(0, utils_js_1.objectAssign)(pageContextReturn, { httpResponse });
|
|
426
442
|
return { pageContextReturn };
|
|
427
443
|
}
|
|
428
444
|
(0, utils_js_1.assert)(pageContextAbort.abortStatusCode);
|
|
429
445
|
return { pageContextAbort };
|
|
430
446
|
}
|
|
431
|
-
async function checkBaseUrl(
|
|
447
|
+
async function checkBaseUrl(pageContextBegin, globalContext) {
|
|
448
|
+
const pageContext = forkPageContext(pageContextBegin);
|
|
432
449
|
const { baseServer } = globalContext;
|
|
433
|
-
const { urlOriginal } =
|
|
450
|
+
const { urlOriginal } = pageContext;
|
|
434
451
|
const { isBaseMissing } = (0, utils_js_1.parseUrl)(urlOriginal, baseServer);
|
|
435
452
|
if (!isBaseMissing)
|
|
436
453
|
return;
|
|
437
|
-
const pageContext = (0, renderPageAlreadyRouted_js_1.createPageContext)(pageContextInit, false);
|
|
438
454
|
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseBaseIsMissing)(urlOriginal, baseServer);
|
|
439
455
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
440
456
|
httpResponse,
|
|
@@ -443,20 +459,25 @@ async function checkBaseUrl(pageContextInit, globalContext) {
|
|
|
443
459
|
(0, utils_js_1.checkType)(pageContext);
|
|
444
460
|
return pageContext;
|
|
445
461
|
}
|
|
446
|
-
function
|
|
462
|
+
function getPageContextInvalidRequest(pageContextInit) {
|
|
447
463
|
const urlPathnameWithBase = (0, utils_js_1.parseUrl)(pageContextInit.urlOriginal, '/').pathname;
|
|
448
464
|
assertIsNotViteRequest(urlPathnameWithBase, pageContextInit.urlOriginal);
|
|
449
|
-
if (urlPathnameWithBase.endsWith('/favicon.ico'))
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
return null;
|
|
465
|
+
if (!urlPathnameWithBase.endsWith('/favicon.ico'))
|
|
466
|
+
return;
|
|
467
|
+
const pageContext = (0, createPageContextServerSide_js_1.createPageContextServerSideWithoutGlobalContext)(pageContextInit);
|
|
468
|
+
const httpResponse = (0, createHttpResponse_js_1.createHttpResponseFavicon404)();
|
|
469
|
+
(0, utils_js_1.objectAssign)(pageContext, { httpResponse });
|
|
470
|
+
(0, utils_js_1.checkType)(pageContext);
|
|
471
|
+
return pageContext;
|
|
457
472
|
}
|
|
458
|
-
function
|
|
473
|
+
function getPageContextInvalidVikeConfig(err, pageContextInit, httpRequestId) {
|
|
459
474
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(picocolors_1.default.bold(picocolors_1.default.red('Error while loading a Vike config file, see error above.')), httpRequestId, 'error');
|
|
460
|
-
const pageContextWithError =
|
|
475
|
+
const pageContextWithError = getPageContextHttpResponseErrorWithoutGlobalContext(err, pageContextInit);
|
|
461
476
|
return pageContextWithError;
|
|
462
477
|
}
|
|
478
|
+
// Create pageContext forks to avoid leaks: upon an error (bug or abort) a brand new pageContext object is created, in order to avoid previous pageContext modifications that are now obsolete to leak to the new pageContext object.
|
|
479
|
+
function forkPageContext(pageContextBegin) {
|
|
480
|
+
const pageContext = {};
|
|
481
|
+
(0, utils_js_1.objectAssign)(pageContext, pageContextBegin, true);
|
|
482
|
+
return pageContext;
|
|
483
|
+
}
|
|
@@ -3,7 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.default = universalVikeHandler;
|
|
4
4
|
const index_js_1 = require("./index.js");
|
|
5
5
|
async function universalVikeHandler(request, context, runtime) {
|
|
6
|
-
const pageContextInit = {
|
|
6
|
+
const pageContextInit = {
|
|
7
|
+
...context,
|
|
8
|
+
...runtime,
|
|
9
|
+
runtime,
|
|
10
|
+
urlOriginal: request.url,
|
|
11
|
+
headersOriginal: request.headers
|
|
12
|
+
};
|
|
7
13
|
const pageContext = await (0, index_js_1.renderPage)(pageContextInit);
|
|
8
14
|
const response = pageContext.httpResponse;
|
|
9
15
|
const readable = response.getReadableWebStream();
|
|
@@ -50,7 +50,7 @@ __exportStar(require("../../utils/debug.js"), exports);
|
|
|
50
50
|
__exportStar(require("../../utils/urlToFile.js"), exports);
|
|
51
51
|
__exportStar(require("../../utils/getGlobalObject.js"), exports);
|
|
52
52
|
__exportStar(require("../../utils/freezePartial.js"), exports);
|
|
53
|
-
__exportStar(require("../../utils/
|
|
53
|
+
__exportStar(require("../../utils/parseNpmPackage.js"), exports);
|
|
54
54
|
__exportStar(require("../../utils/isNullish.js"), exports);
|
|
55
55
|
__exportStar(require("../../utils/isScriptFile.js"), exports);
|
|
56
56
|
__exportStar(require("../../utils/removeFileExtention.js"), exports);
|
|
@@ -74,4 +74,5 @@ __exportStar(require("../../utils/isVikeReactApp.js"), exports);
|
|
|
74
74
|
__exportStar(require("../../utils/getPropAccessNotation.js"), exports);
|
|
75
75
|
__exportStar(require("../../utils/PROJECT_VERSION.js"), exports);
|
|
76
76
|
__exportStar(require("../../utils/genPromise.js"), exports);
|
|
77
|
-
__exportStar(require("../../utils/
|
|
77
|
+
__exportStar(require("../../utils/getPublicProxy.js"), exports);
|
|
78
|
+
__exportStar(require("../../utils/augmentType.js"), exports);
|
|
@@ -12,7 +12,7 @@ function assertPageContextProvidedByUser(pageContextProvidedByUser, { hookName,
|
|
|
12
12
|
(0, utils_js_1.assert)(!hookName.endsWith(')'));
|
|
13
13
|
const errPrefix = `The ${picocolors_1.default.cyan('pageContext')} object provided by the ${hookName}() hook defined by ${hookFilePath}`;
|
|
14
14
|
(0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(pageContextProvidedByUser), `${errPrefix} should be an object (but it's ${picocolors_1.default.cyan(`typeof pageContext === ${JSON.stringify(typeof pageContextProvidedByUser)}`)} instead)`);
|
|
15
|
-
(0, utils_js_1.assertUsage)(!('
|
|
15
|
+
(0, utils_js_1.assertUsage)(!('isPageContext' in pageContextProvidedByUser), `${errPrefix} shouldn't be the whole ${picocolors_1.default.cyan('pageContext')} object, see https://vike.dev/pageContext-manipulation#do-not-return-entire-pagecontext`);
|
|
16
16
|
// In principle, it's possible to use onBeforeRoute()` to override and define the whole routing.
|
|
17
17
|
// Is that a good idea to allow users to do this? Beyond deep integration with Vue Router or React Router, is there a use case for this?
|
|
18
18
|
(0, utils_js_1.assertWarning)(!('pageId' in pageContextProvidedByUser), `${errPrefix} sets ${picocolors_1.default.cyan('pageContext.pageId')} which means that Vike's routing is overriden. This is an experimental feature: make sure to contact a vike maintainer before using this.`, { onlyOnce: true });
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getGlobalContextSyncErrMsg = void 0;
|
|
4
|
+
exports.createGlobalContextShared = createGlobalContextShared;
|
|
5
|
+
const getGlobalContextSyncErrMsg = "The global context isn't set yet, call getGlobalContextSync() later or use getGlobalContext() instead.";
|
|
6
|
+
exports.getGlobalContextSyncErrMsg = getGlobalContextSyncErrMsg;
|
|
7
|
+
const getPageConfigsRuntime_js_1 = require("./getPageConfigsRuntime.js");
|
|
8
|
+
const executeHookGeneric_js_1 = require("./hooks/executeHookGeneric.js");
|
|
9
|
+
const utils_js_1 = require("./utils.js");
|
|
10
|
+
async function createGlobalContextShared(virtualFileExports, globalObject, addGlobalContext) {
|
|
11
|
+
const globalContext = createGlobalContextBase(virtualFileExports);
|
|
12
|
+
const globalContextAddendum = await addGlobalContext?.(globalContext);
|
|
13
|
+
(0, utils_js_1.objectAssign)(globalContext, globalContextAddendum);
|
|
14
|
+
if (!globalObject.globalContext) {
|
|
15
|
+
globalObject.globalContext = globalContext;
|
|
16
|
+
// - We deliberately call onCreateGlobalContext() only at the beginning and only once per process.
|
|
17
|
+
// - TO-DO/eventually: HMR
|
|
18
|
+
// - Once Photon supports it: `server.hot.send({ type: 'full-server-reload' })`
|
|
19
|
+
// - Either use:
|
|
20
|
+
// - import.meta.hot
|
|
21
|
+
// - https://vite.dev/guide/api-hmr.html
|
|
22
|
+
// - Use a Vite transformer to inject import.meta.hot code into each user-land `+onCreateGlobalContext.js` file
|
|
23
|
+
// - Seems more idiomatic
|
|
24
|
+
// - globalContext._viteDevServer.hot.send()
|
|
25
|
+
// - Send 'full-server-reload' signal whenever a onCreateGlobalContext() function is modified => we need a globalObject to track all hooks and see if one of them is new/modified.
|
|
26
|
+
// - Seems less idiomatic
|
|
27
|
+
await (0, executeHookGeneric_js_1.executeHookGenericGlobalCumulative)('onCreateGlobalContext', globalContext._pageConfigGlobal, null, globalContext);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Singleton: ensure all `globalContext` user-land references are preserved & updated.
|
|
31
|
+
// We don't use objectReplace() in order to keep user-land properties.
|
|
32
|
+
(0, utils_js_1.objectAssign)(globalObject.globalContext, globalContext);
|
|
33
|
+
}
|
|
34
|
+
return globalObject.globalContext;
|
|
35
|
+
}
|
|
36
|
+
function createGlobalContextBase(virtualFileExports) {
|
|
37
|
+
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig, pageConfigsUserFriendly } = (0, getPageConfigsRuntime_js_1.getPageConfigsRuntime)(virtualFileExports);
|
|
38
|
+
const globalContext = {
|
|
39
|
+
/**
|
|
40
|
+
* Useful for distinguishing `globalContext` from other objects and narrowing down TypeScript unions.
|
|
41
|
+
*
|
|
42
|
+
* https://vike.dev/globalContext#typescript
|
|
43
|
+
*/
|
|
44
|
+
isGlobalContext: true,
|
|
45
|
+
_virtualFileExports: virtualFileExports,
|
|
46
|
+
_pageFilesAll: pageFilesAll,
|
|
47
|
+
_pageConfigs: pageConfigs,
|
|
48
|
+
_pageConfigGlobal: pageConfigGlobal,
|
|
49
|
+
_allPageIds: allPageIds,
|
|
50
|
+
config: globalConfig.config,
|
|
51
|
+
pages: pageConfigsUserFriendly
|
|
52
|
+
};
|
|
53
|
+
return globalContext;
|
|
54
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPageContextShared = createPageContextShared;
|
|
4
|
+
const executeHookGeneric_js_1 = require("./hooks/executeHookGeneric.js");
|
|
5
|
+
const getPageConfigUserFriendly_js_1 = require("./page-configs/getPageConfigUserFriendly.js");
|
|
6
|
+
const utils_js_1 = require("./utils.js");
|
|
7
|
+
async function createPageContextShared(pageContextCreated, pageConfigGlobal) {
|
|
8
|
+
const pageConfigGlobalUserFriendly = (0, getPageConfigUserFriendly_js_1.getPageConfigGlobalUserFriendly)({
|
|
9
|
+
pageConfigGlobalValues: pageConfigGlobal.configValues
|
|
10
|
+
});
|
|
11
|
+
(0, utils_js_1.objectAssign)(pageContextCreated, {
|
|
12
|
+
isPageContext: true,
|
|
13
|
+
...pageConfigGlobalUserFriendly
|
|
14
|
+
}, true);
|
|
15
|
+
await (0, executeHookGeneric_js_1.executeHookGenericGlobalCumulative)('onCreatePageContext', pageConfigGlobal, pageContextCreated, pageContextCreated);
|
|
16
|
+
return pageContextCreated;
|
|
17
|
+
}
|
|
@@ -25,7 +25,7 @@ function determineFileType(filePath) {
|
|
|
25
25
|
const isCSS = filePath.endsWith('.css');
|
|
26
26
|
if (isCSS) {
|
|
27
27
|
/* This assert() is skipped to reduce client-side bundle size
|
|
28
|
-
assert(
|
|
28
|
+
assert(isImportPathNpmPackage(filePath), filePath) // `.css` page files are only supported for npm packages
|
|
29
29
|
*/
|
|
30
30
|
return '.css';
|
|
31
31
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeHookGeneric = executeHookGeneric;
|
|
4
|
+
exports.executeHookGenericGlobalCumulative = executeHookGenericGlobalCumulative;
|
|
5
|
+
const executeHook_js_1 = require("./executeHook.js");
|
|
6
|
+
const getHook_js_1 = require("./getHook.js");
|
|
7
|
+
async function executeHookGeneric(hookName, pageContext) {
|
|
8
|
+
const hook = (0, getHook_js_1.getHookFromPageContext)(pageContext, hookName);
|
|
9
|
+
if (!hook)
|
|
10
|
+
return;
|
|
11
|
+
await (0, executeHook_js_1.executeHook)(() => hook.hookFn(pageContext), hook, pageContext);
|
|
12
|
+
}
|
|
13
|
+
async function executeHookGenericGlobalCumulative(hookName, pageConfigGlobal, pageContext, arg) {
|
|
14
|
+
const hooks = (0, getHook_js_1.getHookFromPageConfigGlobalCumulative)(pageConfigGlobal, hookName);
|
|
15
|
+
await Promise.all(hooks.map(async (hook) => {
|
|
16
|
+
await (0, executeHook_js_1.executeHook)(() => hook.hookFn(arg), hook, pageContext);
|
|
17
|
+
}));
|
|
18
|
+
}
|