@digitaldefiance/i18n-lib 1.3.13 → 1.3.14

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 +4 -0
  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 +147 -0
  116. package/src/plugin-i18n-engine.d.ts.map +1 -0
  117. package/src/plugin-i18n-engine.js +369 -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,369 @@
1
+ "use strict";
2
+ /**
3
+ * Plugin-based internationalization engine with component and language registration
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PluginI18nEngine = void 0;
7
+ const component_registry_1 = require("./component-registry");
8
+ const currency_code_1 = require("./currency-code");
9
+ const enum_registry_1 = require("./enum-registry");
10
+ const global_active_context_1 = require("./global-active-context");
11
+ const language_registry_1 = require("./language-registry");
12
+ const registry_error_1 = require("./registry-error");
13
+ const registry_error_type_1 = require("./registry-error-type");
14
+ const timezone_1 = require("./timezone");
15
+ /**
16
+ * Plugin-based I18n Engine with registration capabilities
17
+ */
18
+ class PluginI18nEngine {
19
+ componentRegistry;
20
+ enumRegistry;
21
+ config;
22
+ contextKey;
23
+ /**
24
+ * Default template processor instance
25
+ */
26
+ t;
27
+ /**
28
+ * Static instances for semi-singleton pattern
29
+ */
30
+ static _instances = new Map();
31
+ static _defaultKey = null;
32
+ static DefaultInstanceKey = 'default';
33
+ constructor(initialLanguages, config = {}) {
34
+ // Find default language from initialLanguages or use the first one
35
+ const defaultLang = initialLanguages.find((l) => l.isDefault) || initialLanguages[0];
36
+ if (!defaultLang) {
37
+ throw new Error('At least one language must be provided');
38
+ }
39
+ // Set up configuration with defaults
40
+ this.config = {
41
+ defaultLanguage: defaultLang.id,
42
+ fallbackLanguage: defaultLang.id,
43
+ defaultCurrencyCode: new currency_code_1.CurrencyCode('USD'),
44
+ timezone: new timezone_1.Timezone('UTC'),
45
+ adminTimezone: new timezone_1.Timezone('UTC'),
46
+ validation: {
47
+ requireCompleteStrings: false,
48
+ allowPartialRegistration: true,
49
+ fallbackLanguageId: defaultLang.id,
50
+ },
51
+ ...config,
52
+ };
53
+ // Register initial languages in static registry (skip if already registered)
54
+ for (const lang of initialLanguages) {
55
+ if (!language_registry_1.LanguageRegistry.hasLanguage(lang.id)) {
56
+ language_registry_1.LanguageRegistry.registerLanguage(lang);
57
+ }
58
+ }
59
+ // Initialize component registry (per-instance)
60
+ this.componentRegistry = new component_registry_1.ComponentRegistry(initialLanguages.map((l) => l.id), this.config.validation);
61
+ this.enumRegistry = new enum_registry_1.EnumTranslationRegistry(initialLanguages.map((l) => l.id), (key, vars) => this.safeTranslate('core', key, vars));
62
+ // Initialize context key for this engine instance
63
+ this.contextKey = PluginI18nEngine.DefaultInstanceKey;
64
+ // Create or get the global context for this engine
65
+ const globalContext = global_active_context_1.GlobalActiveContext.getInstance();
66
+ // Always create/update the context for this engine
67
+ globalContext.createContext(this.config.defaultLanguage, this.config.defaultLanguage, this.contextKey);
68
+ globalContext.setCurrencyCode(this.config.defaultCurrencyCode, this.contextKey);
69
+ globalContext.setUserTimezone(this.config.timezone, this.contextKey);
70
+ globalContext.setAdminTimezone(this.config.adminTimezone, this.contextKey);
71
+ // Initialize the default template processor for component-based patterns
72
+ this.t = (str, language, ...otherVars) => {
73
+ // Step 1: Replace component-based patterns like {{componentId.stringKey}}
74
+ let result = str.replace(/\{\{([^}]+)\}\}/g, (match, pattern) => {
75
+ const parts = pattern.split('.');
76
+ if (parts.length === 2) {
77
+ const [componentId, stringKey] = parts;
78
+ // For template strings, use the first variable object if available
79
+ const isTemplate = stringKey.toLowerCase().endsWith('template');
80
+ const vars = isTemplate && otherVars.length > 0 ? otherVars[0] : {};
81
+ return this.safeTranslate(componentId.trim(), stringKey.trim(), vars, language);
82
+ }
83
+ return match; // Return original if pattern doesn't match expected format
84
+ });
85
+ // Step 2: Replace remaining variable patterns like {varName} with merged variables
86
+ const allVars = otherVars.reduce((acc, vars) => ({ ...acc, ...vars }), {});
87
+ result = result.replace(/\{(\w+)\}/g, (match, varName) => {
88
+ return allVars[varName] !== undefined ? String(allVars[varName]) : match;
89
+ });
90
+ return result;
91
+ };
92
+ // Auto-register as default instance if none exists
93
+ if (!PluginI18nEngine._defaultKey) {
94
+ PluginI18nEngine._instances.set(PluginI18nEngine.DefaultInstanceKey, this);
95
+ PluginI18nEngine._defaultKey = PluginI18nEngine.DefaultInstanceKey;
96
+ }
97
+ }
98
+ /**
99
+ * Create a new instance with a specific key
100
+ */
101
+ static createInstance(key, initialLanguages, config) {
102
+ if (PluginI18nEngine._instances.has(key)) {
103
+ throw registry_error_1.RegistryError.createSimple(registry_error_type_1.RegistryErrorType.DuplicateComponent, `I18n instance with key '${key}' already exists`, { key });
104
+ }
105
+ const instance = new PluginI18nEngine(initialLanguages, config);
106
+ instance.contextKey = key;
107
+ // Create context for this specific instance
108
+ const globalContext = global_active_context_1.GlobalActiveContext.getInstance();
109
+ globalContext.createContext(instance.config.defaultLanguage, instance.config.defaultLanguage, key);
110
+ globalContext.setCurrencyCode(instance.config.defaultCurrencyCode, key);
111
+ globalContext.setUserTimezone(instance.config.timezone, key);
112
+ globalContext.setAdminTimezone(instance.config.adminTimezone, key);
113
+ PluginI18nEngine._instances.set(key, instance);
114
+ if (!PluginI18nEngine._defaultKey) {
115
+ PluginI18nEngine._defaultKey = key;
116
+ }
117
+ return instance;
118
+ }
119
+ /**
120
+ * Get an existing instance by key
121
+ */
122
+ static getInstance(key) {
123
+ const instanceKey = key ||
124
+ PluginI18nEngine._defaultKey ||
125
+ PluginI18nEngine.DefaultInstanceKey;
126
+ const instance = PluginI18nEngine._instances.get(instanceKey);
127
+ if (!instance) {
128
+ throw registry_error_1.RegistryError.createSimple(registry_error_type_1.RegistryErrorType.ComponentNotFound, `I18n instance with key '${instanceKey}' not found`, { key: instanceKey });
129
+ }
130
+ return instance;
131
+ }
132
+ /**
133
+ * Register a new language (updates static registry)
134
+ */
135
+ registerLanguage(language) {
136
+ language_registry_1.LanguageRegistry.registerLanguage(language);
137
+ // Update component registry with new language
138
+ const newLanguages = language_registry_1.LanguageRegistry.getLanguageIds();
139
+ this.componentRegistry.updateRegisteredLanguages(newLanguages);
140
+ }
141
+ /**
142
+ * Register multiple languages (updates static registry)
143
+ */
144
+ registerLanguages(languages) {
145
+ for (const language of languages) {
146
+ this.registerLanguage(language);
147
+ }
148
+ }
149
+ /**
150
+ * Register a component with its translations
151
+ */
152
+ registerComponent(registration) {
153
+ return this.componentRegistry.registerComponent(registration);
154
+ }
155
+ /**
156
+ * Update strings for an existing component
157
+ */
158
+ updateComponentStrings(componentId, strings) {
159
+ return this.componentRegistry.updateComponentStrings(componentId, strings);
160
+ }
161
+ /**
162
+ * Register an enum with translations
163
+ */
164
+ registerEnum(enumObj, translations, enumName) {
165
+ this.enumRegistry.register(enumObj, translations, enumName);
166
+ }
167
+ /**
168
+ * Translate a string for a component
169
+ */
170
+ translate(componentId, stringKey, variables, language) {
171
+ const request = {
172
+ componentId,
173
+ stringKey,
174
+ language: language || this.getCurrentLanguage(),
175
+ variables,
176
+ };
177
+ const response = this.componentRegistry.getTranslation(request);
178
+ return response.translation;
179
+ }
180
+ /**
181
+ * Safe translate that returns a placeholder if translation fails
182
+ */
183
+ safeTranslate(componentId, stringKey, variables, language) {
184
+ try {
185
+ return this.translate(componentId, stringKey, variables, language);
186
+ }
187
+ catch (error) {
188
+ // Return a placeholder if translation fails
189
+ return `[${componentId}.${stringKey}]`;
190
+ }
191
+ }
192
+ /**
193
+ * Translate an enum value
194
+ */
195
+ translateEnum(enumObj, value, language) {
196
+ return this.enumRegistry.translate(enumObj, value, language || this.getCurrentLanguage());
197
+ }
198
+ /**
199
+ * Get detailed translation response
200
+ */
201
+ getTranslationDetails(componentId, stringKey, variables, language) {
202
+ const request = {
203
+ componentId,
204
+ stringKey,
205
+ language: language || this.getCurrentLanguage(),
206
+ variables,
207
+ };
208
+ return this.componentRegistry.getTranslation(request);
209
+ }
210
+ /**
211
+ * Get current context
212
+ */
213
+ getContext() {
214
+ const globalContext = global_active_context_1.GlobalActiveContext.getInstance();
215
+ return globalContext.getContext(this.contextKey);
216
+ }
217
+ /**
218
+ * Update context
219
+ */
220
+ updateContext(updates) {
221
+ const globalContext = global_active_context_1.GlobalActiveContext.getInstance();
222
+ if (updates.language)
223
+ globalContext.setUserLanguage(updates.language, this.contextKey);
224
+ if (updates.adminLanguage)
225
+ globalContext.setAdminLanguage(updates.adminLanguage, this.contextKey);
226
+ if (updates.currencyCode)
227
+ globalContext.setCurrencyCode(updates.currencyCode, this.contextKey);
228
+ if (updates.currentContext)
229
+ globalContext.setLanguageContextSpace(updates.currentContext, this.contextKey);
230
+ if (updates.timezone)
231
+ globalContext.setUserTimezone(updates.timezone, this.contextKey);
232
+ if (updates.adminTimezone)
233
+ globalContext.setAdminTimezone(updates.adminTimezone, this.contextKey);
234
+ }
235
+ /**
236
+ * Get current language from global context
237
+ * Respects language context space (admin vs user)
238
+ */
239
+ getCurrentLanguage() {
240
+ const globalContext = global_active_context_1.GlobalActiveContext.getInstance();
241
+ const context = globalContext.getContext(this.contextKey);
242
+ return context.currentContext === 'admin' ? context.adminLanguage : context.language;
243
+ }
244
+ /**
245
+ * Set current language
246
+ */
247
+ setLanguage(language) {
248
+ if (!language_registry_1.LanguageRegistry.hasLanguage(language)) {
249
+ throw registry_error_1.RegistryError.createSimple(registry_error_type_1.RegistryErrorType.LanguageNotFound, `Language '${language}' is not registered`, { language });
250
+ }
251
+ const globalContext = global_active_context_1.GlobalActiveContext.getInstance();
252
+ globalContext.setUserLanguage(language, this.contextKey);
253
+ }
254
+ /**
255
+ * Get available languages from static registry
256
+ */
257
+ getLanguages() {
258
+ return language_registry_1.LanguageRegistry.getAllLanguages();
259
+ }
260
+ /**
261
+ * Get registered components
262
+ */
263
+ getComponents() {
264
+ return this.componentRegistry.getComponents();
265
+ }
266
+ /**
267
+ * Check if a component is registered
268
+ */
269
+ hasComponent(componentId) {
270
+ return this.componentRegistry.hasComponent(componentId);
271
+ }
272
+ /**
273
+ * Check if a language is registered in static registry
274
+ */
275
+ hasLanguage(language) {
276
+ return language_registry_1.LanguageRegistry.hasLanguage(language);
277
+ }
278
+ /**
279
+ * Get language by code from static registry
280
+ */
281
+ getLanguageByCode(code) {
282
+ return language_registry_1.LanguageRegistry.getLanguageByCode(code);
283
+ }
284
+ /**
285
+ * Get component registry for direct access
286
+ */
287
+ getComponentRegistry() {
288
+ return this.componentRegistry;
289
+ }
290
+ /**
291
+ * Get enum registry for direct access
292
+ */
293
+ getEnumRegistry() {
294
+ return this.enumRegistry;
295
+ }
296
+ /**
297
+ * Validate that all components have complete translations
298
+ */
299
+ validateAllComponents() {
300
+ const errors = [];
301
+ const warnings = [];
302
+ let isValid = true;
303
+ const components = this.getComponents();
304
+ const languages = language_registry_1.LanguageRegistry.getLanguageIds();
305
+ for (const component of components) {
306
+ const componentStrings = this.componentRegistry.getComponentStrings(component.id);
307
+ if (!componentStrings) {
308
+ errors.push(`Component '${component.id}' has no registered strings`);
309
+ isValid = false;
310
+ continue;
311
+ }
312
+ for (const language of languages) {
313
+ const languageStrings = componentStrings[language];
314
+ if (!languageStrings) {
315
+ errors.push(`Component '${component.id}' missing strings for language '${language}'`);
316
+ isValid = false;
317
+ continue;
318
+ }
319
+ for (const stringKey of component.stringKeys) {
320
+ if (!languageStrings[stringKey]) {
321
+ warnings.push(`Component '${component.id}' missing key '${stringKey}' for language '${language}'`);
322
+ }
323
+ }
324
+ }
325
+ }
326
+ return { isValid, errors, warnings };
327
+ }
328
+ /**
329
+ * Clear all component registrations for this instance (useful for testing)
330
+ */
331
+ clearAllComponents() {
332
+ this.componentRegistry.clearAllComponents();
333
+ }
334
+ /**
335
+ * Remove a specific named instance
336
+ */
337
+ static removeInstance(key) {
338
+ const instanceKey = key || PluginI18nEngine.DefaultInstanceKey;
339
+ const removed = PluginI18nEngine._instances.delete(instanceKey);
340
+ // If we removed the default instance, clear the default key
341
+ if (removed && PluginI18nEngine._defaultKey === instanceKey) {
342
+ PluginI18nEngine._defaultKey = null;
343
+ }
344
+ return removed;
345
+ }
346
+ /**
347
+ * Check if an instance exists
348
+ */
349
+ static hasInstance(key) {
350
+ const instanceKey = key || PluginI18nEngine.DefaultInstanceKey;
351
+ return PluginI18nEngine._instances.has(instanceKey);
352
+ }
353
+ /**
354
+ * Reset all plugin engines and clear component registrations
355
+ * Useful for test cleanup
356
+ */
357
+ static resetAll() {
358
+ // Clear component registrations for each engine BEFORE clearing instances
359
+ for (const engine of PluginI18nEngine._instances.values()) {
360
+ engine.clearAllComponents();
361
+ }
362
+ PluginI18nEngine._instances.clear();
363
+ PluginI18nEngine._defaultKey = null;
364
+ language_registry_1.LanguageRegistry.clear();
365
+ global_active_context_1.GlobalActiveContext.clearAll();
366
+ }
367
+ }
368
+ exports.PluginI18nEngine = PluginI18nEngine;
369
+ //# sourceMappingURL=plugin-i18n-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-i18n-engine.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/plugin-i18n-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { PluginI18nEngine } from './plugin-i18n-engine';
2
+ /**
3
+ * Generic translatable error that works with any plugin engine and component
4
+ */
5
+ export declare class PluginTranslatableGenericError<TStringKey extends string = string, TLanguage extends string = string> extends Error {
6
+ readonly stringKey: TStringKey;
7
+ readonly componentId: string;
8
+ readonly language?: TLanguage;
9
+ readonly variables?: Record<string, string | number>;
10
+ readonly metadata?: Record<string, any>;
11
+ /**
12
+ * Create a translatable error
13
+ * @param componentId - The component ID to translate from
14
+ * @param stringKey - The translation key
15
+ * @param variables - Variables for interpolation
16
+ * @param language - Optional language override
17
+ * @param metadata - Additional error metadata
18
+ * @param instanceKey - Optional engine instance key
19
+ */
20
+ constructor(componentId: string, stringKey: TStringKey, variables?: Record<string, string | number>, language?: TLanguage, metadata?: Record<string, any>, instanceKey?: string);
21
+ /**
22
+ * Create error with explicit engine instance
23
+ */
24
+ static withEngine<TStringKey extends string, TLanguage extends string>(engine: PluginI18nEngine<TLanguage>, componentId: string, stringKey: TStringKey, variables?: Record<string, string | number>, language?: TLanguage, metadata?: Record<string, any>): PluginTranslatableGenericError<TStringKey, TLanguage>;
25
+ /**
26
+ * Retranslate the error message in a different language
27
+ */
28
+ retranslate(language: TLanguage, instanceKey?: string): string;
29
+ }
30
+ //# sourceMappingURL=plugin-translatable-generic-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-translatable-generic-error.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/plugin-translatable-generic-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;GAEG;AACH,qBAAa,8BAA8B,CACzC,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,SAAS,SAAS,MAAM,GAAG,MAAM,CACjC,SAAQ,KAAK;IACb,SAAgB,SAAS,EAAE,UAAU,CAAC;IACtC,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAC5D,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/C;;;;;;;;OAQG;gBAED,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,WAAW,CAAC,EAAE,MAAM;IA4BtB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,EACnE,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,EACnC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,8BAA8B,CAAC,UAAU,EAAE,SAAS,CAAC;IAqBxD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;CAa/D"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PluginTranslatableGenericError = void 0;
4
+ const plugin_i18n_engine_1 = require("./plugin-i18n-engine");
5
+ /**
6
+ * Generic translatable error that works with any plugin engine and component
7
+ */
8
+ class PluginTranslatableGenericError extends Error {
9
+ stringKey;
10
+ componentId;
11
+ language;
12
+ variables;
13
+ metadata;
14
+ /**
15
+ * Create a translatable error
16
+ * @param componentId - The component ID to translate from
17
+ * @param stringKey - The translation key
18
+ * @param variables - Variables for interpolation
19
+ * @param language - Optional language override
20
+ * @param metadata - Additional error metadata
21
+ * @param instanceKey - Optional engine instance key
22
+ */
23
+ constructor(componentId, stringKey, variables, language, metadata, instanceKey) {
24
+ let translatedMessage;
25
+ try {
26
+ const engine = plugin_i18n_engine_1.PluginI18nEngine.getInstance(instanceKey);
27
+ translatedMessage = engine.safeTranslate(componentId, stringKey, variables, language);
28
+ }
29
+ catch (error) {
30
+ // If engine not found or translation fails, use fallback format
31
+ translatedMessage = `[${componentId}.${stringKey}]`;
32
+ }
33
+ super(translatedMessage);
34
+ this.name = 'TranslatableGenericError';
35
+ this.stringKey = stringKey;
36
+ this.componentId = componentId;
37
+ this.language = language;
38
+ this.variables = variables;
39
+ this.metadata = metadata;
40
+ // Ensure proper prototype chain for instanceof checks across transpiled targets
41
+ }
42
+ /**
43
+ * Create error with explicit engine instance
44
+ */
45
+ static withEngine(engine, componentId, stringKey, variables, language, metadata) {
46
+ const translatedMessage = engine.safeTranslate(componentId, stringKey, variables, language);
47
+ const error = Object.create(PluginTranslatableGenericError.prototype);
48
+ Error.call(error, translatedMessage);
49
+ error.name = 'TranslatableGenericError';
50
+ error.stringKey = stringKey;
51
+ error.componentId = componentId;
52
+ error.language = language;
53
+ error.variables = variables;
54
+ error.metadata = metadata;
55
+ error.message = translatedMessage;
56
+ return error;
57
+ }
58
+ /**
59
+ * Retranslate the error message in a different language
60
+ */
61
+ retranslate(language, instanceKey) {
62
+ try {
63
+ const engine = plugin_i18n_engine_1.PluginI18nEngine.getInstance(instanceKey);
64
+ return engine.safeTranslate(this.componentId, this.stringKey, this.variables, language);
65
+ }
66
+ catch (error) {
67
+ return `[${this.componentId}.${this.stringKey}]`;
68
+ }
69
+ }
70
+ }
71
+ exports.PluginTranslatableGenericError = PluginTranslatableGenericError;
72
+ //# sourceMappingURL=plugin-translatable-generic-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-translatable-generic-error.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/plugin-translatable-generic-error.ts"],"names":[],"mappings":";;;AAAA,6DAAwD;AAExD;;GAEG;AACH,MAAa,8BAGX,SAAQ,KAAK;IACG,SAAS,CAAa;IACtB,WAAW,CAAS;IACpB,QAAQ,CAAa;IACrB,SAAS,CAAmC;IAC5C,QAAQ,CAAuB;IAE/C;;;;;;;;OAQG;IACH,YACE,WAAmB,EACnB,SAAqB,EACrB,SAA2C,EAC3C,QAAoB,EACpB,QAA8B,EAC9B,WAAoB;QAEpB,IAAI,iBAAyB,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,qCAAgB,CAAC,WAAW,CAAY,WAAW,CAAC,CAAC;YACpE,iBAAiB,GAAG,MAAM,CAAC,aAAa,CACtC,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,CACT,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gEAAgE;YAChE,iBAAiB,GAAG,IAAI,WAAW,IAAI,SAAS,GAAG,CAAC;QACtD,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,gFAAgF;IAClF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CACf,MAAmC,EACnC,WAAmB,EACnB,SAAqB,EACrB,SAA2C,EAC3C,QAAoB,EACpB,QAA8B;QAE9B,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAC5C,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,CACT,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACxC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5B,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QAChC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,KAAK,CAAC,OAAO,GAAG,iBAAiB,CAAC;QAElC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAmB,EAAE,WAAoB;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,qCAAgB,CAAC,WAAW,CAAY,WAAW,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC,aAAa,CACzB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,QAAQ,CACT,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC;QACnD,CAAC;IACH,CAAC;CACF;AApGD,wEAoGC"}
@@ -0,0 +1,29 @@
1
+ import { IHandleable } from './i-handleable';
2
+ import { PluginTranslatableGenericError } from './plugin-translatable-generic-error';
3
+ /**
4
+ * Generic translatable error that works with any plugin engine and component
5
+ */
6
+ export declare class PluginTranslatableHandleableGenericError<TStringKey extends string = string, TLanguage extends string = string> extends PluginTranslatableGenericError<TStringKey, TLanguage> implements IHandleable {
7
+ private _handled;
8
+ readonly cause?: Error;
9
+ readonly statusCode: number;
10
+ readonly sourceData?: unknown;
11
+ /**
12
+ * Create a translatable error
13
+ * @param componentId - The component ID to translate from
14
+ * @param stringKey - The translation key
15
+ * @param variables - Variables for interpolation
16
+ * @param language - Optional language override
17
+ * @param metadata - Additional error metadata
18
+ * @param instanceKey - Optional engine instance key
19
+ */
20
+ constructor(componentId: string, stringKey: TStringKey, variables?: Record<string, string | number>, language?: TLanguage, metadata?: Record<string, any>, instanceKey?: string, handleableOptions?: {
21
+ statusCode?: number;
22
+ cause?: Error;
23
+ sourceData?: unknown;
24
+ });
25
+ get handled(): boolean;
26
+ set handled(value: boolean);
27
+ toJSON(): Record<string, unknown>;
28
+ }
29
+ //# sourceMappingURL=plugin-translatable-handleable-generic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-translatable-handleable-generic.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/plugin-translatable-handleable-generic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF;;GAEG;AACH,qBAAa,wCAAwC,CACjD,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,SAAS,SAAS,MAAM,GAAG,MAAM,CAEnC,SAAQ,8BAA8B,CAAC,UAAU,EAAE,SAAS,CAC5D,YAAW,WAAW;IAEtB,OAAO,CAAC,QAAQ,CAAS;IACzB,SAAyB,KAAK,CAAC,EAAE,KAAK,CAAC;IACvC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErC;;;;;;;;OAQG;gBAED,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB;IAOH,IAAW,OAAO,IAAI,OAAO,CAE5B;IACD,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAEhC;IACD,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQlC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PluginTranslatableHandleableGenericError = void 0;
4
+ const plugin_translatable_generic_error_1 = require("./plugin-translatable-generic-error");
5
+ /**
6
+ * Generic translatable error that works with any plugin engine and component
7
+ */
8
+ class PluginTranslatableHandleableGenericError extends plugin_translatable_generic_error_1.PluginTranslatableGenericError {
9
+ _handled = false;
10
+ cause;
11
+ statusCode;
12
+ sourceData;
13
+ /**
14
+ * Create a translatable error
15
+ * @param componentId - The component ID to translate from
16
+ * @param stringKey - The translation key
17
+ * @param variables - Variables for interpolation
18
+ * @param language - Optional language override
19
+ * @param metadata - Additional error metadata
20
+ * @param instanceKey - Optional engine instance key
21
+ */
22
+ constructor(componentId, stringKey, variables, language, metadata, instanceKey, handleableOptions) {
23
+ super(componentId, stringKey, variables, language, metadata, instanceKey);
24
+ this.statusCode = handleableOptions?.statusCode ?? 500;
25
+ this.cause = handleableOptions?.cause;
26
+ this.sourceData = handleableOptions?.sourceData;
27
+ }
28
+ get handled() {
29
+ return this._handled;
30
+ }
31
+ set handled(value) {
32
+ this._handled = value;
33
+ }
34
+ toJSON() {
35
+ return {
36
+ statusCode: this.statusCode,
37
+ message: this.message,
38
+ cause: this.cause,
39
+ sourceData: this.sourceData,
40
+ };
41
+ }
42
+ }
43
+ exports.PluginTranslatableHandleableGenericError = PluginTranslatableHandleableGenericError;
44
+ //# sourceMappingURL=plugin-translatable-handleable-generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-translatable-handleable-generic.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/plugin-translatable-handleable-generic.ts"],"names":[],"mappings":";;;AACA,2FAAqF;AAErF;;GAEG;AACH,MAAa,wCAIX,SAAQ,kEAAqD;IAGrD,QAAQ,GAAG,KAAK,CAAC;IACA,KAAK,CAAS;IACvB,UAAU,CAAS;IACnB,UAAU,CAAW;IAErC;;;;;;;;OAQG;IACH,YACE,WAAmB,EACnB,SAAqB,EACrB,SAA2C,EAC3C,QAAoB,EACpB,QAA8B,EAC9B,WAAoB,EACpB,iBAIC;QAED,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,iBAAiB,EAAE,UAAU,IAAI,GAAG,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,iBAAiB,EAAE,KAAK,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,iBAAiB,EAAE,UAAU,CAAC;IAClD,CAAC;IACD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,IAAW,OAAO,CAAC,KAAc;QAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,MAAM;QACJ,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF;AArDD,4FAqDC"}
@@ -0,0 +1,15 @@
1
+ import { IHandleable } from './i-handleable';
2
+ import { HandleableErrorOptions } from './i-handleable-error-options';
3
+ import { PluginI18nEngine } from './plugin-i18n-engine';
4
+ import { CompleteReasonMap, PluginTypedError } from './typed-error';
5
+ export declare class PluginTypedHandleableError<TEnum extends Record<string, string>, TStringKey extends string, TLanguages extends string = string> extends PluginTypedError<TEnum, TStringKey, TLanguages> implements IHandleable {
6
+ readonly cause?: Error;
7
+ readonly statusCode: number;
8
+ readonly sourceData?: unknown;
9
+ private _handled;
10
+ constructor(engine: PluginI18nEngine<TLanguages>, componentId: string, type: TEnum[keyof TEnum], reasonMap: CompleteReasonMap<TEnum, TStringKey>, source: Error, options?: HandleableErrorOptions, language?: TLanguages, otherVars?: Record<string, string | number>);
11
+ get handled(): boolean;
12
+ set handled(value: boolean);
13
+ toJSON(): Record<string, unknown>;
14
+ }
15
+ //# sourceMappingURL=plugin-typed-handleable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-typed-handleable.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/plugin-typed-handleable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMpE,qBAAa,0BAA0B,CACnC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,UAAU,SAAS,MAAM,EACzB,UAAU,SAAS,MAAM,GAAG,MAAM,CAEpC,SAAQ,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CACtD,YAAW,WAAW;IAEtB,SAAyB,KAAK,CAAC,EAAE,KAAK,CAAC;IACvC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAU;gBAGxB,MAAM,EAAE,gBAAgB,CAAC,UAAU,CAAC,EACpC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EACxB,SAAS,EAAE,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,EAC/C,MAAM,EAAE,KAAK,EACb,OAAO,CAAC,EAAE,sBAAsB,EAChC,QAAQ,CAAC,EAAE,UAAU,EACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAsB7C,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAEhC;IAEM,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAezC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PluginTypedHandleableError = void 0;
4
+ const handleable_1 = require("./handleable");
5
+ const typed_error_1 = require("./typed-error");
6
+ class PluginTypedHandleableError extends typed_error_1.PluginTypedError {
7
+ cause;
8
+ statusCode;
9
+ sourceData;
10
+ _handled;
11
+ constructor(engine, componentId, type, reasonMap, source, options, language, otherVars) {
12
+ super(engine, componentId, type, reasonMap, language, otherVars);
13
+ this.cause = options?.cause ?? source;
14
+ this.statusCode = options?.statusCode ?? 500;
15
+ this._handled = options?.handled ?? false;
16
+ this.sourceData = options?.sourceData;
17
+ // Capture stack trace - prioritize source stack, then capture new one
18
+ if (source.stack) {
19
+ this.stack = source.stack;
20
+ }
21
+ else if (Error.captureStackTrace) {
22
+ Error.captureStackTrace?.(this, this.constructor);
23
+ }
24
+ else {
25
+ this.stack = new Error().stack;
26
+ }
27
+ this.name = this.constructor.name;
28
+ }
29
+ get handled() {
30
+ return this._handled;
31
+ }
32
+ set handled(value) {
33
+ this._handled = value;
34
+ }
35
+ toJSON() {
36
+ return {
37
+ name: this.name,
38
+ message: this.message,
39
+ statusCode: this.statusCode,
40
+ handled: this.handled,
41
+ stack: this.stack,
42
+ cause: this.cause instanceof handleable_1.HandleableError ||
43
+ this.cause instanceof PluginTypedHandleableError
44
+ ? this.cause.toJSON()
45
+ : this.cause?.message,
46
+ ...(this.sourceData ? { sourceData: this.sourceData } : {}),
47
+ };
48
+ }
49
+ }
50
+ exports.PluginTypedHandleableError = PluginTypedHandleableError;
51
+ //# sourceMappingURL=plugin-typed-handleable.js.map