@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
package/src/utils.d.ts ADDED
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Replaces variables in a string with their corresponding values from vars or constants.
3
+ * @param str - The string containing variables to replace
4
+ * @param vars - An object mapping variable names to their replacement values
5
+ * @param constants - An object containing constant values for replacement
6
+ * @returns The string with variables replaced
7
+ */
8
+ export declare function replaceVariables(str: string, vars?: Record<string, string | number>, constants?: any): string;
9
+ /**
10
+ * Checks if a given key indicates a template string.
11
+ * @param key - The key to check
12
+ * @returns True if the key indicates a template, false otherwise
13
+ */
14
+ export declare function isTemplate(key: string): boolean;
15
+ /**
16
+ * Checks if a given timezone string is valid.
17
+ * @param timezone - The timezone string to validate
18
+ * @returns
19
+ */
20
+ export declare function isValidTimezone(timezone: string): boolean;
21
+ /**
22
+ * Converts parts to a single string key, joining with underscores.
23
+ * @param parts - The parts to join
24
+ * @returns The joined string key
25
+ */
26
+ export declare function toStringKey<TStringKey extends string>(...parts: string[]): TStringKey;
27
+ /**
28
+ * Converts an enum value to a string key by joining parts with underscores and appending the enum value.
29
+ * @param value - The enum value
30
+ * @param parts - Additional parts to join
31
+ * @returns The constructed string key
32
+ */
33
+ export declare function toStringKeyFromEnum<TStringKey extends string>(value: string, ...parts: string[]): TStringKey;
34
+ /**
35
+ * Type that constructs string keys from enum values with prefixes and optional template suffix
36
+ */
37
+ type BuildStringKey<TEnumValue extends string, TPrefixes extends readonly string[], TIsTemplate extends boolean = false> = TPrefixes extends readonly [] ? `${TEnumValue}${TIsTemplate extends true ? 'Template' : ''}` : TPrefixes extends readonly [infer First, ...infer Rest] ? First extends string ? Rest extends readonly string[] ? `${First}_${BuildStringKey<TEnumValue, Rest, TIsTemplate>}` : never : never : never;
38
+ /**
39
+ * Type that maps all enum values to their corresponding string keys
40
+ */
41
+ type ReasonMapFromEnum<TEnum extends Record<string, string>, TStringKey extends string, TPrefixes extends readonly string[] = [], TTemplateKeys extends Set<TEnum[keyof TEnum]> = never> = {
42
+ [K in TEnum[keyof TEnum]]: BuildStringKey<K, TPrefixes, TTemplateKeys extends Set<K> ? true : false> extends TStringKey ? BuildStringKey<K, TPrefixes, TTemplateKeys extends Set<K> ? true : false> : never;
43
+ };
44
+ /**
45
+ * Builds a reason map from an enum object, mapping each enum value to a string key.
46
+ * @param enumObj - The enum object
47
+ * @param prefixes - Prefixes to prepend to each string key
48
+ * @param templateKeys - Optional set of enum values that should have 'Template' suffix for template processing
49
+ * @returns The constructed reason map
50
+ */
51
+ export declare function buildReasonMap<TEnum extends Record<string, string>, TStringKey extends string>(enumObj: TEnum, prefixes?: string[], templateKeys?: Set<TEnum[keyof TEnum]>): Record<TEnum[keyof TEnum], TStringKey>;
52
+ /**
53
+ * Type-safe version of buildReasonMap that ensures all enum values are mapped and all string keys exist
54
+ */
55
+ export declare function buildTypeSafeReasonMap<TEnum extends Record<string, string>, TStringKey extends string, TPrefixes extends readonly string[] = [], TTemplateKeys extends Set<TEnum[keyof TEnum]> = never>(enumObj: TEnum, prefixes: TPrefixes, templateKeys?: TTemplateKeys): ReasonMapFromEnum<TEnum, TStringKey, TPrefixes, TTemplateKeys>;
56
+ /**
57
+ * Validates that a reason map has entries for all enum values
58
+ */
59
+ export declare function validateReasonMap<TEnum extends Record<string, string>, TStringKey extends string>(enumObj: TEnum, reasonMap: Partial<Record<TEnum[keyof TEnum], TStringKey>>): reasonMap is Record<TEnum[keyof TEnum], TStringKey>;
60
+ /**
61
+ * Creates a complete reason map ensuring all enum values are covered
62
+ */
63
+ export declare function createCompleteReasonMap<TEnum extends Record<string, string>, TStringKey extends string>(enumObj: TEnum, prefixes?: readonly string[], templateKeys?: Set<TEnum[keyof TEnum]>): Record<TEnum[keyof TEnum], TStringKey>;
64
+ export {};
65
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/utils.ts"],"names":[],"mappings":"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"}
package/src/utils.js ADDED
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replaceVariables = replaceVariables;
4
+ exports.isTemplate = isTemplate;
5
+ exports.isValidTimezone = isValidTimezone;
6
+ exports.toStringKey = toStringKey;
7
+ exports.toStringKeyFromEnum = toStringKeyFromEnum;
8
+ exports.buildReasonMap = buildReasonMap;
9
+ exports.buildTypeSafeReasonMap = buildTypeSafeReasonMap;
10
+ exports.validateReasonMap = validateReasonMap;
11
+ exports.createCompleteReasonMap = createCompleteReasonMap;
12
+ const tslib_1 = require("tslib");
13
+ const moment_timezone_1 = tslib_1.__importDefault(require("moment-timezone"));
14
+ /**
15
+ * Replaces variables in a string with their corresponding values from vars or constants.
16
+ * @param str - The string containing variables to replace
17
+ * @param vars - An object mapping variable names to their replacement values
18
+ * @param constants - An object containing constant values for replacement
19
+ * @returns The string with variables replaced
20
+ */
21
+ function replaceVariables(str, vars, constants) {
22
+ // Ensure input is a string
23
+ if (typeof str !== 'string') {
24
+ str = String(str);
25
+ }
26
+ const variables = str.match(/\{(.+?)\}/g);
27
+ if (!variables)
28
+ return str;
29
+ let result = str;
30
+ for (const variable of variables) {
31
+ const varName = variable.slice(1, -1);
32
+ let replacement = '';
33
+ if (vars && varName in vars) {
34
+ replacement = String(vars[varName]);
35
+ }
36
+ else if (constants && varName in constants) {
37
+ replacement = String(constants[varName]);
38
+ }
39
+ if (replacement) {
40
+ result = result.replace(variable, replacement);
41
+ }
42
+ }
43
+ return result;
44
+ }
45
+ /**
46
+ * Checks if a given key indicates a template string.
47
+ * @param key - The key to check
48
+ * @returns True if the key indicates a template, false otherwise
49
+ */
50
+ function isTemplate(key) {
51
+ return key.trim().toLowerCase().endsWith('template');
52
+ }
53
+ /**
54
+ * Checks if a given timezone string is valid.
55
+ * @param timezone - The timezone string to validate
56
+ * @returns
57
+ */
58
+ function isValidTimezone(timezone) {
59
+ return moment_timezone_1.default.tz.zone(timezone) !== null;
60
+ }
61
+ /**
62
+ * Converts parts to a single string key, joining with underscores.
63
+ * @param parts - The parts to join
64
+ * @returns The joined string key
65
+ */
66
+ function toStringKey(...parts) {
67
+ return parts.join('_');
68
+ }
69
+ /**
70
+ * Converts an enum value to a string key by joining parts with underscores and appending the enum value.
71
+ * @param value - The enum value
72
+ * @param parts - Additional parts to join
73
+ * @returns The constructed string key
74
+ */
75
+ function toStringKeyFromEnum(value, ...parts) {
76
+ const allParts = [...parts, value];
77
+ return allParts.join('_');
78
+ }
79
+ /**
80
+ * Builds a reason map from an enum object, mapping each enum value to a string key.
81
+ * @param enumObj - The enum object
82
+ * @param prefixes - Prefixes to prepend to each string key
83
+ * @param templateKeys - Optional set of enum values that should have 'Template' suffix for template processing
84
+ * @returns The constructed reason map
85
+ */
86
+ function buildReasonMap(enumObj, prefixes = [], templateKeys) {
87
+ const map = {};
88
+ Object.values(enumObj).forEach((value) => {
89
+ const baseKey = [...prefixes, value].join('_');
90
+ const finalKey = templateKeys?.has(value)
91
+ ? baseKey + 'Template'
92
+ : baseKey;
93
+ map[value] = finalKey;
94
+ });
95
+ return map;
96
+ }
97
+ /**
98
+ * Type-safe version of buildReasonMap that ensures all enum values are mapped and all string keys exist
99
+ */
100
+ function buildTypeSafeReasonMap(enumObj, prefixes, templateKeys) {
101
+ const map = {};
102
+ Object.values(enumObj).forEach((value) => {
103
+ const baseKey = [...prefixes, value].join('_');
104
+ const finalKey = templateKeys?.has(value)
105
+ ? baseKey + 'Template'
106
+ : baseKey;
107
+ map[value] = finalKey;
108
+ });
109
+ return map;
110
+ }
111
+ /**
112
+ * Validates that a reason map has entries for all enum values
113
+ */
114
+ function validateReasonMap(enumObj, reasonMap) {
115
+ return Object.values(enumObj).every((value) => value in reasonMap &&
116
+ reasonMap[value] !== undefined);
117
+ }
118
+ /**
119
+ * Creates a complete reason map ensuring all enum values are covered
120
+ */
121
+ function createCompleteReasonMap(enumObj, prefixes = [], templateKeys) {
122
+ const map = buildReasonMap(enumObj, [...prefixes], templateKeys);
123
+ if (!validateReasonMap(enumObj, map)) {
124
+ const missing = Object.values(enumObj).filter((value) => !(value in map));
125
+ throw new Error(`Missing reason map entries for: ${missing.join(', ')}`);
126
+ }
127
+ return map;
128
+ }
129
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Configuration for component registration validation
3
+ */
4
+ export interface ValidationConfig {
5
+ /** Whether to require all languages to have all strings */
6
+ readonly requireCompleteStrings: boolean;
7
+ /** Whether to allow registration with missing strings (will use fallbacks) */
8
+ readonly allowPartialRegistration: boolean;
9
+ /** Default language to fall back to for missing strings */
10
+ readonly fallbackLanguageId: string;
11
+ }
12
+ //# sourceMappingURL=validation-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-config.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/validation-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,8EAA8E;IAC9E,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,2DAA2D;IAC3D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=validation-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-config.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/validation-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Validation result for component registration
3
+ */
4
+ export interface ValidationResult {
5
+ readonly isValid: boolean;
6
+ readonly missingKeys: ReadonlyArray<{
7
+ readonly languageId: string;
8
+ readonly componentId: string;
9
+ readonly stringKey: string;
10
+ }>;
11
+ readonly errors: readonly string[];
12
+ }
13
+ //# sourceMappingURL=validation-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-result.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/validation-result.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;QAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC,CAAC;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=validation-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-result.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/validation-result.ts"],"names":[],"mappings":""}
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Digital Defiance
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,30 +0,0 @@
1
- import { CurrencyCode } from './currency-code';
2
- import { Timezone } from './timezone';
3
- import { LanguageContextSpace } from './types';
4
-
5
- export interface IActiveContext<TLanguage extends string> {
6
- /**
7
- * The default language for the user facing application
8
- */
9
- language: TLanguage;
10
- /**
11
- * The default language for the admin interface
12
- */
13
- adminLanguage: TLanguage;
14
- /**
15
- * The default currency code for the user facing application
16
- */
17
- currencyCode: CurrencyCode;
18
- /**
19
- * The default language context for the current context
20
- */
21
- currentContext: LanguageContextSpace;
22
- /**
23
- * The default timezone for the user facing application
24
- */
25
- timezone: Timezone;
26
- /**
27
- * The default timezone for the admin interface
28
- */
29
- adminTimezone: Timezone;
30
- }
@@ -1,11 +0,0 @@
1
- /**
2
- * Component definition with its string keys
3
- */
4
- export interface ComponentDefinition<TStringKeys extends string> {
5
- /** Unique identifier for the component */
6
- readonly id: string;
7
- /** Human-readable name for the component */
8
- readonly name: string;
9
- /** Array of all string keys this component requires */
10
- readonly stringKeys: readonly TStringKeys[];
11
- }
@@ -1,13 +0,0 @@
1
- import { ComponentDefinition } from './component-definition';
2
- import { PartialComponentLanguageStrings } from './types';
3
-
4
- /**
5
- * Registration payload for a component with its strings
6
- */
7
- export interface ComponentRegistration<
8
- TStringKeys extends string,
9
- TLanguages extends string,
10
- > {
11
- readonly component: ComponentDefinition<TStringKeys>;
12
- readonly strings: PartialComponentLanguageStrings<TStringKeys, TLanguages>;
13
- }