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
|
@@ -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
|
}
|
|
@@ -1,19 +1 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.assertPageConfigGlobalSerialized = exports.assertPageConfigsSerialized = void 0;
|
|
4
|
-
const utils_js_1 = require("../../utils.js");
|
|
5
|
-
function assertPageConfigsSerialized(pageConfigsSerialized) {
|
|
6
|
-
(0, utils_js_1.assert)((0, utils_js_1.isArray)(pageConfigsSerialized));
|
|
7
|
-
pageConfigsSerialized.forEach((pageConfigSerialized) => {
|
|
8
|
-
(0, utils_js_1.assert)((0, utils_js_1.isObject)(pageConfigSerialized));
|
|
9
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'pageId', 'string'));
|
|
10
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'routeFilesystem'));
|
|
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
|
-
});
|
|
14
|
-
}
|
|
15
|
-
exports.assertPageConfigsSerialized = assertPageConfigsSerialized;
|
|
16
|
-
function assertPageConfigGlobalSerialized(pageConfigGlobalSerialized) {
|
|
17
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigGlobalSerialized, 'configValuesImported'));
|
|
18
|
-
}
|
|
19
|
-
exports.assertPageConfigGlobalSerialized = assertPageConfigGlobalSerialized;
|
|
@@ -1,23 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parsePageConfigs = void 0;
|
|
4
|
-
const parseConfigValuesImported_js_1 = require("./parseConfigValuesImported.js");
|
|
3
|
+
exports.parseConfigValuesSerialized = exports.parsePageConfigs = void 0;
|
|
5
4
|
const utils_js_1 = require("../../utils.js");
|
|
6
5
|
const getConfigDefinedAt_js_1 = require("../getConfigDefinedAt.js");
|
|
7
|
-
const
|
|
6
|
+
const parse_1 = require("@brillout/json-serializer/parse");
|
|
7
|
+
const assertPlusFileExport_js_1 = require("../assertPlusFileExport.js");
|
|
8
|
+
function parseConfigValuesSerialized(configValuesSerialized) {
|
|
9
|
+
const configValues = parseConfigValuesSerialized_tmp(configValuesSerialized);
|
|
10
|
+
return configValues;
|
|
11
|
+
}
|
|
12
|
+
exports.parseConfigValuesSerialized = parseConfigValuesSerialized;
|
|
8
13
|
function parsePageConfigs(pageConfigsSerialized, pageConfigGlobalSerialized) {
|
|
14
|
+
// pageConfigs
|
|
9
15
|
const pageConfigs = pageConfigsSerialized.map((pageConfigSerialized) => {
|
|
10
|
-
const configValues =
|
|
11
|
-
{
|
|
12
|
-
const { configValuesSerialized } = pageConfigSerialized;
|
|
13
|
-
const configValuesAddendum = (0, parseConfigValuesSerialized_js_1.parseConfigValuesSerialized)(configValuesSerialized);
|
|
14
|
-
Object.assign(configValues, configValuesAddendum);
|
|
15
|
-
}
|
|
16
|
-
{
|
|
17
|
-
const { configValuesImported } = pageConfigSerialized;
|
|
18
|
-
const configValuesAddendum = (0, parseConfigValuesImported_js_1.parseConfigValuesImported)(configValuesImported);
|
|
19
|
-
Object.assign(configValues, configValuesAddendum);
|
|
20
|
-
}
|
|
16
|
+
const configValues = parseConfigValuesSerialized(pageConfigSerialized.configValuesSerialized);
|
|
21
17
|
const { pageId, isErrorPage, routeFilesystem, loadConfigValuesAll } = pageConfigSerialized;
|
|
22
18
|
assertRouteConfigValue(configValues);
|
|
23
19
|
return {
|
|
@@ -28,10 +24,11 @@ function parsePageConfigs(pageConfigsSerialized, pageConfigGlobalSerialized) {
|
|
|
28
24
|
loadConfigValuesAll
|
|
29
25
|
};
|
|
30
26
|
});
|
|
27
|
+
// pageConfigsGlobal
|
|
31
28
|
const pageConfigGlobal = { configValues: {} };
|
|
32
29
|
{
|
|
33
|
-
const
|
|
34
|
-
Object.assign(pageConfigGlobal.configValues,
|
|
30
|
+
const configValues = parseConfigValuesSerialized(pageConfigGlobalSerialized.configValuesSerialized);
|
|
31
|
+
Object.assign(pageConfigGlobal.configValues, configValues);
|
|
35
32
|
}
|
|
36
33
|
return { pageConfigs, pageConfigGlobal };
|
|
37
34
|
}
|
|
@@ -55,3 +52,100 @@ function assertRouteConfigValue(configValues) {
|
|
|
55
52
|
}
|
|
56
53
|
*/
|
|
57
54
|
}
|
|
55
|
+
function parseConfigValuesSerialized_tmp(configValuesSerialized) {
|
|
56
|
+
const configValues = {};
|
|
57
|
+
Object.entries(configValuesSerialized).forEach(([configName, configValueSeriliazed]) => {
|
|
58
|
+
let configValue;
|
|
59
|
+
if (configValueSeriliazed.type === 'cumulative') {
|
|
60
|
+
const { valueSerialized, ...common } = configValueSeriliazed;
|
|
61
|
+
const value = valueSerialized.map((valueSerializedElement, i) => {
|
|
62
|
+
const { value, sideExports } = parseValueSerialized(valueSerializedElement, configName, () => {
|
|
63
|
+
const definedAtFile = configValueSeriliazed.definedAtData[i];
|
|
64
|
+
(0, utils_js_1.assert)(definedAtFile);
|
|
65
|
+
return definedAtFile;
|
|
66
|
+
});
|
|
67
|
+
addSideExports(sideExports);
|
|
68
|
+
return value;
|
|
69
|
+
});
|
|
70
|
+
configValue = { value, ...common };
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const { valueSerialized, ...common } = configValueSeriliazed;
|
|
74
|
+
const { value, sideExports } = parseValueSerialized(valueSerialized, configName, () => {
|
|
75
|
+
(0, utils_js_1.assert)(configValueSeriliazed.type !== 'computed');
|
|
76
|
+
return configValueSeriliazed.definedAtData;
|
|
77
|
+
});
|
|
78
|
+
addSideExports(sideExports);
|
|
79
|
+
configValue = { value, ...common };
|
|
80
|
+
}
|
|
81
|
+
configValues[configName] = configValue;
|
|
82
|
+
});
|
|
83
|
+
return configValues;
|
|
84
|
+
function addSideExports(sideExports) {
|
|
85
|
+
sideExports.forEach((sideExport) => {
|
|
86
|
+
const { configName, configValue } = sideExport;
|
|
87
|
+
if (!configValues[configName]) {
|
|
88
|
+
configValues[configName] = configValue;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Side-exports have lower precedence.
|
|
92
|
+
// We can't avoid side-export conflicts upstream. (We cannot know about side-exports at build-time.)
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function parseValueSerialized(valueSerialized, configName, getDefinedAtFile) {
|
|
98
|
+
if (valueSerialized.type === 'js-serialized') {
|
|
99
|
+
let { value } = valueSerialized;
|
|
100
|
+
value = (0, parse_1.parseTransform)(value);
|
|
101
|
+
return { value, sideExports: [] };
|
|
102
|
+
}
|
|
103
|
+
if (valueSerialized.type === 'pointer-import') {
|
|
104
|
+
const { value } = valueSerialized;
|
|
105
|
+
return { value, sideExports: [] };
|
|
106
|
+
}
|
|
107
|
+
if (valueSerialized.type === 'plus-file') {
|
|
108
|
+
const definedAtFile = getDefinedAtFile();
|
|
109
|
+
const { exportValues } = valueSerialized;
|
|
110
|
+
(0, assertPlusFileExport_js_1.assertPlusFileExport)(exportValues, definedAtFile.filePathToShowToUser, configName);
|
|
111
|
+
let value;
|
|
112
|
+
let valueWasFound = false;
|
|
113
|
+
const sideExports = [];
|
|
114
|
+
Object.entries(exportValues).forEach(([exportName, exportValue]) => {
|
|
115
|
+
const isSideExport = exportName !== 'default' && exportName !== configName;
|
|
116
|
+
if (!isSideExport) {
|
|
117
|
+
value = exportValue;
|
|
118
|
+
(0, utils_js_1.assert)(!valueWasFound);
|
|
119
|
+
valueWasFound = true;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
sideExports.push({
|
|
123
|
+
configName: exportName,
|
|
124
|
+
configValue: {
|
|
125
|
+
type: 'standard', // We don't support side exports for cumulative values. We could support it but it isn't trivial.
|
|
126
|
+
value: exportValue,
|
|
127
|
+
definedAtData: {
|
|
128
|
+
filePathToShowToUser: definedAtFile.filePathToShowToUser,
|
|
129
|
+
fileExportPathToShowToUser: [exportName]
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
(0, utils_js_1.assert)(valueWasFound);
|
|
136
|
+
return { value, sideExports };
|
|
137
|
+
}
|
|
138
|
+
(0, utils_js_1.assert)(false);
|
|
139
|
+
}
|
|
140
|
+
/* [NULL_HANDLING] Do we really need this?
|
|
141
|
+
function assertIsNotNull(configValue: unknown, configName: string, filePathToShowToUser: string) {
|
|
142
|
+
assert(!filePathToShowToUser.includes('+config.'))
|
|
143
|
+
// Re-use this for:
|
|
144
|
+
// - upcoming config.requestPageContextOnNavigation
|
|
145
|
+
// - for cumulative values in the future: we don't need this for now because, currently, cumulative values are never imported.
|
|
146
|
+
assertUsage(
|
|
147
|
+
configValue !== null,
|
|
148
|
+
`Set ${pc.cyan(configName)} to ${pc.cyan('null')} in a +config.js file instead of ${filePathToShowToUser}`
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
*/
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.serializeConfigValues = void 0;
|
|
7
|
+
const assertIsNotProductionRuntime_js_1 = require("../../../utils/assertIsNotProductionRuntime.js");
|
|
8
|
+
const utils_js_1 = require("../../../node/plugin/utils.js");
|
|
9
|
+
const addImportStatement_js_1 = require("../../../node/plugin/plugins/importUserCode/addImportStatement.js");
|
|
10
|
+
const transformFileImports_js_1 = require("../../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.js");
|
|
11
|
+
const helpers_js_1 = require("../helpers.js");
|
|
12
|
+
const stringify_1 = require("@brillout/json-serializer/stringify");
|
|
13
|
+
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
14
|
+
const REPLACE_ME_BEFORE = '__VIKE__REPLACE_ME_BEFORE__';
|
|
15
|
+
const REPLACE_ME_AFTER = '__VIKE__REPLACE_ME_AFTER__';
|
|
16
|
+
// This file is never loaded on the client-side but we save it under the vike/shared/ directory in order to collocate it with parsePageConfigs()
|
|
17
|
+
// - vike/shared/page-configs/serialize/parsePageConfigs.ts
|
|
18
|
+
// - parsePageConfigs() is loaded on both the client- and server-side.
|
|
19
|
+
(0, assertIsNotProductionRuntime_js_1.assertIsNotProductionRuntime)();
|
|
20
|
+
function serializeConfigValues(pageConfig, importStatements, isEnvMatch, tabspace) {
|
|
21
|
+
const lines = [];
|
|
22
|
+
tabspace += ' ';
|
|
23
|
+
Object.entries(pageConfig.configValuesComputed ?? {}).forEach(([configName, configValuesComputed]) => {
|
|
24
|
+
if (!isEnvMatch(configValuesComputed.configEnv))
|
|
25
|
+
return;
|
|
26
|
+
// Is there a use case for overriding computed values? If yes, then configValeSources has higher precedence
|
|
27
|
+
if (pageConfig.configValueSources[configName])
|
|
28
|
+
return;
|
|
29
|
+
const valueData = serializeWithJson(configValuesComputed.value, configName, null, importStatements);
|
|
30
|
+
const configValueBase = {
|
|
31
|
+
type: 'computed',
|
|
32
|
+
definedAtData: null
|
|
33
|
+
};
|
|
34
|
+
serializeConfigValue(configValueBase, valueData, configName, lines, tabspace);
|
|
35
|
+
});
|
|
36
|
+
Object.entries(pageConfig.configValueSources).forEach(([configName, sources]) => {
|
|
37
|
+
const configDef = pageConfig.configDefinitions[configName];
|
|
38
|
+
(0, utils_js_1.assert)(configDef);
|
|
39
|
+
if (!configDef.cumulative) {
|
|
40
|
+
const configValueSource = sources[0];
|
|
41
|
+
(0, utils_js_1.assert)(configValueSource);
|
|
42
|
+
(0, utils_js_1.assert)(sources.slice(1).every((s) => s.isOverriden === true));
|
|
43
|
+
if (!isEnvMatch(configValueSource.configEnv))
|
|
44
|
+
return;
|
|
45
|
+
const { valueData, definedAtFile } = serializeConfigValueSource(configValueSource, configName, importStatements);
|
|
46
|
+
const configValueBase = {
|
|
47
|
+
type: 'standard',
|
|
48
|
+
definedAtData: definedAtFile
|
|
49
|
+
};
|
|
50
|
+
serializeConfigValue(configValueBase, valueData, configName, lines, tabspace);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const valueDataList = [];
|
|
54
|
+
const definedAtData = [];
|
|
55
|
+
sources
|
|
56
|
+
.filter((s) => !s.isOverriden)
|
|
57
|
+
.forEach((configValueSource) => {
|
|
58
|
+
if (!isEnvMatch(configValueSource.configEnv))
|
|
59
|
+
return;
|
|
60
|
+
const { valueData, definedAtFile } = serializeConfigValueSource(configValueSource, configName, importStatements);
|
|
61
|
+
valueDataList.push(valueData);
|
|
62
|
+
definedAtData.push(definedAtFile);
|
|
63
|
+
});
|
|
64
|
+
if (valueDataList.length === 0)
|
|
65
|
+
return;
|
|
66
|
+
const configValueBase = {
|
|
67
|
+
type: 'cumulative',
|
|
68
|
+
definedAtData
|
|
69
|
+
};
|
|
70
|
+
serializeConfigValue(configValueBase, valueDataList, configName, lines, tabspace);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return lines;
|
|
74
|
+
}
|
|
75
|
+
exports.serializeConfigValues = serializeConfigValues;
|
|
76
|
+
function serializeConfigValueSource(configValueSource, configName, importStatements) {
|
|
77
|
+
(0, utils_js_1.assert)(configValueSource.isOverriden === false);
|
|
78
|
+
let valueData;
|
|
79
|
+
if ('value' in configValueSource) {
|
|
80
|
+
valueData = serializeWithJson(configValueSource.value, configName, configValueSource.definedAtFilePath, importStatements);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
valueData = serializeWithImport(configValueSource, importStatements);
|
|
84
|
+
}
|
|
85
|
+
const definedAtFile = {
|
|
86
|
+
filePathToShowToUser: configValueSource.definedAtFilePath.filePathToShowToUser,
|
|
87
|
+
fileExportPathToShowToUser: configValueSource.definedAtFilePath.fileExportPathToShowToUser
|
|
88
|
+
};
|
|
89
|
+
return { valueData, definedAtFile };
|
|
90
|
+
}
|
|
91
|
+
function serializeConfigValue(configValueBase, valueData, configName, lines, tabspace) {
|
|
92
|
+
lineAdd(`[${JSON.stringify(configName)}]: {`);
|
|
93
|
+
{
|
|
94
|
+
tab();
|
|
95
|
+
lineAdd(`type: "${configValueBase.type}",`);
|
|
96
|
+
lineAdd(`definedAtData: ${JSON.stringify(configValueBase.definedAtData)},`);
|
|
97
|
+
lineAdd(`valueSerialized:`);
|
|
98
|
+
if (!Array.isArray(valueData)) {
|
|
99
|
+
serializeValueData(valueData);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
lineAppend(' [');
|
|
103
|
+
valueData.forEach(serializeValueData);
|
|
104
|
+
lineAppend(` ],`);
|
|
105
|
+
}
|
|
106
|
+
untab();
|
|
107
|
+
}
|
|
108
|
+
lineAdd('},');
|
|
109
|
+
return;
|
|
110
|
+
function serializeValueData(valueData) {
|
|
111
|
+
lineAppend(` {`);
|
|
112
|
+
tab();
|
|
113
|
+
lineAdd(`type: "${valueData.type}",`);
|
|
114
|
+
const valueProp = valueData.type !== 'plus-file' ? 'value' : 'exportValues';
|
|
115
|
+
lineAdd(`${valueProp}: ${valueData.valueAsJsCode},`);
|
|
116
|
+
untab();
|
|
117
|
+
lineAdd(`},`);
|
|
118
|
+
}
|
|
119
|
+
function lineAppend(str) {
|
|
120
|
+
const i = lines.length - 1;
|
|
121
|
+
lines[i] = lines[i] += str;
|
|
122
|
+
}
|
|
123
|
+
function lineAdd(str) {
|
|
124
|
+
lines.push(`${tabspace}${str}`);
|
|
125
|
+
}
|
|
126
|
+
function tab() {
|
|
127
|
+
tabspace += ' ';
|
|
128
|
+
}
|
|
129
|
+
function untab() {
|
|
130
|
+
tabspace = tabspace.slice(2);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function serializeWithImport(configValueSource, importStatements) {
|
|
134
|
+
(0, utils_js_1.assert)(!configValueSource.valueIsFilePath);
|
|
135
|
+
const { valueIsImportedAtRuntime, valueIsDefinedByPlusFile, definedAtFilePath } = configValueSource;
|
|
136
|
+
(0, utils_js_1.assert)(valueIsImportedAtRuntime);
|
|
137
|
+
const { filePathAbsoluteVite, fileExportName } = definedAtFilePath;
|
|
138
|
+
if (valueIsDefinedByPlusFile)
|
|
139
|
+
(0, utils_js_1.assert)(fileExportName === undefined);
|
|
140
|
+
const { importName } = (0, addImportStatement_js_1.addImportStatement)(importStatements, filePathAbsoluteVite, fileExportName || '*');
|
|
141
|
+
return {
|
|
142
|
+
type: valueIsDefinedByPlusFile ? 'plus-file' : 'pointer-import',
|
|
143
|
+
valueAsJsCode: importName
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function serializeWithJson(value, configName, definedAtData, importStatements) {
|
|
147
|
+
const valueAsJsCode = valueToJson(value, configName, definedAtData, importStatements);
|
|
148
|
+
return {
|
|
149
|
+
type: 'js-serialized',
|
|
150
|
+
valueAsJsCode
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function valueToJson(value, configName, definedAtData, importStatements) {
|
|
154
|
+
const valueName = `config${(0, utils_js_1.getPropAccessNotation)(configName)}`;
|
|
155
|
+
let configValueSerialized;
|
|
156
|
+
try {
|
|
157
|
+
configValueSerialized = (0, stringify_1.stringify)(value, {
|
|
158
|
+
valueName,
|
|
159
|
+
forbidReactElements: true,
|
|
160
|
+
replacer(_, value) {
|
|
161
|
+
if (typeof value === 'string') {
|
|
162
|
+
const importData = (0, transformFileImports_js_1.parsePointerImportData)(value);
|
|
163
|
+
if (importData) {
|
|
164
|
+
const { importName } = (0, addImportStatement_js_1.addImportStatement)(importStatements, importData.importPath, importData.exportName);
|
|
165
|
+
const replacement = [REPLACE_ME_BEFORE, importName, REPLACE_ME_AFTER].join('');
|
|
166
|
+
return { replacement };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
logJsonSerializeError(err, configName, definedAtData);
|
|
174
|
+
(0, utils_js_1.assert)(false);
|
|
175
|
+
}
|
|
176
|
+
configValueSerialized = configValueSerialized.replaceAll(`"${REPLACE_ME_BEFORE}`, '');
|
|
177
|
+
configValueSerialized = configValueSerialized.replaceAll(`${REPLACE_ME_AFTER}"`, '');
|
|
178
|
+
(0, utils_js_1.assert)(!configValueSerialized.includes(REPLACE_ME_BEFORE));
|
|
179
|
+
(0, utils_js_1.assert)(!configValueSerialized.includes(REPLACE_ME_AFTER));
|
|
180
|
+
return configValueSerialized;
|
|
181
|
+
}
|
|
182
|
+
function logJsonSerializeError(err, configName, definedAtData) {
|
|
183
|
+
/*
|
|
184
|
+
// import { isJsonSerializerError } from '@brillout/json-serializer/stringify'
|
|
185
|
+
let serializationErrMsg = ''
|
|
186
|
+
if (isJsonSerializerError(err)) {
|
|
187
|
+
serializationErrMsg = err.messageCore
|
|
188
|
+
} else {
|
|
189
|
+
// When a property getter throws an error
|
|
190
|
+
console.error('Serialization error:')
|
|
191
|
+
console.error(err)
|
|
192
|
+
serializationErrMsg = 'see serialization error printed above'
|
|
193
|
+
}
|
|
194
|
+
//*/
|
|
195
|
+
const configValueFilePathToShowToUser = (0, helpers_js_1.getConfigValueFilePathToShowToUser)(definedAtData);
|
|
196
|
+
(0, utils_js_1.assert)(configValueFilePathToShowToUser);
|
|
197
|
+
(0, utils_js_1.assertUsage)(false, `${picocolors_1.default.cyan(configName)} defined by ${configValueFilePathToShowToUser} must be defined over a so-called "pointer import", see https://vike.dev/config#pointer-imports`);
|
|
198
|
+
}
|
|
@@ -23,7 +23,7 @@ async function executeGuardHook(pageContext, prepareForUserConsumption) {
|
|
|
23
23
|
const res = prepareForUserConsumption(pageContext);
|
|
24
24
|
if (res)
|
|
25
25
|
pageContextForUserConsumption = res;
|
|
26
|
-
const hookResult = await (0, executeHook_js_1.executeHook)(() => guard(pageContextForUserConsumption), hook);
|
|
26
|
+
const hookResult = await (0, executeHook_js_1.executeHook)(() => guard(pageContextForUserConsumption), hook, pageContext);
|
|
27
27
|
(0, utils_js_1.assertUsage)(hookResult === undefined, `${errIntro} ${hook.hookFilePath} returns a value, but guard() shouldn't return any value`);
|
|
28
28
|
}
|
|
29
29
|
exports.executeGuardHook = executeGuardHook;
|
|
@@ -42,7 +42,7 @@ async function getPageContextFromHook(onBeforeRouteHook, pageContext) {
|
|
|
42
42
|
let hookReturn = onBeforeRouteHook.hookFn(pageContext);
|
|
43
43
|
(0, resolveRouteFunction_js_1.assertSyncRouting)(hookReturn, `The onBeforeRoute() hook ${onBeforeRouteHook.hookFilePath}`);
|
|
44
44
|
// TODO/v1-release: make executeOnBeforeRouteHook() and route() sync
|
|
45
|
-
hookReturn = await (0, executeHook_js_1.executeHook)(() => hookReturn, onBeforeRouteHook);
|
|
45
|
+
hookReturn = await (0, executeHook_js_1.executeHook)(() => hookReturn, onBeforeRouteHook, pageContext);
|
|
46
46
|
const errPrefix = `The onBeforeRoute() hook defined by ${onBeforeRouteHook.hookFilePath}`;
|
|
47
47
|
(0, utils_js_1.assertUsage)(hookReturn === null ||
|
|
48
48
|
hookReturn === undefined ||
|
|
@@ -11,7 +11,7 @@ if ((0, isBrowser_js_1.isBrowser)()) {
|
|
|
11
11
|
(0, assertRoutingType_js_1.assertClientRouting)();
|
|
12
12
|
}
|
|
13
13
|
const utils_js_1 = require("./utils.js");
|
|
14
|
-
const
|
|
14
|
+
const getPageContextUrlComputed_js_1 = require("../getPageContextUrlComputed.js");
|
|
15
15
|
const resolvePrecedence_js_1 = require("./resolvePrecedence.js");
|
|
16
16
|
const resolveRouteString_js_1 = require("./resolveRouteString.js");
|
|
17
17
|
const resolveRouteFunction_js_1 = require("./resolveRouteFunction.js");
|
|
@@ -20,7 +20,7 @@ const debug_js_1 = require("./debug.js");
|
|
|
20
20
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
21
21
|
async function route(pageContextForRoute) {
|
|
22
22
|
(0, debug_js_1.debug)('Pages routes:', pageContextForRoute._pageRoutes);
|
|
23
|
-
(0,
|
|
23
|
+
(0, getPageContextUrlComputed_js_1.assertPageContextUrl)(pageContextForRoute);
|
|
24
24
|
const pageContextFromRoute = {};
|
|
25
25
|
// onBeforeRoute()
|
|
26
26
|
const pageContextFromOnBeforeRouteHook = await (0, executeOnBeforeRouteHook_js_1.executeOnBeforeRouteHook)(pageContextForRoute);
|
|
@@ -31,7 +31,7 @@ function getPageRoutes(filesystemRoots, pageFilesAll, pageConfigs, allPageIds) {
|
|
|
31
31
|
let pageRoute = null;
|
|
32
32
|
{
|
|
33
33
|
const configName = 'route';
|
|
34
|
-
const configValue = (0, getConfigValue_js_1.
|
|
34
|
+
const configValue = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, configName);
|
|
35
35
|
if (configValue) {
|
|
36
36
|
const route = configValue.value;
|
|
37
37
|
(0, utils_js_1.assert)(configValue.definedAtData);
|
|
@@ -47,7 +47,7 @@ function getPageRoutes(filesystemRoots, pageFilesAll, pageConfigs, allPageIds) {
|
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
49
|
(0, utils_js_1.assert)((0, utils_js_2.isCallable)(route));
|
|
50
|
-
if ((0, getConfigValue_js_1.
|
|
50
|
+
if ((0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'iKnowThePerformanceRisksOfAsyncRouteFunctions', 'boolean'))
|
|
51
51
|
(0, resolveRouteFunction_js_1.warnDeprecatedAllowKey)();
|
|
52
52
|
pageRoute = {
|
|
53
53
|
pageId,
|
|
@@ -4,11 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.warnDeprecatedAllowKey = exports.assertSyncRouting = exports.assertRouteParams = exports.resolveRouteFunction = void 0;
|
|
7
|
-
const
|
|
7
|
+
const getPageContextUrlComputed_js_1 = require("../getPageContextUrlComputed.js");
|
|
8
8
|
const utils_js_1 = require("./utils.js");
|
|
9
9
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
10
10
|
async function resolveRouteFunction(routeFunction, pageContext, routeDefinedAtString) {
|
|
11
|
-
(0,
|
|
11
|
+
(0, getPageContextUrlComputed_js_1.assertPageContextUrl)(pageContext);
|
|
12
12
|
let result = routeFunction(pageContext);
|
|
13
13
|
assertSyncRouting(result, `The Route Function ${routeDefinedAtString}`);
|
|
14
14
|
// TODO/v1-release: make resolveRouteFunction() and route() sync
|
|
@@ -4,14 +4,10 @@ exports.sortPageContext = void 0;
|
|
|
4
4
|
const utils_js_1 = require("./utils.js");
|
|
5
5
|
// Sort `pageContext` keys alphabetically, in order to make reading `console.log(pageContext)` easier
|
|
6
6
|
function sortPageContext(pageContext) {
|
|
7
|
-
|
|
8
|
-
for (const key
|
|
7
|
+
let descriptors = Object.getOwnPropertyDescriptors(pageContext);
|
|
8
|
+
for (const key of Object.keys(pageContext))
|
|
9
9
|
delete pageContext[key];
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
.sort(([key1], [key2]) => (0, utils_js_1.compareString)(key1, key2))
|
|
13
|
-
.forEach(([key, val]) => {
|
|
14
|
-
pageContext[key] = val;
|
|
15
|
-
});
|
|
10
|
+
descriptors = Object.fromEntries(Object.entries(descriptors).sort(([key1], [key2]) => (0, utils_js_1.compareString)(key1, key2)));
|
|
11
|
+
Object.defineProperties(pageContext, descriptors);
|
|
16
12
|
}
|
|
17
13
|
exports.sortPageContext = sortPageContext;
|
package/dist/cjs/shared/utils.js
CHANGED
|
@@ -41,3 +41,5 @@ __exportStar(require("../utils/checkType.js"), exports);
|
|
|
41
41
|
__exportStar(require("../utils/getValuePrintable.js"), exports);
|
|
42
42
|
__exportStar(require("../utils/escapeRegex.js"), exports);
|
|
43
43
|
__exportStar(require("../utils/isArray.js"), exports);
|
|
44
|
+
__exportStar(require("../utils/changeEnumerable.js"), exports);
|
|
45
|
+
__exportStar(require("../utils/objectDefineProperty.js"), exports);
|
package/dist/cjs/utils/assert.js
CHANGED
|
@@ -37,9 +37,9 @@ function assert(condition, debugInfo) {
|
|
|
37
37
|
const debugInfoSerialized = typeof debugInfo === 'string' ? debugInfo : JSON.stringify(debugInfo);
|
|
38
38
|
return picocolors_1.default.dim(`Debug info (for Vike maintainers; you can ignore this): ${debugInfoSerialized}`);
|
|
39
39
|
})();
|
|
40
|
+
const link = picocolors_1.default.blue('https://github.com/vikejs/vike/issues/new');
|
|
40
41
|
let errMsg = [
|
|
41
|
-
`You stumbled upon a Vike bug.`,
|
|
42
|
-
`Go to ${picocolors_1.default.blue('https://github.com/vikejs/vike/issues/new')} and copy-paste this error. A maintainer will fix the bug (usually under 24 hours).`,
|
|
42
|
+
`You stumbled upon a Vike bug. Go to ${link} and copy-paste this error. A maintainer will fix the bug (usually under 24 hours).`,
|
|
43
43
|
debugStr
|
|
44
44
|
]
|
|
45
45
|
.filter(Boolean)
|
|
@@ -92,7 +92,7 @@ function assertWarning(condition, msg, { onlyOnce, showStackTrace }) {
|
|
|
92
92
|
}
|
|
93
93
|
globalObject.onBeforeLog?.();
|
|
94
94
|
if (showStackTrace) {
|
|
95
|
-
const err =
|
|
95
|
+
const err = (0, createErrorWithCleanStackTrace_js_1.createErrorWithCleanStackTrace)(msg, numberOfStackTraceLinesToRemove);
|
|
96
96
|
globalObject.showStackTraceList.add(err);
|
|
97
97
|
globalObject.logger(err, 'warn');
|
|
98
98
|
}
|
|
@@ -8,6 +8,6 @@ function assertNodeVersion() {
|
|
|
8
8
|
if (!(0, isNodeJS_js_1.isNodeJS)())
|
|
9
9
|
return;
|
|
10
10
|
const version = process.versions.node;
|
|
11
|
-
(0, assertVersion_js_1.assertVersion)('Node.js', version, '
|
|
11
|
+
(0, assertVersion_js_1.assertVersion)('Node.js', version, '18.0.0');
|
|
12
12
|
}
|
|
13
13
|
exports.assertNodeVersion = assertNodeVersion;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.changeEnumerable = void 0;
|
|
4
|
+
/** Change enumerability of an object property. */
|
|
5
|
+
function changeEnumerable(obj, prop, enumerable) {
|
|
6
|
+
const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
|
|
7
|
+
Object.defineProperty(obj, prop, { ...descriptor, enumerable });
|
|
8
|
+
}
|
|
9
|
+
exports.changeEnumerable = changeEnumerable;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.escapeHtml = void 0;
|
|
4
|
+
// Copied from https://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript/6234804#6234804
|
|
5
|
+
function escapeHtml(unsafeString) {
|
|
6
|
+
const safe = unsafeString
|
|
7
|
+
.replace(/&/g, '&')
|
|
8
|
+
.replace(/</g, '<')
|
|
9
|
+
.replace(/>/g, '>')
|
|
10
|
+
.replace(/"/g, '"')
|
|
11
|
+
.replace(/'/g, ''');
|
|
12
|
+
return safe;
|
|
13
|
+
}
|
|
14
|
+
exports.escapeHtml = escapeHtml;
|
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getPropAccessNotation = void 0;
|
|
4
4
|
function getPropAccessNotation(key) {
|
|
5
|
-
return
|
|
5
|
+
return typeof key === 'string' && /^[a-z0-9\$_]+$/i.test(key) ? `.${key}` : `[${JSON.stringify(key)}]`;
|
|
6
6
|
}
|
|
7
7
|
exports.getPropAccessNotation = getPropAccessNotation;
|
|
8
|
-
function isKeyDotNotationCompatible(key) {
|
|
9
|
-
return /^[a-z0-9\$_]+$/i.test(key);
|
|
10
|
-
}
|