vike 0.4.171-commit-75e1588 → 0.4.171-commit-6e37128
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/plugins/buildConfig.js +3 -4
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -15
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -3
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +30 -74
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +4 -42
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +9 -49
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +6 -0
- package/dist/cjs/node/prerender/runPrerender.js +33 -13
- package/dist/cjs/node/prerender/utils.js +1 -0
- 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/executeOnRenderHtmlHook.js +7 -7
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +6 -5
- package/dist/cjs/node/shared/assertV1Design.js +3 -4
- package/dist/cjs/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +52 -42
- package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +2 -2
- 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 +1 -2
- 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/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/utils.js +2 -0
- package/dist/cjs/utils/changeEnumerable.js +9 -0
- package/dist/cjs/utils/hasProp.js +5 -7
- package/dist/cjs/utils/objectAssign.js +1 -1
- package/dist/cjs/utils/objectDefineProperty.js +8 -0
- 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 +14 -10
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +4 -4
- package/dist/esm/client/shared/loadUserFilesClientSide.js +4 -4
- package/dist/esm/node/plugin/plugins/buildConfig.js +3 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -15
- 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.js +30 -74
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +4 -42
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +9 -49
- 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/prerender/runPrerender.js +35 -15
- package/dist/esm/node/prerender/utils.d.ts +1 -0
- package/dist/esm/node/prerender/utils.js +1 -0
- 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/executeOnRenderHtmlHook.js +7 -7
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -9
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
- 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 +27 -50
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +6 -5
- package/dist/esm/node/shared/assertV1Design.d.ts +2 -2
- package/dist/esm/node/shared/assertV1Design.js +3 -4
- 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/hooks/getHook.d.ts +2 -2
- package/dist/esm/shared/hooks/getHook.js +3 -3
- package/dist/esm/shared/page-configs/PageConfig.d.ts +10 -4
- 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 +15 -19
- package/dist/esm/shared/page-configs/serialize/assertPageConfigsSerialized.js +1 -2
- 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/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/types.d.ts +4 -4
- 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/changeEnumerable.d.ts +2 -0
- package/dist/esm/utils/changeEnumerable.js +5 -0
- package/dist/esm/utils/hasProp.d.ts +4 -13
- package/dist/esm/utils/hasProp.js +5 -7
- 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/projectInfo.d.ts +2 -2
- package/dist/esm/utils/projectInfo.js +1 -1
- package/package.json +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +0 -101
- 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 -49
- 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 -95
- 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 -6
- package/dist/esm/shared/page-configs/serialize/serializeConfigValue.js +0 -46
|
@@ -6,12 +6,16 @@ const analyzePageClientSide_js_1 = require("../../../shared/getPageFiles/analyze
|
|
|
6
6
|
const virtualFilePageConfigValuesAll_js_1 = require("../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
|
|
7
7
|
const analyzeClientSide_js_1 = require("../../../shared/getPageFiles/analyzeClientSide.js");
|
|
8
8
|
const globalContext_js_1 = require("../globalContext.js");
|
|
9
|
-
const
|
|
9
|
+
const getConfigValue_js_1 = require("../../../shared/page-configs/getConfigValue.js");
|
|
10
10
|
function analyzePage(pageFilesAll, pageConfig, pageId) {
|
|
11
11
|
if (pageConfig) {
|
|
12
12
|
const { isClientSideRenderable, isClientRouting } = (0, analyzeClientSide_js_1.analyzeClientSide)(pageConfig, pageFilesAll, pageId);
|
|
13
|
-
const
|
|
14
|
-
const
|
|
13
|
+
const clientEntries = [];
|
|
14
|
+
const clientFilePath = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'client', 'string')?.value ?? null;
|
|
15
|
+
if (clientFilePath)
|
|
16
|
+
clientEntries.push(clientFilePath);
|
|
17
|
+
if (isClientSideRenderable)
|
|
18
|
+
clientEntries.push((0, determineClientEntry_js_1.getVikeClientEntry)(isClientRouting));
|
|
15
19
|
const clientDependencies = [];
|
|
16
20
|
clientDependencies.push({
|
|
17
21
|
id: (0, virtualFilePageConfigValuesAll_js_1.getVirtualFileIdPageConfigValuesAll)(pageConfig.pageId, true),
|
|
@@ -43,15 +47,13 @@ function analyzePage(pageFilesAll, pageConfig, pageId) {
|
|
|
43
47
|
}
|
|
44
48
|
})
|
|
45
49
|
*/
|
|
46
|
-
|
|
47
|
-
if (clientEntry) {
|
|
50
|
+
clientEntries.forEach((clientEntry) => {
|
|
48
51
|
clientDependencies.push({
|
|
49
52
|
id: clientEntry,
|
|
50
53
|
onlyAssets: false,
|
|
51
54
|
eagerlyImported: false
|
|
52
55
|
});
|
|
53
|
-
|
|
54
|
-
}
|
|
56
|
+
});
|
|
55
57
|
return {
|
|
56
58
|
isHtmlOnly: !isClientSideRenderable,
|
|
57
59
|
isClientRouting,
|
|
@@ -9,7 +9,7 @@ function getCacheControl(pageId, pageConfigs) {
|
|
|
9
9
|
if (pageConfigs.length === 0)
|
|
10
10
|
return defaultValue;
|
|
11
11
|
const pageConfig = (0, helpers_js_1.getPageConfig)(pageId, pageConfigs);
|
|
12
|
-
const configValue = (0, getConfigValue_js_1.
|
|
12
|
+
const configValue = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'cacheControl', 'string');
|
|
13
13
|
const value = configValue?.value;
|
|
14
14
|
if (value)
|
|
15
15
|
return value;
|
|
@@ -69,13 +69,13 @@ function getRenderHook(pageContext) {
|
|
|
69
69
|
(0, utils_js_1.assertUsage)(false, [
|
|
70
70
|
`No ${hookName}() hook found, see https://vike.dev/${hookName}`
|
|
71
71
|
/*
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
'See https://vike.dev/render-modes for more information.',
|
|
73
|
+
[
|
|
74
|
+
// 'Loaded config files (none of them define the onRenderHtml() hook):',
|
|
75
|
+
'Loaded server-side page files (none of them `export { render }`):',
|
|
76
|
+
...pageContext._pageFilePathsLoaded.map((f, i) => ` (${i + 1}): ${f}`)
|
|
77
|
+
].join('\n')
|
|
78
|
+
*/
|
|
79
79
|
].join(' '));
|
|
80
80
|
}
|
|
81
81
|
return hookFound;
|
|
@@ -12,7 +12,7 @@ const globalContext_js_1 = require("../globalContext.js");
|
|
|
12
12
|
const loadConfigValues_js_1 = require("../../../shared/page-configs/loadConfigValues.js");
|
|
13
13
|
async function loadUserFilesServerSide(pageContext) {
|
|
14
14
|
const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._pageConfigs, pageContext._pageId); // Make pageConfig globally available as pageContext._pageConfig?
|
|
15
|
-
const [{ pageFilesLoaded,
|
|
15
|
+
const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
|
|
16
16
|
loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext._pageId, !(0, globalContext_js_1.getGlobalContext)().isProduction),
|
|
17
17
|
(0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._pageFilesAll, pageContext._pageId, { sharedPageFilesAlreadyLoaded: true })
|
|
18
18
|
]);
|
|
@@ -37,8 +37,8 @@ async function loadUserFilesServerSide(pageContext) {
|
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
const pageContextAddendum = {};
|
|
40
|
+
(0, utils_js_1.objectAssign)(pageContextAddendum, pageContextExports);
|
|
40
41
|
(0, utils_js_1.objectAssign)(pageContextAddendum, {
|
|
41
|
-
...pageContextExports,
|
|
42
42
|
Page: pageContextExports.exports.Page,
|
|
43
43
|
_isHtmlOnly: isHtmlOnly,
|
|
44
44
|
_passToClient: passToClient,
|
|
@@ -104,8 +104,7 @@ async function loadPageUserFiles(pageFilesAll, pageConfig, pageId, isDev) {
|
|
|
104
104
|
await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
|
|
105
105
|
const pageContextExports = (0, getPageFiles_js_1.getPageContextExports)(pageFilesServerSide, pageConfigLoaded);
|
|
106
106
|
return {
|
|
107
|
-
|
|
108
|
-
pageFilesLoaded: pageFilesServerSide
|
|
109
|
-
pageConfigLoaded
|
|
107
|
+
pageContextExports,
|
|
108
|
+
pageFilesLoaded: pageFilesServerSide
|
|
110
109
|
};
|
|
111
110
|
}
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.preparePageContextForUserConsumptionServerSide = void 0;
|
|
4
4
|
const utils_js_1 = require("../utils.js");
|
|
5
5
|
const sortPageContext_js_1 = require("../../../shared/sortPageContext.js");
|
|
6
|
-
const
|
|
6
|
+
const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
|
|
7
7
|
const addIs404ToPageProps_js_1 = require("../../../shared/addIs404ToPageProps.js");
|
|
8
8
|
function preparePageContextForUserConsumptionServerSide(pageContext) {
|
|
9
|
-
(0,
|
|
9
|
+
(0, getPageContextUrlComputed_js_1.assertPageContextUrl)(pageContext);
|
|
10
10
|
(0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(pageContext.routeParams));
|
|
11
11
|
(0, utils_js_1.assert)('Page' in pageContext);
|
|
12
12
|
(0, utils_js_1.assert)((0, utils_js_1.isObject)(pageContext.pageExports));
|
|
@@ -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
|
|
@@ -120,7 +119,7 @@ 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
|
|
@@ -148,7 +147,8 @@ function getPageContextInitEnhanced(pageContextInit, renderContext, { urlCompute
|
|
|
148
147
|
isClientSideNavigation
|
|
149
148
|
});
|
|
150
149
|
// pageContext.urlParsed
|
|
151
|
-
(0,
|
|
150
|
+
const pageContextUrlComputed = (0, getPageContextUrlComputed_js_1.getPageContextUrlComputed)(pageContextInitEnhanced);
|
|
151
|
+
(0, utils_js_1.objectAssign)(pageContextInitEnhanced, pageContextUrlComputed);
|
|
152
152
|
// pageContext.headers
|
|
153
153
|
{
|
|
154
154
|
let headers;
|
|
@@ -175,7 +175,8 @@ async function getRenderContext() {
|
|
|
175
175
|
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
176
176
|
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal } = await (0, getPageFiles_js_1.getPageFilesAll)(false, globalContext.isProduction);
|
|
177
177
|
const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
|
|
178
|
-
|
|
178
|
+
// We assume assertV1Design() was already called at build-time
|
|
179
|
+
(0, utils_js_1.assert)(pageFilesAll.length === 0 || pageConfigs.length === 0);
|
|
179
180
|
const renderContext = {
|
|
180
181
|
pageFilesAll: pageFilesAll,
|
|
181
182
|
pageConfigs,
|
|
@@ -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]);
|
|
@@ -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 {
|
|
@@ -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
|
-
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getConfigValueBuildTime = void 0;
|
|
4
|
+
const utils_js_1 = require("../utils.js");
|
|
5
|
+
const getConfigValue_js_1 = require("./getConfigValue.js");
|
|
6
|
+
const assertIsNotProductionRuntime_js_1 = require("../../utils/assertIsNotProductionRuntime.js");
|
|
7
|
+
(0, assertIsNotProductionRuntime_js_1.assertIsNotProductionRuntime)();
|
|
8
|
+
function getConfigValueBuildTime(pageConfig, configName, type) {
|
|
9
|
+
const configValue = getConfigValue(pageConfig, configName);
|
|
10
|
+
if (!configValue)
|
|
11
|
+
return null;
|
|
12
|
+
return (0, getConfigValue_js_1.getConfigValueTyped)(configValue, configName, type);
|
|
13
|
+
}
|
|
14
|
+
exports.getConfigValueBuildTime = getConfigValueBuildTime;
|
|
15
|
+
function getConfigValue(pageConfig, configName) {
|
|
16
|
+
const { configValueSources, configValuesComputed, configDefinitions } = pageConfig;
|
|
17
|
+
const configValueComputed = configValuesComputed[configName];
|
|
18
|
+
if (configValueComputed) {
|
|
19
|
+
return {
|
|
20
|
+
type: 'computed',
|
|
21
|
+
value: configValueComputed.value,
|
|
22
|
+
definedAtData: null
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const sources = configValueSources[configName];
|
|
26
|
+
if (!sources)
|
|
27
|
+
return null;
|
|
28
|
+
(0, utils_js_1.assert)(sources.every((s) => s.configEnv.config === true));
|
|
29
|
+
const configDef = configDefinitions[configName];
|
|
30
|
+
(0, utils_js_1.assert)(configDef);
|
|
31
|
+
if (!configDef.cumulative) {
|
|
32
|
+
const configValueSource = sources[0];
|
|
33
|
+
(0, utils_js_1.assert)(configValueSource);
|
|
34
|
+
(0, utils_js_1.assert)(configValueSource.isOverriden === false);
|
|
35
|
+
(0, utils_js_1.assert)(sources.slice(1).every((s) => s.isOverriden === true));
|
|
36
|
+
(0, utils_js_1.assert)('value' in configValueSource);
|
|
37
|
+
return {
|
|
38
|
+
type: 'standard',
|
|
39
|
+
value: configValueSource.value,
|
|
40
|
+
definedAtData: getDefinedAtFile(configValueSource)
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const { value, definedAtData } = mergeCumulative(sources);
|
|
45
|
+
(0, utils_js_1.assert)(value.length === definedAtData.length);
|
|
46
|
+
return {
|
|
47
|
+
type: 'cumulative',
|
|
48
|
+
value,
|
|
49
|
+
definedAtData
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function mergeCumulative(configValueSources) {
|
|
54
|
+
const value = [];
|
|
55
|
+
const definedAtData = [];
|
|
56
|
+
configValueSources.forEach((configValueSource) => {
|
|
57
|
+
(0, utils_js_1.assert)(configValueSource.isOverriden === false);
|
|
58
|
+
(0, utils_js_1.assert)(configValueSource.configEnv.config === true);
|
|
59
|
+
(0, utils_js_1.assert)('value' in configValueSource);
|
|
60
|
+
value.push(configValueSource.value);
|
|
61
|
+
definedAtData.push(getDefinedAtFile(configValueSource));
|
|
62
|
+
});
|
|
63
|
+
return { value, definedAtData };
|
|
64
|
+
}
|
|
65
|
+
function getDefinedAtFile(configValueSource) {
|
|
66
|
+
return {
|
|
67
|
+
filePathToShowToUser: configValueSource.definedAtFilePath.filePathToShowToUser,
|
|
68
|
+
fileExportPathToShowToUser: configValueSource.definedAtFilePath.fileExportPathToShowToUser
|
|
69
|
+
};
|
|
70
|
+
}
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadConfigValues = void 0;
|
|
4
4
|
const utils_js_1 = require("../utils.js");
|
|
5
|
-
const
|
|
6
|
-
const parseConfigValuesSerialized_js_1 = require("./serialize/parseConfigValuesSerialized.js");
|
|
5
|
+
const parsePageConfigs_js_1 = require("./serialize/parsePageConfigs.js");
|
|
7
6
|
async function loadConfigValues(pageConfig, isDev) {
|
|
8
7
|
if ('isAllLoaded' in pageConfig &&
|
|
9
8
|
// We don't need to cache in dev, since Vite already caches the virtual module
|
|
@@ -11,16 +10,8 @@ async function loadConfigValues(pageConfig, isDev) {
|
|
|
11
10
|
return pageConfig;
|
|
12
11
|
}
|
|
13
12
|
const configValuesLoaded = await pageConfig.loadConfigValuesAll();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const configValuesAddendum = (0, parseConfigValuesImported_js_1.parseConfigValuesImported)(configValuesImported);
|
|
17
|
-
Object.assign(pageConfig.configValues, configValuesAddendum);
|
|
18
|
-
}
|
|
19
|
-
{
|
|
20
|
-
const { configValuesSerialized } = configValuesLoaded;
|
|
21
|
-
const configValuesAddendum = (0, parseConfigValuesSerialized_js_1.parseConfigValuesSerialized)(configValuesSerialized);
|
|
22
|
-
Object.assign(pageConfig.configValues, configValuesAddendum);
|
|
23
|
-
}
|
|
13
|
+
const configValues = (0, parsePageConfigs_js_1.parseConfigValuesSerialized)(configValuesLoaded.configValuesSerialized);
|
|
14
|
+
Object.assign(pageConfig.configValues, configValues);
|
|
24
15
|
(0, utils_js_1.objectAssign)(pageConfig, { isAllLoaded: true });
|
|
25
16
|
return pageConfig;
|
|
26
17
|
}
|
|
@@ -9,11 +9,10 @@ function assertPageConfigsSerialized(pageConfigsSerialized) {
|
|
|
9
9
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'pageId', 'string'));
|
|
10
10
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'routeFilesystem'));
|
|
11
11
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'configValuesSerialized'));
|
|
12
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'configValuesImported'));
|
|
13
12
|
});
|
|
14
13
|
}
|
|
15
14
|
exports.assertPageConfigsSerialized = assertPageConfigsSerialized;
|
|
16
15
|
function assertPageConfigGlobalSerialized(pageConfigGlobalSerialized) {
|
|
17
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigGlobalSerialized, '
|
|
16
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigGlobalSerialized, 'configValuesSerialized'));
|
|
18
17
|
}
|
|
19
18
|
exports.assertPageConfigGlobalSerialized = assertPageConfigGlobalSerialized;
|