@lwrjs/config 0.11.0-alpha.2 → 0.11.0-alpha.4
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/build/cjs/defaults.cjs +10 -1
- package/build/cjs/runtime-config.cjs +8 -6
- package/build/cjs/validation/app-config-context.cjs +11 -0
- package/build/cjs/validation/app-config.cjs +18 -0
- package/build/es/defaults.js +9 -0
- package/build/es/runtime-config.js +7 -5
- package/build/es/validation/app-config-context.d.ts +6 -2
- package/build/es/validation/app-config-context.js +10 -0
- package/build/es/validation/app-config.js +24 -1
- package/package.json +6 -6
package/build/cjs/defaults.cjs
CHANGED
|
@@ -87,6 +87,14 @@ var SSR_VIEW_TRANSFORM_PLUGIN = "@lwrjs/lwc-ssr/viewTransformer";
|
|
|
87
87
|
var DEFAULT_ASSET_PROVIDERS = ["@lwrjs/fs-asset-provider"];
|
|
88
88
|
var DEFAULT_ASSET_TRANSFORM_PLUGINS = ["@lwrjs/asset-transformer"];
|
|
89
89
|
var DEFAULT_URI_TRANSFORM_PLUGINS = [];
|
|
90
|
+
var DEFAULT_I18N_CONFIG = {
|
|
91
|
+
defaultLocale: "en-US",
|
|
92
|
+
locales: [
|
|
93
|
+
{
|
|
94
|
+
id: "en-US"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
};
|
|
90
98
|
var DEFAULT_AMD_LOADER = "lwr/loader";
|
|
91
99
|
var DEFAULT_AMD_LOADER_LEGACY = "lwr/loaderLegacy";
|
|
92
100
|
var DEFAULT_ESM_LOADER = "lwr/esmLoader";
|
|
@@ -157,5 +165,6 @@ var DEFAULT_LWR_CONFIG = {
|
|
|
157
165
|
bundleConfig: getDefaultBundleConfig(MODE),
|
|
158
166
|
serverType: DEFAULT_SERVER_TYPE,
|
|
159
167
|
locker: import_shared_utils.DEFAULT_LWR_LOCKER_CONFIG,
|
|
160
|
-
uriTransformers: DEFAULT_URI_TRANSFORM_PLUGINS
|
|
168
|
+
uriTransformers: DEFAULT_URI_TRANSFORM_PLUGINS,
|
|
169
|
+
i18n: DEFAULT_I18N_CONFIG
|
|
161
170
|
};
|
|
@@ -38,7 +38,7 @@ var RUNTIME_CONFIGS = {
|
|
|
38
38
|
compat: "0",
|
|
39
39
|
debug: false,
|
|
40
40
|
watchFiles: true,
|
|
41
|
-
defaultLocale: "
|
|
41
|
+
defaultLocale: "en-US",
|
|
42
42
|
hmrEnabled: true,
|
|
43
43
|
immutableAssets: false,
|
|
44
44
|
env: {
|
|
@@ -52,7 +52,7 @@ var RUNTIME_CONFIGS = {
|
|
|
52
52
|
compat: "0",
|
|
53
53
|
debug: false,
|
|
54
54
|
watchFiles: false,
|
|
55
|
-
defaultLocale: "
|
|
55
|
+
defaultLocale: "en-US",
|
|
56
56
|
hmrEnabled: false,
|
|
57
57
|
immutableAssets: true,
|
|
58
58
|
env: {
|
|
@@ -66,7 +66,7 @@ var RUNTIME_CONFIGS = {
|
|
|
66
66
|
compat: "1",
|
|
67
67
|
debug: false,
|
|
68
68
|
watchFiles: true,
|
|
69
|
-
defaultLocale: "
|
|
69
|
+
defaultLocale: "en-US",
|
|
70
70
|
hmrEnabled: false,
|
|
71
71
|
immutableAssets: false,
|
|
72
72
|
env: {
|
|
@@ -80,7 +80,7 @@ var RUNTIME_CONFIGS = {
|
|
|
80
80
|
compat: "1",
|
|
81
81
|
debug: false,
|
|
82
82
|
watchFiles: false,
|
|
83
|
-
defaultLocale: "
|
|
83
|
+
defaultLocale: "en-US",
|
|
84
84
|
hmrEnabled: false,
|
|
85
85
|
immutableAssets: true,
|
|
86
86
|
env: {
|
|
@@ -96,8 +96,9 @@ function getServerModeConfig(serverMode) {
|
|
|
96
96
|
return selectedMode;
|
|
97
97
|
}
|
|
98
98
|
function getRuntimeEnvironment(config) {
|
|
99
|
-
const {serverMode, lwrVersion, apiVersion, basePath, minify} = config;
|
|
99
|
+
const {serverMode, lwrVersion, apiVersion, basePath, i18n, minify} = config;
|
|
100
100
|
const serverModeConfig = getServerModeConfig(config.serverMode);
|
|
101
|
+
const defaultLocale = i18n.defaultLocale;
|
|
101
102
|
return {
|
|
102
103
|
...serverModeConfig,
|
|
103
104
|
minify: minify !== null ? minify : serverModeConfig.minify,
|
|
@@ -105,6 +106,7 @@ function getRuntimeEnvironment(config) {
|
|
|
105
106
|
serverMode,
|
|
106
107
|
lwrVersion,
|
|
107
108
|
apiVersion,
|
|
108
|
-
basePath
|
|
109
|
+
basePath,
|
|
110
|
+
defaultLocale
|
|
109
111
|
};
|
|
110
112
|
}
|
|
@@ -29,6 +29,7 @@ __export(exports, {
|
|
|
29
29
|
BASE_PATH_REGEX: () => BASE_PATH_REGEX,
|
|
30
30
|
BOOTSTRAP_ATTRIBUTE_KEYS: () => BOOTSTRAP_ATTRIBUTE_KEYS,
|
|
31
31
|
ERROR_ROUTE_ATTRIBUTE_KEYS: () => ERROR_ROUTE_ATTRIBUTE_KEYS,
|
|
32
|
+
I18N_ATTRIBUTE_KEYS: () => I18N_ATTRIBUTE_KEYS,
|
|
32
33
|
LOCKER_ATTRIBUTE_KEYS: () => LOCKER_ATTRIBUTE_KEYS,
|
|
33
34
|
ROOT_ATTRIBUTE_KEYS: () => ROOT_ATTRIBUTE_KEYS,
|
|
34
35
|
ROUTE_ATTRIBUTE_KEYS: () => ROUTE_ATTRIBUTE_KEYS,
|
|
@@ -57,6 +58,7 @@ var ROOT_ATTRIBUTE_KEYS = createKeys("root", [
|
|
|
57
58
|
"globalData",
|
|
58
59
|
"globalDataDir",
|
|
59
60
|
"hooks",
|
|
61
|
+
"i18n",
|
|
60
62
|
"ignoreLwrConfigFile",
|
|
61
63
|
"lwrConfigFile",
|
|
62
64
|
"layoutsDir",
|
|
@@ -80,6 +82,7 @@ var ROOT_ATTRIBUTE_KEYS = createKeys("root", [
|
|
|
80
82
|
var ASSET_DIR_ATTRIBUTE_KEYS = createKeys("assetDir", ["alias", "dir", "urlPath", "root"]);
|
|
81
83
|
var ASSET_FILE_ATTRIBUTE_KEYS = createKeys("assetFile", ["alias", "file", "urlPath"]);
|
|
82
84
|
var LOCKER_ATTRIBUTE_KEYS = createKeys("locker", ["enabled", "trustedComponents", "clientOnly"]);
|
|
85
|
+
var I18N_ATTRIBUTE_KEYS = createKeys("i18n", ["defaultLocale", "locales"]);
|
|
83
86
|
var ROUTE_ATTRIBUTE_KEYS = createKeys("routes", [
|
|
84
87
|
"bootstrap",
|
|
85
88
|
"subRoutes",
|
|
@@ -445,4 +448,12 @@ var ValidationContext = class {
|
|
|
445
448
|
});
|
|
446
449
|
}
|
|
447
450
|
}
|
|
451
|
+
assertDefaultInLocales(node, defaultLocale, localesIds) {
|
|
452
|
+
if (!localesIds.includes(defaultLocale)) {
|
|
453
|
+
this.diagnostics.push({
|
|
454
|
+
description: import_diagnostics.descriptions.CONFIG_PARSER.DEFAULT_NOT_IN_LOCALES(defaultLocale, localesIds),
|
|
455
|
+
location: this.getLocationFromNode(node)
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
}
|
|
448
459
|
};
|
|
@@ -91,6 +91,23 @@ function validateRoutes(node, validationContext, preMerge) {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
+
function validateI18NConfig(node, validationContext, preMerge) {
|
|
95
|
+
if (node) {
|
|
96
|
+
if (!preMerge) {
|
|
97
|
+
validationContext.assertIsObject(node, "i18n");
|
|
98
|
+
}
|
|
99
|
+
validationContext.assertIsObject(node, "i18n");
|
|
100
|
+
validationContext.assertValidKeys(node, "i18n", import_app_config_context.I18N_ATTRIBUTE_KEYS);
|
|
101
|
+
validationContext.assertRequiredKeys(node, "i18n", ["defaultLocale", "locales"]);
|
|
102
|
+
const locales = (0, import_jsonc_parser.findNodeAtLocation)(node, ["locales"]);
|
|
103
|
+
validationContext.assertNotEmptyArray(locales, "i18n.locales");
|
|
104
|
+
validationContext.assertUniqueIds([...locales?.children || []], "i18n.locales");
|
|
105
|
+
const defaultLocale = (0, import_jsonc_parser.findNodeAtLocation)(node, ["defaultLocale"]);
|
|
106
|
+
validationContext.assertNotEmptyString(defaultLocale, "i18n.defaultLocale");
|
|
107
|
+
const localeIds = locales?.children?.map((n) => (0, import_jsonc_parser.findNodeAtLocation)(n, ["id"])?.value) || [];
|
|
108
|
+
validationContext.assertDefaultInLocales(node, defaultLocale?.value, localeIds);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
94
111
|
function validateBundleConfig(node, validationContext) {
|
|
95
112
|
if (node) {
|
|
96
113
|
validationContext.assertIsObject(node, "bundleConfig");
|
|
@@ -213,6 +230,7 @@ function validateRoot(node, validationContext, preMerge) {
|
|
|
213
230
|
validateRouteHandlers((0, import_jsonc_parser.findNodeAtLocation)(node, ["routeHandlers"]), validationContext);
|
|
214
231
|
validateAssets((0, import_jsonc_parser.findNodeAtLocation)(node, ["assets"]), validationContext, preMerge);
|
|
215
232
|
validateLocker(lockerNode, validationContext);
|
|
233
|
+
validateI18NConfig((0, import_jsonc_parser.findNodeAtLocation)(node, ["i18n"]), validationContext, preMerge);
|
|
216
234
|
validateBundleConfig(bundleConfigNode, validationContext);
|
|
217
235
|
validationContext.assertClientLockerSSR(routes, lockerNode);
|
|
218
236
|
validationContext.assertNotEmptyString((0, import_jsonc_parser.findNodeAtLocation)(node, ["apiVersion"]), "apiVersion");
|
package/build/es/defaults.js
CHANGED
|
@@ -47,6 +47,14 @@ export const SSR_VIEW_TRANSFORM_PLUGIN = '@lwrjs/lwc-ssr/viewTransformer';
|
|
|
47
47
|
const DEFAULT_ASSET_PROVIDERS = ['@lwrjs/fs-asset-provider'];
|
|
48
48
|
const DEFAULT_ASSET_TRANSFORM_PLUGINS = ['@lwrjs/asset-transformer'];
|
|
49
49
|
const DEFAULT_URI_TRANSFORM_PLUGINS = [];
|
|
50
|
+
const DEFAULT_I18N_CONFIG = {
|
|
51
|
+
defaultLocale: 'en-US',
|
|
52
|
+
locales: [
|
|
53
|
+
{
|
|
54
|
+
id: 'en-US',
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
};
|
|
50
58
|
export const DEFAULT_AMD_LOADER = 'lwr/loader';
|
|
51
59
|
export const DEFAULT_AMD_LOADER_LEGACY = 'lwr/loaderLegacy';
|
|
52
60
|
export const DEFAULT_ESM_LOADER = 'lwr/esmLoader';
|
|
@@ -122,5 +130,6 @@ export const DEFAULT_LWR_CONFIG = {
|
|
|
122
130
|
serverType: DEFAULT_SERVER_TYPE,
|
|
123
131
|
locker: DEFAULT_LWR_LOCKER_CONFIG,
|
|
124
132
|
uriTransformers: DEFAULT_URI_TRANSFORM_PLUGINS,
|
|
133
|
+
i18n: DEFAULT_I18N_CONFIG,
|
|
125
134
|
};
|
|
126
135
|
//# sourceMappingURL=defaults.js.map
|
|
@@ -8,7 +8,7 @@ export const RUNTIME_CONFIGS = {
|
|
|
8
8
|
compat: '0',
|
|
9
9
|
debug: false,
|
|
10
10
|
watchFiles: true,
|
|
11
|
-
defaultLocale: '
|
|
11
|
+
defaultLocale: 'en-US',
|
|
12
12
|
hmrEnabled: true,
|
|
13
13
|
immutableAssets: false,
|
|
14
14
|
env: {
|
|
@@ -22,7 +22,7 @@ export const RUNTIME_CONFIGS = {
|
|
|
22
22
|
compat: '0',
|
|
23
23
|
debug: false,
|
|
24
24
|
watchFiles: false,
|
|
25
|
-
defaultLocale: '
|
|
25
|
+
defaultLocale: 'en-US',
|
|
26
26
|
hmrEnabled: false,
|
|
27
27
|
immutableAssets: true,
|
|
28
28
|
env: {
|
|
@@ -36,7 +36,7 @@ export const RUNTIME_CONFIGS = {
|
|
|
36
36
|
compat: '1',
|
|
37
37
|
debug: false,
|
|
38
38
|
watchFiles: true,
|
|
39
|
-
defaultLocale: '
|
|
39
|
+
defaultLocale: 'en-US',
|
|
40
40
|
hmrEnabled: false,
|
|
41
41
|
immutableAssets: false,
|
|
42
42
|
env: {
|
|
@@ -50,7 +50,7 @@ export const RUNTIME_CONFIGS = {
|
|
|
50
50
|
compat: '1',
|
|
51
51
|
debug: false,
|
|
52
52
|
watchFiles: false,
|
|
53
|
-
defaultLocale: '
|
|
53
|
+
defaultLocale: 'en-US',
|
|
54
54
|
hmrEnabled: false,
|
|
55
55
|
immutableAssets: true,
|
|
56
56
|
env: {
|
|
@@ -80,8 +80,9 @@ export function getServerModeConfig(serverMode) {
|
|
|
80
80
|
* @returns {RuntimeEnvironment} the complete runtime environment
|
|
81
81
|
*/
|
|
82
82
|
export function getRuntimeEnvironment(config) {
|
|
83
|
-
const { serverMode, lwrVersion, apiVersion, basePath, minify } = config;
|
|
83
|
+
const { serverMode, lwrVersion, apiVersion, basePath, i18n, minify } = config;
|
|
84
84
|
const serverModeConfig = getServerModeConfig(config.serverMode);
|
|
85
|
+
const defaultLocale = i18n.defaultLocale;
|
|
85
86
|
return {
|
|
86
87
|
...serverModeConfig,
|
|
87
88
|
minify: minify !== null ? minify : serverModeConfig.minify,
|
|
@@ -90,6 +91,7 @@ export function getRuntimeEnvironment(config) {
|
|
|
90
91
|
lwrVersion,
|
|
91
92
|
apiVersion,
|
|
92
93
|
basePath,
|
|
94
|
+
defaultLocale,
|
|
93
95
|
};
|
|
94
96
|
}
|
|
95
97
|
//# sourceMappingURL=runtime-config.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AssetDirConfig, AssetFileConfig, LwrErrorRoute, LwrRoute, NormalizedLwrGlobalConfig, NormalizedLwrAppBootstrapConfig, LwrLockerConfig, RouteHandlersConfig, BundleConfig } from '@lwrjs/types';
|
|
1
|
+
import type { AssetDirConfig, AssetFileConfig, LwrErrorRoute, LwrRoute, NormalizedLwrGlobalConfig, NormalizedLwrAppBootstrapConfig, LwrLockerConfig, RouteHandlersConfig, BundleConfig, I18NConfig } from '@lwrjs/types';
|
|
2
2
|
import { Node } from 'jsonc-parser';
|
|
3
3
|
import { Diagnostic } from '@lwrjs/diagnostics';
|
|
4
4
|
type RequiredAssetDirConfig = Required<AssetDirConfig>;
|
|
@@ -6,6 +6,7 @@ type RequiredAssetFileConfig = Required<AssetFileConfig>;
|
|
|
6
6
|
type RequiredLwrRoute = Required<LwrRoute>;
|
|
7
7
|
type RequiredLwrErrorRoute = Required<LwrErrorRoute>;
|
|
8
8
|
type RequiredLwrLockerConfig = Required<LwrLockerConfig>;
|
|
9
|
+
type RequiredI18NConfig = Required<I18NConfig>;
|
|
9
10
|
interface ConfigMap {
|
|
10
11
|
root: NormalizedLwrGlobalConfig;
|
|
11
12
|
assetDir: RequiredAssetDirConfig;
|
|
@@ -18,11 +19,13 @@ interface ConfigMap {
|
|
|
18
19
|
bundleConfig: BundleConfig;
|
|
19
20
|
'bundleConfig.external': BundleConfig;
|
|
20
21
|
'bundleConfig.groups': BundleConfig;
|
|
22
|
+
i18n: RequiredI18NConfig;
|
|
21
23
|
}
|
|
22
|
-
export declare const ROOT_ATTRIBUTE_KEYS: ["amdLoader", "apiVersion", "assets", "assetProviders", "assetTransformers", "bundleConfig", "bundleProviders", "cacheDir", "contentDir", "environment", "errorRoutes", "esmLoader", "staticSiteGenerator", "globalData", "globalDataDir", "hooks", "ignoreLwrConfigFile", "lwrConfigFile", "layoutsDir", "locker", "lwc", "lwrVersion", "moduleProviders", "port", "basePath", "resourceProviders", "rootDir", "routeHandlers", "routes", "serverMode", "minify", "serverType", "uriTransformers", "viewProviders", "viewTransformers"];
|
|
24
|
+
export declare const ROOT_ATTRIBUTE_KEYS: ["amdLoader", "apiVersion", "assets", "assetProviders", "assetTransformers", "bundleConfig", "bundleProviders", "cacheDir", "contentDir", "environment", "errorRoutes", "esmLoader", "staticSiteGenerator", "globalData", "globalDataDir", "hooks", "i18n", "ignoreLwrConfigFile", "lwrConfigFile", "layoutsDir", "locker", "lwc", "lwrVersion", "moduleProviders", "port", "basePath", "resourceProviders", "rootDir", "routeHandlers", "routes", "serverMode", "minify", "serverType", "uriTransformers", "viewProviders", "viewTransformers"];
|
|
23
25
|
export declare const ASSET_DIR_ATTRIBUTE_KEYS: ["alias", "dir", "urlPath", "root"];
|
|
24
26
|
export declare const ASSET_FILE_ATTRIBUTE_KEYS: ["alias", "file", "urlPath"];
|
|
25
27
|
export declare const LOCKER_ATTRIBUTE_KEYS: ["enabled", "trustedComponents", "clientOnly"];
|
|
28
|
+
export declare const I18N_ATTRIBUTE_KEYS: ["defaultLocale", "locales"];
|
|
26
29
|
export declare const ROUTE_ATTRIBUTE_KEYS: ["bootstrap", "subRoutes", "contentTemplate", "id", "cache", "layoutTemplate", "method", "path", "rootComponent", "routeHandler", "properties"];
|
|
27
30
|
export declare const ERROR_ROUTE_ATTRIBUTE_KEYS: ["bootstrap", "subRoutes", "contentTemplate", "id", "layoutTemplate", "rootComponent", "routeHandler", "status", "properties", "cache"];
|
|
28
31
|
export declare const BOOTSTRAP_ATTRIBUTE_KEYS: ["autoBoot", "syntheticShadow", "workers", "services", "configAsSrc", "ssr", "mixedMode", "module", "preloadModules"];
|
|
@@ -57,6 +60,7 @@ export declare class ValidationContext {
|
|
|
57
60
|
assertRequiredKeys(node: Node, property: string, requiredPropertyKeys: string[]): void;
|
|
58
61
|
assertValidKeys<T extends keyof ConfigMap>(node: Node, property: T, validPropertyKeys: (keyof ConfigMap[T])[]): void;
|
|
59
62
|
assertNoBundleConfigDupes(node: Node, dupes: string[]): void;
|
|
63
|
+
assertDefaultInLocales(node: Node, defaultLocale: string, localesIds: string[]): void;
|
|
60
64
|
}
|
|
61
65
|
export {};
|
|
62
66
|
//# sourceMappingURL=app-config-context.d.ts.map
|
|
@@ -23,6 +23,7 @@ export const ROOT_ATTRIBUTE_KEYS = createKeys('root', [
|
|
|
23
23
|
'globalData',
|
|
24
24
|
'globalDataDir',
|
|
25
25
|
'hooks',
|
|
26
|
+
'i18n',
|
|
26
27
|
'ignoreLwrConfigFile',
|
|
27
28
|
'lwrConfigFile',
|
|
28
29
|
'layoutsDir',
|
|
@@ -46,6 +47,7 @@ export const ROOT_ATTRIBUTE_KEYS = createKeys('root', [
|
|
|
46
47
|
export const ASSET_DIR_ATTRIBUTE_KEYS = createKeys('assetDir', ['alias', 'dir', 'urlPath', 'root']);
|
|
47
48
|
export const ASSET_FILE_ATTRIBUTE_KEYS = createKeys('assetFile', ['alias', 'file', 'urlPath']);
|
|
48
49
|
export const LOCKER_ATTRIBUTE_KEYS = createKeys('locker', ['enabled', 'trustedComponents', 'clientOnly']);
|
|
50
|
+
export const I18N_ATTRIBUTE_KEYS = createKeys('i18n', ['defaultLocale', 'locales']);
|
|
49
51
|
export const ROUTE_ATTRIBUTE_KEYS = createKeys('routes', [
|
|
50
52
|
'bootstrap',
|
|
51
53
|
'subRoutes',
|
|
@@ -429,5 +431,13 @@ export class ValidationContext {
|
|
|
429
431
|
});
|
|
430
432
|
}
|
|
431
433
|
}
|
|
434
|
+
assertDefaultInLocales(node, defaultLocale, localesIds) {
|
|
435
|
+
if (!localesIds.includes(defaultLocale)) {
|
|
436
|
+
this.diagnostics.push({
|
|
437
|
+
description: descriptions.CONFIG_PARSER.DEFAULT_NOT_IN_LOCALES(defaultLocale, localesIds),
|
|
438
|
+
location: this.getLocationFromNode(node),
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
}
|
|
432
442
|
}
|
|
433
443
|
//# sourceMappingURL=app-config-context.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { parseTree, printParseErrorCode, findNodeAtLocation as findNode, } from 'jsonc-parser';
|
|
2
2
|
import { createSingleDiagnosticError, descriptions, LwrConfigValidationError } from '@lwrjs/diagnostics';
|
|
3
|
-
import { ASSET_DIR_ATTRIBUTE_KEYS, ASSET_FILE_ATTRIBUTE_KEYS, BOOTSTRAP_ATTRIBUTE_KEYS, ERROR_ROUTE_ATTRIBUTE_KEYS, LOCKER_ATTRIBUTE_KEYS, ROOT_ATTRIBUTE_KEYS, ROUTE_ATTRIBUTE_KEYS, ValidationContext, } from './app-config-context.js';
|
|
3
|
+
import { ASSET_DIR_ATTRIBUTE_KEYS, ASSET_FILE_ATTRIBUTE_KEYS, BOOTSTRAP_ATTRIBUTE_KEYS, ERROR_ROUTE_ATTRIBUTE_KEYS, I18N_ATTRIBUTE_KEYS, LOCKER_ATTRIBUTE_KEYS, ROOT_ATTRIBUTE_KEYS, ROUTE_ATTRIBUTE_KEYS, ValidationContext, } from './app-config-context.js';
|
|
4
4
|
import { calculatePositionFromSource } from './helpers.js';
|
|
5
5
|
import { DEFAULT_ESM_BUNDLE_EXCLUSIONS, DEFAULT_AMD_BUNDLE_EXCLUSIONS } from '../defaults.js';
|
|
6
6
|
import { ConfigSpan, getTracer } from '@lwrjs/instrumentation';
|
|
@@ -96,6 +96,28 @@ function validateRoutes(node, validationContext, preMerge) {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
+
function validateI18NConfig(node, validationContext, preMerge) {
|
|
100
|
+
if (node) {
|
|
101
|
+
// i18n may not be defined until after config hooks are applied
|
|
102
|
+
// note: there are 2 "post" hooks (onConfig/onStart) that i18n can be applied.
|
|
103
|
+
// We need to ensure that we only validate after the last one (if both are used)
|
|
104
|
+
if (!preMerge) {
|
|
105
|
+
validationContext.assertIsObject(node, 'i18n');
|
|
106
|
+
}
|
|
107
|
+
validationContext.assertIsObject(node, 'i18n');
|
|
108
|
+
validationContext.assertValidKeys(node, 'i18n', I18N_ATTRIBUTE_KEYS);
|
|
109
|
+
validationContext.assertRequiredKeys(node, 'i18n', ['defaultLocale', 'locales']);
|
|
110
|
+
// Validate locales
|
|
111
|
+
const locales = findNode(node, ['locales']);
|
|
112
|
+
validationContext.assertNotEmptyArray(locales, 'i18n.locales');
|
|
113
|
+
validationContext.assertUniqueIds([...(locales?.children || [])], 'i18n.locales');
|
|
114
|
+
// Validate defaultLocale
|
|
115
|
+
const defaultLocale = findNode(node, ['defaultLocale']);
|
|
116
|
+
validationContext.assertNotEmptyString(defaultLocale, 'i18n.defaultLocale');
|
|
117
|
+
const localeIds = locales?.children?.map((n) => findNode(n, ['id'])?.value) || [];
|
|
118
|
+
validationContext.assertDefaultInLocales(node, defaultLocale?.value, localeIds);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
99
121
|
function validateBundleConfig(node, validationContext) {
|
|
100
122
|
if (node) {
|
|
101
123
|
validationContext.assertIsObject(node, 'bundleConfig');
|
|
@@ -274,6 +296,7 @@ function validateRoot(node, validationContext, preMerge) {
|
|
|
274
296
|
validateRouteHandlers(findNode(node, ['routeHandlers']), validationContext);
|
|
275
297
|
validateAssets(findNode(node, ['assets']), validationContext, preMerge);
|
|
276
298
|
validateLocker(lockerNode, validationContext);
|
|
299
|
+
validateI18NConfig(findNode(node, ['i18n']), validationContext, preMerge);
|
|
277
300
|
validateBundleConfig(bundleConfigNode, validationContext);
|
|
278
301
|
validationContext.assertClientLockerSSR(routes, lockerNode);
|
|
279
302
|
validationContext.assertNotEmptyString(findNode(node, ['apiVersion']), 'apiVersion');
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "0.11.0-alpha.
|
|
7
|
+
"version": "0.11.0-alpha.4",
|
|
8
8
|
"homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
@@ -41,14 +41,14 @@
|
|
|
41
41
|
"test": "jest"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@lwrjs/diagnostics": "0.11.0-alpha.
|
|
45
|
-
"@lwrjs/instrumentation": "0.11.0-alpha.
|
|
46
|
-
"@lwrjs/shared-utils": "0.11.0-alpha.
|
|
44
|
+
"@lwrjs/diagnostics": "0.11.0-alpha.4",
|
|
45
|
+
"@lwrjs/instrumentation": "0.11.0-alpha.4",
|
|
46
|
+
"@lwrjs/shared-utils": "0.11.0-alpha.4",
|
|
47
47
|
"fs-extra": "^11.1.1",
|
|
48
48
|
"jsonc-parser": "^3.0.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@lwrjs/types": "0.11.0-alpha.
|
|
51
|
+
"@lwrjs/types": "0.11.0-alpha.4",
|
|
52
52
|
"jest": "^26.6.3",
|
|
53
53
|
"ts-jest": "^26.5.6"
|
|
54
54
|
},
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"volta": {
|
|
62
62
|
"extends": "../../../package.json"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "89a7e9815e0e381d9fd67212f0471d9a11f73985"
|
|
65
65
|
}
|