@ankhorage/orchestrator-module-expo-localization 0.2.0 → 0.4.0
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/CHANGELOG.md +12 -0
- package/README.md +32 -2
- package/dist/admin/configOperations.d.ts +8 -0
- package/dist/admin/configOperations.d.ts.map +1 -0
- package/dist/admin/configOperations.js +19 -0
- package/dist/admin/configOperations.js.map +1 -0
- package/dist/admin/dictionaryOperations.d.ts +14 -0
- package/dist/admin/dictionaryOperations.d.ts.map +1 -0
- package/dist/admin/dictionaryOperations.js +10 -0
- package/dist/admin/dictionaryOperations.js.map +1 -0
- package/dist/admin/linkTranslationKey.d.ts +6 -0
- package/dist/admin/linkTranslationKey.d.ts.map +1 -0
- package/dist/admin/linkTranslationKey.js +60 -0
- package/dist/admin/linkTranslationKey.js.map +1 -0
- package/dist/admin/load.d.ts +3 -0
- package/dist/admin/load.d.ts.map +1 -0
- package/dist/admin/load.js +28 -0
- package/dist/admin/load.js.map +1 -0
- package/dist/admin/runtime.d.ts +17 -0
- package/dist/admin/runtime.d.ts.map +1 -0
- package/dist/admin/runtime.js +109 -0
- package/dist/admin/runtime.js.map +1 -0
- package/dist/admin/types.d.ts +43 -0
- package/dist/admin/types.d.ts.map +1 -0
- package/dist/admin/types.js +2 -0
- package/dist/admin/types.js.map +1 -0
- package/dist/authoring.d.ts +56 -0
- package/dist/authoring.d.ts.map +1 -0
- package/dist/authoring.js +76 -0
- package/dist/authoring.js.map +1 -0
- package/dist/config.d.ts +13 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +73 -21
- package/dist/config.js.map +1 -1
- package/dist/host.d.ts +7 -10
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +7 -23
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +14 -2
- package/dist/module.js.map +1 -1
- package/dist/resources.d.ts +40 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +209 -0
- package/dist/resources.js.map +1 -0
- package/package.json +2 -2
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4BAA4B;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4BAA4B;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,sCAAsC;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,OAAO,GACb,sCAAsC,CAaxC;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMrE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,4BAA4B,EACpC,WAAW,EAAE,MAAM,GAClB,sCAAsC,CAOxC;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,4BAA4B,EACpC,WAAW,EAAE,MAAM,GAClB,sCAAsC,CAkBxC;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,4BAA4B,EACpC,WAAW,EAAE,MAAM,GAClB,sCAAsC,CASxC"}
|
package/dist/config.js
CHANGED
|
@@ -1,28 +1,80 @@
|
|
|
1
|
+
export class ExpoLocalizationConfigError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = 'ExpoLocalizationConfigError';
|
|
5
|
+
}
|
|
6
|
+
}
|
|
1
7
|
export function parseExpoLocalizationModuleConfig(input) {
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
const record = isRecord(input) ? input : {};
|
|
9
|
+
const parsedDefaultLocale = parseLocale(record.defaultLocale);
|
|
10
|
+
const locales = Array.isArray(record.locales)
|
|
11
|
+
? uniqueLocales(record.locales.map(parseLocale).filter(isDefined))
|
|
12
|
+
: [];
|
|
13
|
+
const defaultLocale = parsedDefaultLocale ?? locales[0] ?? 'en';
|
|
14
|
+
if (!locales.includes(defaultLocale)) {
|
|
15
|
+
locales.push(defaultLocale);
|
|
16
|
+
}
|
|
17
|
+
return { defaultLocale, locales };
|
|
18
|
+
}
|
|
19
|
+
export function normalizeExpoLocalizationLocale(input) {
|
|
20
|
+
const locale = parseLocale(input);
|
|
21
|
+
if (!locale) {
|
|
22
|
+
throw new ExpoLocalizationConfigError(`Invalid locale: ${JSON.stringify(input)}.`);
|
|
23
|
+
}
|
|
24
|
+
return locale;
|
|
25
|
+
}
|
|
26
|
+
export function addExpoLocalizationLocale(config, localeInput) {
|
|
27
|
+
const normalized = parseExpoLocalizationModuleConfig(config);
|
|
28
|
+
const locale = normalizeExpoLocalizationLocale(localeInput);
|
|
29
|
+
if (!normalized.locales.includes(locale)) {
|
|
30
|
+
normalized.locales.push(locale);
|
|
31
|
+
}
|
|
32
|
+
return normalized;
|
|
33
|
+
}
|
|
34
|
+
export function removeExpoLocalizationLocale(config, localeInput) {
|
|
35
|
+
const normalized = parseExpoLocalizationModuleConfig(config);
|
|
36
|
+
const locale = normalizeExpoLocalizationLocale(localeInput);
|
|
37
|
+
if (!normalized.locales.includes(locale)) {
|
|
38
|
+
return normalized;
|
|
39
|
+
}
|
|
40
|
+
if (normalized.locales.length === 1) {
|
|
41
|
+
throw new ExpoLocalizationConfigError('The final configured locale cannot be removed.');
|
|
42
|
+
}
|
|
43
|
+
const locales = normalized.locales.filter((candidate) => candidate !== locale);
|
|
20
44
|
return {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
45
|
+
locales,
|
|
46
|
+
defaultLocale: normalized.defaultLocale === locale
|
|
47
|
+
? (locales[0] ?? normalized.defaultLocale)
|
|
48
|
+
: normalized.defaultLocale,
|
|
24
49
|
};
|
|
25
50
|
}
|
|
51
|
+
export function setExpoLocalizationDefaultLocale(config, localeInput) {
|
|
52
|
+
const normalized = parseExpoLocalizationModuleConfig(config);
|
|
53
|
+
const defaultLocale = normalizeExpoLocalizationLocale(localeInput);
|
|
54
|
+
if (!normalized.locales.includes(defaultLocale)) {
|
|
55
|
+
throw new ExpoLocalizationConfigError(`Default locale ${JSON.stringify(defaultLocale)} is not configured.`);
|
|
56
|
+
}
|
|
57
|
+
return { ...normalized, defaultLocale };
|
|
58
|
+
}
|
|
59
|
+
function parseLocale(input) {
|
|
60
|
+
if (typeof input !== 'string')
|
|
61
|
+
return undefined;
|
|
62
|
+
const candidate = input.trim().replaceAll('_', '-');
|
|
63
|
+
if (!candidate)
|
|
64
|
+
return undefined;
|
|
65
|
+
try {
|
|
66
|
+
return Intl.getCanonicalLocales(candidate)[0];
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function uniqueLocales(locales) {
|
|
73
|
+
return [...new Set(locales)];
|
|
74
|
+
}
|
|
75
|
+
function isDefined(value) {
|
|
76
|
+
return value !== undefined;
|
|
77
|
+
}
|
|
26
78
|
function isRecord(value) {
|
|
27
79
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
28
80
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,iCAAiC,CAC/C,KAAc;IAEd,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3C,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,aAAa,GAAG,mBAAmB,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAEhE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAa;IAC3D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,2BAA2B,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAAoC,EACpC,WAAmB;IAEnB,MAAM,UAAU,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAoC,EACpC,WAAmB;IAEnB,MAAM,UAAU,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,2BAA2B,CAAC,gDAAgD,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC;IAC/E,OAAO;QACL,OAAO;QACP,aAAa,EACX,UAAU,CAAC,aAAa,KAAK,MAAM;YACjC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC;YAC1C,CAAC,CAAC,UAAU,CAAC,aAAa;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAAoC,EACpC,WAAmB;IAEnB,MAAM,UAAU,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,2BAA2B,CACnC,kBAAkB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,qBAAqB,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,UAAU,EAAE,aAAa,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAA0B;IAC/C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAI,KAAoB;IACxC,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
package/dist/host.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { parseExpoLocalizationModuleConfig } from './config';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* The core module remains independently usable from the package root.
|
|
5
|
-
*/
|
|
2
|
+
export { EXPO_LOCALIZATION_ADMIN_OPERATIONS, type ExpoLocalizationAdminAuthoringContext, type ExpoLocalizationAdminHostContext, type ExpoLocalizationAdminInvocation, type ExpoLocalizationAdminLoadOptions, expoLocalizationAdminRuntime, type ExpoLocalizationAdminSnapshot, type ExpoLocalizationLinkTranslationInput, type ExpoLocalizationManifestFieldMutation, } from './admin/runtime';
|
|
3
|
+
/** Optional package-owned data consumed by generic authoring hosts. */
|
|
6
4
|
export declare const expoLocalizationHostContribution: {
|
|
7
5
|
readonly id: "expo-localization";
|
|
8
6
|
readonly name: "Localization (Expo)";
|
|
@@ -18,7 +16,7 @@ export declare const expoLocalizationHostContribution: {
|
|
|
18
16
|
readonly admin: {
|
|
19
17
|
readonly kind: "config-schema";
|
|
20
18
|
readonly title: "Localization";
|
|
21
|
-
readonly description: "Configure supported locales
|
|
19
|
+
readonly description: "Configure supported locales and the default locale.";
|
|
22
20
|
readonly fields: readonly [{
|
|
23
21
|
readonly key: "defaultLocale";
|
|
24
22
|
readonly label: "Default locale";
|
|
@@ -29,12 +27,11 @@ export declare const expoLocalizationHostContribution: {
|
|
|
29
27
|
readonly label: "Locales";
|
|
30
28
|
readonly control: "string-list";
|
|
31
29
|
readonly required: true;
|
|
32
|
-
}, {
|
|
33
|
-
readonly key: "translations";
|
|
34
|
-
readonly label: "Translations";
|
|
35
|
-
readonly control: "locale-string-map";
|
|
36
|
-
readonly required: false;
|
|
37
30
|
}];
|
|
38
31
|
};
|
|
32
|
+
readonly adminRuntime: {
|
|
33
|
+
readonly kind: "module-admin-runtime";
|
|
34
|
+
readonly execute: (context: import("./host").ExpoLocalizationAdminHostContext, invocation: import("./host").ExpoLocalizationAdminInvocation) => Promise<unknown>;
|
|
35
|
+
};
|
|
39
36
|
};
|
|
40
37
|
//# sourceMappingURL=host.d.ts.map
|
package/dist/host.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,UAAU,CAAC;AAG7D,OAAO,EACL,kCAAkC,EAClC,KAAK,qCAAqC,EAC1C,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EACrC,4BAA4B,EAC5B,KAAK,6BAA6B,EAClC,KAAK,oCAAoC,EACzC,KAAK,qCAAqC,GAC3C,MAAM,iBAAiB,CAAC;AAEzB,uEAAuE;AACvE,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBnC,CAAC"}
|
package/dist/host.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
import { expoLocalizationAdminRuntime } from './admin/runtime';
|
|
1
2
|
import { parseExpoLocalizationModuleConfig } from './config';
|
|
2
3
|
import { EXPO_LOCALIZATION_MODULE_ID, expoLocalizationModule } from './module';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* The core module remains independently usable from the package root.
|
|
6
|
-
*/
|
|
4
|
+
export { EXPO_LOCALIZATION_ADMIN_OPERATIONS, expoLocalizationAdminRuntime, } from './admin/runtime';
|
|
5
|
+
/** Optional package-owned data consumed by generic authoring hosts. */
|
|
7
6
|
export const expoLocalizationHostContribution = {
|
|
8
7
|
id: EXPO_LOCALIZATION_MODULE_ID,
|
|
9
8
|
name: 'Localization (Expo)',
|
|
@@ -19,27 +18,12 @@ export const expoLocalizationHostContribution = {
|
|
|
19
18
|
admin: {
|
|
20
19
|
kind: 'config-schema',
|
|
21
20
|
title: 'Localization',
|
|
22
|
-
description: 'Configure supported locales
|
|
21
|
+
description: 'Configure supported locales and the default locale.',
|
|
23
22
|
fields: [
|
|
24
|
-
{
|
|
25
|
-
|
|
26
|
-
label: 'Default locale',
|
|
27
|
-
control: 'text',
|
|
28
|
-
required: true,
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
key: 'locales',
|
|
32
|
-
label: 'Locales',
|
|
33
|
-
control: 'string-list',
|
|
34
|
-
required: true,
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
key: 'translations',
|
|
38
|
-
label: 'Translations',
|
|
39
|
-
control: 'locale-string-map',
|
|
40
|
-
required: false,
|
|
41
|
-
},
|
|
23
|
+
{ key: 'defaultLocale', label: 'Default locale', control: 'text', required: true },
|
|
24
|
+
{ key: 'locales', label: 'Locales', control: 'string-list', required: true },
|
|
42
25
|
],
|
|
43
26
|
},
|
|
27
|
+
adminRuntime: expoLocalizationAdminRuntime,
|
|
44
28
|
};
|
|
45
29
|
//# sourceMappingURL=host.js.map
|
package/dist/host.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAE/E
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAE/E,OAAO,EACL,kCAAkC,EAKlC,4BAA4B,GAI7B,MAAM,iBAAiB,CAAC;AAEzB,uEAAuE;AACvE,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,EAAE,EAAE,2BAA2B;IAC/B,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,kEAAkE;IAC/E,UAAU,EAAE,sBAAsB;IAClC,eAAe,EAAE,iCAAiC;IAClD,MAAM,EAAE;QACN,OAAO,EAAE,CAAC,sEAAsE,CAAC;QACjF,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,CAAC,8BAA8B,CAAC;QAC/C,WAAW,EAAE,CAAC,+BAA+B,CAAC;KAC/C;IACD,KAAK,EAAE;QACL,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,qDAAqD;QAClE,MAAM,EAAE;YACN,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClF,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC7E;KACF;IACD,YAAY,EAAE,4BAA4B;CAClC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export { type
|
|
1
|
+
export { collectExpoLocalizationTranslatableFields, createExpoLocalizationKeyFromText, type ExpoLocalizationComponentMeta, type ExpoLocalizationComponentMetaField, type ExpoLocalizationComponentMetaRegistry, type ExpoLocalizationFieldFilter, type ExpoLocalizationManifestNode, type ExpoLocalizationManifestScreen, type ExpoLocalizationMissingTranslation, type ExpoLocalizationTranslatableField, filterExpoLocalizationTranslatableFields, findExpoLocalizationMissingTranslations, } from './authoring';
|
|
2
|
+
export { addExpoLocalizationLocale, ExpoLocalizationConfigError, type ExpoLocalizationModuleConfig, type NormalizedExpoLocalizationModuleConfig, normalizeExpoLocalizationLocale, parseExpoLocalizationModuleConfig, removeExpoLocalizationLocale, setExpoLocalizationDefaultLocale, } from './config';
|
|
2
3
|
export { EXPO_LOCALIZATION_MODULE_ID, expoLocalizationModule } from './module';
|
|
4
|
+
export { deleteExpoLocalizationTranslation, EXPO_LOCALIZATION_RESOURCE_DIRECTORY, type ExpoLocalizationDictionaries, type ExpoLocalizationDictionary, ExpoLocalizationResourceError, readExpoLocalizationDictionaries, readExpoLocalizationDictionary, resolveExpoLocalizationDictionaryPath, setExpoLocalizationTranslation, writeExpoLocalizationDictionary, } from './resources';
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EACzC,iCAAiC,EACjC,KAAK,6BAA6B,EAClC,KAAK,kCAAkC,EACvC,KAAK,qCAAqC,EAC1C,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,EACtC,wCAAwC,EACxC,uCAAuC,GACxC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,KAAK,4BAA4B,EACjC,KAAK,sCAAsC,EAC3C,+BAA+B,EAC/B,iCAAiC,EACjC,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EACL,iCAAiC,EACjC,oCAAoC,EACpC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,6BAA6B,EAC7B,gCAAgC,EAChC,8BAA8B,EAC9B,qCAAqC,EACrC,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { collectExpoLocalizationTranslatableFields, createExpoLocalizationKeyFromText, filterExpoLocalizationTranslatableFields, findExpoLocalizationMissingTranslations, } from './authoring';
|
|
2
|
+
export { addExpoLocalizationLocale, ExpoLocalizationConfigError, normalizeExpoLocalizationLocale, parseExpoLocalizationModuleConfig, removeExpoLocalizationLocale, setExpoLocalizationDefaultLocale, } from './config';
|
|
2
3
|
export { EXPO_LOCALIZATION_MODULE_ID, expoLocalizationModule } from './module';
|
|
4
|
+
export { deleteExpoLocalizationTranslation, EXPO_LOCALIZATION_RESOURCE_DIRECTORY, ExpoLocalizationResourceError, readExpoLocalizationDictionaries, readExpoLocalizationDictionary, resolveExpoLocalizationDictionaryPath, setExpoLocalizationTranslation, writeExpoLocalizationDictionary, } from './resources';
|
|
3
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EACzC,iCAAiC,EASjC,wCAAwC,EACxC,uCAAuC,GACxC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAG3B,+BAA+B,EAC/B,iCAAiC,EACjC,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EACL,iCAAiC,EACjC,oCAAoC,EAGpC,6BAA6B,EAC7B,gCAAgC,EAChC,8BAA8B,EAC9B,qCAAqC,EACrC,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,aAAa,CAAC"}
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEjG,OAAO,EAAE,KAAK,4BAA4B,EAAqC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEjG,OAAO,EAAE,KAAK,4BAA4B,EAAqC,MAAM,UAAU,CAAC;AAIhG,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAE/D,eAAO,MAAM,sBAAsB,EAAE,gBAAgB,CAAC,4BAA4B,CAqE9E,CAAC"}
|
package/dist/module.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { defineModule } from '@ankhorage/orchestrator';
|
|
2
2
|
import { parseExpoLocalizationModuleConfig } from './config';
|
|
3
|
+
import { readExpoLocalizationResourceSeeds } from './resources';
|
|
3
4
|
import { buildLocalizationWriteFiles } from './templateFiles';
|
|
4
5
|
export const EXPO_LOCALIZATION_MODULE_ID = 'expo-localization';
|
|
5
6
|
export const expoLocalizationModule = defineModule({
|
|
6
7
|
id: EXPO_LOCALIZATION_MODULE_ID,
|
|
7
|
-
plan(context) {
|
|
8
|
+
async plan(context) {
|
|
8
9
|
const config = parseExpoLocalizationModuleConfig(context.config);
|
|
10
|
+
const translations = await readExpoLocalizationResourceSeeds({
|
|
11
|
+
projectRoot: context.projectRoot,
|
|
12
|
+
locales: config.locales,
|
|
13
|
+
legacyTranslations: readLegacyTranslations(context.config),
|
|
14
|
+
});
|
|
9
15
|
return [
|
|
10
16
|
{
|
|
11
17
|
type: 'ensure-packages',
|
|
@@ -20,7 +26,7 @@ export const expoLocalizationModule = defineModule({
|
|
|
20
26
|
files: buildLocalizationWriteFiles({
|
|
21
27
|
defaultLocale: config.defaultLocale,
|
|
22
28
|
locales: config.locales,
|
|
23
|
-
translations
|
|
29
|
+
translations,
|
|
24
30
|
}),
|
|
25
31
|
},
|
|
26
32
|
{
|
|
@@ -65,4 +71,10 @@ export const expoLocalizationModule = defineModule({
|
|
|
65
71
|
];
|
|
66
72
|
},
|
|
67
73
|
});
|
|
74
|
+
function readLegacyTranslations(config) {
|
|
75
|
+
return isRecord(config) ? config.translations : undefined;
|
|
76
|
+
}
|
|
77
|
+
function isRecord(value) {
|
|
78
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
79
|
+
}
|
|
68
80
|
//# sourceMappingURL=module.js.map
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4C,MAAM,yBAAyB,CAAC;AAEjG,OAAO,EAAqC,iCAAiC,EAAE,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D,MAAM,CAAC,MAAM,sBAAsB,GACjC,YAAY,CAA+B;IACzC,EAAE,EAAE,2BAA2B;IAC/B,IAAI,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4C,MAAM,yBAAyB,CAAC;AAEjG,OAAO,EAAqC,iCAAiC,EAAE,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D,MAAM,CAAC,MAAM,sBAAsB,GACjC,YAAY,CAA+B;IACzC,EAAE,EAAE,2BAA2B;IAC/B,KAAK,CAAC,IAAI,CAAC,OAAO;QAChB,MAAM,MAAM,GAAG,iCAAiC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,MAAM,iCAAiC,CAAC;YAC3D,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,kBAAkB,EAAE,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC;SAC3D,CAAC,CAAC;QAEH,OAAO;YACL;gBACE,IAAI,EAAE,iBAAiB;gBACvB,GAAG,EAAE;oBACH,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE;oBACxC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE;oBAC7C,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,EAAE;iBAClD;aACF;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,2BAA2B,CAAC;oBACjC,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY;iBACb,CAAC;aACH;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,GAAG,2BAA2B,qBAAqB;gBAC5D,OAAO,EAAE,sEAAsE;gBAC/E,MAAM,EAAE;oBACN,IAAI,EAAE,kDAAkD;oBACxD,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,GAAG,2BAA2B,uBAAuB;gBAC9D,OAAO,EAAE,+EAA+E;gBACxF,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,GAAG,2BAA2B,cAAc;gBACrD,OAAO,EAAE,0BAA0B;gBACnC,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,OAAO;iBAClB;aACF;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,kBAAkB;gBACxB,QAAQ,EAAE,uBAAuB;gBACjC,KAAK,EAAE;oBACL,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEL,SAAS,sBAAsB,CAAC,MAAe;IAC7C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type ExpoLocalizationDictionary = Record<string, string>;
|
|
2
|
+
export type ExpoLocalizationDictionaries = Record<string, ExpoLocalizationDictionary>;
|
|
3
|
+
export declare const EXPO_LOCALIZATION_RESOURCE_DIRECTORY = "src/modules/localization/locales";
|
|
4
|
+
export declare class ExpoLocalizationResourceError extends Error {
|
|
5
|
+
constructor(message: string, options?: ErrorOptions);
|
|
6
|
+
}
|
|
7
|
+
export declare function resolveExpoLocalizationDictionaryPath(args: {
|
|
8
|
+
readonly projectRoot: string;
|
|
9
|
+
readonly locale: string;
|
|
10
|
+
}): string;
|
|
11
|
+
export declare function readExpoLocalizationDictionary(args: {
|
|
12
|
+
readonly projectRoot: string;
|
|
13
|
+
readonly locale: string;
|
|
14
|
+
}): Promise<ExpoLocalizationDictionary>;
|
|
15
|
+
export declare function readExpoLocalizationDictionaries(args: {
|
|
16
|
+
readonly projectRoot: string;
|
|
17
|
+
readonly locales: readonly string[];
|
|
18
|
+
}): Promise<ExpoLocalizationDictionaries>;
|
|
19
|
+
export declare function writeExpoLocalizationDictionary(args: {
|
|
20
|
+
readonly projectRoot: string;
|
|
21
|
+
readonly locale: string;
|
|
22
|
+
readonly dictionary: Readonly<Record<string, string>>;
|
|
23
|
+
}): Promise<ExpoLocalizationDictionary>;
|
|
24
|
+
export declare function setExpoLocalizationTranslation(args: {
|
|
25
|
+
readonly projectRoot: string;
|
|
26
|
+
readonly locale: string;
|
|
27
|
+
readonly key: string;
|
|
28
|
+
readonly value: string;
|
|
29
|
+
}): Promise<ExpoLocalizationDictionary>;
|
|
30
|
+
export declare function deleteExpoLocalizationTranslation(args: {
|
|
31
|
+
readonly projectRoot: string;
|
|
32
|
+
readonly locale: string;
|
|
33
|
+
readonly key: string;
|
|
34
|
+
}): Promise<ExpoLocalizationDictionary>;
|
|
35
|
+
export declare function readExpoLocalizationResourceSeeds(args: {
|
|
36
|
+
readonly projectRoot: string;
|
|
37
|
+
readonly locales: readonly string[];
|
|
38
|
+
readonly legacyTranslations?: unknown;
|
|
39
|
+
}): Promise<ExpoLocalizationDictionaries>;
|
|
40
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAChE,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AAEtF,eAAO,MAAM,oCAAoC,qCAAqC,CAAC;AAEvF,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED,wBAAgB,qCAAqC,CAAC,IAAI,EAAE;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAGT;AAED,wBAAsB,8BAA8B,CAAC,IAAI,EAAE;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAEtC;AAED,wBAAsB,gCAAgC,CAAC,IAAI,EAAE;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAUxC;AAED,wBAAsB,+BAA+B,CAAC,IAAI,EAAE;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAoBtC;AAED,wBAAsB,8BAA8B,CAAC,IAAI,EAAE;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAOtC;AAED,wBAAsB,iCAAiC,CAAC,IAAI,EAAE;IAC5D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAKtC;AAED,wBAAsB,iCAAiC,CAAC,IAAI,EAAE;IAC5D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAiBxC"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { mkdir, readdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { normalizeExpoLocalizationLocale } from './config';
|
|
4
|
+
export const EXPO_LOCALIZATION_RESOURCE_DIRECTORY = 'src/modules/localization/locales';
|
|
5
|
+
export class ExpoLocalizationResourceError extends Error {
|
|
6
|
+
constructor(message, options) {
|
|
7
|
+
super(message, options);
|
|
8
|
+
this.name = 'ExpoLocalizationResourceError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function resolveExpoLocalizationDictionaryPath(args) {
|
|
12
|
+
const locale = normalizeExpoLocalizationLocale(args.locale);
|
|
13
|
+
return path.resolve(args.projectRoot, EXPO_LOCALIZATION_RESOURCE_DIRECTORY, `${locale}.json`);
|
|
14
|
+
}
|
|
15
|
+
export async function readExpoLocalizationDictionary(args) {
|
|
16
|
+
return (await readDictionaryIfPresent(args)) ?? {};
|
|
17
|
+
}
|
|
18
|
+
export async function readExpoLocalizationDictionaries(args) {
|
|
19
|
+
const dictionaries = {};
|
|
20
|
+
for (const localeInput of args.locales) {
|
|
21
|
+
const locale = normalizeExpoLocalizationLocale(localeInput);
|
|
22
|
+
dictionaries[locale] = await readExpoLocalizationDictionary({
|
|
23
|
+
projectRoot: args.projectRoot,
|
|
24
|
+
locale,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return dictionaries;
|
|
28
|
+
}
|
|
29
|
+
export async function writeExpoLocalizationDictionary(args) {
|
|
30
|
+
const locale = normalizeExpoLocalizationLocale(args.locale);
|
|
31
|
+
const dictionary = normalizeDictionary(args.dictionary);
|
|
32
|
+
const dictionaryPath = resolveExpoLocalizationDictionaryPath({ ...args, locale });
|
|
33
|
+
const temporaryPath = `${dictionaryPath}.${process.pid}.${crypto.randomUUID()}.tmp`;
|
|
34
|
+
await mkdir(path.dirname(dictionaryPath), { recursive: true });
|
|
35
|
+
try {
|
|
36
|
+
await writeFile(temporaryPath, `${JSON.stringify(dictionary, null, 2)}\n`, 'utf8');
|
|
37
|
+
await rename(temporaryPath, dictionaryPath);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
await rm(temporaryPath, { force: true }).catch(() => undefined);
|
|
41
|
+
throw new ExpoLocalizationResourceError(`Could not persist the ${JSON.stringify(locale)} localization dictionary.`, { cause: error });
|
|
42
|
+
}
|
|
43
|
+
await removeLegacyDictionaryAliases({ projectRoot: args.projectRoot, locale, dictionaryPath });
|
|
44
|
+
return dictionary;
|
|
45
|
+
}
|
|
46
|
+
export async function setExpoLocalizationTranslation(args) {
|
|
47
|
+
const key = normalizeTranslationKey(args.key);
|
|
48
|
+
const dictionary = await readExpoLocalizationDictionary(args);
|
|
49
|
+
return await writeExpoLocalizationDictionary({
|
|
50
|
+
...args,
|
|
51
|
+
dictionary: { ...dictionary, [key]: args.value },
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export async function deleteExpoLocalizationTranslation(args) {
|
|
55
|
+
const key = normalizeTranslationKey(args.key);
|
|
56
|
+
const dictionary = await readExpoLocalizationDictionary(args);
|
|
57
|
+
delete dictionary[key];
|
|
58
|
+
return await writeExpoLocalizationDictionary({ ...args, dictionary });
|
|
59
|
+
}
|
|
60
|
+
export async function readExpoLocalizationResourceSeeds(args) {
|
|
61
|
+
const legacyTranslations = parseDictionaries(args.legacyTranslations);
|
|
62
|
+
const dictionaries = {};
|
|
63
|
+
for (const localeInput of args.locales) {
|
|
64
|
+
const locale = normalizeExpoLocalizationLocale(localeInput);
|
|
65
|
+
const existing = await readDictionaryIfPresent({ projectRoot: args.projectRoot, locale });
|
|
66
|
+
if (existing) {
|
|
67
|
+
dictionaries[locale] = existing;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (legacyTranslations[locale]) {
|
|
71
|
+
dictionaries[locale] = legacyTranslations[locale];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return dictionaries;
|
|
75
|
+
}
|
|
76
|
+
function normalizeTranslationKey(input) {
|
|
77
|
+
const key = input.trim();
|
|
78
|
+
if (!key) {
|
|
79
|
+
throw new ExpoLocalizationResourceError('Translation keys cannot be empty.');
|
|
80
|
+
}
|
|
81
|
+
return key;
|
|
82
|
+
}
|
|
83
|
+
function normalizeDictionary(input) {
|
|
84
|
+
if (!isStringRecord(input)) {
|
|
85
|
+
throw new ExpoLocalizationResourceError('Localization dictionaries must contain string values.');
|
|
86
|
+
}
|
|
87
|
+
return Object.fromEntries(Object.entries(input)
|
|
88
|
+
.map(([key, value]) => [normalizeTranslationKey(key), value])
|
|
89
|
+
.sort(([left], [right]) => compareText(left, right)));
|
|
90
|
+
}
|
|
91
|
+
async function readDictionaryIfPresent(args) {
|
|
92
|
+
const locale = normalizeExpoLocalizationLocale(args.locale);
|
|
93
|
+
let dictionaryPath;
|
|
94
|
+
try {
|
|
95
|
+
dictionaryPath = await resolveExistingDictionaryPath({ ...args, locale });
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
throw new ExpoLocalizationResourceError(`Could not read the ${JSON.stringify(locale)} localization dictionary.`, { cause: error });
|
|
99
|
+
}
|
|
100
|
+
if (!dictionaryPath)
|
|
101
|
+
return null;
|
|
102
|
+
let content;
|
|
103
|
+
try {
|
|
104
|
+
content = await readFile(dictionaryPath, 'utf8');
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (isNotFoundError(error))
|
|
108
|
+
return null;
|
|
109
|
+
throw new ExpoLocalizationResourceError(`Could not read the ${JSON.stringify(locale)} localization dictionary.`, { cause: error });
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
const parsed = JSON.parse(content);
|
|
113
|
+
if (!isStringRecord(parsed))
|
|
114
|
+
throw new Error('Dictionary values must be strings.');
|
|
115
|
+
return normalizeDictionary(parsed);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
throw new ExpoLocalizationResourceError(`Invalid localization dictionary for locale ${JSON.stringify(locale)}.`, { cause: error });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function resolveExistingDictionaryPath(args) {
|
|
122
|
+
const canonicalPath = resolveExpoLocalizationDictionaryPath(args);
|
|
123
|
+
try {
|
|
124
|
+
await readFile(canonicalPath, 'utf8');
|
|
125
|
+
return canonicalPath;
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
if (!isNotFoundError(error))
|
|
129
|
+
throw error;
|
|
130
|
+
}
|
|
131
|
+
const resourceDirectory = path.resolve(args.projectRoot, EXPO_LOCALIZATION_RESOURCE_DIRECTORY);
|
|
132
|
+
const entries = await readResourceDirectory(resourceDirectory);
|
|
133
|
+
if (!entries)
|
|
134
|
+
return null;
|
|
135
|
+
const locale = normalizeExpoLocalizationLocale(args.locale);
|
|
136
|
+
const legacyFiles = findLocaleAliases(entries, locale, path.basename(canonicalPath));
|
|
137
|
+
if (legacyFiles.length > 1) {
|
|
138
|
+
throw new Error(`Multiple localization dictionaries normalize to ${JSON.stringify(locale)}: ${legacyFiles.join(', ')}.`);
|
|
139
|
+
}
|
|
140
|
+
return legacyFiles[0] ? path.resolve(resourceDirectory, legacyFiles[0]) : null;
|
|
141
|
+
}
|
|
142
|
+
async function removeLegacyDictionaryAliases(args) {
|
|
143
|
+
const resourceDirectory = path.resolve(args.projectRoot, EXPO_LOCALIZATION_RESOURCE_DIRECTORY);
|
|
144
|
+
const entries = await readResourceDirectory(resourceDirectory);
|
|
145
|
+
if (!entries)
|
|
146
|
+
return;
|
|
147
|
+
const aliases = findLocaleAliases(entries, args.locale, path.basename(args.dictionaryPath));
|
|
148
|
+
try {
|
|
149
|
+
for (const alias of aliases) {
|
|
150
|
+
await rm(path.resolve(resourceDirectory, alias), { force: true });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
throw new ExpoLocalizationResourceError(`Could not remove legacy aliases for ${JSON.stringify(args.locale)}.`, { cause: error });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async function readResourceDirectory(resourceDirectory) {
|
|
158
|
+
try {
|
|
159
|
+
return await readdir(resourceDirectory);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
if (isNotFoundError(error))
|
|
163
|
+
return null;
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function findLocaleAliases(entries, locale, canonicalFileName) {
|
|
168
|
+
return entries
|
|
169
|
+
.filter((entry) => entry !== canonicalFileName && entry.endsWith('.json'))
|
|
170
|
+
.filter((entry) => tryNormalizeLocale(entry.slice(0, -'.json'.length)) === locale)
|
|
171
|
+
.sort(compareText);
|
|
172
|
+
}
|
|
173
|
+
function parseDictionaries(input) {
|
|
174
|
+
if (!isRecord(input))
|
|
175
|
+
return {};
|
|
176
|
+
const dictionaries = {};
|
|
177
|
+
for (const [localeInput, dictionary] of Object.entries(input)) {
|
|
178
|
+
if (!isStringRecord(dictionary))
|
|
179
|
+
continue;
|
|
180
|
+
try {
|
|
181
|
+
dictionaries[normalizeExpoLocalizationLocale(localeInput)] = normalizeDictionary(dictionary);
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return dictionaries;
|
|
188
|
+
}
|
|
189
|
+
function isStringRecord(value) {
|
|
190
|
+
return isRecord(value) && Object.values(value).every((entry) => typeof entry === 'string');
|
|
191
|
+
}
|
|
192
|
+
function isRecord(value) {
|
|
193
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
194
|
+
}
|
|
195
|
+
function isNotFoundError(error) {
|
|
196
|
+
return isRecord(error) && error.code === 'ENOENT';
|
|
197
|
+
}
|
|
198
|
+
function tryNormalizeLocale(locale) {
|
|
199
|
+
try {
|
|
200
|
+
return normalizeExpoLocalizationLocale(locale);
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function compareText(left, right) {
|
|
207
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"license": "MIT",
|
|
3
3
|
"name": "@ankhorage/orchestrator-module-expo-localization",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
5
|
"description": "Expo localization module for @ankhorage/orchestrator.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.js",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"version-packages": "changeset version"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@ankhorage/orchestrator": "^0.3.
|
|
55
|
+
"@ankhorage/orchestrator": "^0.3.1"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@ankhorage/devtools": "^1.0.6",
|