@digitaldefiance/i18n-lib 1.3.13 → 1.3.15

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.
Files changed (243) hide show
  1. package/README.md +143 -87
  2. package/package.json +4 -3
  3. package/src/active-context.d.ts +30 -0
  4. package/src/active-context.d.ts.map +1 -0
  5. package/src/active-context.js +3 -0
  6. package/src/active-context.js.map +1 -0
  7. package/src/component-definition.d.ts +12 -0
  8. package/src/component-definition.d.ts.map +1 -0
  9. package/src/component-definition.js +3 -0
  10. package/src/component-definition.js.map +1 -0
  11. package/src/component-registration.d.ts +10 -0
  12. package/src/component-registration.d.ts.map +1 -0
  13. package/src/component-registration.js +3 -0
  14. package/src/component-registration.js.map +1 -0
  15. package/src/component-registry.d.ts +69 -0
  16. package/src/component-registry.d.ts.map +1 -0
  17. package/src/component-registry.js +248 -0
  18. package/src/component-registry.js.map +1 -0
  19. package/src/context-error-type.d.ts +4 -0
  20. package/src/context-error-type.d.ts.map +1 -0
  21. package/src/context-error-type.js +8 -0
  22. package/src/context-error-type.js.map +1 -0
  23. package/src/context-error.d.ts +7 -0
  24. package/src/context-error.d.ts.map +1 -0
  25. package/src/context-error.js +18 -0
  26. package/src/context-error.js.map +1 -0
  27. package/src/context-manager.d.ts +34 -0
  28. package/src/context-manager.d.ts.map +1 -0
  29. package/src/context-manager.js +60 -0
  30. package/src/context-manager.js.map +1 -0
  31. package/src/context.d.ts +45 -0
  32. package/src/context.d.ts.map +1 -0
  33. package/src/context.js +70 -0
  34. package/src/context.js.map +1 -0
  35. package/src/core-i18n.d.ts +63 -0
  36. package/src/core-i18n.d.ts.map +1 -0
  37. package/src/core-i18n.js +478 -0
  38. package/src/core-i18n.js.map +1 -0
  39. package/src/core-string-key.d.ts +43 -0
  40. package/src/core-string-key.d.ts.map +1 -0
  41. package/src/core-string-key.js +51 -0
  42. package/src/core-string-key.js.map +1 -0
  43. package/src/create-translation-adapter.d.ts +21 -0
  44. package/src/create-translation-adapter.d.ts.map +1 -0
  45. package/src/create-translation-adapter.js +37 -0
  46. package/src/create-translation-adapter.js.map +1 -0
  47. package/src/currency-code.d.ts +20 -0
  48. package/src/currency-code.d.ts.map +1 -0
  49. package/src/currency-code.js +37 -0
  50. package/src/currency-code.js.map +1 -0
  51. package/src/{currency-format.ts → currency-format.d.ts} +5 -5
  52. package/src/currency-format.d.ts.map +1 -0
  53. package/src/currency-format.js +3 -0
  54. package/src/currency-format.js.map +1 -0
  55. package/src/currency.d.ts +12 -0
  56. package/src/currency.d.ts.map +1 -0
  57. package/src/currency.js +49 -0
  58. package/src/currency.js.map +1 -0
  59. package/src/default-config.d.ts +33 -0
  60. package/src/default-config.d.ts.map +1 -0
  61. package/src/default-config.js +102 -0
  62. package/src/default-config.js.map +1 -0
  63. package/src/enum-registry.d.ts +45 -0
  64. package/src/enum-registry.d.ts.map +1 -0
  65. package/src/enum-registry.js +103 -0
  66. package/src/enum-registry.js.map +1 -0
  67. package/src/global-active-context.d.ts +51 -0
  68. package/src/global-active-context.d.ts.map +1 -0
  69. package/src/global-active-context.js +179 -0
  70. package/src/global-active-context.js.map +1 -0
  71. package/src/handleable.d.ts +14 -0
  72. package/src/handleable.d.ts.map +1 -0
  73. package/src/handleable.js +66 -0
  74. package/src/handleable.js.map +1 -0
  75. package/src/i-global-active-context.d.ts +23 -0
  76. package/src/i-global-active-context.d.ts.map +1 -0
  77. package/src/i-global-active-context.js +3 -0
  78. package/src/i-global-active-context.js.map +1 -0
  79. package/src/i-handleable-error-options.d.ts +7 -0
  80. package/src/i-handleable-error-options.d.ts.map +1 -0
  81. package/src/i-handleable-error-options.js +3 -0
  82. package/src/i-handleable-error-options.js.map +1 -0
  83. package/src/i-handleable.d.ts +6 -0
  84. package/src/i-handleable.d.ts.map +1 -0
  85. package/src/i-handleable.js +3 -0
  86. package/src/i-handleable.js.map +1 -0
  87. package/src/i18n-config.d.ts +21 -0
  88. package/src/i18n-config.d.ts.map +1 -0
  89. package/src/i18n-config.js +3 -0
  90. package/src/i18n-config.js.map +1 -0
  91. package/src/{i18n-context.ts → i18n-context.d.ts} +7 -7
  92. package/src/i18n-context.d.ts.map +1 -0
  93. package/src/i18n-context.js +3 -0
  94. package/src/i18n-context.js.map +1 -0
  95. package/src/i18n-engine.d.ts +179 -0
  96. package/src/i18n-engine.d.ts.map +1 -0
  97. package/src/i18n-engine.js +355 -0
  98. package/src/i18n-engine.js.map +1 -0
  99. package/src/{index.ts → index.d.ts} +2 -10
  100. package/src/index.d.ts.map +1 -0
  101. package/src/index.js +71 -0
  102. package/src/index.js.map +1 -0
  103. package/src/{language-codes.ts → language-codes.d.ts} +12 -23
  104. package/src/language-codes.d.ts.map +1 -0
  105. package/src/language-codes.js +32 -0
  106. package/src/language-codes.js.map +1 -0
  107. package/src/language-definition.d.ts +14 -0
  108. package/src/language-definition.d.ts.map +1 -0
  109. package/src/language-definition.js +3 -0
  110. package/src/language-definition.js.map +1 -0
  111. package/src/language-registry.d.ts +114 -0
  112. package/src/language-registry.d.ts.map +1 -0
  113. package/src/language-registry.js +217 -0
  114. package/src/language-registry.js.map +1 -0
  115. package/src/plugin-i18n-engine.d.ts +151 -0
  116. package/src/plugin-i18n-engine.d.ts.map +1 -0
  117. package/src/plugin-i18n-engine.js +380 -0
  118. package/src/plugin-i18n-engine.js.map +1 -0
  119. package/src/plugin-translatable-generic-error.d.ts +30 -0
  120. package/src/plugin-translatable-generic-error.d.ts.map +1 -0
  121. package/src/plugin-translatable-generic-error.js +72 -0
  122. package/src/plugin-translatable-generic-error.js.map +1 -0
  123. package/src/plugin-translatable-handleable-generic.d.ts +29 -0
  124. package/src/plugin-translatable-handleable-generic.d.ts.map +1 -0
  125. package/src/plugin-translatable-handleable-generic.js +44 -0
  126. package/src/plugin-translatable-handleable-generic.js.map +1 -0
  127. package/src/plugin-typed-handleable.d.ts +15 -0
  128. package/src/plugin-typed-handleable.d.ts.map +1 -0
  129. package/src/plugin-typed-handleable.js +51 -0
  130. package/src/plugin-typed-handleable.js.map +1 -0
  131. package/src/registry-config.d.ts +15 -0
  132. package/src/registry-config.d.ts.map +1 -0
  133. package/src/registry-config.js +3 -0
  134. package/src/registry-config.js.map +1 -0
  135. package/src/registry-error-type.d.ts +13 -0
  136. package/src/registry-error-type.d.ts.map +1 -0
  137. package/src/registry-error-type.js +17 -0
  138. package/src/registry-error-type.js.map +1 -0
  139. package/src/registry-error.d.ts +19 -0
  140. package/src/registry-error.d.ts.map +1 -0
  141. package/src/registry-error.js +48 -0
  142. package/src/registry-error.js.map +1 -0
  143. package/src/strict-types.d.ts +19 -0
  144. package/src/strict-types.d.ts.map +1 -0
  145. package/src/strict-types.js +18 -0
  146. package/src/strict-types.js.map +1 -0
  147. package/src/template.d.ts +13 -0
  148. package/src/template.d.ts.map +1 -0
  149. package/src/template.js +31 -0
  150. package/src/template.js.map +1 -0
  151. package/src/timezone.d.ts +12 -0
  152. package/src/timezone.d.ts.map +1 -0
  153. package/src/timezone.js +24 -0
  154. package/src/timezone.js.map +1 -0
  155. package/src/translatable.d.ts +6 -0
  156. package/src/translatable.d.ts.map +1 -0
  157. package/src/translatable.js +12 -0
  158. package/src/translatable.js.map +1 -0
  159. package/src/translation-engine.d.ts +9 -0
  160. package/src/translation-engine.d.ts.map +1 -0
  161. package/src/translation-engine.js +3 -0
  162. package/src/translation-engine.js.map +1 -0
  163. package/src/translation-request.d.ts +10 -0
  164. package/src/translation-request.d.ts.map +1 -0
  165. package/src/translation-request.js +3 -0
  166. package/src/translation-request.js.map +1 -0
  167. package/src/translation-response.d.ts +9 -0
  168. package/src/translation-response.d.ts.map +1 -0
  169. package/src/translation-response.js +3 -0
  170. package/src/translation-response.js.map +1 -0
  171. package/src/typed-error.d.ts +73 -0
  172. package/src/typed-error.d.ts.map +1 -0
  173. package/src/typed-error.js +267 -0
  174. package/src/typed-error.js.map +1 -0
  175. package/src/typed-handleable.d.ts +15 -0
  176. package/src/typed-handleable.d.ts.map +1 -0
  177. package/src/typed-handleable.js +46 -0
  178. package/src/typed-handleable.js.map +1 -0
  179. package/src/{types.ts → types.d.ts} +21 -75
  180. package/src/types.d.ts.map +1 -0
  181. package/src/types.js +19 -0
  182. package/src/types.js.map +1 -0
  183. package/src/unified-translator.d.ts +31 -0
  184. package/src/unified-translator.d.ts.map +1 -0
  185. package/src/unified-translator.js +71 -0
  186. package/src/unified-translator.js.map +1 -0
  187. package/src/utils.d.ts +65 -0
  188. package/src/utils.d.ts.map +1 -0
  189. package/src/utils.js +129 -0
  190. package/src/utils.js.map +1 -0
  191. package/src/validation-config.d.ts +12 -0
  192. package/src/validation-config.d.ts.map +1 -0
  193. package/src/validation-config.js +3 -0
  194. package/src/validation-config.js.map +1 -0
  195. package/src/validation-result.d.ts +13 -0
  196. package/src/validation-result.d.ts.map +1 -0
  197. package/src/validation-result.js +3 -0
  198. package/src/validation-result.js.map +1 -0
  199. package/LICENSE +0 -21
  200. package/src/active-context.ts +0 -30
  201. package/src/component-definition.ts +0 -11
  202. package/src/component-registration.ts +0 -13
  203. package/src/component-registry.ts +0 -392
  204. package/src/context-error-type.ts +0 -3
  205. package/src/context-error.ts +0 -16
  206. package/src/context-manager.ts +0 -71
  207. package/src/context.ts +0 -90
  208. package/src/core-i18n.ts +0 -609
  209. package/src/core-string-key.ts +0 -49
  210. package/src/create-translation-adapter.ts +0 -47
  211. package/src/currency-code.ts +0 -35
  212. package/src/currency.ts +0 -52
  213. package/src/default-config.ts +0 -199
  214. package/src/enum-registry.ts +0 -138
  215. package/src/global-active-context.ts +0 -255
  216. package/src/handleable.ts +0 -79
  217. package/src/i-global-active-context.ts +0 -59
  218. package/src/i-handleable-error-options.ts +0 -6
  219. package/src/i-handleable.ts +0 -5
  220. package/src/i18n-config.ts +0 -29
  221. package/src/i18n-engine.ts +0 -491
  222. package/src/language-definition.ts +0 -13
  223. package/src/language-registry.ts +0 -292
  224. package/src/plugin-i18n-engine.ts +0 -520
  225. package/src/plugin-translatable-generic-error.ts +0 -106
  226. package/src/plugin-translatable-handleable-generic.ts +0 -60
  227. package/src/plugin-typed-handleable.ts +0 -77
  228. package/src/registry-config.ts +0 -15
  229. package/src/registry-error-type.ts +0 -12
  230. package/src/registry-error.ts +0 -74
  231. package/src/strict-types.ts +0 -35
  232. package/src/template.ts +0 -63
  233. package/src/timezone.ts +0 -20
  234. package/src/translatable.ts +0 -15
  235. package/src/translation-engine.ts +0 -8
  236. package/src/translation-request.ts +0 -12
  237. package/src/translation-response.ts +0 -8
  238. package/src/typed-error.ts +0 -384
  239. package/src/typed-handleable.ts +0 -70
  240. package/src/unified-translator.ts +0 -96
  241. package/src/utils.ts +0 -213
  242. package/src/validation-config.ts +0 -11
  243. package/src/validation-result.ts +0 -12
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Language registry for managing supported languages and their properties
3
+ */
4
+ import { LanguageDefinition } from './language-definition';
5
+ /**
6
+ * Static singleton registry for managing supported languages globally
7
+ */
8
+ export declare class LanguageRegistry {
9
+ private static languages;
10
+ private static languagesByCodes;
11
+ private static defaultLanguageId;
12
+ private constructor();
13
+ /**
14
+ * Register a new language
15
+ */
16
+ static registerLanguage(language: LanguageDefinition): void;
17
+ /**
18
+ * Register multiple languages at once
19
+ */
20
+ static registerLanguages(languages: readonly LanguageDefinition[]): void;
21
+ /**
22
+ * Get a language by its ID
23
+ */
24
+ static getLanguage(languageId: string): LanguageDefinition | undefined;
25
+ /**
26
+ * Get a language by its code
27
+ */
28
+ static getLanguageByCode(code: string): LanguageDefinition | undefined;
29
+ /**
30
+ * Get all registered languages
31
+ */
32
+ static getAllLanguages(): ReadonlyArray<LanguageDefinition>;
33
+ /**
34
+ * Get all language IDs
35
+ */
36
+ static getLanguageIds(): readonly string[];
37
+ /**
38
+ * Get all language codes
39
+ */
40
+ static getLanguageCodes(): readonly string[];
41
+ /**
42
+ * Check if a language is registered
43
+ */
44
+ static hasLanguage(languageId: string): boolean;
45
+ /**
46
+ * Check if a language code is registered
47
+ */
48
+ static hasLanguageCode(code: string): boolean;
49
+ /**
50
+ * Get the default language
51
+ */
52
+ static getDefaultLanguage(): LanguageDefinition | null;
53
+ /**
54
+ * Get the default language ID
55
+ */
56
+ static getDefaultLanguageId(): string | null;
57
+ /**
58
+ * Get matching language code with fallback logic:
59
+ * 1. Try requested code
60
+ * 2. Fall back to user default
61
+ * 3. Fall back to site default
62
+ */
63
+ static getMatchingLanguageCode(requestedCode?: string, userDefaultCode?: string): string;
64
+ /**
65
+ * Set the default language
66
+ */
67
+ static setDefaultLanguage(languageId: string): void;
68
+ /**
69
+ * Get the number of registered languages
70
+ */
71
+ static getLanguageCount(): number;
72
+ /**
73
+ * Validate that all required languages are present
74
+ */
75
+ static validateRequiredLanguages(requiredLanguages: readonly string[]): LanguageValidationResult;
76
+ /**
77
+ * Create a mapping of language IDs to their display names
78
+ */
79
+ static getLanguageDisplayNames(): Record<string, string>;
80
+ /**
81
+ * Create a mapping of language IDs to their codes
82
+ */
83
+ static getLanguageCodeMapping(): Record<string, string>;
84
+ /**
85
+ * Find languages by partial name match (case-insensitive)
86
+ */
87
+ static findLanguagesByName(partialName: string): readonly LanguageDefinition[];
88
+ /**
89
+ * Clear all registered languages (useful for testing)
90
+ */
91
+ static clear(): void;
92
+ }
93
+ /**
94
+ * Validation result for language operations
95
+ */
96
+ export interface LanguageValidationResult {
97
+ readonly isValid: boolean;
98
+ readonly missingLanguages: readonly string[];
99
+ readonly errors: readonly string[];
100
+ }
101
+ /**
102
+ * Helper function to create language definitions with type safety
103
+ */
104
+ export declare function createLanguageDefinition(id: string, name: string, code: string, isDefault?: boolean): LanguageDefinition;
105
+ /**
106
+ * Helper function to create multiple language definitions
107
+ */
108
+ export declare function createLanguageDefinitions(languages: Array<{
109
+ id: string;
110
+ name: string;
111
+ code: string;
112
+ isDefault?: boolean;
113
+ }>): LanguageDefinition[];
114
+ //# sourceMappingURL=language-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-registry.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/language-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAyC;IACjE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA6B;IAC5D,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAuB;IAEvD,OAAO;IAIP;;OAEG;WACW,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAgClE;;OAEG;WACW,iBAAiB,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,GAAG,IAAI;IAM/E;;OAEG;WACW,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI7E;;OAEG;WACW,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAK7E;;OAEG;WACW,eAAe,IAAI,aAAa,CAAC,kBAAkB,CAAC;IAIlE;;OAEG;WACW,cAAc,IAAI,SAAS,MAAM,EAAE;IAIjD;;OAEG;WACW,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAInD;;OAEG;WACW,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAItD;;OAEG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpD;;OAEG;WACW,kBAAkB,IAAI,kBAAkB,GAAG,IAAI;IAM7D;;OAEG;WACW,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAInD;;;;;OAKG;WACW,uBAAuB,CACnC,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM;IAwBT;;OAEG;WACW,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAW1D;;OAEG;WACW,gBAAgB,IAAI,MAAM;IAIxC;;OAEG;WACW,yBAAyB,CACrC,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC,wBAAwB;IAkB3B;;OAEG;WACW,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ/D;;OAEG;WACW,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ9D;;OAEG;WACW,mBAAmB,CAC/B,WAAW,EAAE,MAAM,GAClB,SAAS,kBAAkB,EAAE;IAOhC;;OAEG;WACW,KAAK,IAAI,IAAI;CAK5B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,OAAO,GAClB,kBAAkB,CAOpB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,GACD,kBAAkB,EAAE,CAItB"}
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ /**
3
+ * Language registry for managing supported languages and their properties
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LanguageRegistry = void 0;
7
+ exports.createLanguageDefinition = createLanguageDefinition;
8
+ exports.createLanguageDefinitions = createLanguageDefinitions;
9
+ const registry_error_1 = require("./registry-error");
10
+ const registry_error_type_1 = require("./registry-error-type");
11
+ /**
12
+ * Static singleton registry for managing supported languages globally
13
+ */
14
+ class LanguageRegistry {
15
+ static languages = new Map();
16
+ static languagesByCodes = new Map();
17
+ static defaultLanguageId = null;
18
+ constructor() {
19
+ // Private constructor - use static methods
20
+ }
21
+ /**
22
+ * Register a new language
23
+ */
24
+ static registerLanguage(language) {
25
+ const languageId = language.id;
26
+ // Check for duplicate language ID
27
+ if (LanguageRegistry.languages.has(languageId)) {
28
+ throw registry_error_1.RegistryError.createSimple(registry_error_type_1.RegistryErrorType.DuplicateLanguage, `Language '${languageId}' is already registered`, { languageId });
29
+ }
30
+ // Check for duplicate language code
31
+ if (LanguageRegistry.languagesByCodes.has(language.code)) {
32
+ const existingLanguageId = LanguageRegistry.languagesByCodes.get(language.code);
33
+ throw registry_error_1.RegistryError.createSimple(registry_error_type_1.RegistryErrorType.DuplicateLanguage, `Language code '${language.code}' is already used by language '${existingLanguageId}'`, { languageId, code: language.code, existingLanguageId });
34
+ }
35
+ // Register the language
36
+ LanguageRegistry.languages.set(languageId, language);
37
+ LanguageRegistry.languagesByCodes.set(language.code, languageId);
38
+ // Set as default if specified or if it's the first language
39
+ if (language.isDefault || LanguageRegistry.defaultLanguageId === null) {
40
+ LanguageRegistry.defaultLanguageId = languageId;
41
+ }
42
+ }
43
+ /**
44
+ * Register multiple languages at once
45
+ */
46
+ static registerLanguages(languages) {
47
+ for (const language of languages) {
48
+ LanguageRegistry.registerLanguage(language);
49
+ }
50
+ }
51
+ /**
52
+ * Get a language by its ID
53
+ */
54
+ static getLanguage(languageId) {
55
+ return LanguageRegistry.languages.get(languageId);
56
+ }
57
+ /**
58
+ * Get a language by its code
59
+ */
60
+ static getLanguageByCode(code) {
61
+ const languageId = LanguageRegistry.languagesByCodes.get(code);
62
+ return languageId ? LanguageRegistry.languages.get(languageId) : undefined;
63
+ }
64
+ /**
65
+ * Get all registered languages
66
+ */
67
+ static getAllLanguages() {
68
+ return Array.from(LanguageRegistry.languages.values());
69
+ }
70
+ /**
71
+ * Get all language IDs
72
+ */
73
+ static getLanguageIds() {
74
+ return Array.from(LanguageRegistry.languages.keys());
75
+ }
76
+ /**
77
+ * Get all language codes
78
+ */
79
+ static getLanguageCodes() {
80
+ return Array.from(LanguageRegistry.languagesByCodes.keys());
81
+ }
82
+ /**
83
+ * Check if a language is registered
84
+ */
85
+ static hasLanguage(languageId) {
86
+ return LanguageRegistry.languages.has(languageId);
87
+ }
88
+ /**
89
+ * Check if a language code is registered
90
+ */
91
+ static hasLanguageCode(code) {
92
+ return LanguageRegistry.languagesByCodes.has(code);
93
+ }
94
+ /**
95
+ * Get the default language
96
+ */
97
+ static getDefaultLanguage() {
98
+ return LanguageRegistry.defaultLanguageId
99
+ ? LanguageRegistry.languages.get(LanguageRegistry.defaultLanguageId) || null
100
+ : null;
101
+ }
102
+ /**
103
+ * Get the default language ID
104
+ */
105
+ static getDefaultLanguageId() {
106
+ return LanguageRegistry.defaultLanguageId;
107
+ }
108
+ /**
109
+ * Get matching language code with fallback logic:
110
+ * 1. Try requested code
111
+ * 2. Fall back to user default
112
+ * 3. Fall back to site default
113
+ */
114
+ static getMatchingLanguageCode(requestedCode, userDefaultCode) {
115
+ // Try requested code first
116
+ if (requestedCode && LanguageRegistry.hasLanguageCode(requestedCode)) {
117
+ return requestedCode;
118
+ }
119
+ // Try user default
120
+ if (userDefaultCode && LanguageRegistry.hasLanguageCode(userDefaultCode)) {
121
+ return userDefaultCode;
122
+ }
123
+ // Fall back to site default
124
+ const defaultLanguage = LanguageRegistry.getDefaultLanguage();
125
+ if (!defaultLanguage) {
126
+ throw registry_error_1.RegistryError.createSimple(registry_error_type_1.RegistryErrorType.LanguageNotFound, 'No default language configured', {});
127
+ }
128
+ return defaultLanguage.code;
129
+ }
130
+ /**
131
+ * Set the default language
132
+ */
133
+ static setDefaultLanguage(languageId) {
134
+ if (!LanguageRegistry.languages.has(languageId)) {
135
+ throw registry_error_1.RegistryError.createSimple(registry_error_type_1.RegistryErrorType.LanguageNotFound, `Language '${languageId}' not found`, { languageId });
136
+ }
137
+ LanguageRegistry.defaultLanguageId = languageId;
138
+ }
139
+ /**
140
+ * Get the number of registered languages
141
+ */
142
+ static getLanguageCount() {
143
+ return LanguageRegistry.languages.size;
144
+ }
145
+ /**
146
+ * Validate that all required languages are present
147
+ */
148
+ static validateRequiredLanguages(requiredLanguages) {
149
+ const missingLanguages = [];
150
+ const errors = [];
151
+ for (const languageId of requiredLanguages) {
152
+ if (!LanguageRegistry.languages.has(languageId)) {
153
+ missingLanguages.push(languageId);
154
+ errors.push(`Required language '${languageId}' is not registered`);
155
+ }
156
+ }
157
+ return {
158
+ isValid: missingLanguages.length === 0,
159
+ missingLanguages,
160
+ errors,
161
+ };
162
+ }
163
+ /**
164
+ * Create a mapping of language IDs to their display names
165
+ */
166
+ static getLanguageDisplayNames() {
167
+ const result = {};
168
+ for (const [languageId, language] of LanguageRegistry.languages) {
169
+ result[languageId] = language.name;
170
+ }
171
+ return result;
172
+ }
173
+ /**
174
+ * Create a mapping of language IDs to their codes
175
+ */
176
+ static getLanguageCodeMapping() {
177
+ const result = {};
178
+ for (const [languageId, language] of LanguageRegistry.languages) {
179
+ result[languageId] = language.code;
180
+ }
181
+ return result;
182
+ }
183
+ /**
184
+ * Find languages by partial name match (case-insensitive)
185
+ */
186
+ static findLanguagesByName(partialName) {
187
+ const searchTerm = partialName.toLowerCase();
188
+ return Array.from(LanguageRegistry.languages.values()).filter((language) => language.name.toLowerCase().includes(searchTerm));
189
+ }
190
+ /**
191
+ * Clear all registered languages (useful for testing)
192
+ */
193
+ static clear() {
194
+ LanguageRegistry.languages.clear();
195
+ LanguageRegistry.languagesByCodes.clear();
196
+ LanguageRegistry.defaultLanguageId = null;
197
+ }
198
+ }
199
+ exports.LanguageRegistry = LanguageRegistry;
200
+ /**
201
+ * Helper function to create language definitions with type safety
202
+ */
203
+ function createLanguageDefinition(id, name, code, isDefault) {
204
+ return {
205
+ id,
206
+ name,
207
+ code,
208
+ isDefault: isDefault || false,
209
+ };
210
+ }
211
+ /**
212
+ * Helper function to create multiple language definitions
213
+ */
214
+ function createLanguageDefinitions(languages) {
215
+ return languages.map((lang) => createLanguageDefinition(lang.id, lang.name, lang.code, lang.isDefault));
216
+ }
217
+ //# sourceMappingURL=language-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-registry.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/language-registry.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqQH,4DAYC;AAKD,8DAWC;AA9RD,qDAAiD;AACjD,+DAA0D;AAE1D;;GAEG;AACH,MAAa,gBAAgB;IACnB,MAAM,CAAC,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IACzD,MAAM,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpD,MAAM,CAAC,iBAAiB,GAAkB,IAAI,CAAC;IAEvD;QACE,2CAA2C;IAC7C,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,gBAAgB,CAAC,QAA4B;QACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;QAE/B,kCAAkC;QAClC,IAAI,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/C,MAAM,8BAAa,CAAC,YAAY,CAC9B,uCAAiB,CAAC,iBAAiB,EACnC,aAAa,UAAU,yBAAyB,EAChD,EAAE,UAAU,EAAE,CACf,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAE,CAAC;YACjF,MAAM,8BAAa,CAAC,YAAY,CAC9B,uCAAiB,CAAC,iBAAiB,EACnC,kBAAkB,QAAQ,CAAC,IAAI,kCAAkC,kBAAkB,GAAG,EACtF,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,CACxD,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACrD,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEjE,4DAA4D;QAC5D,IAAI,QAAQ,CAAC,SAAS,IAAI,gBAAgB,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;YACtE,gBAAgB,CAAC,iBAAiB,GAAG,UAAU,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB,CAAC,SAAwC;QACtE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,WAAW,CAAC,UAAkB;QAC1C,OAAO,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB,CAAC,IAAY;QAC1C,MAAM,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,eAAe;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,cAAc;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,gBAAgB;QAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,WAAW,CAAC,UAAkB;QAC1C,OAAO,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,eAAe,CAAC,IAAY;QACxC,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,kBAAkB;QAC9B,OAAO,gBAAgB,CAAC,iBAAiB;YACvC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,IAAI;YAC5E,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,oBAAoB;QAChC,OAAO,gBAAgB,CAAC,iBAAiB,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,uBAAuB,CACnC,aAAsB,EACtB,eAAwB;QAExB,2BAA2B;QAC3B,IAAI,aAAa,IAAI,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;YACrE,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,mBAAmB;QACnB,IAAI,eAAe,IAAI,gBAAgB,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC;YACzE,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,4BAA4B;QAC5B,MAAM,eAAe,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;QAC9D,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,8BAAa,CAAC,YAAY,CAC9B,uCAAiB,CAAC,gBAAgB,EAClC,gCAAgC,EAChC,EAAE,CACH,CAAC;QACJ,CAAC;QAED,OAAO,eAAe,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,kBAAkB,CAAC,UAAkB;QACjD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAChD,MAAM,8BAAa,CAAC,YAAY,CAC9B,uCAAiB,CAAC,gBAAgB,EAClC,aAAa,UAAU,aAAa,EACpC,EAAE,UAAU,EAAE,CACf,CAAC;QACJ,CAAC;QACD,gBAAgB,CAAC,iBAAiB,GAAG,UAAU,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,gBAAgB;QAC5B,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,yBAAyB,CACrC,iBAAoC;QAEpC,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChD,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,sBAAsB,UAAU,qBAAqB,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC;YACtC,gBAAgB;YAChB,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,uBAAuB;QACnC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAChE,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;QACrC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,sBAAsB;QAClC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAChE,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;QACrC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,mBAAmB,CAC/B,WAAmB;QAEnB,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACjD,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK;QACjB,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC1C,gBAAgB,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC5C,CAAC;;AA7OH,4CA8OC;AAWD;;GAEG;AACH,SAAgB,wBAAwB,CACtC,EAAU,EACV,IAAY,EACZ,IAAY,EACZ,SAAmB;IAEnB,OAAO;QACL,EAAE;QACF,IAAI;QACJ,IAAI;QACJ,SAAS,EAAE,SAAS,IAAI,KAAK;KAC9B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CACvC,SAKE;IAEF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5B,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CACxE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Plugin-based internationalization engine with component and language registration
3
+ */
4
+ import { ComponentDefinition } from './component-definition';
5
+ import { ComponentRegistration } from './component-registration';
6
+ import { ComponentRegistry } from './component-registry';
7
+ import { EnumTranslationRegistry } from './enum-registry';
8
+ import { IActiveContext } from './active-context';
9
+ import { LanguageDefinition } from './language-definition';
10
+ import { RegistryConfig } from './registry-config';
11
+ import { TranslationResponse } from './translation-response';
12
+ import { EnumLanguageTranslation } from './types';
13
+ /**
14
+ * Plugin-based I18n Engine with registration capabilities
15
+ */
16
+ export declare class PluginI18nEngine<TLanguages extends string> {
17
+ private readonly componentRegistry;
18
+ private readonly enumRegistry;
19
+ private readonly config;
20
+ private contextKey;
21
+ /**
22
+ * Default template processor instance
23
+ */
24
+ readonly t: (str: string, language?: TLanguages, ...otherVars: Record<string, string | number>[]) => string;
25
+ /**
26
+ * Static instances for semi-singleton pattern
27
+ */
28
+ private static _instances;
29
+ private static _defaultKey;
30
+ protected static readonly DefaultInstanceKey = "default";
31
+ constructor(initialLanguages: readonly LanguageDefinition[], config?: Partial<RegistryConfig<TLanguages>>, options?: {
32
+ instanceKey?: string;
33
+ registerInstance?: boolean;
34
+ setAsDefault?: boolean;
35
+ });
36
+ /**
37
+ * Create a new instance with a specific key
38
+ */
39
+ static createInstance<TLangs extends string>(key: string, initialLanguages: readonly LanguageDefinition[], config?: Partial<RegistryConfig<TLangs>>): PluginI18nEngine<TLangs>;
40
+ /**
41
+ * Get an existing instance by key
42
+ */
43
+ static getInstance<TLangs extends string>(key?: string): PluginI18nEngine<TLangs>;
44
+ /**
45
+ * Register a new language (updates static registry)
46
+ */
47
+ registerLanguage(language: LanguageDefinition): void;
48
+ /**
49
+ * Register multiple languages (updates static registry)
50
+ */
51
+ registerLanguages(languages: readonly LanguageDefinition[]): void;
52
+ /**
53
+ * Register a component with its translations
54
+ */
55
+ registerComponent<TStringKeys extends string>(registration: ComponentRegistration<TStringKeys, TLanguages>): import("./validation-result").ValidationResult;
56
+ /**
57
+ * Update strings for an existing component
58
+ */
59
+ updateComponentStrings<TStringKeys extends string>(componentId: string, strings: Parameters<ComponentRegistry<TLanguages>['updateComponentStrings']>[1]): import("./validation-result").ValidationResult;
60
+ /**
61
+ * Register an enum with translations
62
+ */
63
+ registerEnum<TEnum extends string | number>(enumObj: Record<string, TEnum>, translations: EnumLanguageTranslation<TEnum, TLanguages>, enumName: string): void;
64
+ /**
65
+ * Translate a string for a component
66
+ */
67
+ translate<TStringKeys extends string>(componentId: string, stringKey: TStringKeys, variables?: Record<string, string | number>, language?: TLanguages): string;
68
+ /**
69
+ * Safe translate that returns a placeholder if translation fails
70
+ */
71
+ safeTranslate(componentId: string, stringKey: string, variables?: Record<string, string | number>, language?: TLanguages): string;
72
+ /**
73
+ * Translate an enum value
74
+ */
75
+ translateEnum<TEnum extends string | number>(enumObj: Record<string, TEnum>, value: TEnum, language?: TLanguages): string;
76
+ /**
77
+ * Get detailed translation response
78
+ */
79
+ getTranslationDetails<TStringKeys extends string>(componentId: string, stringKey: TStringKeys, variables?: Record<string, string | number>, language?: TLanguages): TranslationResponse;
80
+ /**
81
+ * Get current context
82
+ */
83
+ getContext(): IActiveContext<TLanguages>;
84
+ /**
85
+ * Update context
86
+ */
87
+ updateContext(updates: Partial<IActiveContext<TLanguages>>): void;
88
+ /**
89
+ * Get current language from global context
90
+ * Respects language context space (admin vs user)
91
+ */
92
+ private getCurrentLanguage;
93
+ /**
94
+ * Set current language
95
+ */
96
+ setLanguage(language: TLanguages): void;
97
+ /**
98
+ * Get available languages from static registry
99
+ */
100
+ getLanguages(): readonly LanguageDefinition[];
101
+ /**
102
+ * Get registered components
103
+ */
104
+ getComponents(): ReadonlyArray<ComponentDefinition<any>>;
105
+ /**
106
+ * Check if a component is registered
107
+ */
108
+ hasComponent(componentId: string): boolean;
109
+ /**
110
+ * Check if a language is registered in static registry
111
+ */
112
+ hasLanguage(language: TLanguages): boolean;
113
+ /**
114
+ * Get language by code from static registry
115
+ */
116
+ getLanguageByCode(code: string): LanguageDefinition | undefined;
117
+ /**
118
+ * Get component registry for direct access
119
+ */
120
+ getComponentRegistry(): ComponentRegistry<TLanguages>;
121
+ /**
122
+ * Get enum registry for direct access
123
+ */
124
+ getEnumRegistry(): EnumTranslationRegistry<string, TLanguages>;
125
+ /**
126
+ * Validate that all components have complete translations
127
+ */
128
+ validateAllComponents(): {
129
+ isValid: boolean;
130
+ errors: string[];
131
+ warnings: string[];
132
+ };
133
+ /**
134
+ * Clear all component registrations for this instance (useful for testing)
135
+ */
136
+ clearAllComponents(): void;
137
+ /**
138
+ * Remove a specific named instance
139
+ */
140
+ static removeInstance(key?: string): boolean;
141
+ /**
142
+ * Check if an instance exists
143
+ */
144
+ static hasInstance(key?: string): boolean;
145
+ /**
146
+ * Reset all plugin engines and clear component registrations
147
+ * Useful for test cleanup
148
+ */
149
+ static resetAll(): void;
150
+ }
151
+ //# sourceMappingURL=plugin-i18n-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-i18n-engine.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/plugin-i18n-engine.ts"],"names":[],"mappings":"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"}