@aidc-toolkit/core 1.0.23-beta → 1.0.24-beta

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.
@@ -1,174 +0,0 @@
1
- import I18nextBrowserLanguageDetector from "i18next-browser-languagedetector";
2
- import I18nextCLILanguageDetector from "i18next-cli-language-detector";
3
- /**
4
- * Internationalization operating environments.
5
- */
6
- export const I18nEnvironments = {
7
- /**
8
- * Command-line interface (e.g., unit tests).
9
- */
10
- CLI: 0,
11
- /**
12
- * Web server.
13
- */
14
- Server: 1,
15
- /**
16
- * Web browser.
17
- */
18
- Browser: 2
19
- };
20
- /**
21
- * Parse parameter names in a resource string.
22
- *
23
- * @param s
24
- * Resource string.
25
- *
26
- * @returns
27
- * Array of parameter names.
28
- */
29
- function parseParameterNames(s) {
30
- const parameterRegExp = /\{\{.+?}}/g;
31
- const parameterNames = [];
32
- let match;
33
- while ((match = parameterRegExp.exec(s)) !== null) {
34
- parameterNames.push(match[1]);
35
- }
36
- return parameterNames;
37
- }
38
- /**
39
- * Assert that language resources are a type match for English (default) resources.
40
- *
41
- * @param enResources
42
- * English resources.
43
- *
44
- * @param lng
45
- * Language.
46
- *
47
- * @param lngResources
48
- * Language resources.
49
- *
50
- * @param parent
51
- * Parent key name (set recursively).
52
- */
53
- export function i18nAssertValidResources(enResources, lng, lngResources, parent) {
54
- const enResourcesMap = new Map(Object.entries(enResources));
55
- const lngResourcesMap = new Map(Object.entries(lngResources));
56
- const isLocale = lng.includes("-");
57
- for (const [enKey, enValue] of enResourcesMap) {
58
- const enFullKey = `${parent === undefined ? "" : `${parent}.`}${enKey}`;
59
- const lngValue = lngResourcesMap.get(enKey);
60
- if (lngValue !== undefined) {
61
- const enValueType = typeof enValue;
62
- const lngValueType = typeof lngValue;
63
- if (lngValueType !== enValueType) {
64
- throw new Error(`Mismatched value type ${lngValueType} for key ${enFullKey} in ${lng} resources (expected ${enValueType})`);
65
- }
66
- if (enValueType === "string") {
67
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Value is known to be string.
68
- const enParameterNames = parseParameterNames(enValue);
69
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Value is known to be string.
70
- const lngParameterNames = parseParameterNames(lngValue);
71
- for (const enParameterName of enParameterNames) {
72
- if (!lngParameterNames.includes(enParameterName)) {
73
- throw new Error(`Missing parameter ${enParameterName} for key ${enFullKey} in ${lng} resources`);
74
- }
75
- }
76
- for (const lngParameterName of lngParameterNames) {
77
- if (!enParameterNames.includes(lngParameterName)) {
78
- throw new Error(`Extraneous parameter ${lngParameterName} for key ${enFullKey} in ${lng} resources`);
79
- }
80
- }
81
- }
82
- else if (enValueType === "object") {
83
- i18nAssertValidResources(enValue, lng, lngValue, `${parent === undefined ? "" : `${parent}.`}${enKey}`);
84
- }
85
- // Locale falls back to raw language so ignore if missing.
86
- }
87
- else if (!isLocale) {
88
- throw new Error(`Missing key ${enFullKey} in ${lng} resources`);
89
- }
90
- }
91
- for (const [lngKey] of lngResourcesMap) {
92
- if (!enResourcesMap.has(lngKey)) {
93
- throw new Error(`Extraneous key ${parent === undefined ? "" : `${parent}.`}${lngKey} in ${lng} resources`);
94
- }
95
- }
96
- }
97
- /**
98
- * Convert a string to lower case, skipping words that are all upper case.
99
- *
100
- * @param s
101
- * String.
102
- *
103
- * @returns
104
- * Lower case string.
105
- */
106
- function toLowerCase(s) {
107
- // Words with no lower case letters are preserved as they are likely mnemonics.
108
- return s.split(" ").map(word => /[a-z]/.test(word) ? word.toLowerCase() : word).join(" ");
109
- }
110
- /**
111
- * Initialize internationalization.
112
- *
113
- * @param i18next
114
- * Internationalization object. As multiple objects exists, this parameter represents the one for the module for which
115
- * internationalization is being initialized.
116
- *
117
- * @param environment
118
- * Environment in which the application is running.
119
- *
120
- * @param debug
121
- * Debug setting.
122
- *
123
- * @param defaultNS
124
- * Default namespace.
125
- *
126
- * @param resources
127
- * Resources.
128
- *
129
- * @returns
130
- * Void promise.
131
- */
132
- export async function i18nCoreInit(i18next, environment, debug, defaultNS, ...resources) {
133
- // Initialization may be called more than once.
134
- if (!i18next.isInitialized) {
135
- const mergedResource = {};
136
- // Merge resources.
137
- for (const resource of resources) {
138
- // Merge languages.
139
- for (const [language, resourceLanguage] of Object.entries(resource)) {
140
- if (!(language in mergedResource)) {
141
- mergedResource[language] = {};
142
- }
143
- const mergedResourceLanguage = mergedResource[language];
144
- // Merge namespaces.
145
- for (const [namespace, resourceKey] of Object.entries(resourceLanguage)) {
146
- mergedResourceLanguage[namespace] = resourceKey;
147
- }
148
- }
149
- }
150
- let module;
151
- switch (environment) {
152
- case I18nEnvironments.CLI:
153
- // TODO Refactor when https://github.com/neet/i18next-cli-language-detector/issues/281 resolved.
154
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Per above.
155
- module = I18nextCLILanguageDetector;
156
- break;
157
- case I18nEnvironments.Browser:
158
- module = I18nextBrowserLanguageDetector;
159
- break;
160
- default:
161
- throw new Error("Not supported");
162
- }
163
- await i18next.use(module).init({
164
- debug,
165
- resources: mergedResource,
166
- fallbackLng: "en",
167
- defaultNS
168
- }).then(() => {
169
- // Add toLowerCase function.
170
- i18next.services.formatter?.add("toLowerCase", value => typeof value === "string" ? toLowerCase(value) : String(value));
171
- });
172
- }
173
- }
174
- //# sourceMappingURL=i18n.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/locale/i18n.ts"],"names":[],"mappings":"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"}