vike 0.4.171 → 0.4.172-commit-c1b0884
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/node/plugin/index.js +3 -0
- package/dist/cjs/node/plugin/plugins/buildConfig.js +3 -4
- package/dist/cjs/node/plugin/plugins/config/index.js +9 -5
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -15
- package/dist/cjs/node/plugin/plugins/devConfig/index.js +2 -1
- package/dist/cjs/node/plugin/plugins/envVars.js +2 -1
- package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/{generateEagerImport.js → addImportStatement.js} +8 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +0 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -3
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +19 -7
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +43 -85
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +5 -44
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +10 -51
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +6 -0
- package/dist/cjs/node/plugin/resolveClientEntriesDev.js +59 -0
- package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +17 -2
- package/dist/cjs/node/prerender/runPrerender.js +35 -15
- package/dist/cjs/node/prerender/utils.js +1 -0
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +3 -3
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScripts.js +2 -1
- package/dist/cjs/node/runtime/html/injectAssets/mergeScriptTags.js +2 -8
- package/dist/cjs/node/runtime/html/renderHtml.js +19 -20
- package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +1 -1
- package/dist/cjs/node/runtime/html/stream.js +9 -9
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +9 -7
- package/dist/cjs/node/runtime/renderPage/createHttpResponseObject/getCacheControl.js +1 -1
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -8
- package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +2 -2
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +9 -59
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
- package/dist/cjs/node/runtime/renderPage/logErrorHint.js +91 -282
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +30 -10
- package/dist/cjs/node/runtime/renderPage.js +24 -17
- package/dist/cjs/node/runtime/utils.js +2 -0
- package/dist/cjs/node/shared/assertV1Design.js +3 -4
- package/dist/cjs/shared/getPageContext.js +5 -0
- package/dist/cjs/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +52 -42
- package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +2 -2
- package/dist/cjs/shared/getPageFiles/getExports.js +49 -1
- package/dist/cjs/shared/getPageFiles/parseGlobResults.js +15 -8
- package/dist/cjs/shared/hooks/executeHook.js +22 -3
- package/dist/cjs/shared/hooks/getHook.js +2 -2
- package/dist/cjs/shared/page-configs/getConfigValue.js +14 -17
- package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +70 -0
- package/dist/cjs/shared/page-configs/loadConfigValues.js +3 -12
- package/dist/cjs/shared/page-configs/serialize/assertPageConfigsSerialized.js +0 -18
- package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +110 -16
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +198 -0
- package/dist/cjs/shared/route/executeGuardHook.js +1 -1
- package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +1 -1
- package/dist/cjs/shared/route/index.js +2 -2
- package/dist/cjs/shared/route/loadPageRoutes.js +2 -2
- package/dist/cjs/shared/route/resolveRouteFunction.js +2 -2
- package/dist/cjs/shared/sortPageContext.js +4 -8
- package/dist/cjs/shared/utils.js +2 -0
- package/dist/cjs/utils/assert.js +3 -3
- package/dist/cjs/utils/assertNodeVersion.js +1 -1
- package/dist/cjs/utils/changeEnumerable.js +9 -0
- package/dist/cjs/utils/escapeHtml.js +14 -0
- package/dist/cjs/utils/getPropAccessNotation.js +1 -4
- package/dist/cjs/utils/hasProp.js +5 -7
- package/dist/cjs/utils/normalizeHeaders.js +13 -0
- package/dist/cjs/utils/objectAssign.js +1 -1
- package/dist/cjs/utils/objectDefineProperty.js +8 -0
- package/dist/cjs/utils/objectKeys.js +8 -4
- package/dist/cjs/utils/projectInfo.js +1 -1
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +6 -4
- package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -3
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +16 -12
- package/dist/esm/client/client-routing-runtime/installClientRouter.js +18 -10
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +3 -3
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +4 -4
- package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/server-routing-runtime/utils.js +1 -0
- package/dist/esm/client/shared/executeOnRenderClientHook.js +1 -1
- package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +3 -2
- package/dist/esm/client/shared/getPageContextProxyForUser.js +35 -48
- package/dist/esm/client/shared/loadUserFilesClientSide.js +4 -4
- package/dist/esm/node/plugin/index.js +3 -0
- package/dist/esm/node/plugin/plugins/buildConfig.js +3 -4
- package/dist/esm/node/plugin/plugins/config/index.js +9 -5
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -15
- package/dist/esm/node/plugin/plugins/devConfig/index.js +2 -1
- package/dist/esm/node/plugin/plugins/envVars.js +2 -1
- package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.d.ts +14 -0
- package/dist/esm/node/plugin/plugins/importUserCode/{generateEagerImport.js → addImportStatement.js} +7 -9
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +0 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +2 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +20 -8
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +4 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +43 -85
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +5 -44
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +10 -51
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.d.ts +1 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +6 -0
- package/dist/esm/node/plugin/resolveClientEntriesDev.d.ts +4 -0
- package/dist/esm/node/plugin/resolveClientEntriesDev.js +56 -0
- package/dist/esm/node/plugin/shared/addSsrMiddleware.js +14 -2
- package/dist/esm/node/prerender/runPrerender.js +37 -17
- package/dist/esm/node/prerender/utils.d.ts +1 -0
- package/dist/esm/node/prerender/utils.js +1 -0
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +3 -3
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScripts.js +3 -2
- package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.d.ts +1 -1
- package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.js +2 -8
- package/dist/esm/node/runtime/html/renderHtml.js +19 -20
- package/dist/esm/node/runtime/html/serializePageContextClientSide.js +1 -1
- package/dist/esm/node/runtime/html/stream.d.ts +1 -1
- package/dist/esm/node/runtime/html/stream.js +9 -9
- package/dist/esm/node/runtime/renderPage/analyzePage.js +9 -7
- package/dist/esm/node/runtime/renderPage/createHttpResponseObject/getCacheControl.js +2 -2
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -8
- package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +3 -0
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +9 -59
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -6
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
- package/dist/esm/node/runtime/renderPage/logErrorHint.d.ts +2 -6
- package/dist/esm/node/runtime/renderPage/logErrorHint.js +92 -283
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +65 -39
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +31 -11
- package/dist/esm/node/runtime/renderPage.js +24 -17
- package/dist/esm/node/runtime/utils.d.ts +2 -0
- package/dist/esm/node/runtime/utils.js +2 -0
- package/dist/esm/node/shared/assertV1Design.d.ts +2 -2
- package/dist/esm/node/shared/assertV1Design.js +3 -4
- package/dist/esm/shared/ConfigVike.d.ts +7 -0
- package/dist/esm/shared/VikeNamespace.d.ts +9 -0
- package/dist/esm/shared/getPageContext.d.ts +1 -0
- package/dist/esm/shared/getPageContext.js +1 -0
- package/dist/esm/shared/{addUrlComputedProps.d.ts → getPageContextUrlComputed.d.ts} +23 -21
- package/dist/esm/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +52 -42
- package/dist/esm/shared/getPageFiles/analyzeClientSide.js +3 -3
- package/dist/esm/shared/getPageFiles/getExports.d.ts +36 -0
- package/dist/esm/shared/getPageFiles/getExports.js +50 -2
- package/dist/esm/shared/getPageFiles/parseGlobResults.js +14 -7
- package/dist/esm/shared/hooks/executeHook.d.ts +10 -1
- package/dist/esm/shared/hooks/executeHook.js +21 -2
- package/dist/esm/shared/hooks/getHook.d.ts +2 -2
- package/dist/esm/shared/hooks/getHook.js +3 -3
- package/dist/esm/shared/page-configs/Config/PageContextConfig.d.ts +2 -2
- package/dist/esm/shared/page-configs/PageConfig.d.ts +14 -8
- package/dist/esm/shared/page-configs/getConfigValue.d.ts +12 -12
- package/dist/esm/shared/page-configs/getConfigValue.js +13 -16
- package/dist/esm/shared/page-configs/getConfigValueBuildTime.d.ts +9 -0
- package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +67 -0
- package/dist/esm/shared/page-configs/loadConfigValues.js +3 -12
- package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +17 -21
- package/dist/esm/shared/page-configs/serialize/assertPageConfigsSerialized.d.ts +1 -5
- package/dist/esm/shared/page-configs/serialize/assertPageConfigsSerialized.js +1 -16
- package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +4 -1
- package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +109 -15
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +5 -0
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +192 -0
- package/dist/esm/shared/route/executeGuardHook.js +1 -1
- package/dist/esm/shared/route/executeOnBeforeRouteHook.js +1 -1
- package/dist/esm/shared/route/index.d.ts +3 -3
- package/dist/esm/shared/route/index.js +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +3 -3
- package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
- package/dist/esm/shared/route/resolveRouteFunction.js +2 -2
- package/dist/esm/shared/sortPageContext.js +4 -8
- package/dist/esm/shared/types.d.ts +32 -6
- package/dist/esm/shared/utils.d.ts +2 -0
- package/dist/esm/shared/utils.js +2 -0
- package/dist/esm/types/index.d.ts +1 -1
- package/dist/esm/utils/assert.js +3 -3
- package/dist/esm/utils/assertNodeVersion.js +1 -1
- package/dist/esm/utils/changeEnumerable.d.ts +2 -0
- package/dist/esm/utils/changeEnumerable.js +5 -0
- package/dist/esm/utils/escapeHtml.d.ts +1 -0
- package/dist/esm/utils/escapeHtml.js +10 -0
- package/dist/esm/utils/getPropAccessNotation.d.ts +1 -2
- package/dist/esm/utils/getPropAccessNotation.js +2 -6
- package/dist/esm/utils/hasProp.d.ts +4 -13
- package/dist/esm/utils/hasProp.js +5 -7
- package/dist/esm/utils/normalizeHeaders.d.ts +1 -0
- package/dist/esm/utils/normalizeHeaders.js +9 -0
- package/dist/esm/utils/objectAssign.js +1 -1
- package/dist/esm/utils/objectDefineProperty.d.ts +4 -0
- package/dist/esm/utils/objectDefineProperty.js +4 -0
- package/dist/esm/utils/objectKeys.d.ts +1 -3
- package/dist/esm/utils/objectKeys.js +8 -4
- package/dist/esm/utils/projectInfo.d.ts +2 -2
- package/dist/esm/utils/projectInfo.js +1 -1
- package/package.json +23 -14
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +0 -76
- package/dist/cjs/node/plugin/shared/getConfigValueSourcesNotOverriden.js +0 -14
- package/dist/cjs/node/shared/getClientEntry.js +0 -12
- package/dist/cjs/shared/page-configs/serialize/parseConfigValuesImported.js +0 -85
- package/dist/cjs/shared/page-configs/serialize/parseConfigValuesSerialized.js +0 -24
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValue.js +0 -50
- package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.d.ts +0 -16
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.d.ts +0 -5
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +0 -70
- package/dist/esm/node/plugin/shared/getConfigValueSourcesNotOverriden.d.ts +0 -5
- package/dist/esm/node/plugin/shared/getConfigValueSourcesNotOverriden.js +0 -11
- package/dist/esm/node/shared/getClientEntry.d.ts +0 -3
- package/dist/esm/node/shared/getClientEntry.js +0 -9
- package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.d.ts +0 -4
- package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +0 -82
- package/dist/esm/shared/page-configs/serialize/parseConfigValuesSerialized.d.ts +0 -4
- package/dist/esm/shared/page-configs/serialize/parseConfigValuesSerialized.js +0 -21
- package/dist/esm/shared/page-configs/serialize/serializeConfigValue.d.ts +0 -8
- package/dist/esm/shared/page-configs/serialize/serializeConfigValue.js +0 -47
|
@@ -9,7 +9,7 @@ const renderHtml_js_1 = require("../html/renderHtml.js");
|
|
|
9
9
|
const getPageFiles_js_1 = require("../../../shared/getPageFiles.js");
|
|
10
10
|
const utils_js_1 = require("../utils.js");
|
|
11
11
|
const serializePageContextClientSide_js_1 = require("../html/serializePageContextClientSide.js");
|
|
12
|
-
const
|
|
12
|
+
const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
|
|
13
13
|
const globalContext_js_1 = require("../globalContext.js");
|
|
14
14
|
const createHttpResponseObject_js_1 = require("./createHttpResponseObject.js");
|
|
15
15
|
const loadUserFilesServerSide_js_1 = require("./loadUserFilesServerSide.js");
|
|
@@ -22,7 +22,6 @@ const executeGuardHook_js_1 = require("../../../shared/route/executeGuardHook.js
|
|
|
22
22
|
const loadPageRoutes_js_1 = require("../../../shared/route/loadPageRoutes.js");
|
|
23
23
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
24
24
|
const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
|
|
25
|
-
const assertV1Design_js_1 = require("../../shared/assertV1Design.js");
|
|
26
25
|
async function renderPageAlreadyRouted(pageContext) {
|
|
27
26
|
// pageContext._pageId can either be the:
|
|
28
27
|
// - ID of the page matching the routing, or the
|
|
@@ -109,9 +108,9 @@ async function prerender404Page(renderContext, pageContextInit_) {
|
|
|
109
108
|
_debugRouteMatches: []
|
|
110
109
|
};
|
|
111
110
|
const pageContextInit = {
|
|
112
|
-
urlOriginal: '/fake-404-url'
|
|
113
|
-
...pageContextInit_
|
|
111
|
+
urlOriginal: '/fake-404-url' // A URL is needed for `applyViteHtmlTransform`
|
|
114
112
|
};
|
|
113
|
+
(0, utils_js_1.objectAssign)(pageContextInit, pageContextInit_);
|
|
115
114
|
{
|
|
116
115
|
const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, renderContext);
|
|
117
116
|
(0, utils_js_1.objectAssign)(pageContext, pageContextInitEnhanced);
|
|
@@ -120,15 +119,16 @@ async function prerender404Page(renderContext, pageContextInit_) {
|
|
|
120
119
|
return prerenderPage(pageContext);
|
|
121
120
|
}
|
|
122
121
|
exports.prerender404Page = prerender404Page;
|
|
123
|
-
function getPageContextInitEnhanced(pageContextInit, renderContext, {
|
|
122
|
+
function getPageContextInitEnhanced(pageContextInit, renderContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
|
|
124
123
|
urlRewrite: null,
|
|
125
124
|
urlHandler: null,
|
|
126
125
|
isClientSideNavigation: false
|
|
127
126
|
} } = {}) {
|
|
128
127
|
(0, utils_js_1.assert)(pageContextInit.urlOriginal);
|
|
129
128
|
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
130
|
-
const pageContextInitEnhanced = {
|
|
131
|
-
|
|
129
|
+
const pageContextInitEnhanced = {};
|
|
130
|
+
(0, utils_js_1.objectAssign)(pageContextInitEnhanced, pageContextInit);
|
|
131
|
+
(0, utils_js_1.objectAssign)(pageContextInitEnhanced, {
|
|
132
132
|
_objectCreatedByVike: true,
|
|
133
133
|
// The following is defined on `pageContext` because we can eventually make these non-global (e.g. sot that two pages can have different includeAssetsImportedByServer settings)
|
|
134
134
|
_baseServer: globalContext.baseServer,
|
|
@@ -145,8 +145,27 @@ function getPageContextInitEnhanced(pageContextInit, renderContext, { urlCompute
|
|
|
145
145
|
_urlRewrite: urlRewrite,
|
|
146
146
|
_urlHandler: urlHandler,
|
|
147
147
|
isClientSideNavigation
|
|
148
|
-
};
|
|
149
|
-
|
|
148
|
+
});
|
|
149
|
+
// pageContext.urlParsed
|
|
150
|
+
const pageContextUrlComputed = (0, getPageContextUrlComputed_js_1.getPageContextUrlComputed)(pageContextInitEnhanced);
|
|
151
|
+
(0, utils_js_1.objectAssign)(pageContextInitEnhanced, pageContextUrlComputed);
|
|
152
|
+
// pageContext.headers
|
|
153
|
+
{
|
|
154
|
+
let headers;
|
|
155
|
+
if (pageContextInit.headersOriginal) {
|
|
156
|
+
headers = (0, utils_js_1.normalizeHeaders)(pageContextInit.headersOriginal);
|
|
157
|
+
(0, utils_js_1.assertUsage)(!('headers' in pageContextInit), "You're defining pageContextInit.headersOriginal as well as pageContextInit.headers but you should only define pageContextInit.headersOriginal instead, see https://vike.dev/headers");
|
|
158
|
+
}
|
|
159
|
+
else if (pageContextInit.headers) {
|
|
160
|
+
headers = pageContextInit.headers;
|
|
161
|
+
// TODO/next-major-release: assertUsage() instead of assertWarning()
|
|
162
|
+
(0, utils_js_1.assertWarning)(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
headers = null;
|
|
166
|
+
}
|
|
167
|
+
(0, utils_js_1.objectAssign)(pageContextInitEnhanced, { headers });
|
|
168
|
+
}
|
|
150
169
|
return pageContextInitEnhanced;
|
|
151
170
|
}
|
|
152
171
|
exports.getPageContextInitEnhanced = getPageContextInitEnhanced;
|
|
@@ -156,7 +175,8 @@ async function getRenderContext() {
|
|
|
156
175
|
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
157
176
|
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal } = await (0, getPageFiles_js_1.getPageFilesAll)(false, globalContext.isProduction);
|
|
158
177
|
const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
|
|
159
|
-
|
|
178
|
+
// We assume assertV1Design() was already called at build-time
|
|
179
|
+
(0, utils_js_1.assert)(pageFilesAll.length === 0 || pageConfigs.length === 0);
|
|
160
180
|
const renderContext = {
|
|
161
181
|
pageFilesAll: pageFilesAll,
|
|
162
182
|
pageConfigs,
|
|
@@ -205,7 +205,7 @@ function logHttpRequest(urlOriginal, httpRequestId) {
|
|
|
205
205
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(getRequestInfoMessage(urlOriginal), httpRequestId, 'info', clearErrors);
|
|
206
206
|
}
|
|
207
207
|
function getRequestInfoMessage(urlOriginal) {
|
|
208
|
-
return `HTTP request: ${
|
|
208
|
+
return `HTTP request: ${prettyUrl(urlOriginal)}`;
|
|
209
209
|
}
|
|
210
210
|
function logHttpResponse(urlOriginal, httpRequestId, pageContextReturn) {
|
|
211
211
|
const statusCode = pageContextReturn.httpResponse?.statusCode ?? null;
|
|
@@ -221,7 +221,7 @@ function logHttpResponse(urlOriginal, httpRequestId, pageContextReturn) {
|
|
|
221
221
|
// - We should show `HTTP response ${urlOriginal} ERR` instead.
|
|
222
222
|
// - Maybe we can/should make the error available at pageContext.errorWhileRendering
|
|
223
223
|
(0, utils_js_1.assert)(errorWhileRendering === null || errorWhileRendering === undefined);
|
|
224
|
-
msg = `HTTP response ${
|
|
224
|
+
msg = `HTTP response ${prettyUrl(urlOriginal)} ${picocolors_1.default.dim('null')}`;
|
|
225
225
|
// Erroneous value (it shoud sometimes be `false`) but it's fine as it doesn't seem to have much of an impact.
|
|
226
226
|
isNominal = true;
|
|
227
227
|
}
|
|
@@ -241,7 +241,7 @@ function logHttpResponse(urlOriginal, httpRequestId, pageContextReturn) {
|
|
|
241
241
|
const urlRedirect = headerRedirect[1];
|
|
242
242
|
urlOriginal = urlRedirect;
|
|
243
243
|
}
|
|
244
|
-
msg = `HTTP ${type} ${
|
|
244
|
+
msg = `HTTP ${type} ${prettyUrl(urlOriginal)} ${color(statusCode ?? 'ERR')}`;
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(msg, httpRequestId, isNominal ? 'info' : 'error');
|
|
@@ -289,12 +289,13 @@ async function renderPageNominal(pageContext) {
|
|
|
289
289
|
async function getPageContextErrorPageInit(pageContextInit, errNominalPage, pageContextNominalPagePartial, renderContext, httpRequestId) {
|
|
290
290
|
const pageContextInitEnhanced = getPageContextInitEnhancedSSR(pageContextInit, renderContext, null, httpRequestId);
|
|
291
291
|
(0, utils_js_1.assert)(errNominalPage);
|
|
292
|
-
const pageContext = {
|
|
293
|
-
|
|
292
|
+
const pageContext = {};
|
|
293
|
+
(0, utils_js_1.objectAssign)(pageContext, pageContextInitEnhanced);
|
|
294
|
+
(0, utils_js_1.objectAssign)(pageContext, {
|
|
294
295
|
is404: false,
|
|
295
296
|
errorWhileRendering: errNominalPage,
|
|
296
297
|
routeParams: {}
|
|
297
|
-
};
|
|
298
|
+
});
|
|
298
299
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
299
300
|
_debugRouteMatches: pageContextNominalPagePartial._debugRouteMatches || 'ROUTING_ERROR'
|
|
300
301
|
});
|
|
@@ -346,7 +347,9 @@ function normalizeUrl(pageContextInit, httpRequestId) {
|
|
|
346
347
|
return null;
|
|
347
348
|
(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');
|
|
348
349
|
const httpResponse = (0, createHttpResponseObject_js_1.createHttpResponseObjectRedirect)({ url: urlNormalized, statusCode: 301 }, pageContextInit.urlOriginal);
|
|
349
|
-
const pageContextHttpResponse = {
|
|
350
|
+
const pageContextHttpResponse = {};
|
|
351
|
+
(0, utils_js_1.objectAssign)(pageContextHttpResponse, pageContextInit);
|
|
352
|
+
(0, utils_js_1.objectAssign)(pageContextHttpResponse, { httpResponse });
|
|
350
353
|
return pageContextHttpResponse;
|
|
351
354
|
}
|
|
352
355
|
function getPermanentRedirect(pageContextInit, httpRequestId) {
|
|
@@ -381,7 +384,9 @@ function getPermanentRedirect(pageContextInit, httpRequestId) {
|
|
|
381
384
|
}
|
|
382
385
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(`Permanent redirect defined by your config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
|
|
383
386
|
const httpResponse = (0, createHttpResponseObject_js_1.createHttpResponseObjectRedirect)({ url: urlTarget, statusCode: 301 }, urlWithoutBase);
|
|
384
|
-
const pageContextHttpResponse = {
|
|
387
|
+
const pageContextHttpResponse = {};
|
|
388
|
+
(0, utils_js_1.objectAssign)(pageContextHttpResponse, pageContextInit);
|
|
389
|
+
(0, utils_js_1.objectAssign)(pageContextHttpResponse, { httpResponse });
|
|
385
390
|
return pageContextHttpResponse;
|
|
386
391
|
}
|
|
387
392
|
async function handleAbortError(errAbort, pageContextsFromRewrite, pageContextInit,
|
|
@@ -397,11 +402,11 @@ pageContextNominalPageInit, httpRequestId, renderContext, pageContextErrorPageIn
|
|
|
397
402
|
(0, utils_js_1.assert)(abortCall);
|
|
398
403
|
(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`);
|
|
399
404
|
const pageContext = {
|
|
400
|
-
_pageId: errorPageId
|
|
401
|
-
...pageContextAbort,
|
|
402
|
-
...pageContextErrorPageInit,
|
|
403
|
-
...renderContext
|
|
405
|
+
_pageId: errorPageId
|
|
404
406
|
};
|
|
407
|
+
(0, utils_js_1.objectAssign)(pageContext, pageContextAbort);
|
|
408
|
+
(0, utils_js_1.objectAssign)(pageContext, pageContextErrorPageInit);
|
|
409
|
+
(0, utils_js_1.objectAssign)(pageContext, renderContext);
|
|
405
410
|
(0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
|
|
406
411
|
// We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
|
|
407
412
|
pageContextSerialized = (0, serializePageContextClientSide_js_1.serializePageContextClientSide)(pageContext);
|
|
@@ -422,10 +427,9 @@ pageContextNominalPageInit, httpRequestId, renderContext, pageContextErrorPageIn
|
|
|
422
427
|
return { pageContextReturn };
|
|
423
428
|
}
|
|
424
429
|
if (pageContextAbort._urlRedirect) {
|
|
425
|
-
const pageContextReturn = {
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
};
|
|
430
|
+
const pageContextReturn = {};
|
|
431
|
+
(0, utils_js_1.objectAssign)(pageContextReturn, pageContextInit);
|
|
432
|
+
(0, utils_js_1.objectAssign)(pageContextReturn, pageContextAbort);
|
|
429
433
|
const httpResponse = (0, createHttpResponseObject_js_1.createHttpResponseObjectRedirect)(pageContextAbort._urlRedirect, (() => {
|
|
430
434
|
const { pathname, searchOriginal } = pageContextNominalPageInit.urlParsed;
|
|
431
435
|
const urlLogical = (0, utils_js_1.createUrlFromComponents)(null, pathname, searchOriginal,
|
|
@@ -445,9 +449,12 @@ function checkBaseUrl(pageContextInit, httpRequestId) {
|
|
|
445
449
|
const { urlWithoutPageContextRequestSuffix } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
|
|
446
450
|
const { hasBaseServer } = (0, utils_js_1.parseUrl)(urlWithoutPageContextRequestSuffix, baseServer);
|
|
447
451
|
if (!hasBaseServer) {
|
|
448
|
-
(0, loggerRuntime_js_1.logRuntimeInfo)?.(`${getRequestInfoMessage(urlOriginal)} skipped because URL ${
|
|
452
|
+
(0, loggerRuntime_js_1.logRuntimeInfo)?.(`${getRequestInfoMessage(urlOriginal)} skipped because URL ${prettyUrl(urlOriginal)} doesn't start with Base URL ${prettyUrl(baseServer)} (https://vike.dev/base-url)`, httpRequestId, 'info');
|
|
449
453
|
const pageContextHttpResponseNull = getPageContextHttpResponseNull(pageContextInit);
|
|
450
454
|
return pageContextHttpResponseNull;
|
|
451
455
|
}
|
|
452
456
|
return null;
|
|
453
457
|
}
|
|
458
|
+
function prettyUrl(url) {
|
|
459
|
+
return picocolors_1.default.bold(decodeURI(url));
|
|
460
|
+
}
|
|
@@ -68,3 +68,5 @@ __exportStar(require("../../utils/truncateString.js"), exports);
|
|
|
68
68
|
__exportStar(require("../../utils/formatHintLog.js"), exports);
|
|
69
69
|
__exportStar(require("../../utils/joinEnglish.js"), exports);
|
|
70
70
|
__exportStar(require("../../utils/isArrayOfStrings.js"), exports);
|
|
71
|
+
__exportStar(require("../../utils/escapeHtml.js"), exports);
|
|
72
|
+
__exportStar(require("../../utils/normalizeHeaders.js"), exports);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.assertV1Design = void 0;
|
|
4
|
-
const helpers_js_1 = require("../../shared/page-configs/helpers.js");
|
|
5
4
|
const utils_js_1 = require("./utils.js");
|
|
6
5
|
function assertV1Design(isOldDesign, pageConfigs, pageFilesAll) {
|
|
7
6
|
const isV1Design = pageConfigs.length > 0;
|
|
@@ -11,10 +10,10 @@ function assertV1Design(isOldDesign, pageConfigs, pageFilesAll) {
|
|
|
11
10
|
(0, utils_js_1.assert)(pageFilesAll.length > 0);
|
|
12
11
|
const indent = '- ';
|
|
13
12
|
const filesV1 = (0, utils_js_1.unique)(pageConfigs
|
|
14
|
-
.map((p) => Object.values(p.
|
|
15
|
-
.map((c) =>
|
|
13
|
+
.map((p) => Object.values(p.configValueSources).map((sources) => sources
|
|
14
|
+
.map((c) => c.definedAtFilePath.filePathAbsoluteUserRootDir)
|
|
16
15
|
.filter(utils_js_1.isNotNullish)
|
|
17
|
-
.map((filePathToShowToUser) => indent + filePathToShowToUser))
|
|
16
|
+
.map((filePathToShowToUser) => indent + filePathToShowToUser)))
|
|
18
17
|
.flat(2));
|
|
19
18
|
const filesOld = pageFilesAll.map((p) => indent + p.filePath);
|
|
20
19
|
lines.push(...['V1 design files:', ...filesV1, 'Old design files:', ...filesOld]);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPageContext = void 0;
|
|
4
|
+
var executeHook_js_1 = require("./hooks/executeHook.js");
|
|
5
|
+
Object.defineProperty(exports, "getPageContext", { enumerable: true, get: function () { return executeHook_js_1.getPageContext; } });
|
|
@@ -1,48 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// URLs props need to be computed props, because the user can modify the URL e.g. with onBeforeRoute() for i18n
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
3
|
+
exports.assertPageContextUrl = exports.getPageContextUrlComputed = void 0;
|
|
4
|
+
// =====================
|
|
5
|
+
// File determining the URL logic.
|
|
6
|
+
// URLs need to be computed, because the user can modify the URL e.g. with onBeforeRoute() for i18n.
|
|
7
|
+
// =====================
|
|
8
|
+
const objectDefineProperty_js_1 = require("../utils/objectDefineProperty.js");
|
|
5
9
|
const utils_js_1 = require("./utils.js");
|
|
6
|
-
function
|
|
7
|
-
(0, utils_js_1.assert)(pageContext.urlOriginal);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
```js
|
|
12
|
-
// Add property getters such as pageContext.urlPathname to pageContext
|
|
13
|
-
addUrlComputedProps(pageContext)
|
|
14
|
-
// ❌ Breaks the property getters of pageContext set by addUrlComputedProps() such as pageContext.urlPathname
|
|
15
|
-
Object.assign(pageContext2, pageContext)
|
|
16
|
-
// ❌ Also breaks the property getters
|
|
17
|
-
const pageContext3 = { ...pageContext }
|
|
18
|
-
// ✅ Preserves property getters of pageContext (see objectAssign() implementation)
|
|
19
|
-
objectAssign(pageContext2, pageContext)
|
|
20
|
-
```
|
|
21
|
-
*/
|
|
22
|
-
(0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'urlPathname'));
|
|
23
|
-
}
|
|
24
|
-
if ('urlParsed' in pageContext)
|
|
25
|
-
(0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'urlParsed'));
|
|
26
|
-
// TODO/v1-release: move pageContext.urlParsed to pageContext.url
|
|
27
|
-
if ('url' in pageContext)
|
|
28
|
-
(0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'url'));
|
|
29
|
-
Object.defineProperty(pageContext, 'urlPathname', {
|
|
10
|
+
function getPageContextUrlComputed(pageContext) {
|
|
11
|
+
(0, utils_js_1.assert)(typeof pageContext.urlOriginal === 'string');
|
|
12
|
+
assertPageContextUrlComputed(pageContext);
|
|
13
|
+
const pageContextUrlComputed = {};
|
|
14
|
+
(0, objectDefineProperty_js_1.objectDefineProperty)(pageContextUrlComputed, 'urlPathname', {
|
|
30
15
|
get: urlPathnameGetter,
|
|
31
|
-
enumerable,
|
|
16
|
+
enumerable: true,
|
|
32
17
|
configurable: true
|
|
33
18
|
});
|
|
34
|
-
|
|
19
|
+
(0, objectDefineProperty_js_1.objectDefineProperty)(pageContextUrlComputed, 'url', {
|
|
35
20
|
get: urlGetter,
|
|
36
21
|
enumerable: false,
|
|
37
22
|
configurable: true
|
|
38
23
|
});
|
|
39
|
-
|
|
24
|
+
(0, objectDefineProperty_js_1.objectDefineProperty)(pageContextUrlComputed, 'urlParsed', {
|
|
40
25
|
get: urlParsedGetter,
|
|
41
|
-
enumerable,
|
|
26
|
+
enumerable: true,
|
|
42
27
|
configurable: true
|
|
43
28
|
});
|
|
29
|
+
return pageContextUrlComputed;
|
|
44
30
|
}
|
|
45
|
-
exports.
|
|
31
|
+
exports.getPageContextUrlComputed = getPageContextUrlComputed;
|
|
46
32
|
function getUrlParsed(pageContext) {
|
|
47
33
|
// We need a url handler function because the onBeforeRoute() hook may set pageContext.urlLogical (typically for i18n)
|
|
48
34
|
let urlHandler = pageContext._urlHandler;
|
|
@@ -92,7 +78,7 @@ function urlParsedGetter() {
|
|
|
92
78
|
const { origin, pathname, pathnameOriginal, search, searchAll, searchOriginal, hash, hashOriginal } = urlParsedOriginal;
|
|
93
79
|
const hashIsAvailable = (0, utils_js_1.isBrowser)();
|
|
94
80
|
const warnHashNotAvailable = (prop) => {
|
|
95
|
-
(0, utils_js_1.assertWarning)(hashIsAvailable, `pageContext.urlParsed.${prop} isn't available on the server-side (HTTP requests don't include the URL hash
|
|
81
|
+
(0, utils_js_1.assertWarning)(hashIsAvailable, `pageContext.urlParsed.${prop} isn't available on the server-side (HTTP requests don't include the URL hash)`, { onlyOnce: true, showStackTrace: true });
|
|
96
82
|
};
|
|
97
83
|
const urlParsed = {
|
|
98
84
|
origin,
|
|
@@ -122,22 +108,46 @@ function urlParsedGetter() {
|
|
|
122
108
|
return searchOriginal;
|
|
123
109
|
}
|
|
124
110
|
};
|
|
125
|
-
|
|
126
|
-
|
|
111
|
+
(0, utils_js_1.changeEnumerable)(urlParsed, 'hashString', false);
|
|
112
|
+
(0, utils_js_1.changeEnumerable)(urlParsed, 'searchString', false);
|
|
127
113
|
if (!hashIsAvailable) {
|
|
128
|
-
|
|
129
|
-
|
|
114
|
+
(0, utils_js_1.changeEnumerable)(urlParsed, 'hash', false);
|
|
115
|
+
(0, utils_js_1.changeEnumerable)(urlParsed, 'hashOriginal', false);
|
|
130
116
|
}
|
|
131
117
|
return urlParsed;
|
|
132
118
|
}
|
|
133
|
-
function
|
|
134
|
-
const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
|
|
135
|
-
Object.defineProperty(obj, prop, { ...descriptor, enumerable: false });
|
|
136
|
-
}
|
|
137
|
-
function assertPageContextUrlComputedProps(pageContext) {
|
|
119
|
+
function assertPageContextUrl(pageContext) {
|
|
138
120
|
(0, utils_js_1.assert)(typeof pageContext.urlOriginal === 'string');
|
|
139
121
|
(0, utils_js_1.assert)(typeof pageContext.urlPathname === 'string');
|
|
140
122
|
(0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(pageContext.urlParsed));
|
|
141
123
|
(0, utils_js_1.assert)(pageContext.urlPathname === pageContext.urlParsed.pathname);
|
|
124
|
+
assertPageContextUrlComputed(pageContext);
|
|
125
|
+
}
|
|
126
|
+
exports.assertPageContextUrl = assertPageContextUrl;
|
|
127
|
+
function assertPageContextUrlComputed(pageContext) {
|
|
128
|
+
/*
|
|
129
|
+
If the isPropertyGetter() assertions fail then it's most likely because Object.assign() was used instead of `objectAssign()`:
|
|
130
|
+
```js
|
|
131
|
+
const PageContextUrlComputed = getPageContextUrlComputed(pageContext)
|
|
132
|
+
|
|
133
|
+
// ❌ Breaks the property descriptors/getters of pageContext defined by getPageContextUrlComputed() such as pageContext.urlPathname
|
|
134
|
+
Object.assign(pageContext, pageContextUrlComputed)
|
|
135
|
+
|
|
136
|
+
// ❌ Also breaks property descriptors/getters
|
|
137
|
+
const pageContext = { ...pageContextUrlComputed }
|
|
138
|
+
|
|
139
|
+
// ✅ Preserves property descriptors/getters (see objectAssign() implementation)
|
|
140
|
+
objectAssign(pageContext, pageContextUrlComputed)
|
|
141
|
+
```
|
|
142
|
+
*/
|
|
143
|
+
if ('urlPathname' in pageContext) {
|
|
144
|
+
(0, utils_js_1.assert)(typeof pageContext.urlPathname === 'string');
|
|
145
|
+
(0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'urlPathname'));
|
|
146
|
+
(0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'urlParsed'));
|
|
147
|
+
(0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'url'));
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
(0, utils_js_1.assert)(!('urlParsed' in pageContext));
|
|
151
|
+
(0, utils_js_1.assert)(!('url' in pageContext));
|
|
152
|
+
}
|
|
142
153
|
}
|
|
143
|
-
exports.assertPageContextUrlComputedProps = assertPageContextUrlComputedProps;
|
|
@@ -6,8 +6,8 @@ const analyzePageClientSide_js_1 = require("./analyzePageClientSide.js");
|
|
|
6
6
|
function analyzeClientSide(pageConfig, pageFilesAll, pageId) {
|
|
7
7
|
// V1 design
|
|
8
8
|
if (pageConfig) {
|
|
9
|
-
const isClientRouting = (0, getConfigValue_js_1.
|
|
10
|
-
const isClientSideRenderable = (0, getConfigValue_js_1.
|
|
9
|
+
const isClientRouting = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
|
|
10
|
+
const isClientSideRenderable = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'isClientSideRenderable', 'boolean')?.value ?? false;
|
|
11
11
|
return { isClientSideRenderable, isClientRouting };
|
|
12
12
|
}
|
|
13
13
|
else {
|
|
@@ -32,6 +32,18 @@ function getPageContextExports(pageFiles, pageConfig) {
|
|
|
32
32
|
});
|
|
33
33
|
});
|
|
34
34
|
// V1 design
|
|
35
|
+
const source = {};
|
|
36
|
+
const sources = {};
|
|
37
|
+
const addSrc = (src, configName) => {
|
|
38
|
+
source[configName] = src;
|
|
39
|
+
sources[configName] ?? (sources[configName] = []);
|
|
40
|
+
sources[configName].push(src);
|
|
41
|
+
};
|
|
42
|
+
const from = {
|
|
43
|
+
configsStandard: {},
|
|
44
|
+
configsCumulative: {},
|
|
45
|
+
configsComputed: {}
|
|
46
|
+
};
|
|
35
47
|
if (pageConfig) {
|
|
36
48
|
Object.entries(pageConfig.configValues).forEach(([configName, configValue]) => {
|
|
37
49
|
const { value } = configValue;
|
|
@@ -46,6 +58,39 @@ function getPageContextExports(pageFiles, pageConfig) {
|
|
|
46
58
|
configDefinedAt,
|
|
47
59
|
configDefinedByFile: configValueFilePathToShowToUser
|
|
48
60
|
});
|
|
61
|
+
if (configValue.type === 'standard') {
|
|
62
|
+
const src = {
|
|
63
|
+
type: 'configsStandard',
|
|
64
|
+
value: configValue.value,
|
|
65
|
+
definedAt: (0, getConfigDefinedAt_js_1.getDefinedAtString)(configValue.definedAtData, configName)
|
|
66
|
+
};
|
|
67
|
+
addSrc(src, configName);
|
|
68
|
+
from.configsStandard[configName] = src;
|
|
69
|
+
}
|
|
70
|
+
if (configValue.type === 'cumulative') {
|
|
71
|
+
const src = {
|
|
72
|
+
type: 'configsCumulative',
|
|
73
|
+
values: configValue.value.map((value, i) => {
|
|
74
|
+
const definedAtFile = configValue.definedAtData[i];
|
|
75
|
+
(0, utils_js_1.assert)(definedAtFile);
|
|
76
|
+
const definedAt = (0, getConfigDefinedAt_js_1.getDefinedAtString)(definedAtFile, configName);
|
|
77
|
+
return {
|
|
78
|
+
value,
|
|
79
|
+
definedAt
|
|
80
|
+
};
|
|
81
|
+
})
|
|
82
|
+
};
|
|
83
|
+
addSrc(src, configName);
|
|
84
|
+
from.configsCumulative[configName] = src;
|
|
85
|
+
}
|
|
86
|
+
if (configValue.type === 'computed') {
|
|
87
|
+
const src = {
|
|
88
|
+
type: 'configsComputed',
|
|
89
|
+
value: configValue.value
|
|
90
|
+
};
|
|
91
|
+
addSrc(src, configName);
|
|
92
|
+
from.configsComputed[configName] = src;
|
|
93
|
+
}
|
|
49
94
|
// TODO/v1-release: remove
|
|
50
95
|
const exportName = configName;
|
|
51
96
|
exportsAll[exportName] = exportsAll[exportName] ?? [];
|
|
@@ -75,9 +120,12 @@ function getPageContextExports(pageFiles, pageConfig) {
|
|
|
75
120
|
(0, utils_js_1.assert)(!('default' in exports));
|
|
76
121
|
(0, utils_js_1.assert)(!('default' in exportsAll));
|
|
77
122
|
const pageContextExports = {
|
|
123
|
+
from,
|
|
124
|
+
source,
|
|
125
|
+
sources,
|
|
126
|
+
// TODO/eventually: deprecate/remove every prop below
|
|
78
127
|
config,
|
|
79
128
|
configEntries,
|
|
80
|
-
// TODO/v1-release: remove
|
|
81
129
|
exports,
|
|
82
130
|
exportsAll,
|
|
83
131
|
pageExports
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseGlobResults = void 0;
|
|
4
|
+
// TODO/v1-release: remove old design code, and remove all assertions.
|
|
4
5
|
const utils_js_1 = require("../utils.js");
|
|
5
6
|
const assert_exports_old_design_js_1 = require("./assert_exports_old_design.js");
|
|
6
7
|
const getPageFileObject_js_1 = require("./getPageFileObject.js");
|
|
7
8
|
const fileTypes_js_1 = require("./fileTypes.js");
|
|
8
|
-
const assertPageConfigsSerialized_js_1 = require("../page-configs/serialize/assertPageConfigsSerialized.js");
|
|
9
9
|
const parsePageConfigs_js_1 = require("../page-configs/serialize/parsePageConfigs.js");
|
|
10
10
|
function parseGlobResults(pageFilesExports) {
|
|
11
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'isGeneratedFile'));
|
|
12
|
-
(0, utils_js_1.assert)(pageFilesExports.isGeneratedFile !== false, `vike was re-installed(/re-built). Restart your app.`);
|
|
13
|
-
(0, utils_js_1.assert)(pageFilesExports.isGeneratedFile === true, `\`isGeneratedFile === ${pageFilesExports.isGeneratedFile}\``);
|
|
14
11
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'pageFilesLazy', 'object'));
|
|
15
12
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'pageFilesEager', 'object'));
|
|
16
13
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'pageFilesExportNamesLazy', 'object'));
|
|
@@ -21,8 +18,8 @@ function parseGlobResults(pageFilesExports) {
|
|
|
21
18
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'pageConfigsSerialized'));
|
|
22
19
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'pageConfigGlobalSerialized'));
|
|
23
20
|
const { pageConfigsSerialized, pageConfigGlobalSerialized } = pageFilesExports;
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
assertPageConfigsSerialized(pageConfigsSerialized);
|
|
22
|
+
assertPageConfigGlobalSerialized(pageConfigGlobalSerialized);
|
|
26
23
|
const { pageConfigs, pageConfigGlobal } = (0, parsePageConfigs_js_1.parsePageConfigs)(pageConfigsSerialized, pageConfigGlobalSerialized);
|
|
27
24
|
const pageFilesMap = {};
|
|
28
25
|
parseGlobResult(pageFilesExports.pageFilesLazy).forEach(({ filePath, pageFile, globValue }) => {
|
|
@@ -43,8 +40,6 @@ function parseGlobResults(pageFilesExports) {
|
|
|
43
40
|
pageFile.loadExportNames = async () => {
|
|
44
41
|
if (!('exportNames' in pageFile)) {
|
|
45
42
|
const moduleExports = await loadModule();
|
|
46
|
-
// Vite 2 seems to choke following assertion: https://github.com/vikejs/vike/issues/455
|
|
47
|
-
(0, utils_js_1.assertUsage)('exportNames' in moduleExports, 'You seem to be using Vite 2 but the latest vike versions only work with Vite 3');
|
|
48
43
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(moduleExports, 'exportNames', 'string[]'), pageFile.filePath);
|
|
49
44
|
pageFile.exportNames = moduleExports.exportNames;
|
|
50
45
|
}
|
|
@@ -91,3 +86,15 @@ function parseGlobResult(globObject) {
|
|
|
91
86
|
function assertLoadModule(globValue) {
|
|
92
87
|
(0, utils_js_1.assert)((0, utils_js_1.isCallable)(globValue));
|
|
93
88
|
}
|
|
89
|
+
function assertPageConfigsSerialized(pageConfigsSerialized) {
|
|
90
|
+
(0, utils_js_1.assert)((0, utils_js_1.isArray)(pageConfigsSerialized));
|
|
91
|
+
pageConfigsSerialized.forEach((pageConfigSerialized) => {
|
|
92
|
+
(0, utils_js_1.assert)((0, utils_js_1.isObject)(pageConfigSerialized));
|
|
93
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'pageId', 'string'));
|
|
94
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'routeFilesystem'));
|
|
95
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'configValuesSerialized'));
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function assertPageConfigGlobalSerialized(pageConfigGlobalSerialized) {
|
|
99
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigGlobalSerialized, 'configValuesSerialized'));
|
|
100
|
+
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isUserHookError = exports.executeHook = void 0;
|
|
3
|
+
exports.isUserHookError = exports.getPageContext = exports.executeHook = void 0;
|
|
4
4
|
const assert_js_1 = require("../../utils/assert.js");
|
|
5
5
|
const getGlobalObject_js_1 = require("../../utils/getGlobalObject.js");
|
|
6
6
|
const humanizeTime_js_1 = require("../../utils/humanizeTime.js");
|
|
7
7
|
const isObject_js_1 = require("../../utils/isObject.js");
|
|
8
8
|
const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('utils/executeHook.ts', {
|
|
9
|
-
userHookErrors: new WeakMap()
|
|
9
|
+
userHookErrors: new WeakMap(),
|
|
10
|
+
pageContext: null
|
|
10
11
|
});
|
|
11
12
|
function isUserHookError(err) {
|
|
12
13
|
if (!(0, isObject_js_1.isObject)(err))
|
|
@@ -14,7 +15,7 @@ function isUserHookError(err) {
|
|
|
14
15
|
return globalObject.userHookErrors.get(err) ?? false;
|
|
15
16
|
}
|
|
16
17
|
exports.isUserHookError = isUserHookError;
|
|
17
|
-
function executeHook(hookFnCaller, hook) {
|
|
18
|
+
function executeHook(hookFnCaller, hook, pageContext) {
|
|
18
19
|
const { hookName, hookFilePath, hookTimeout: { error: timeoutErr, warning: timeoutWarn } } = hook;
|
|
19
20
|
let resolve;
|
|
20
21
|
let reject;
|
|
@@ -45,6 +46,7 @@ function executeHook(hookFnCaller, hook) {
|
|
|
45
46
|
}, timeoutErr);
|
|
46
47
|
(async () => {
|
|
47
48
|
try {
|
|
49
|
+
providePageContext(pageContext);
|
|
48
50
|
const ret = await hookFnCaller();
|
|
49
51
|
resolve(ret);
|
|
50
52
|
}
|
|
@@ -61,3 +63,20 @@ exports.executeHook = executeHook;
|
|
|
61
63
|
function isNotDisabled(timeout) {
|
|
62
64
|
return !!timeout && timeout !== Infinity;
|
|
63
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Access `pageContext` object inside Vike hooks, in order to create universal hooks.
|
|
68
|
+
*
|
|
69
|
+
* https://vike.dev/getPageContext
|
|
70
|
+
*/
|
|
71
|
+
function getPageContext() {
|
|
72
|
+
return globalObject.pageContext;
|
|
73
|
+
}
|
|
74
|
+
exports.getPageContext = getPageContext;
|
|
75
|
+
function providePageContext(pageContext) {
|
|
76
|
+
globalObject.pageContext = pageContext;
|
|
77
|
+
// Promise.resolve() is quicker than process.nextTick() and setImmediate()
|
|
78
|
+
// https://stackoverflow.com/questions/67949576/process-nexttick-before-promise-resolve-then
|
|
79
|
+
Promise.resolve().then(() => {
|
|
80
|
+
globalObject.pageContext = null;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
@@ -31,8 +31,8 @@ function getHook(pageContext, hookName) {
|
|
|
31
31
|
}
|
|
32
32
|
exports.getHook = getHook;
|
|
33
33
|
function getHookFromPageConfig(pageConfig, hookName) {
|
|
34
|
-
const configValue = (0, getConfigValue_js_1.
|
|
35
|
-
const hooksTimeout = (0, getConfigValue_js_1.
|
|
34
|
+
const configValue = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, hookName);
|
|
35
|
+
const hooksTimeout = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'hooksTimeout')?.value;
|
|
36
36
|
if (!configValue)
|
|
37
37
|
return null;
|
|
38
38
|
const hookFn = configValue.value;
|
|
@@ -3,22 +3,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.getConfigValueTyped = exports.getConfigValueRuntime = void 0;
|
|
7
7
|
const utils_js_1 = require("../utils.js");
|
|
8
8
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
9
9
|
const getConfigDefinedAt_js_1 = require("./getConfigDefinedAt.js");
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return null;
|
|
10
|
+
function getConfigValueTyped(configValue, configName, type) {
|
|
11
|
+
/* [NULL_HANDLING] Do we really need this? This doesn't seem to make sense, let's eventually (re)move this.
|
|
12
|
+
// Enable users to suppress global config values by setting the local config value to null
|
|
13
|
+
if (configValue.value === null) return null
|
|
14
|
+
*/
|
|
16
15
|
const { value, definedAtData } = configValue;
|
|
17
16
|
if (type)
|
|
18
17
|
assertConfigValueType(value, type, configName, definedAtData);
|
|
19
18
|
return configValue;
|
|
20
19
|
}
|
|
21
|
-
exports.
|
|
20
|
+
exports.getConfigValueTyped = getConfigValueTyped;
|
|
21
|
+
function getConfigValueRuntime(pageConfig, configName, type) {
|
|
22
|
+
const configValue = pageConfig.configValues[configName];
|
|
23
|
+
if (!configValue)
|
|
24
|
+
return null;
|
|
25
|
+
return getConfigValueTyped(configValue, configName, type);
|
|
26
|
+
}
|
|
27
|
+
exports.getConfigValueRuntime = getConfigValueRuntime;
|
|
22
28
|
function assertConfigValueType(value, type, configName, definedAtData) {
|
|
23
29
|
(0, utils_js_1.assert)(value !== null);
|
|
24
30
|
const typeActual = typeof value;
|
|
@@ -32,12 +38,3 @@ function assertConfigValueType(value, type, configName, definedAtData) {
|
|
|
32
38
|
const errMsg = `${configDefinedAt} has an invalid ${problem}: it should be a ${picocolors_1.default.cyan(type)} instead`;
|
|
33
39
|
(0, utils_js_1.assertUsage)(false, errMsg);
|
|
34
40
|
}
|
|
35
|
-
function getConfigValueEntry(pageConfig, configName) {
|
|
36
|
-
const configValue = pageConfig.configValues[configName];
|
|
37
|
-
if (!configValue)
|
|
38
|
-
return null;
|
|
39
|
-
// Enable users to suppress global config values by setting the local config value to null
|
|
40
|
-
if (configValue.value === null)
|
|
41
|
-
return null;
|
|
42
|
-
return configValue;
|
|
43
|
-
}
|