@digitaldefiance/i18n-lib 3.8.2 → 3.8.4

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 (502) hide show
  1. package/package.json +8 -7
  2. package/src/{active-context.ts → active-context.d.ts} +1 -0
  3. package/src/active-context.d.ts.map +1 -0
  4. package/src/active-context.js +3 -0
  5. package/src/active-context.js.map +1 -0
  6. package/src/builders/i18n-builder.d.ts +26 -0
  7. package/src/builders/i18n-builder.d.ts.map +1 -0
  8. package/src/builders/i18n-builder.js +70 -0
  9. package/src/builders/i18n-builder.js.map +1 -0
  10. package/src/builders/{index.ts → index.d.ts} +1 -1
  11. package/src/builders/index.d.ts.map +1 -0
  12. package/src/builders/index.js +8 -0
  13. package/src/builders/index.js.map +1 -0
  14. package/src/component-definition.d.ts +12 -0
  15. package/src/component-definition.d.ts.map +1 -0
  16. package/src/component-definition.js +3 -0
  17. package/src/component-definition.js.map +1 -0
  18. package/src/component-registration.d.ts +22 -0
  19. package/src/component-registration.d.ts.map +1 -0
  20. package/src/component-registration.js +3 -0
  21. package/src/component-registration.js.map +1 -0
  22. package/src/component-registry.d.ts +102 -0
  23. package/src/component-registry.d.ts.map +1 -0
  24. package/src/component-registry.js +282 -0
  25. package/src/component-registry.js.map +1 -0
  26. package/src/context-error-type.d.ts +8 -0
  27. package/src/context-error-type.d.ts.map +1 -0
  28. package/src/context-error-type.js +12 -0
  29. package/src/context-error-type.js.map +1 -0
  30. package/src/core/component-store.d.ts +93 -0
  31. package/src/core/component-store.d.ts.map +1 -0
  32. package/src/core/component-store.js +198 -0
  33. package/src/core/component-store.js.map +1 -0
  34. package/src/core/context-manager.d.ts +72 -0
  35. package/src/core/context-manager.d.ts.map +1 -0
  36. package/src/core/context-manager.js +98 -0
  37. package/src/core/context-manager.js.map +1 -0
  38. package/src/core/enum-registry.d.ts +48 -0
  39. package/src/core/enum-registry.d.ts.map +1 -0
  40. package/src/core/enum-registry.js +85 -0
  41. package/src/core/enum-registry.js.map +1 -0
  42. package/src/core/i18n-engine.d.ts +241 -0
  43. package/src/core/i18n-engine.d.ts.map +1 -0
  44. package/src/core/i18n-engine.js +568 -0
  45. package/src/core/i18n-engine.js.map +1 -0
  46. package/src/core/{index.ts → index.d.ts} +1 -4
  47. package/src/core/index.d.ts.map +1 -0
  48. package/src/core/index.js +21 -0
  49. package/src/core/index.js.map +1 -0
  50. package/src/core/language-registry.d.ts +180 -0
  51. package/src/core/language-registry.d.ts.map +1 -0
  52. package/src/core/language-registry.js +298 -0
  53. package/src/core/language-registry.js.map +1 -0
  54. package/src/{core-component-id.ts → core-component-id.d.ts} +2 -1
  55. package/src/core-component-id.d.ts.map +1 -0
  56. package/src/core-component-id.js +9 -0
  57. package/src/core-component-id.js.map +1 -0
  58. package/src/core-i18n.d.ts +69 -0
  59. package/src/core-i18n.d.ts.map +1 -0
  60. package/src/core-i18n.js +219 -0
  61. package/src/core-i18n.js.map +1 -0
  62. package/src/core-plugin-factory.d.ts +28 -0
  63. package/src/core-plugin-factory.d.ts.map +1 -0
  64. package/src/core-plugin-factory.js +80 -0
  65. package/src/core-plugin-factory.js.map +1 -0
  66. package/src/core-string-key.d.ts +52 -0
  67. package/src/core-string-key.d.ts.map +1 -0
  68. package/src/core-string-key.js +61 -0
  69. package/src/core-string-key.js.map +1 -0
  70. package/src/create-translation-adapter.d.ts +33 -0
  71. package/src/create-translation-adapter.d.ts.map +1 -0
  72. package/src/create-translation-adapter.js +72 -0
  73. package/src/create-translation-adapter.js.map +1 -0
  74. package/src/enum-registry.d.ts +65 -0
  75. package/src/enum-registry.d.ts.map +1 -0
  76. package/src/enum-registry.js +123 -0
  77. package/src/enum-registry.js.map +1 -0
  78. package/src/errors/{base.ts → base.d.ts} +1 -1
  79. package/src/errors/base.d.ts.map +1 -0
  80. package/src/errors/base.js +11 -0
  81. package/src/errors/base.js.map +1 -0
  82. package/src/errors/context-error.d.ts +50 -0
  83. package/src/errors/context-error.d.ts.map +1 -0
  84. package/src/errors/context-error.js +93 -0
  85. package/src/errors/context-error.js.map +1 -0
  86. package/src/errors/enhanced-error-base.d.ts +125 -0
  87. package/src/errors/enhanced-error-base.d.ts.map +1 -0
  88. package/src/errors/enhanced-error-base.js +165 -0
  89. package/src/errors/enhanced-error-base.js.map +1 -0
  90. package/src/errors/handleable.d.ts +83 -0
  91. package/src/errors/handleable.d.ts.map +1 -0
  92. package/src/errors/handleable.js +136 -0
  93. package/src/errors/handleable.js.map +1 -0
  94. package/src/errors/i18n-error.d.ts +211 -0
  95. package/src/errors/i18n-error.d.ts.map +1 -0
  96. package/src/errors/i18n-error.js +358 -0
  97. package/src/errors/i18n-error.js.map +1 -0
  98. package/src/errors/{index.ts → index.d.ts} +1 -4
  99. package/src/errors/index.d.ts.map +1 -0
  100. package/src/errors/index.js +17 -0
  101. package/src/errors/index.js.map +1 -0
  102. package/src/errors/simple-typed-error.d.ts +53 -0
  103. package/src/errors/simple-typed-error.d.ts.map +1 -0
  104. package/src/errors/simple-typed-error.js +51 -0
  105. package/src/errors/simple-typed-error.js.map +1 -0
  106. package/src/errors/{translatable-exports.ts → translatable-exports.d.ts} +1 -1
  107. package/src/errors/translatable-exports.d.ts.map +1 -0
  108. package/src/errors/translatable-exports.js +15 -0
  109. package/src/errors/translatable-exports.js.map +1 -0
  110. package/src/errors/translatable-generic.d.ts +87 -0
  111. package/src/errors/translatable-generic.d.ts.map +1 -0
  112. package/src/errors/translatable-generic.js +139 -0
  113. package/src/errors/translatable-generic.js.map +1 -0
  114. package/src/errors/translatable-handleable-generic.d.ts +116 -0
  115. package/src/errors/translatable-handleable-generic.d.ts.map +1 -0
  116. package/src/errors/translatable-handleable-generic.js +121 -0
  117. package/src/errors/translatable-handleable-generic.js.map +1 -0
  118. package/src/errors/translatable.d.ts +63 -0
  119. package/src/errors/translatable.d.ts.map +1 -0
  120. package/src/errors/translatable.js +85 -0
  121. package/src/errors/translatable.js.map +1 -0
  122. package/src/errors/typed-handleable.d.ts +62 -0
  123. package/src/errors/typed-handleable.d.ts.map +1 -0
  124. package/src/errors/typed-handleable.js +108 -0
  125. package/src/errors/typed-handleable.js.map +1 -0
  126. package/src/errors/typed.d.ts +206 -0
  127. package/src/errors/typed.d.ts.map +1 -0
  128. package/src/errors/typed.js +458 -0
  129. package/src/errors/typed.js.map +1 -0
  130. package/src/gender/{gender-categories.ts → gender-categories.d.ts} +2 -6
  131. package/src/gender/gender-categories.d.ts.map +1 -0
  132. package/src/gender/gender-categories.js +15 -0
  133. package/src/gender/gender-categories.js.map +1 -0
  134. package/src/gender/gender-resolver.d.ts +14 -0
  135. package/src/gender/gender-resolver.d.ts.map +1 -0
  136. package/src/gender/gender-resolver.js +35 -0
  137. package/src/gender/gender-resolver.js.map +1 -0
  138. package/src/gender/{index.ts → index.d.ts} +1 -0
  139. package/src/gender/index.d.ts.map +1 -0
  140. package/src/gender/index.js +6 -0
  141. package/src/gender/index.js.map +1 -0
  142. package/src/global-active-context.d.ts +50 -0
  143. package/src/global-active-context.d.ts.map +1 -0
  144. package/src/global-active-context.js +185 -0
  145. package/src/global-active-context.js.map +1 -0
  146. package/src/icu/ast.d.ts +48 -0
  147. package/src/icu/ast.d.ts.map +1 -0
  148. package/src/icu/ast.js +16 -0
  149. package/src/icu/ast.js.map +1 -0
  150. package/src/icu/compiler.d.ts +16 -0
  151. package/src/icu/compiler.d.ts.map +1 -0
  152. package/src/icu/compiler.js +87 -0
  153. package/src/icu/compiler.js.map +1 -0
  154. package/src/icu/formatter-registry.d.ts +10 -0
  155. package/src/icu/formatter-registry.d.ts.map +1 -0
  156. package/src/icu/formatter-registry.js +34 -0
  157. package/src/icu/formatter-registry.js.map +1 -0
  158. package/src/icu/formatters/base-formatter.d.ts +8 -0
  159. package/src/icu/formatters/base-formatter.d.ts.map +1 -0
  160. package/src/icu/formatters/base-formatter.js +3 -0
  161. package/src/icu/formatters/base-formatter.js.map +1 -0
  162. package/src/icu/formatters/date-formatter.d.ts +5 -0
  163. package/src/icu/formatters/date-formatter.d.ts.map +1 -0
  164. package/src/icu/formatters/date-formatter.js +31 -0
  165. package/src/icu/formatters/date-formatter.js.map +1 -0
  166. package/src/icu/formatters/number-formatter.d.ts +5 -0
  167. package/src/icu/formatters/number-formatter.d.ts.map +1 -0
  168. package/src/icu/formatters/number-formatter.js +33 -0
  169. package/src/icu/formatters/number-formatter.js.map +1 -0
  170. package/src/icu/formatters/plural-formatter.d.ts +5 -0
  171. package/src/icu/formatters/plural-formatter.d.ts.map +1 -0
  172. package/src/icu/formatters/plural-formatter.js +15 -0
  173. package/src/icu/formatters/plural-formatter.js.map +1 -0
  174. package/src/icu/formatters/select-formatter.d.ts +5 -0
  175. package/src/icu/formatters/select-formatter.d.ts.map +1 -0
  176. package/src/icu/formatters/select-formatter.js +10 -0
  177. package/src/icu/formatters/select-formatter.js.map +1 -0
  178. package/src/icu/formatters/selectordinal-formatter.d.ts +5 -0
  179. package/src/icu/formatters/selectordinal-formatter.d.ts.map +1 -0
  180. package/src/icu/formatters/selectordinal-formatter.js +22 -0
  181. package/src/icu/formatters/selectordinal-formatter.js.map +1 -0
  182. package/src/icu/formatters/time-formatter.d.ts +5 -0
  183. package/src/icu/formatters/time-formatter.d.ts.map +1 -0
  184. package/src/icu/formatters/time-formatter.js +31 -0
  185. package/src/icu/formatters/time-formatter.js.map +1 -0
  186. package/src/icu/helpers.d.ts +9 -0
  187. package/src/icu/helpers.d.ts.map +1 -0
  188. package/src/icu/helpers.js +31 -0
  189. package/src/icu/helpers.js.map +1 -0
  190. package/src/icu/parser.d.ts +31 -0
  191. package/src/icu/parser.d.ts.map +1 -0
  192. package/src/icu/parser.js +203 -0
  193. package/src/icu/parser.js.map +1 -0
  194. package/src/icu/runtime.d.ts +10 -0
  195. package/src/icu/runtime.d.ts.map +1 -0
  196. package/src/icu/runtime.js +33 -0
  197. package/src/icu/runtime.js.map +1 -0
  198. package/src/icu/tokenizer.d.ts +37 -0
  199. package/src/icu/tokenizer.d.ts.map +1 -0
  200. package/src/icu/tokenizer.js +187 -0
  201. package/src/icu/tokenizer.js.map +1 -0
  202. package/src/icu/validator.d.ts +11 -0
  203. package/src/icu/validator.d.ts.map +1 -0
  204. package/src/icu/validator.js +140 -0
  205. package/src/icu/validator.js.map +1 -0
  206. package/src/{index.ts → index.d.ts} +6 -38
  207. package/src/index.d.ts.map +1 -0
  208. package/src/index.js +76 -0
  209. package/src/index.js.map +1 -0
  210. package/src/interfaces/active-context.interface.d.ts +36 -0
  211. package/src/interfaces/active-context.interface.d.ts.map +1 -0
  212. package/src/interfaces/active-context.interface.js +3 -0
  213. package/src/interfaces/active-context.interface.js.map +1 -0
  214. package/src/interfaces/component-config.interface.d.ts +16 -0
  215. package/src/interfaces/component-config.interface.d.ts.map +1 -0
  216. package/src/interfaces/component-config.interface.js +6 -0
  217. package/src/interfaces/component-config.interface.js.map +1 -0
  218. package/src/interfaces/engine-config.interface.d.ts +22 -0
  219. package/src/interfaces/engine-config.interface.d.ts.map +1 -0
  220. package/src/interfaces/engine-config.interface.js +6 -0
  221. package/src/interfaces/engine-config.interface.js.map +1 -0
  222. package/src/interfaces/global-active-context.d.ts +23 -0
  223. package/src/interfaces/global-active-context.d.ts.map +1 -0
  224. package/src/interfaces/global-active-context.js +3 -0
  225. package/src/interfaces/global-active-context.js.map +1 -0
  226. package/src/interfaces/handleable-error-options.d.ts +14 -0
  227. package/src/interfaces/handleable-error-options.d.ts.map +1 -0
  228. package/src/interfaces/handleable-error-options.js +3 -0
  229. package/src/interfaces/handleable-error-options.js.map +1 -0
  230. package/src/interfaces/handleable.d.ts +21 -0
  231. package/src/interfaces/handleable.d.ts.map +1 -0
  232. package/src/interfaces/handleable.js +3 -0
  233. package/src/interfaces/handleable.js.map +1 -0
  234. package/src/interfaces/i18n-engine.interface.d.ts +46 -0
  235. package/src/interfaces/i18n-engine.interface.d.ts.map +1 -0
  236. package/src/interfaces/i18n-engine.interface.js +6 -0
  237. package/src/interfaces/i18n-engine.interface.js.map +1 -0
  238. package/src/interfaces/{index.ts → index.d.ts} +1 -1
  239. package/src/interfaces/index.d.ts.map +1 -0
  240. package/src/interfaces/index.js +7 -0
  241. package/src/interfaces/index.js.map +1 -0
  242. package/src/interfaces/language-definition.interface.d.ts +17 -0
  243. package/src/interfaces/language-definition.interface.d.ts.map +1 -0
  244. package/src/interfaces/language-definition.interface.js +6 -0
  245. package/src/interfaces/language-definition.interface.js.map +1 -0
  246. package/src/interfaces/translation-options.interface.d.ts +15 -0
  247. package/src/interfaces/translation-options.interface.d.ts.map +1 -0
  248. package/src/interfaces/translation-options.interface.js +6 -0
  249. package/src/interfaces/translation-options.interface.js.map +1 -0
  250. package/src/interfaces/validation-result.interface.d.ts +24 -0
  251. package/src/interfaces/validation-result.interface.d.ts.map +1 -0
  252. package/src/interfaces/validation-result.interface.js +6 -0
  253. package/src/interfaces/validation-result.interface.js.map +1 -0
  254. package/src/language-codes.d.ts +28 -0
  255. package/src/language-codes.d.ts.map +1 -0
  256. package/src/language-codes.js +32 -0
  257. package/src/language-codes.js.map +1 -0
  258. package/src/language-definition.d.ts +14 -0
  259. package/src/language-definition.d.ts.map +1 -0
  260. package/src/language-definition.js +3 -0
  261. package/src/language-definition.js.map +1 -0
  262. package/src/plugin-i18n-engine.d.ts +164 -0
  263. package/src/plugin-i18n-engine.d.ts.map +1 -0
  264. package/src/plugin-i18n-engine.js +493 -0
  265. package/src/plugin-i18n-engine.js.map +1 -0
  266. package/src/pluralization/{index.ts → index.d.ts} +1 -1
  267. package/src/pluralization/index.d.ts.map +1 -0
  268. package/src/pluralization/index.js +10 -0
  269. package/src/pluralization/index.js.map +1 -0
  270. package/src/pluralization/language-plural-map.d.ts +29 -0
  271. package/src/pluralization/language-plural-map.d.ts.map +1 -0
  272. package/src/pluralization/language-plural-map.js +155 -0
  273. package/src/pluralization/language-plural-map.js.map +1 -0
  274. package/src/pluralization/{plural-categories.ts → plural-categories.d.ts} +3 -5
  275. package/src/pluralization/plural-categories.d.ts.map +1 -0
  276. package/src/pluralization/plural-categories.js +8 -0
  277. package/src/pluralization/plural-categories.js.map +1 -0
  278. package/src/pluralization/plural-rules.d.ts +102 -0
  279. package/src/pluralization/plural-rules.d.ts.map +1 -0
  280. package/src/pluralization/plural-rules.js +263 -0
  281. package/src/pluralization/plural-rules.js.map +1 -0
  282. package/src/registry-config.d.ts +16 -0
  283. package/src/registry-config.d.ts.map +1 -0
  284. package/src/registry-config.js +3 -0
  285. package/src/registry-config.js.map +1 -0
  286. package/src/registry-error-type.d.ts +20 -0
  287. package/src/registry-error-type.d.ts.map +1 -0
  288. package/src/registry-error-type.js +24 -0
  289. package/src/registry-error-type.js.map +1 -0
  290. package/src/registry-error.d.ts +25 -0
  291. package/src/registry-error.d.ts.map +1 -0
  292. package/src/registry-error.js +63 -0
  293. package/src/registry-error.js.map +1 -0
  294. package/src/strict-types.d.ts +19 -0
  295. package/src/strict-types.d.ts.map +1 -0
  296. package/src/strict-types.js +18 -0
  297. package/src/strict-types.js.map +1 -0
  298. package/src/strings/de.d.ts +3 -0
  299. package/src/strings/de.d.ts.map +1 -0
  300. package/src/strings/de.js +57 -0
  301. package/src/strings/de.js.map +1 -0
  302. package/src/strings/en-GB.d.ts +3 -0
  303. package/src/strings/en-GB.d.ts.map +1 -0
  304. package/src/strings/en-GB.js +57 -0
  305. package/src/strings/en-GB.js.map +1 -0
  306. package/src/strings/en-US.d.ts +3 -0
  307. package/src/strings/en-US.d.ts.map +1 -0
  308. package/src/strings/en-US.js +57 -0
  309. package/src/strings/en-US.js.map +1 -0
  310. package/src/strings/es.d.ts +3 -0
  311. package/src/strings/es.d.ts.map +1 -0
  312. package/src/strings/es.js +57 -0
  313. package/src/strings/es.js.map +1 -0
  314. package/src/strings/fr.d.ts +3 -0
  315. package/src/strings/fr.d.ts.map +1 -0
  316. package/src/strings/fr.js +57 -0
  317. package/src/strings/fr.js.map +1 -0
  318. package/src/strings/ja.d.ts +3 -0
  319. package/src/strings/ja.d.ts.map +1 -0
  320. package/src/strings/ja.js +57 -0
  321. package/src/strings/ja.js.map +1 -0
  322. package/src/strings/uk.d.ts +3 -0
  323. package/src/strings/uk.d.ts.map +1 -0
  324. package/src/strings/uk.js +57 -0
  325. package/src/strings/uk.js.map +1 -0
  326. package/src/strings/zh-CN.d.ts +3 -0
  327. package/src/strings/zh-CN.d.ts.map +1 -0
  328. package/src/strings/zh-CN.js +57 -0
  329. package/src/strings/zh-CN.js.map +1 -0
  330. package/src/template.d.ts +13 -0
  331. package/src/template.d.ts.map +1 -0
  332. package/src/template.js +40 -0
  333. package/src/template.js.map +1 -0
  334. package/src/translation-engine.d.ts +9 -0
  335. package/src/translation-engine.d.ts.map +1 -0
  336. package/src/translation-engine.js +3 -0
  337. package/src/translation-engine.js.map +1 -0
  338. package/src/translation-request.d.ts +10 -0
  339. package/src/translation-request.d.ts.map +1 -0
  340. package/src/translation-request.js +3 -0
  341. package/src/translation-request.js.map +1 -0
  342. package/src/translation-response.d.ts +9 -0
  343. package/src/translation-response.d.ts.map +1 -0
  344. package/src/translation-response.js +3 -0
  345. package/src/translation-response.js.map +1 -0
  346. package/src/types/engine.d.ts +47 -0
  347. package/src/types/engine.d.ts.map +1 -0
  348. package/src/types/engine.js +8 -0
  349. package/src/types/engine.js.map +1 -0
  350. package/src/types/{index.ts → index.d.ts} +1 -1
  351. package/src/types/index.d.ts.map +1 -0
  352. package/src/types/index.js +9 -0
  353. package/src/types/index.js.map +1 -0
  354. package/src/types/{plural-types.ts → plural-types.d.ts} +3 -29
  355. package/src/types/plural-types.d.ts.map +1 -0
  356. package/src/types/plural-types.js +39 -0
  357. package/src/types/plural-types.js.map +1 -0
  358. package/src/{types.ts → types.d.ts} +21 -72
  359. package/src/types.d.ts.map +1 -0
  360. package/src/types.js +23 -0
  361. package/src/types.js.map +1 -0
  362. package/src/utils/currency.d.ts +81 -0
  363. package/src/utils/currency.d.ts.map +1 -0
  364. package/src/utils/currency.js +99 -0
  365. package/src/utils/currency.js.map +1 -0
  366. package/src/utils/html-escape.d.ts +22 -0
  367. package/src/utils/html-escape.d.ts.map +1 -0
  368. package/src/utils/html-escape.js +53 -0
  369. package/src/utils/html-escape.js.map +1 -0
  370. package/src/utils/{index.ts → index.d.ts} +1 -0
  371. package/src/utils/index.d.ts.map +1 -0
  372. package/src/utils/index.js +12 -0
  373. package/src/utils/index.js.map +1 -0
  374. package/src/utils/lru-cache.d.ts +42 -0
  375. package/src/utils/lru-cache.d.ts.map +1 -0
  376. package/src/utils/lru-cache.js +73 -0
  377. package/src/utils/lru-cache.js.map +1 -0
  378. package/src/utils/{plural-helpers.ts → plural-helpers.d.ts} +4 -14
  379. package/src/utils/plural-helpers.d.ts.map +1 -0
  380. package/src/utils/plural-helpers.js +35 -0
  381. package/src/utils/plural-helpers.js.map +1 -0
  382. package/src/utils/safe-object.d.ts +39 -0
  383. package/src/utils/safe-object.d.ts.map +1 -0
  384. package/src/utils/{safe-object.ts → safe-object.js} +34 -37
  385. package/src/utils/safe-object.js.map +1 -0
  386. package/src/utils/string-utils.d.ts +28 -0
  387. package/src/utils/string-utils.d.ts.map +1 -0
  388. package/src/utils/string-utils.js +63 -0
  389. package/src/utils/string-utils.js.map +1 -0
  390. package/src/utils/timezone.d.ts +50 -0
  391. package/src/utils/timezone.d.ts.map +1 -0
  392. package/src/utils/timezone.js +74 -0
  393. package/src/utils/timezone.js.map +1 -0
  394. package/src/utils/validation.d.ts +40 -0
  395. package/src/utils/validation.d.ts.map +1 -0
  396. package/src/utils/validation.js +69 -0
  397. package/src/utils/validation.js.map +1 -0
  398. package/src/utils.d.ts +65 -0
  399. package/src/utils.d.ts.map +1 -0
  400. package/src/utils.js +129 -0
  401. package/src/utils.js.map +1 -0
  402. package/src/validation/{index.ts → index.d.ts} +1 -0
  403. package/src/validation/index.d.ts.map +1 -0
  404. package/src/validation/index.js +5 -0
  405. package/src/validation/index.js.map +1 -0
  406. package/src/validation/plural-validator.d.ts +46 -0
  407. package/src/validation/plural-validator.d.ts.map +1 -0
  408. package/src/validation/plural-validator.js +123 -0
  409. package/src/validation/plural-validator.js.map +1 -0
  410. package/src/validation-config.d.ts +12 -0
  411. package/src/validation-config.d.ts.map +1 -0
  412. package/src/validation-config.js +3 -0
  413. package/src/validation-config.js.map +1 -0
  414. package/src/validation-result.d.ts +13 -0
  415. package/src/validation-result.d.ts.map +1 -0
  416. package/src/validation-result.js +3 -0
  417. package/src/validation-result.js.map +1 -0
  418. package/LICENSE +0 -21
  419. package/src/builders/i18n-builder.ts +0 -82
  420. package/src/component-definition.ts +0 -11
  421. package/src/component-registration.ts +0 -29
  422. package/src/component-registry.ts +0 -432
  423. package/src/context-error-type.ts +0 -7
  424. package/src/core/component-store.ts +0 -241
  425. package/src/core/context-manager.ts +0 -113
  426. package/src/core/enum-registry.ts +0 -106
  427. package/src/core/i18n-engine.ts +0 -710
  428. package/src/core/language-registry.ts +0 -345
  429. package/src/core-i18n.ts +0 -270
  430. package/src/core-plugin-factory.ts +0 -111
  431. package/src/core-string-key.ts +0 -59
  432. package/src/create-translation-adapter.ts +0 -93
  433. package/src/enum-registry.ts +0 -152
  434. package/src/errors/context-error.ts +0 -122
  435. package/src/errors/enhanced-error-base.ts +0 -260
  436. package/src/errors/handleable.ts +0 -152
  437. package/src/errors/i18n-error.ts +0 -494
  438. package/src/errors/simple-typed-error.ts +0 -81
  439. package/src/errors/translatable-generic.ts +0 -245
  440. package/src/errors/translatable-handleable-generic.ts +0 -222
  441. package/src/errors/translatable.ts +0 -138
  442. package/src/errors/typed-handleable.ts +0 -138
  443. package/src/errors/typed.ts +0 -617
  444. package/src/gender/gender-resolver.ts +0 -40
  445. package/src/global-active-context.ts +0 -266
  446. package/src/icu/ast.ts +0 -56
  447. package/src/icu/compiler.ts +0 -96
  448. package/src/icu/formatter-registry.ts +0 -36
  449. package/src/icu/formatters/base-formatter.ts +0 -8
  450. package/src/icu/formatters/date-formatter.ts +0 -30
  451. package/src/icu/formatters/number-formatter.ts +0 -32
  452. package/src/icu/formatters/plural-formatter.ts +0 -12
  453. package/src/icu/formatters/select-formatter.ts +0 -7
  454. package/src/icu/formatters/selectordinal-formatter.ts +0 -17
  455. package/src/icu/formatters/time-formatter.ts +0 -30
  456. package/src/icu/helpers.ts +0 -34
  457. package/src/icu/parser.ts +0 -242
  458. package/src/icu/runtime.ts +0 -37
  459. package/src/icu/tokenizer.ts +0 -212
  460. package/src/icu/validator.ts +0 -163
  461. package/src/interfaces/active-context.interface.ts +0 -41
  462. package/src/interfaces/component-config.interface.ts +0 -17
  463. package/src/interfaces/engine-config.interface.ts +0 -22
  464. package/src/interfaces/global-active-context.ts +0 -39
  465. package/src/interfaces/handleable-error-options.ts +0 -13
  466. package/src/interfaces/handleable.ts +0 -20
  467. package/src/interfaces/i18n-engine.interface.ts +0 -57
  468. package/src/interfaces/language-definition.interface.ts +0 -17
  469. package/src/interfaces/translation-options.interface.ts +0 -15
  470. package/src/interfaces/validation-result.interface.ts +0 -24
  471. package/src/language-codes.ts +0 -40
  472. package/src/language-definition.ts +0 -13
  473. package/src/plugin-i18n-engine.ts +0 -707
  474. package/src/pluralization/language-plural-map.ts +0 -186
  475. package/src/pluralization/plural-rules.ts +0 -228
  476. package/src/registry-config.ts +0 -16
  477. package/src/registry-error-type.ts +0 -19
  478. package/src/registry-error.ts +0 -100
  479. package/src/strict-types.ts +0 -35
  480. package/src/strings/de.ts +0 -75
  481. package/src/strings/en-GB.ts +0 -74
  482. package/src/strings/en-US.ts +0 -74
  483. package/src/strings/es.ts +0 -74
  484. package/src/strings/fr.ts +0 -75
  485. package/src/strings/ja.ts +0 -73
  486. package/src/strings/uk.ts +0 -73
  487. package/src/strings/zh-CN.ts +0 -72
  488. package/src/template.ts +0 -72
  489. package/src/translation-engine.ts +0 -18
  490. package/src/translation-request.ts +0 -12
  491. package/src/translation-response.ts +0 -8
  492. package/src/types/engine.ts +0 -55
  493. package/src/utils/currency.ts +0 -141
  494. package/src/utils/html-escape.ts +0 -55
  495. package/src/utils/lru-cache.ts +0 -76
  496. package/src/utils/string-utils.ts +0 -77
  497. package/src/utils/timezone.ts +0 -76
  498. package/src/utils/validation.ts +0 -66
  499. package/src/utils.ts +0 -215
  500. package/src/validation/plural-validator.ts +0 -168
  501. package/src/validation-config.ts +0 -11
  502. package/src/validation-result.ts +0 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translatable-generic.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/translatable-generic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TranslatableGenericError = void 0;
4
+ const i18n_engine_1 = require("../core/i18n-engine");
5
+ /**
6
+ * Generic translatable error that works with any plugin engine and component.
7
+ *
8
+ * Uses lazy initialization to avoid circular dependencies with core modules.
9
+ * The I18nEngine is only accessed when the error is constructed, not at module load time.
10
+ *
11
+ * **Full i18n 3.0/3.5 Feature Support:**
12
+ * - ICU MessageFormat (all formatters: plural, select, selectordinal)
13
+ * - Pluralization for 37 languages with CLDR rules
14
+ * - Gender-aware translations (male, female, neutral, other)
15
+ * - Number formatting (integer, currency, percent)
16
+ * - Date/Time formatting (short, medium, long, full)
17
+ * - Nested messages up to 4 levels deep
18
+ * - Context variable injection
19
+ *
20
+ * **Usage Examples:**
21
+ * ```typescript
22
+ * // Plural-aware error
23
+ * new TranslatableGenericError('component', 'errorKey', { count: 5 });
24
+ * // Translation: \"{count, plural, one {# error} other {# errors}}\"
25
+ *
26
+ * // Gender-aware error
27
+ * new TranslatableGenericError('component', 'userError', { gender: 'female', name: 'Alice' });
28
+ * // Translation: \"{gender, select, male {He} female {She}} {name} caused an error\"
29
+ *
30
+ * // Number formatting
31
+ * new TranslatableGenericError('component', 'thresholdError', { value: 1500.50, limit: 1000 });
32
+ * // Translation: \"Value {value, number, currency} exceeds {limit, number, currency}\"
33
+ *
34
+ * // SelectOrdinal
35
+ * new TranslatableGenericError('component', 'stepError', { step: 3 });
36
+ * // Translation: \"Failed at {step, selectordinal, one {#st} two {#nd} few {#rd} other {#th}} step\"
37
+ * ```
38
+ */
39
+ class TranslatableGenericError extends Error {
40
+ stringKey;
41
+ componentId;
42
+ language;
43
+ variables;
44
+ metadata;
45
+ /**
46
+ * Create a translatable error
47
+ * @param componentId - The component ID to translate from
48
+ * @param stringKey - The translation key
49
+ * @param variables - Variables for interpolation
50
+ * @param language - Optional language override
51
+ * @param metadata - Additional error metadata
52
+ * @param instanceKey - Optional engine instance key
53
+ */
54
+ constructor(componentId, stringKey, variables, language, metadata, instanceKey) {
55
+ // Lazy initialization: getInstance() is only called when error is constructed
56
+ let translatedMessage;
57
+ try {
58
+ const engine = i18n_engine_1.I18nEngine.getInstance(instanceKey);
59
+ translatedMessage = engine.safeTranslate(componentId, stringKey, variables, language);
60
+ }
61
+ catch (error) {
62
+ // Fallback if engine not found - TranslatableGenericError is designed to be flexible
63
+ translatedMessage = `[${componentId}.${stringKey}]`;
64
+ }
65
+ super(translatedMessage);
66
+ this.name = 'TranslatableGenericError';
67
+ this.stringKey = stringKey;
68
+ this.componentId = componentId;
69
+ this.language = language;
70
+ this.variables = variables;
71
+ this.metadata = metadata;
72
+ }
73
+ /**
74
+ * Create error with explicit engine instance
75
+ */
76
+ static withEngine(engine, componentId, stringKey, variables, language, metadata) {
77
+ const translatedMessage = engine.safeTranslate(componentId, stringKey, variables, language);
78
+ const error = Object.create(TranslatableGenericError.prototype);
79
+ Error.call(error, translatedMessage);
80
+ error.name = 'TranslatableGenericError';
81
+ error.stringKey = stringKey;
82
+ error.componentId = componentId;
83
+ error.language = language;
84
+ error.variables = variables;
85
+ error.metadata = metadata;
86
+ error.message = translatedMessage;
87
+ return error;
88
+ }
89
+ /**
90
+ * Retranslate the error message in a different language
91
+ */
92
+ retranslate(language, instanceKey) {
93
+ try {
94
+ const engine = i18n_engine_1.I18nEngine.getInstance(instanceKey);
95
+ return engine.safeTranslate(this.componentId, this.stringKey, this.variables, language);
96
+ }
97
+ catch (error) {
98
+ // Fallback if engine not found
99
+ return `[${this.componentId}.${this.stringKey}]`;
100
+ }
101
+ }
102
+ /**
103
+ * Create error with plural count
104
+ * Translation string should use ICU plural format
105
+ */
106
+ static withCount(componentId, stringKey, count, otherVars, language, instanceKey) {
107
+ return new TranslatableGenericError(componentId, stringKey, { ...otherVars, count }, language, undefined, instanceKey);
108
+ }
109
+ /**
110
+ * Create error with gender context
111
+ * Translation string should use ICU select format
112
+ */
113
+ static withGender(componentId, stringKey, gender, otherVars, language, instanceKey) {
114
+ return new TranslatableGenericError(componentId, stringKey, { ...otherVars, gender }, language, undefined, instanceKey);
115
+ }
116
+ /**
117
+ * Create error with ordinal number
118
+ * Translation string should use ICU selectordinal format
119
+ */
120
+ static withOrdinal(componentId, stringKey, ordinalNumber, otherVars, language, instanceKey) {
121
+ return new TranslatableGenericError(componentId, stringKey, { ...otherVars, ordinalNumber }, language, undefined, instanceKey);
122
+ }
123
+ /**
124
+ * Create error with number formatting
125
+ * Translation string should use ICU number format
126
+ */
127
+ static withNumberFormat(componentId, stringKey, value, otherVars, language, instanceKey) {
128
+ return new TranslatableGenericError(componentId, stringKey, { ...otherVars, value }, language, undefined, instanceKey);
129
+ }
130
+ /**
131
+ * Create error with multiple i18n features combined
132
+ * Translation string can use nested ICU messages
133
+ */
134
+ static withMultipleFeatures(componentId, stringKey, features, language, instanceKey) {
135
+ return new TranslatableGenericError(componentId, stringKey, features, language, undefined, instanceKey);
136
+ }
137
+ }
138
+ exports.TranslatableGenericError = TranslatableGenericError;
139
+ //# sourceMappingURL=translatable-generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translatable-generic.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/translatable-generic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import { IHandleable } from '../interfaces/handleable';
2
+ import { TranslatableGenericError } from './translatable-generic';
3
+ import { GenderCategory } from '../gender/gender-categories';
4
+ /**
5
+ * Generic translatable handleable error with full i18n feature support.
6
+ *
7
+ * Combines translation capabilities with handleable error patterns and provides
8
+ * static factory methods for all i18n features.
9
+ *
10
+ * **Supported i18n Features:**
11
+ * - ICU MessageFormat: plural, select, selectordinal
12
+ * - Pluralization: 37 languages with CLDR rules
13
+ * - Gender support: male, female, neutral, other
14
+ * - Number formatting: integer, currency, percent
15
+ * - Nested messages: complex multi-level patterns
16
+ *
17
+ * **Usage Examples:**
18
+ * ```typescript
19
+ * // Pluralization with handleable options
20
+ * throw TranslatableHandleableGenericError.withCount(
21
+ * 'api', 'validationError', 5,
22
+ * {}, 'en-US', 'default',
23
+ * { statusCode: 400 }
24
+ * );
25
+ *
26
+ * // Gender-aware messages
27
+ * throw TranslatableHandleableGenericError.withGender(
28
+ * 'user', 'accountError', 'female',
29
+ * {}, 'en-US', 'default',
30
+ * { statusCode: 403 }
31
+ * );
32
+ *
33
+ * // Number formatting with error handling
34
+ * throw TranslatableHandleableGenericError.withNumberFormat(
35
+ * 'payment', 'amountExceeded', 1599.99,
36
+ * { limit: 1000 }, 'en-US', 'default',
37
+ * { statusCode: 402 }
38
+ * );
39
+ *
40
+ * // Ordinal formatting (1st, 2nd, 3rd)
41
+ * throw TranslatableHandleableGenericError.withOrdinal(
42
+ * 'workflow', 'stepFailed', 3,
43
+ * {}, 'en-US', 'default',
44
+ * { statusCode: 500, retryable: true }
45
+ * );
46
+ * ```
47
+ */
48
+ export declare class TranslatableHandleableGenericError<TStringKey extends string = string> extends TranslatableGenericError<TStringKey> implements IHandleable {
49
+ private _handled;
50
+ readonly cause?: Error;
51
+ readonly statusCode: number;
52
+ readonly sourceData?: unknown;
53
+ /**
54
+ * Create a translatable error
55
+ * @param componentId - The component ID to translate from
56
+ * @param stringKey - The translation key
57
+ * @param variables - Variables for interpolation
58
+ * @param language - Optional language override
59
+ * @param metadata - Additional error metadata
60
+ * @param instanceKey - Optional engine instance key
61
+ */
62
+ constructor(componentId: string, stringKey: TStringKey, variables?: Record<string, string | number>, language?: string, metadata?: Record<string, any>, instanceKey?: string, handleableOptions?: {
63
+ statusCode?: number;
64
+ cause?: Error;
65
+ sourceData?: unknown;
66
+ });
67
+ get handled(): boolean;
68
+ set handled(value: boolean);
69
+ toJSON(): Record<string, unknown>;
70
+ /**
71
+ * Create error with pluralization support
72
+ * Translation string should include: "{count, plural, one {...} other {...}}"
73
+ */
74
+ static withCount<TStringKey extends string>(componentId: string, stringKey: TStringKey, count: number, otherVars?: Record<string, string | number>, language?: string, instanceKey?: string, handleableOptions?: {
75
+ statusCode?: number;
76
+ cause?: Error;
77
+ sourceData?: unknown;
78
+ }): TranslatableHandleableGenericError<TStringKey>;
79
+ /**
80
+ * Create error with gender-aware messages
81
+ * Translation string should include: "{gender, select, male {...} female {...} other {...}}"
82
+ */
83
+ static withGender<TStringKey extends string>(componentId: string, stringKey: TStringKey, gender: GenderCategory, otherVars?: Record<string, string | number>, language?: string, instanceKey?: string, handleableOptions?: {
84
+ statusCode?: number;
85
+ cause?: Error;
86
+ sourceData?: unknown;
87
+ }): TranslatableHandleableGenericError<TStringKey>;
88
+ /**
89
+ * Create error with ordinal formatting (1st, 2nd, 3rd)
90
+ * Translation string should include: "{number, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}"
91
+ */
92
+ static withOrdinal<TStringKey extends string>(componentId: string, stringKey: TStringKey, ordinalNumber: number, otherVars?: Record<string, string | number>, language?: string, instanceKey?: string, handleableOptions?: {
93
+ statusCode?: number;
94
+ cause?: Error;
95
+ sourceData?: unknown;
96
+ }): TranslatableHandleableGenericError<TStringKey>;
97
+ /**
98
+ * Create error with number formatting (currency, percent, integer)
99
+ * Translation string should include: "{value, number, integer}" or "{amount, number, currency}"
100
+ */
101
+ static withNumberFormat<TStringKey extends string>(componentId: string, stringKey: TStringKey, value: number, otherVars?: Record<string, string | number>, language?: string, instanceKey?: string, handleableOptions?: {
102
+ statusCode?: number;
103
+ cause?: Error;
104
+ sourceData?: unknown;
105
+ }): TranslatableHandleableGenericError<TStringKey>;
106
+ /**
107
+ * Create error with multiple i18n features combined
108
+ * Translation string can combine: plural, select, number formatting, etc.
109
+ */
110
+ static withMultipleFeatures<TStringKey extends string>(componentId: string, stringKey: TStringKey, features: Record<string, string | number>, language?: string, instanceKey?: string, handleableOptions?: {
111
+ statusCode?: number;
112
+ cause?: Error;
113
+ sourceData?: unknown;
114
+ }): TranslatableHandleableGenericError<TStringKey>;
115
+ }
116
+ //# sourceMappingURL=translatable-handleable-generic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translatable-handleable-generic.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/translatable-handleable-generic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TranslatableHandleableGenericError = void 0;
4
+ const translatable_generic_1 = require("./translatable-generic");
5
+ /**
6
+ * Generic translatable handleable error with full i18n feature support.
7
+ *
8
+ * Combines translation capabilities with handleable error patterns and provides
9
+ * static factory methods for all i18n features.
10
+ *
11
+ * **Supported i18n Features:**
12
+ * - ICU MessageFormat: plural, select, selectordinal
13
+ * - Pluralization: 37 languages with CLDR rules
14
+ * - Gender support: male, female, neutral, other
15
+ * - Number formatting: integer, currency, percent
16
+ * - Nested messages: complex multi-level patterns
17
+ *
18
+ * **Usage Examples:**
19
+ * ```typescript
20
+ * // Pluralization with handleable options
21
+ * throw TranslatableHandleableGenericError.withCount(
22
+ * 'api', 'validationError', 5,
23
+ * {}, 'en-US', 'default',
24
+ * { statusCode: 400 }
25
+ * );
26
+ *
27
+ * // Gender-aware messages
28
+ * throw TranslatableHandleableGenericError.withGender(
29
+ * 'user', 'accountError', 'female',
30
+ * {}, 'en-US', 'default',
31
+ * { statusCode: 403 }
32
+ * );
33
+ *
34
+ * // Number formatting with error handling
35
+ * throw TranslatableHandleableGenericError.withNumberFormat(
36
+ * 'payment', 'amountExceeded', 1599.99,
37
+ * { limit: 1000 }, 'en-US', 'default',
38
+ * { statusCode: 402 }
39
+ * );
40
+ *
41
+ * // Ordinal formatting (1st, 2nd, 3rd)
42
+ * throw TranslatableHandleableGenericError.withOrdinal(
43
+ * 'workflow', 'stepFailed', 3,
44
+ * {}, 'en-US', 'default',
45
+ * { statusCode: 500, retryable: true }
46
+ * );
47
+ * ```
48
+ */
49
+ class TranslatableHandleableGenericError extends translatable_generic_1.TranslatableGenericError {
50
+ _handled = false;
51
+ cause;
52
+ statusCode;
53
+ sourceData;
54
+ /**
55
+ * Create a translatable error
56
+ * @param componentId - The component ID to translate from
57
+ * @param stringKey - The translation key
58
+ * @param variables - Variables for interpolation
59
+ * @param language - Optional language override
60
+ * @param metadata - Additional error metadata
61
+ * @param instanceKey - Optional engine instance key
62
+ */
63
+ constructor(componentId, stringKey, variables, language, metadata, instanceKey, handleableOptions) {
64
+ super(componentId, stringKey, variables, language, metadata, instanceKey);
65
+ this.statusCode = handleableOptions?.statusCode ?? 500;
66
+ this.cause = handleableOptions?.cause;
67
+ this.sourceData = handleableOptions?.sourceData;
68
+ this.name = 'TranslatableHandleableGenericError';
69
+ }
70
+ get handled() {
71
+ return this._handled;
72
+ }
73
+ set handled(value) {
74
+ this._handled = value;
75
+ }
76
+ toJSON() {
77
+ return {
78
+ statusCode: this.statusCode,
79
+ message: this.message,
80
+ cause: this.cause,
81
+ sourceData: this.sourceData,
82
+ };
83
+ }
84
+ /**
85
+ * Create error with pluralization support
86
+ * Translation string should include: "{count, plural, one {...} other {...}}"
87
+ */
88
+ static withCount(componentId, stringKey, count, otherVars, language, instanceKey, handleableOptions) {
89
+ return new TranslatableHandleableGenericError(componentId, stringKey, { count, ...otherVars }, language, undefined, instanceKey, handleableOptions);
90
+ }
91
+ /**
92
+ * Create error with gender-aware messages
93
+ * Translation string should include: "{gender, select, male {...} female {...} other {...}}"
94
+ */
95
+ static withGender(componentId, stringKey, gender, otherVars, language, instanceKey, handleableOptions) {
96
+ return new TranslatableHandleableGenericError(componentId, stringKey, { gender, ...otherVars }, language, undefined, instanceKey, handleableOptions);
97
+ }
98
+ /**
99
+ * Create error with ordinal formatting (1st, 2nd, 3rd)
100
+ * Translation string should include: "{number, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}"
101
+ */
102
+ static withOrdinal(componentId, stringKey, ordinalNumber, otherVars, language, instanceKey, handleableOptions) {
103
+ return new TranslatableHandleableGenericError(componentId, stringKey, { number: ordinalNumber, ...otherVars }, language, undefined, instanceKey, handleableOptions);
104
+ }
105
+ /**
106
+ * Create error with number formatting (currency, percent, integer)
107
+ * Translation string should include: "{value, number, integer}" or "{amount, number, currency}"
108
+ */
109
+ static withNumberFormat(componentId, stringKey, value, otherVars, language, instanceKey, handleableOptions) {
110
+ return new TranslatableHandleableGenericError(componentId, stringKey, { value, ...otherVars }, language, undefined, instanceKey, handleableOptions);
111
+ }
112
+ /**
113
+ * Create error with multiple i18n features combined
114
+ * Translation string can combine: plural, select, number formatting, etc.
115
+ */
116
+ static withMultipleFeatures(componentId, stringKey, features, language, instanceKey, handleableOptions) {
117
+ return new TranslatableHandleableGenericError(componentId, stringKey, features, language, undefined, instanceKey, handleableOptions);
118
+ }
119
+ }
120
+ exports.TranslatableHandleableGenericError = TranslatableHandleableGenericError;
121
+ //# sourceMappingURL=translatable-handleable-generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translatable-handleable-generic.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/translatable-handleable-generic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { GenderCategory } from '../gender/gender-categories';
2
+ /**
3
+ * Translatable error class with full i18n 3.0/3.5 feature support.
4
+ *
5
+ * Uses lazy initialization to avoid circular dependencies with core modules.
6
+ * The I18nEngine is only accessed when the error is constructed, not at module load time.
7
+ * If the i18n engine is not initialized, falls back to displaying the raw key.
8
+ *
9
+ * **Supported Features:**
10
+ * - ICU MessageFormat (variables, plural, select, selectordinal)
11
+ * - Pluralization (37 languages, CLDR rules)
12
+ * - Gender-aware translations
13
+ * - Number formatting (integer, currency, percent)
14
+ * - Date/Time formatting
15
+ * - Nested messages (4 levels deep)
16
+ * - Context variables
17
+ *
18
+ * **Translation String Examples:**
19
+ * ```typescript
20
+ * // ICU plural
21
+ * "{count, plural, one {# error occurred} other {# errors occurred}}"
22
+ *
23
+ * // ICU select + gender
24
+ * "{gender, select, male {He encountered} female {She encountered}} an error"
25
+ *
26
+ * // Number formatting
27
+ * "Threshold {limit, number, integer} exceeded by {value, number, percent}"
28
+ *
29
+ * // SelectOrdinal
30
+ * "Failed at {step, selectordinal, one {#st} two {#nd} few {#rd} other {#th}} step"
31
+ *
32
+ * // Nested messages
33
+ * "{severity, select, low {Minor: {count, plural, one {# issue} other {# issues}}} high {Critical error}}"
34
+ * ```
35
+ */
36
+ export declare class TranslatableError<TStringKey extends string = string> extends Error {
37
+ readonly componentId: string;
38
+ readonly stringKey: TStringKey;
39
+ readonly variables?: Record<string, string | number>;
40
+ readonly language?: string;
41
+ constructor(componentId: string, stringKey: TStringKey, otherVars?: Record<string, string | number>, language?: string);
42
+ /**
43
+ * Create error with plural count
44
+ * Translation string should use: {count, plural, one {...} other {...}}
45
+ */
46
+ static withCount<TStringKey extends string>(componentId: string, stringKey: TStringKey, count: number, otherVars?: Record<string, string | number>, language?: string): TranslatableError<TStringKey>;
47
+ /**
48
+ * Create error with gender context
49
+ * Translation string should use: {gender, select, male {...} female {...} other {...}}
50
+ */
51
+ static withGender<TStringKey extends string>(componentId: string, stringKey: TStringKey, gender: GenderCategory, otherVars?: Record<string, string | number>, language?: string): TranslatableError<TStringKey>;
52
+ /**
53
+ * Create error with ordinal number
54
+ * Translation string should use: {number, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}
55
+ */
56
+ static withOrdinal<TStringKey extends string>(componentId: string, stringKey: TStringKey, number: number, otherVars?: Record<string, string | number>, language?: string): TranslatableError<TStringKey>;
57
+ /**
58
+ * Create error with formatted number
59
+ * Translation string should use: {value, number, integer|currency|percent}
60
+ */
61
+ static withNumber<TStringKey extends string>(componentId: string, stringKey: TStringKey, value: number, otherVars?: Record<string, string | number>, language?: string): TranslatableError<TStringKey>;
62
+ }
63
+ //# sourceMappingURL=translatable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translatable.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/translatable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,iBAAiB,CAC5B,UAAU,SAAS,MAAM,GAAG,MAAM,CAClC,SAAQ,KAAK;IACb,SAAyB,WAAW,EAAE,MAAM,CAAC;IAC7C,SAAgB,SAAS,EAAE,UAAU,CAAC;IACtC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAC5D,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAGhC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM;IAanB;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,SAAS,MAAM,EACxC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,GAChB,iBAAiB,CAAC,UAAU,CAAC;IAShC;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,SAAS,MAAM,EACzC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,cAAc,EACtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,GAChB,iBAAiB,CAAC,UAAU,CAAC;IAShC;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,UAAU,SAAS,MAAM,EAC1C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,GAChB,iBAAiB,CAAC,UAAU,CAAC;IAShC;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,SAAS,MAAM,EACzC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,GAChB,iBAAiB,CAAC,UAAU,CAAC;CAQjC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TranslatableError = void 0;
4
+ const i18n_engine_1 = require("../core/i18n-engine");
5
+ /**
6
+ * Translatable error class with full i18n 3.0/3.5 feature support.
7
+ *
8
+ * Uses lazy initialization to avoid circular dependencies with core modules.
9
+ * The I18nEngine is only accessed when the error is constructed, not at module load time.
10
+ * If the i18n engine is not initialized, falls back to displaying the raw key.
11
+ *
12
+ * **Supported Features:**
13
+ * - ICU MessageFormat (variables, plural, select, selectordinal)
14
+ * - Pluralization (37 languages, CLDR rules)
15
+ * - Gender-aware translations
16
+ * - Number formatting (integer, currency, percent)
17
+ * - Date/Time formatting
18
+ * - Nested messages (4 levels deep)
19
+ * - Context variables
20
+ *
21
+ * **Translation String Examples:**
22
+ * ```typescript
23
+ * // ICU plural
24
+ * "{count, plural, one {# error occurred} other {# errors occurred}}"
25
+ *
26
+ * // ICU select + gender
27
+ * "{gender, select, male {He encountered} female {She encountered}} an error"
28
+ *
29
+ * // Number formatting
30
+ * "Threshold {limit, number, integer} exceeded by {value, number, percent}"
31
+ *
32
+ * // SelectOrdinal
33
+ * "Failed at {step, selectordinal, one {#st} two {#nd} few {#rd} other {#th}} step"
34
+ *
35
+ * // Nested messages
36
+ * "{severity, select, low {Minor: {count, plural, one {# issue} other {# issues}}} high {Critical error}}"
37
+ * ```
38
+ */
39
+ class TranslatableError extends Error {
40
+ componentId;
41
+ stringKey;
42
+ variables;
43
+ language;
44
+ constructor(componentId, stringKey, otherVars, language) {
45
+ // Lazy initialization: getInstance() is only called when error is constructed, not at module load
46
+ const engine = i18n_engine_1.I18nEngine.getInstance('default');
47
+ super(engine.safeTranslate(componentId, stringKey, otherVars, language));
48
+ this.name = 'TranslatableError';
49
+ this.componentId = componentId;
50
+ this.stringKey = stringKey;
51
+ this.variables = otherVars;
52
+ this.language = language;
53
+ Object.setPrototypeOf(this, TranslatableError.prototype);
54
+ }
55
+ /**
56
+ * Create error with plural count
57
+ * Translation string should use: {count, plural, one {...} other {...}}
58
+ */
59
+ static withCount(componentId, stringKey, count, otherVars, language) {
60
+ return new TranslatableError(componentId, stringKey, { count, ...otherVars }, language);
61
+ }
62
+ /**
63
+ * Create error with gender context
64
+ * Translation string should use: {gender, select, male {...} female {...} other {...}}
65
+ */
66
+ static withGender(componentId, stringKey, gender, otherVars, language) {
67
+ return new TranslatableError(componentId, stringKey, { gender, ...otherVars }, language);
68
+ }
69
+ /**
70
+ * Create error with ordinal number
71
+ * Translation string should use: {number, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}
72
+ */
73
+ static withOrdinal(componentId, stringKey, number, otherVars, language) {
74
+ return new TranslatableError(componentId, stringKey, { number, ...otherVars }, language);
75
+ }
76
+ /**
77
+ * Create error with formatted number
78
+ * Translation string should use: {value, number, integer|currency|percent}
79
+ */
80
+ static withNumber(componentId, stringKey, value, otherVars, language) {
81
+ return new TranslatableError(componentId, stringKey, { value, ...otherVars }, language);
82
+ }
83
+ }
84
+ exports.TranslatableError = TranslatableError;
85
+ //# sourceMappingURL=translatable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translatable.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/translatable.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAa,iBAEX,SAAQ,KAAK;IACY,WAAW,CAAS;IAC7B,SAAS,CAAa;IACtB,SAAS,CAAmC;IAC5C,QAAQ,CAAU;IAElC,YACE,WAAmB,EACnB,SAAqB,EACrB,SAA2C,EAC3C,QAAiB;QAEjB,kGAAkG;QAClG,MAAM,MAAM,GAAG,wBAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjD,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,SAAS,CACd,WAAmB,EACnB,SAAqB,EACrB,KAAa,EACb,SAA2C,EAC3C,QAAiB;QAEjB,OAAO,IAAI,iBAAiB,CAC1B,WAAW,EACX,SAAS,EACT,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EACvB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,CACf,WAAmB,EACnB,SAAqB,EACrB,MAAsB,EACtB,SAA2C,EAC3C,QAAiB;QAEjB,OAAO,IAAI,iBAAiB,CAC1B,WAAW,EACX,SAAS,EACT,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,EACxB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,WAAW,CAChB,WAAmB,EACnB,SAAqB,EACrB,MAAc,EACd,SAA2C,EAC3C,QAAiB;QAEjB,OAAO,IAAI,iBAAiB,CAC1B,WAAW,EACX,SAAS,EACT,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,EACxB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,CACf,WAAmB,EACnB,SAAqB,EACrB,KAAa,EACb,SAA2C,EAC3C,QAAiB;QAEjB,OAAO,IAAI,iBAAiB,CAC1B,WAAW,EACX,SAAS,EACT,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EACvB,QAAQ,CACT,CAAC;IACJ,CAAC;CACF;AApGD,8CAoGC"}
@@ -0,0 +1,62 @@
1
+ import { IHandleable } from '../interfaces/handleable';
2
+ import { HandleableErrorOptions } from '../interfaces/handleable-error-options';
3
+ import { HandleableError } from './handleable';
4
+ import { CompleteReasonMap } from './typed';
5
+ /**
6
+ * TypedHandleableError with full i18n feature support.
7
+ *
8
+ * Combines typed errors with handleable error patterns and full i18n capabilities.
9
+ *
10
+ * **Supported i18n Features** (via translation strings):
11
+ * - ICU MessageFormat: plural, select, selectordinal
12
+ * - Pluralization: 37 languages with CLDR rules
13
+ * - Gender support: male, female, neutral, other
14
+ * - Number formatting: integer, currency, percent
15
+ * - Nested messages: up to 4 levels deep
16
+ *
17
+ * **Translation String Examples:**
18
+ * ```typescript
19
+ * // Define error types
20
+ * enum NetworkError {
21
+ * Timeout = 'timeout',
22
+ * RateLimit = 'rateLimit'
23
+ * }
24
+ *
25
+ * // Register translations with ICU
26
+ * engine.registerComponent({
27
+ * component: { id: 'network', stringKeys: ['timeout', 'rateLimit'] },
28
+ * strings: {
29
+ * 'en-US': {
30
+ * timeout: \"{count, plural, one {# request timed out} other {# requests timed out}} after {seconds, number, integer} seconds\",
31
+ * rateLimit: \"Rate limit exceeded. {remaining, number, integer} requests remaining. Resets in {minutes, number, integer} minutes.\"
32
+ * }
33
+ * }
34
+ * });
35
+ *
36
+ * // Use typed handleable error
37
+ * try {
38
+ * await apiCall();
39
+ * } catch (error) {
40
+ * throw new TypedHandleableError(
41
+ * 'network',
42
+ * NetworkError.Timeout,
43
+ * reasonMap,
44
+ * error,
45
+ * { retryable: true },
46
+ * 'en-US',
47
+ * { count: 1, seconds: 30 }
48
+ * );
49
+ * }
50
+ * // Result: \"1 request timed out after 30 seconds\"
51
+ * ```
52
+ */
53
+ export declare class TypedHandleableError<TEnum extends Record<string, string>, TStringKey extends string> extends HandleableError implements IHandleable {
54
+ readonly componentId: string;
55
+ readonly type: TEnum[keyof TEnum];
56
+ readonly reasonMap: CompleteReasonMap<TEnum, TStringKey>;
57
+ readonly language?: string;
58
+ readonly otherVars?: Record<string, string | number>;
59
+ constructor(componentId: string, type: TEnum[keyof TEnum], reasonMap: CompleteReasonMap<TEnum, TStringKey>, source: Error, options?: HandleableErrorOptions, language?: string, otherVars?: Record<string, string | number>);
60
+ toJSON(): Record<string, unknown>;
61
+ }
62
+ //# sourceMappingURL=typed-handleable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-handleable.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/typed-handleable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,oBAAoB,CAC7B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,UAAU,SAAS,MAAM,CAE3B,SAAQ,eACR,YAAW,WAAW;IAEtB,SAAyB,WAAW,EAAE,MAAM,CAAC;IAC7C,SAAyB,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAClD,SAAyB,SAAS,EAAE,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACzE,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;gBAG1D,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,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAsD7B,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOlD"}