@digitaldefiance/i18n-lib 3.7.5 → 3.8.1

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 (490) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +261 -0
  3. package/package.json +12 -4
  4. package/src/active-context.ts +4 -0
  5. package/src/builders/i18n-builder.ts +82 -0
  6. package/src/builders/{index.d.ts → index.ts} +1 -1
  7. package/src/component-definition.ts +11 -0
  8. package/src/component-registration.ts +29 -0
  9. package/src/component-registry.ts +432 -0
  10. package/src/context-error-type.ts +7 -0
  11. package/src/core/component-store.ts +241 -0
  12. package/src/core/context-manager.ts +113 -0
  13. package/src/core/enum-registry.ts +106 -0
  14. package/src/core/i18n-engine.ts +710 -0
  15. package/src/core/index.ts +16 -0
  16. package/src/core/language-registry.ts +345 -0
  17. package/src/core-component-id.ts +5 -0
  18. package/src/core-i18n.ts +270 -0
  19. package/src/core-plugin-factory.ts +111 -0
  20. package/src/core-string-key.ts +59 -0
  21. package/src/create-translation-adapter.ts +93 -0
  22. package/src/enum-registry.ts +152 -0
  23. package/src/errors/base.ts +8 -0
  24. package/src/errors/context-error.ts +122 -0
  25. package/src/errors/enhanced-error-base.ts +260 -0
  26. package/src/errors/handleable.ts +152 -0
  27. package/src/errors/i18n-error.ts +494 -0
  28. package/src/errors/index.ts +15 -0
  29. package/src/errors/simple-typed-error.ts +81 -0
  30. package/src/errors/{index.d.ts → translatable-exports.ts} +3 -5
  31. package/src/errors/translatable-generic.ts +245 -0
  32. package/src/errors/translatable-handleable-generic.ts +222 -0
  33. package/src/errors/translatable.ts +138 -0
  34. package/src/errors/typed-handleable.ts +138 -0
  35. package/src/errors/typed.ts +617 -0
  36. package/src/gender/{gender-categories.d.ts → gender-categories.ts} +6 -2
  37. package/src/gender/gender-resolver.ts +40 -0
  38. package/src/gender/{index.d.ts → index.ts} +0 -1
  39. package/src/global-active-context.ts +266 -0
  40. package/src/icu/ast.ts +56 -0
  41. package/src/icu/compiler.ts +96 -0
  42. package/src/icu/formatter-registry.ts +36 -0
  43. package/src/icu/formatters/base-formatter.ts +8 -0
  44. package/src/icu/formatters/date-formatter.ts +30 -0
  45. package/src/icu/formatters/number-formatter.ts +32 -0
  46. package/src/icu/formatters/plural-formatter.ts +12 -0
  47. package/src/icu/formatters/select-formatter.ts +7 -0
  48. package/src/icu/formatters/selectordinal-formatter.ts +17 -0
  49. package/src/icu/formatters/time-formatter.ts +30 -0
  50. package/src/icu/helpers.ts +34 -0
  51. package/src/icu/parser.ts +242 -0
  52. package/src/icu/runtime.ts +37 -0
  53. package/src/icu/tokenizer.ts +212 -0
  54. package/src/icu/validator.ts +163 -0
  55. package/src/{index.d.ts → index.ts} +46 -14
  56. package/src/interfaces/active-context.interface.ts +41 -0
  57. package/src/interfaces/component-config.interface.ts +17 -0
  58. package/src/interfaces/engine-config.interface.ts +22 -0
  59. package/src/interfaces/global-active-context.ts +39 -0
  60. package/src/interfaces/handleable-error-options.ts +13 -0
  61. package/src/interfaces/handleable.ts +20 -0
  62. package/src/interfaces/i18n-engine.interface.ts +57 -0
  63. package/src/interfaces/index.ts +13 -0
  64. package/src/interfaces/language-definition.interface.ts +17 -0
  65. package/src/interfaces/translation-options.interface.ts +15 -0
  66. package/src/interfaces/validation-result.interface.ts +24 -0
  67. package/src/language-codes.ts +40 -0
  68. package/src/language-definition.ts +13 -0
  69. package/src/plugin-i18n-engine.ts +707 -0
  70. package/src/pluralization/{index.d.ts → index.ts} +1 -1
  71. package/src/pluralization/language-plural-map.ts +186 -0
  72. package/src/pluralization/{plural-categories.d.ts → plural-categories.ts} +5 -3
  73. package/src/pluralization/plural-rules.ts +228 -0
  74. package/src/registry-config.ts +16 -0
  75. package/src/registry-error-type.ts +19 -0
  76. package/src/registry-error.ts +100 -0
  77. package/src/strict-types.ts +35 -0
  78. package/src/strings/de.ts +75 -0
  79. package/src/strings/en-GB.ts +74 -0
  80. package/src/strings/en-US.ts +74 -0
  81. package/src/strings/es.ts +74 -0
  82. package/src/strings/fr.ts +75 -0
  83. package/src/strings/ja.ts +73 -0
  84. package/src/strings/uk.ts +73 -0
  85. package/src/strings/zh-CN.ts +72 -0
  86. package/src/template.ts +72 -0
  87. package/src/translation-engine.ts +18 -0
  88. package/src/translation-request.ts +12 -0
  89. package/src/translation-response.ts +8 -0
  90. package/src/types/engine.ts +55 -0
  91. package/src/types/{index.d.ts → index.ts} +1 -1
  92. package/src/types/{plural-types.d.ts → plural-types.ts} +29 -3
  93. package/src/types.ts +142 -0
  94. package/src/utils/currency.ts +141 -0
  95. package/src/utils/html-escape.ts +55 -0
  96. package/src/utils/{index.d.ts → index.ts} +0 -1
  97. package/src/utils/lru-cache.ts +76 -0
  98. package/src/utils/{plural-helpers.d.ts → plural-helpers.ts} +14 -4
  99. package/src/utils/{safe-object.js → safe-object.ts} +37 -34
  100. package/src/utils/string-utils.ts +77 -0
  101. package/src/utils/timezone.ts +76 -0
  102. package/src/utils/validation.ts +66 -0
  103. package/src/utils.ts +215 -0
  104. package/src/validation/{index.d.ts → index.ts} +0 -1
  105. package/src/validation/plural-validator.ts +168 -0
  106. package/src/validation-config.ts +11 -0
  107. package/src/validation-result.ts +12 -0
  108. package/src/active-context.d.ts +0 -36
  109. package/src/active-context.d.ts.map +0 -1
  110. package/src/active-context.js +0 -3
  111. package/src/active-context.js.map +0 -1
  112. package/src/builders/i18n-builder.d.ts +0 -26
  113. package/src/builders/i18n-builder.d.ts.map +0 -1
  114. package/src/builders/i18n-builder.js +0 -70
  115. package/src/builders/i18n-builder.js.map +0 -1
  116. package/src/builders/index.d.ts.map +0 -1
  117. package/src/builders/index.js +0 -8
  118. package/src/builders/index.js.map +0 -1
  119. package/src/component-definition.d.ts +0 -12
  120. package/src/component-definition.d.ts.map +0 -1
  121. package/src/component-definition.js +0 -3
  122. package/src/component-definition.js.map +0 -1
  123. package/src/component-registration.d.ts +0 -13
  124. package/src/component-registration.d.ts.map +0 -1
  125. package/src/component-registration.js +0 -3
  126. package/src/component-registration.js.map +0 -1
  127. package/src/component-registry.d.ts +0 -102
  128. package/src/component-registry.d.ts.map +0 -1
  129. package/src/component-registry.js +0 -282
  130. package/src/component-registry.js.map +0 -1
  131. package/src/context-error-type.d.ts +0 -8
  132. package/src/context-error-type.d.ts.map +0 -1
  133. package/src/context-error-type.js +0 -12
  134. package/src/context-error-type.js.map +0 -1
  135. package/src/core/component-store.d.ts +0 -93
  136. package/src/core/component-store.d.ts.map +0 -1
  137. package/src/core/component-store.js +0 -198
  138. package/src/core/component-store.js.map +0 -1
  139. package/src/core/context-manager.d.ts +0 -72
  140. package/src/core/context-manager.d.ts.map +0 -1
  141. package/src/core/context-manager.js +0 -98
  142. package/src/core/context-manager.js.map +0 -1
  143. package/src/core/enum-registry.d.ts +0 -48
  144. package/src/core/enum-registry.d.ts.map +0 -1
  145. package/src/core/enum-registry.js +0 -85
  146. package/src/core/enum-registry.js.map +0 -1
  147. package/src/core/i18n-engine.d.ts +0 -241
  148. package/src/core/i18n-engine.d.ts.map +0 -1
  149. package/src/core/i18n-engine.js +0 -568
  150. package/src/core/i18n-engine.js.map +0 -1
  151. package/src/core/index.d.ts +0 -9
  152. package/src/core/index.d.ts.map +0 -1
  153. package/src/core/index.js +0 -12
  154. package/src/core/index.js.map +0 -1
  155. package/src/core/language-registry.d.ts +0 -180
  156. package/src/core/language-registry.d.ts.map +0 -1
  157. package/src/core/language-registry.js +0 -295
  158. package/src/core/language-registry.js.map +0 -1
  159. package/src/core-i18n.d.ts +0 -91
  160. package/src/core-i18n.d.ts.map +0 -1
  161. package/src/core-i18n.js +0 -287
  162. package/src/core-i18n.js.map +0 -1
  163. package/src/core-string-key.d.ts +0 -52
  164. package/src/core-string-key.d.ts.map +0 -1
  165. package/src/core-string-key.js +0 -61
  166. package/src/core-string-key.js.map +0 -1
  167. package/src/create-translation-adapter.d.ts +0 -33
  168. package/src/create-translation-adapter.d.ts.map +0 -1
  169. package/src/create-translation-adapter.js +0 -72
  170. package/src/create-translation-adapter.js.map +0 -1
  171. package/src/enum-registry.d.ts +0 -65
  172. package/src/enum-registry.d.ts.map +0 -1
  173. package/src/enum-registry.js +0 -123
  174. package/src/enum-registry.js.map +0 -1
  175. package/src/errors/context-error.d.ts +0 -50
  176. package/src/errors/context-error.d.ts.map +0 -1
  177. package/src/errors/context-error.js +0 -75
  178. package/src/errors/context-error.js.map +0 -1
  179. package/src/errors/enhanced-error-base.d.ts +0 -125
  180. package/src/errors/enhanced-error-base.d.ts.map +0 -1
  181. package/src/errors/enhanced-error-base.js +0 -165
  182. package/src/errors/enhanced-error-base.js.map +0 -1
  183. package/src/errors/handleable.d.ts +0 -83
  184. package/src/errors/handleable.d.ts.map +0 -1
  185. package/src/errors/handleable.js +0 -136
  186. package/src/errors/handleable.js.map +0 -1
  187. package/src/errors/i18n-error.d.ts +0 -211
  188. package/src/errors/i18n-error.d.ts.map +0 -1
  189. package/src/errors/i18n-error.js +0 -358
  190. package/src/errors/i18n-error.js.map +0 -1
  191. package/src/errors/index.d.ts.map +0 -1
  192. package/src/errors/index.js +0 -17
  193. package/src/errors/index.js.map +0 -1
  194. package/src/errors/simple-typed-error.d.ts +0 -53
  195. package/src/errors/simple-typed-error.d.ts.map +0 -1
  196. package/src/errors/simple-typed-error.js +0 -51
  197. package/src/errors/simple-typed-error.js.map +0 -1
  198. package/src/errors/translatable-generic.d.ts +0 -84
  199. package/src/errors/translatable-generic.d.ts.map +0 -1
  200. package/src/errors/translatable-generic.js +0 -134
  201. package/src/errors/translatable-generic.js.map +0 -1
  202. package/src/errors/translatable-handleable-generic.d.ts +0 -116
  203. package/src/errors/translatable-handleable-generic.d.ts.map +0 -1
  204. package/src/errors/translatable-handleable-generic.js +0 -121
  205. package/src/errors/translatable-handleable-generic.js.map +0 -1
  206. package/src/errors/translatable.d.ts +0 -59
  207. package/src/errors/translatable.d.ts.map +0 -1
  208. package/src/errors/translatable.js +0 -80
  209. package/src/errors/translatable.js.map +0 -1
  210. package/src/errors/typed-handleable.d.ts +0 -62
  211. package/src/errors/typed-handleable.d.ts.map +0 -1
  212. package/src/errors/typed-handleable.js +0 -106
  213. package/src/errors/typed-handleable.js.map +0 -1
  214. package/src/errors/typed.d.ts +0 -206
  215. package/src/errors/typed.d.ts.map +0 -1
  216. package/src/errors/typed.js +0 -452
  217. package/src/errors/typed.js.map +0 -1
  218. package/src/gender/gender-categories.d.ts.map +0 -1
  219. package/src/gender/gender-categories.js +0 -15
  220. package/src/gender/gender-categories.js.map +0 -1
  221. package/src/gender/gender-resolver.d.ts +0 -14
  222. package/src/gender/gender-resolver.d.ts.map +0 -1
  223. package/src/gender/gender-resolver.js +0 -35
  224. package/src/gender/gender-resolver.js.map +0 -1
  225. package/src/gender/index.d.ts.map +0 -1
  226. package/src/gender/index.js +0 -6
  227. package/src/gender/index.js.map +0 -1
  228. package/src/global-active-context.d.ts +0 -50
  229. package/src/global-active-context.d.ts.map +0 -1
  230. package/src/global-active-context.js +0 -185
  231. package/src/global-active-context.js.map +0 -1
  232. package/src/icu/ast.d.ts +0 -48
  233. package/src/icu/ast.d.ts.map +0 -1
  234. package/src/icu/ast.js +0 -16
  235. package/src/icu/ast.js.map +0 -1
  236. package/src/icu/compiler.d.ts +0 -16
  237. package/src/icu/compiler.d.ts.map +0 -1
  238. package/src/icu/compiler.js +0 -87
  239. package/src/icu/compiler.js.map +0 -1
  240. package/src/icu/formatter-registry.d.ts +0 -10
  241. package/src/icu/formatter-registry.d.ts.map +0 -1
  242. package/src/icu/formatter-registry.js +0 -34
  243. package/src/icu/formatter-registry.js.map +0 -1
  244. package/src/icu/formatters/base-formatter.d.ts +0 -8
  245. package/src/icu/formatters/base-formatter.d.ts.map +0 -1
  246. package/src/icu/formatters/base-formatter.js +0 -3
  247. package/src/icu/formatters/base-formatter.js.map +0 -1
  248. package/src/icu/formatters/date-formatter.d.ts +0 -5
  249. package/src/icu/formatters/date-formatter.d.ts.map +0 -1
  250. package/src/icu/formatters/date-formatter.js +0 -31
  251. package/src/icu/formatters/date-formatter.js.map +0 -1
  252. package/src/icu/formatters/number-formatter.d.ts +0 -5
  253. package/src/icu/formatters/number-formatter.d.ts.map +0 -1
  254. package/src/icu/formatters/number-formatter.js +0 -33
  255. package/src/icu/formatters/number-formatter.js.map +0 -1
  256. package/src/icu/formatters/plural-formatter.d.ts +0 -5
  257. package/src/icu/formatters/plural-formatter.d.ts.map +0 -1
  258. package/src/icu/formatters/plural-formatter.js +0 -15
  259. package/src/icu/formatters/plural-formatter.js.map +0 -1
  260. package/src/icu/formatters/select-formatter.d.ts +0 -5
  261. package/src/icu/formatters/select-formatter.d.ts.map +0 -1
  262. package/src/icu/formatters/select-formatter.js +0 -10
  263. package/src/icu/formatters/select-formatter.js.map +0 -1
  264. package/src/icu/formatters/selectordinal-formatter.d.ts +0 -5
  265. package/src/icu/formatters/selectordinal-formatter.d.ts.map +0 -1
  266. package/src/icu/formatters/selectordinal-formatter.js +0 -22
  267. package/src/icu/formatters/selectordinal-formatter.js.map +0 -1
  268. package/src/icu/formatters/time-formatter.d.ts +0 -5
  269. package/src/icu/formatters/time-formatter.d.ts.map +0 -1
  270. package/src/icu/formatters/time-formatter.js +0 -31
  271. package/src/icu/formatters/time-formatter.js.map +0 -1
  272. package/src/icu/helpers.d.ts +0 -9
  273. package/src/icu/helpers.d.ts.map +0 -1
  274. package/src/icu/helpers.js +0 -31
  275. package/src/icu/helpers.js.map +0 -1
  276. package/src/icu/parser.d.ts +0 -31
  277. package/src/icu/parser.d.ts.map +0 -1
  278. package/src/icu/parser.js +0 -203
  279. package/src/icu/parser.js.map +0 -1
  280. package/src/icu/runtime.d.ts +0 -10
  281. package/src/icu/runtime.d.ts.map +0 -1
  282. package/src/icu/runtime.js +0 -33
  283. package/src/icu/runtime.js.map +0 -1
  284. package/src/icu/tokenizer.d.ts +0 -37
  285. package/src/icu/tokenizer.d.ts.map +0 -1
  286. package/src/icu/tokenizer.js +0 -187
  287. package/src/icu/tokenizer.js.map +0 -1
  288. package/src/icu/validator.d.ts +0 -11
  289. package/src/icu/validator.d.ts.map +0 -1
  290. package/src/icu/validator.js +0 -140
  291. package/src/icu/validator.js.map +0 -1
  292. package/src/index.d.ts.map +0 -1
  293. package/src/index.js +0 -76
  294. package/src/index.js.map +0 -1
  295. package/src/interfaces/component-config.interface.d.ts +0 -16
  296. package/src/interfaces/component-config.interface.d.ts.map +0 -1
  297. package/src/interfaces/component-config.interface.js +0 -6
  298. package/src/interfaces/component-config.interface.js.map +0 -1
  299. package/src/interfaces/engine-config.interface.d.ts +0 -22
  300. package/src/interfaces/engine-config.interface.d.ts.map +0 -1
  301. package/src/interfaces/engine-config.interface.js +0 -6
  302. package/src/interfaces/engine-config.interface.js.map +0 -1
  303. package/src/interfaces/global-active-context.d.ts +0 -23
  304. package/src/interfaces/global-active-context.d.ts.map +0 -1
  305. package/src/interfaces/global-active-context.js +0 -3
  306. package/src/interfaces/global-active-context.js.map +0 -1
  307. package/src/interfaces/handleable-error-options.d.ts +0 -14
  308. package/src/interfaces/handleable-error-options.d.ts.map +0 -1
  309. package/src/interfaces/handleable-error-options.js +0 -3
  310. package/src/interfaces/handleable-error-options.js.map +0 -1
  311. package/src/interfaces/handleable.d.ts +0 -21
  312. package/src/interfaces/handleable.d.ts.map +0 -1
  313. package/src/interfaces/handleable.js +0 -3
  314. package/src/interfaces/handleable.js.map +0 -1
  315. package/src/interfaces/i18n-engine.interface.d.ts +0 -46
  316. package/src/interfaces/i18n-engine.interface.d.ts.map +0 -1
  317. package/src/interfaces/i18n-engine.interface.js +0 -6
  318. package/src/interfaces/i18n-engine.interface.js.map +0 -1
  319. package/src/interfaces/index.d.ts +0 -11
  320. package/src/interfaces/index.d.ts.map +0 -1
  321. package/src/interfaces/index.js +0 -14
  322. package/src/interfaces/index.js.map +0 -1
  323. package/src/interfaces/language-definition.interface.d.ts +0 -17
  324. package/src/interfaces/language-definition.interface.d.ts.map +0 -1
  325. package/src/interfaces/language-definition.interface.js +0 -6
  326. package/src/interfaces/language-definition.interface.js.map +0 -1
  327. package/src/interfaces/translation-options.interface.d.ts +0 -15
  328. package/src/interfaces/translation-options.interface.d.ts.map +0 -1
  329. package/src/interfaces/translation-options.interface.js +0 -6
  330. package/src/interfaces/translation-options.interface.js.map +0 -1
  331. package/src/interfaces/validation-result.interface.d.ts +0 -24
  332. package/src/interfaces/validation-result.interface.d.ts.map +0 -1
  333. package/src/interfaces/validation-result.interface.js +0 -6
  334. package/src/interfaces/validation-result.interface.js.map +0 -1
  335. package/src/language-codes.d.ts +0 -28
  336. package/src/language-codes.d.ts.map +0 -1
  337. package/src/language-codes.js +0 -32
  338. package/src/language-codes.js.map +0 -1
  339. package/src/language-definition.d.ts +0 -14
  340. package/src/language-definition.d.ts.map +0 -1
  341. package/src/language-definition.js +0 -3
  342. package/src/language-definition.js.map +0 -1
  343. package/src/plugin-i18n-engine.d.ts +0 -164
  344. package/src/plugin-i18n-engine.d.ts.map +0 -1
  345. package/src/plugin-i18n-engine.js +0 -489
  346. package/src/plugin-i18n-engine.js.map +0 -1
  347. package/src/pluralization/index.d.ts.map +0 -1
  348. package/src/pluralization/index.js +0 -10
  349. package/src/pluralization/index.js.map +0 -1
  350. package/src/pluralization/language-plural-map.d.ts +0 -29
  351. package/src/pluralization/language-plural-map.d.ts.map +0 -1
  352. package/src/pluralization/language-plural-map.js +0 -155
  353. package/src/pluralization/language-plural-map.js.map +0 -1
  354. package/src/pluralization/plural-categories.d.ts.map +0 -1
  355. package/src/pluralization/plural-categories.js +0 -8
  356. package/src/pluralization/plural-categories.js.map +0 -1
  357. package/src/pluralization/plural-rules.d.ts +0 -102
  358. package/src/pluralization/plural-rules.d.ts.map +0 -1
  359. package/src/pluralization/plural-rules.js +0 -263
  360. package/src/pluralization/plural-rules.js.map +0 -1
  361. package/src/registry-config.d.ts +0 -16
  362. package/src/registry-config.d.ts.map +0 -1
  363. package/src/registry-config.js +0 -3
  364. package/src/registry-config.js.map +0 -1
  365. package/src/registry-error-type.d.ts +0 -20
  366. package/src/registry-error-type.d.ts.map +0 -1
  367. package/src/registry-error-type.js +0 -24
  368. package/src/registry-error-type.js.map +0 -1
  369. package/src/registry-error.d.ts +0 -19
  370. package/src/registry-error.d.ts.map +0 -1
  371. package/src/registry-error.js +0 -49
  372. package/src/registry-error.js.map +0 -1
  373. package/src/strict-types.d.ts +0 -19
  374. package/src/strict-types.d.ts.map +0 -1
  375. package/src/strict-types.js +0 -18
  376. package/src/strict-types.js.map +0 -1
  377. package/src/strings/de.d.ts +0 -3
  378. package/src/strings/de.d.ts.map +0 -1
  379. package/src/strings/de.js +0 -57
  380. package/src/strings/de.js.map +0 -1
  381. package/src/strings/en-GB.d.ts +0 -3
  382. package/src/strings/en-GB.d.ts.map +0 -1
  383. package/src/strings/en-GB.js +0 -57
  384. package/src/strings/en-GB.js.map +0 -1
  385. package/src/strings/en-US.d.ts +0 -3
  386. package/src/strings/en-US.d.ts.map +0 -1
  387. package/src/strings/en-US.js +0 -57
  388. package/src/strings/en-US.js.map +0 -1
  389. package/src/strings/es.d.ts +0 -3
  390. package/src/strings/es.d.ts.map +0 -1
  391. package/src/strings/es.js +0 -57
  392. package/src/strings/es.js.map +0 -1
  393. package/src/strings/fr.d.ts +0 -3
  394. package/src/strings/fr.d.ts.map +0 -1
  395. package/src/strings/fr.js +0 -57
  396. package/src/strings/fr.js.map +0 -1
  397. package/src/strings/ja.d.ts +0 -3
  398. package/src/strings/ja.d.ts.map +0 -1
  399. package/src/strings/ja.js +0 -57
  400. package/src/strings/ja.js.map +0 -1
  401. package/src/strings/uk.d.ts +0 -3
  402. package/src/strings/uk.d.ts.map +0 -1
  403. package/src/strings/uk.js +0 -57
  404. package/src/strings/uk.js.map +0 -1
  405. package/src/strings/zh-CN.d.ts +0 -3
  406. package/src/strings/zh-CN.d.ts.map +0 -1
  407. package/src/strings/zh-CN.js +0 -57
  408. package/src/strings/zh-CN.js.map +0 -1
  409. package/src/template.d.ts +0 -13
  410. package/src/template.d.ts.map +0 -1
  411. package/src/template.js +0 -40
  412. package/src/template.js.map +0 -1
  413. package/src/translation-engine.d.ts +0 -9
  414. package/src/translation-engine.d.ts.map +0 -1
  415. package/src/translation-engine.js +0 -3
  416. package/src/translation-engine.js.map +0 -1
  417. package/src/translation-request.d.ts +0 -10
  418. package/src/translation-request.d.ts.map +0 -1
  419. package/src/translation-request.js +0 -3
  420. package/src/translation-request.js.map +0 -1
  421. package/src/translation-response.d.ts +0 -9
  422. package/src/translation-response.d.ts.map +0 -1
  423. package/src/translation-response.js +0 -3
  424. package/src/translation-response.js.map +0 -1
  425. package/src/types/engine.d.ts +0 -47
  426. package/src/types/engine.d.ts.map +0 -1
  427. package/src/types/engine.js +0 -8
  428. package/src/types/engine.js.map +0 -1
  429. package/src/types/index.d.ts.map +0 -1
  430. package/src/types/index.js +0 -9
  431. package/src/types/index.js.map +0 -1
  432. package/src/types/plural-types.d.ts.map +0 -1
  433. package/src/types/plural-types.js +0 -39
  434. package/src/types/plural-types.js.map +0 -1
  435. package/src/types.d.ts +0 -96
  436. package/src/types.d.ts.map +0 -1
  437. package/src/types.js +0 -23
  438. package/src/types.js.map +0 -1
  439. package/src/utils/currency.d.ts +0 -81
  440. package/src/utils/currency.d.ts.map +0 -1
  441. package/src/utils/currency.js +0 -101
  442. package/src/utils/currency.js.map +0 -1
  443. package/src/utils/html-escape.d.ts +0 -22
  444. package/src/utils/html-escape.d.ts.map +0 -1
  445. package/src/utils/html-escape.js +0 -53
  446. package/src/utils/html-escape.js.map +0 -1
  447. package/src/utils/index.d.ts.map +0 -1
  448. package/src/utils/index.js +0 -12
  449. package/src/utils/index.js.map +0 -1
  450. package/src/utils/lru-cache.d.ts +0 -42
  451. package/src/utils/lru-cache.d.ts.map +0 -1
  452. package/src/utils/lru-cache.js +0 -73
  453. package/src/utils/lru-cache.js.map +0 -1
  454. package/src/utils/plural-helpers.d.ts.map +0 -1
  455. package/src/utils/plural-helpers.js +0 -35
  456. package/src/utils/plural-helpers.js.map +0 -1
  457. package/src/utils/safe-object.d.ts +0 -39
  458. package/src/utils/safe-object.d.ts.map +0 -1
  459. package/src/utils/safe-object.js.map +0 -1
  460. package/src/utils/string-utils.d.ts +0 -28
  461. package/src/utils/string-utils.d.ts.map +0 -1
  462. package/src/utils/string-utils.js +0 -63
  463. package/src/utils/string-utils.js.map +0 -1
  464. package/src/utils/timezone.d.ts +0 -50
  465. package/src/utils/timezone.d.ts.map +0 -1
  466. package/src/utils/timezone.js +0 -74
  467. package/src/utils/timezone.js.map +0 -1
  468. package/src/utils/validation.d.ts +0 -40
  469. package/src/utils/validation.d.ts.map +0 -1
  470. package/src/utils/validation.js +0 -69
  471. package/src/utils/validation.js.map +0 -1
  472. package/src/utils.d.ts +0 -65
  473. package/src/utils.d.ts.map +0 -1
  474. package/src/utils.js +0 -129
  475. package/src/utils.js.map +0 -1
  476. package/src/validation/index.d.ts.map +0 -1
  477. package/src/validation/index.js +0 -5
  478. package/src/validation/index.js.map +0 -1
  479. package/src/validation/plural-validator.d.ts +0 -46
  480. package/src/validation/plural-validator.d.ts.map +0 -1
  481. package/src/validation/plural-validator.js +0 -123
  482. package/src/validation/plural-validator.js.map +0 -1
  483. package/src/validation-config.d.ts +0 -12
  484. package/src/validation-config.d.ts.map +0 -1
  485. package/src/validation-config.js +0 -3
  486. package/src/validation-config.js.map +0 -1
  487. package/src/validation-result.d.ts +0 -13
  488. package/src/validation-result.d.ts.map +0 -1
  489. package/src/validation-result.js +0 -3
  490. package/src/validation-result.js.map +0 -1
@@ -1,24 +1,44 @@
1
+ // V2 Exports (primary)
1
2
  export * from './builders';
2
3
  export * from './core';
3
4
  export * from './errors';
5
+ export * from './gender';
4
6
  export * from './interfaces';
5
- export * from './utils';
6
- export * from './types';
7
7
  export * from './pluralization';
8
- export * from './gender';
8
+ export * from './types';
9
+ export * from './utils';
9
10
  export * from './validation';
10
- export { Timezone, isValidTimezone } from './utils/timezone';
11
- export { CurrencyCode, getCurrencyFormat } from './utils/currency';
12
- export type { CurrencyData, CurrencyFormat, CurrencyPosition } from './utils/currency';
13
- export { createPluralString, createGenderedString } from './utils/plural-helpers';
14
- export type { PluralString } from './types/plural-types';
11
+
12
+ // Explicit exports for type safety
15
13
  export type { GenderedString } from './gender/gender-categories';
16
- export { I18nEngine as I18n } from './core/i18n-engine';
14
+ export type { PluralString } from './types/plural-types';
15
+ export { CurrencyCode, getCurrencyFormat } from './utils/currency';
16
+ export type {
17
+ CurrencyData,
18
+ CurrencyFormat,
19
+ CurrencyPosition,
20
+ } from './utils/currency';
21
+ export {
22
+ createGenderedString,
23
+ createPluralString,
24
+ } from './utils/plural-helpers';
25
+ export { isValidTimezone, Timezone } from './utils/timezone';
26
+
27
+ // Convenience aliases
17
28
  export { I18nBuilder as Builder } from './builders/i18n-builder';
18
- export declare function resetAll(): void;
29
+ export { I18nEngine as I18n } from './core/i18n-engine';
30
+
31
+ // Reset utility
32
+ import { I18nEngine } from './core/i18n-engine';
33
+ export function resetAll(): void {
34
+ I18nEngine.resetAll();
35
+ }
36
+
37
+ // Legacy exports (deprecated - for backwards compatibility)
19
38
  export * from './active-context';
20
39
  export * from './component-definition';
21
40
  export * from './global-active-context';
41
+ // export * from './language-registry'; // Removed - conflicts with v2 core/language-registry
22
42
  export * from './component-registration';
23
43
  export * from './component-registry';
24
44
  export * from './context-error-type';
@@ -39,8 +59,20 @@ export * from './translation-request';
39
59
  export * from './translation-response';
40
60
  export * from './types';
41
61
  export * from './validation-config';
42
- export { createCorePluginI18nEngine as createCoreI18n, createCorePluginI18nEngine as createCoreI18nEngine } from './core-i18n';
43
- export { getCorePluginTranslation as getCoreTranslation, safeCorePluginTranslation as safeCoreTranslation } from './core-i18n';
62
+
63
+ // Legacy convenience exports
64
+ export {
65
+ createCorePluginI18nEngine as createCoreI18n,
66
+ createCorePluginI18nEngine as createCoreI18nEngine,
67
+ getCorePluginTranslation as getCoreTranslation,
68
+ safeCorePluginTranslation as safeCoreTranslation,
69
+ } from './core-plugin-factory';
70
+ // Export core plugin factory functions
71
+ export * from './core-plugin-factory';
44
72
  export { PluginI18nEngine as PluginI18n } from './plugin-i18n-engine';
45
- export declare function resetAllI18nEngines(): void;
46
- //# sourceMappingURL=index.d.ts.map
73
+
74
+ // Legacy testing utilities
75
+ import { PluginI18nEngine } from './plugin-i18n-engine';
76
+ export function resetAllI18nEngines(): void {
77
+ PluginI18nEngine.resetAll();
78
+ }
@@ -0,0 +1,41 @@
1
+ import type { LanguageContextSpace } from '../types';
2
+ import type { CurrencyCode } from '../utils/currency';
3
+ import type { Timezone } from '../utils/timezone';
4
+
5
+ /**
6
+ * Represents the active internationalization context for user and admin interfaces,
7
+ * including language, currency, and timezone settings.
8
+ *
9
+ * @template TLanguage The type of language codes (e.g., 'en-US', 'fr').
10
+ */
11
+ export interface IActiveContext<TLanguage extends string> {
12
+ /**
13
+ * The default language for the user-facing application.
14
+ */
15
+ language: TLanguage;
16
+
17
+ /**
18
+ * The default language for the admin interface.
19
+ */
20
+ adminLanguage: TLanguage;
21
+
22
+ /**
23
+ * The default currency code for the user-facing application.
24
+ */
25
+ currencyCode: CurrencyCode;
26
+
27
+ /**
28
+ * The current language context space (e.g., 'user' or 'admin').
29
+ */
30
+ currentContext: LanguageContextSpace;
31
+
32
+ /**
33
+ * The default timezone for the user-facing application.
34
+ */
35
+ timezone: Timezone;
36
+
37
+ /**
38
+ * The default timezone for the admin interface.
39
+ */
40
+ adminTimezone: Timezone;
41
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Simplified component configuration
3
+ */
4
+
5
+ import { PluralString } from '../types/plural-types';
6
+
7
+ /**
8
+ * Configuration for registering a component with the i18n system.
9
+ */
10
+ export interface ComponentConfig {
11
+ /** Unique identifier for the component */
12
+ readonly id: string;
13
+ /** Translation strings organized by language and key */
14
+ readonly strings: Record<string, Record<string, string | PluralString>>;
15
+ /** Optional alternative names for referencing this component */
16
+ readonly aliases?: readonly string[];
17
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Engine configuration interface
3
+ */
4
+
5
+ /**
6
+ * Configuration options for the I18n engine.
7
+ */
8
+ export interface EngineConfig {
9
+ /** Default language to use when none is specified */
10
+ defaultLanguage?: string;
11
+ /** Fallback language to use when a translation is missing */
12
+ fallbackLanguage?: string;
13
+ /** Constants available for variable replacement in templates */
14
+ constants?: Record<string, any>;
15
+ /** Validation configuration */
16
+ validation?: {
17
+ /** Whether all string keys must be provided for all languages */
18
+ requireCompleteStrings?: boolean;
19
+ /** Whether to allow component registration with missing translations */
20
+ allowPartialRegistration?: boolean;
21
+ };
22
+ }
@@ -0,0 +1,39 @@
1
+ import type { LanguageContextSpace } from '../types';
2
+ import type { CurrencyCode } from '../utils/currency';
3
+ import type { Timezone } from '../utils/timezone';
4
+ import type { IActiveContext } from './active-context.interface';
5
+
6
+ export interface IGlobalActiveContext<
7
+ TLanguage extends string,
8
+ TActiveContext extends IActiveContext<TLanguage>,
9
+ > {
10
+ context: TActiveContext;
11
+ userLanguage: TLanguage;
12
+ currencyCode: CurrencyCode;
13
+ adminLanguage: TLanguage;
14
+ languageContextSpace: LanguageContextSpace;
15
+ userTimezone: Timezone;
16
+ adminTimezone: Timezone;
17
+
18
+ createContext(
19
+ defaultLanguage: TLanguage,
20
+ defaultAdminLanguage?: TLanguage,
21
+ key?: string,
22
+ ): TActiveContext;
23
+
24
+ getContext(key?: string): TActiveContext;
25
+
26
+ setUserLanguage(language: TLanguage, key?: string): void;
27
+
28
+ setCurrencyCode(code: CurrencyCode, key?: string): void;
29
+
30
+ setAdminLanguage(language: TLanguage, key?: string): void;
31
+
32
+ setLanguageContextSpace(context: LanguageContextSpace, key?: string): void;
33
+
34
+ getLanguageContextSpace(key?: string): LanguageContextSpace;
35
+
36
+ setUserTimezone(tz: Timezone, key?: string): void;
37
+
38
+ setAdminTimezone(tz: Timezone, key?: string): void;
39
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Options for creating a HandleableError.
3
+ */
4
+ export interface HandleableErrorOptions {
5
+ /** The original error that caused this error */
6
+ cause?: Error;
7
+ /** Whether this error has been handled */
8
+ handled?: boolean;
9
+ /** HTTP status code associated with this error */
10
+ statusCode?: number;
11
+ /** Optional source data related to the error */
12
+ sourceData?: unknown;
13
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Interface for errors that can be marked as handled and serialized to JSON.
3
+ */
4
+ export interface IHandleable {
5
+ /**
6
+ * Converts the error to a JSON-serializable object.
7
+ * @returns A plain object representation of the error
8
+ */
9
+ toJSON(): Record<string, unknown>;
10
+ /**
11
+ * Gets the handled state of this error.
12
+ * @returns True if the error has been handled, false otherwise
13
+ */
14
+ get handled(): boolean;
15
+ /**
16
+ * Sets the handled state of this error.
17
+ * @param value - The new handled state
18
+ */
19
+ set handled(value: boolean);
20
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Core I18n Engine interface
3
+ */
4
+
5
+ import { ComponentConfig } from './component-config.interface';
6
+ import { LanguageDefinition } from './language-definition.interface';
7
+ import { TranslationOptions } from './translation-options.interface';
8
+ import { ValidationResult } from './validation-result.interface';
9
+
10
+ /**
11
+ * Main interface for the I18n engine, defining all translation and management operations.
12
+ */
13
+ export interface II18nEngine {
14
+ // Component management
15
+ /** Registers a new component with its translations */
16
+ register(config: ComponentConfig): ValidationResult;
17
+ /** Registers a component only if it doesn't already exist */
18
+ registerIfNotExists(config: ComponentConfig): ValidationResult;
19
+ /** Updates strings for an existing component */
20
+ updateStrings(componentId: string, strings: Record<string, Record<string, string>>): ValidationResult;
21
+ /** Checks if a component is registered */
22
+ hasComponent(componentId: string): boolean;
23
+ /** Gets all registered components */
24
+ getComponents(): readonly ComponentConfig[];
25
+
26
+ // Translation
27
+ /** Translates a string key for a component */
28
+ translate(componentId: string, key: string, variables?: Record<string, any>, language?: string): string;
29
+ /** Safely translates a string key, returning a fallback on error */
30
+ safeTranslate(componentId: string, key: string, variables?: Record<string, any>, language?: string): string;
31
+ /** Template processor that handles embedded component.key patterns */
32
+ t(template: string, variables?: Record<string, any>, language?: string): string;
33
+
34
+ // Language management
35
+ /** Registers a new language */
36
+ registerLanguage(language: LanguageDefinition): void;
37
+ /** Sets the current user-facing language */
38
+ setLanguage(language: string): void;
39
+ /** Sets the administrative language */
40
+ setAdminLanguage(language: string): void;
41
+ /** Gets all registered languages */
42
+ getLanguages(): readonly LanguageDefinition[];
43
+ /** Checks if a language is registered */
44
+ hasLanguage(language: string): boolean;
45
+
46
+ // Context management
47
+ /** Switches to admin context */
48
+ switchToAdmin(): void;
49
+ /** Switches to user context */
50
+ switchToUser(): void;
51
+ /** Gets the currently active language based on context */
52
+ getCurrentLanguage(): string;
53
+
54
+ // Validation
55
+ /** Validates all registered components */
56
+ validate(): ValidationResult;
57
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Interface exports
3
+ * Using type-only exports to prevent runtime circular dependencies
4
+ */
5
+
6
+ export type * from './active-context.interface';
7
+ export type * from './component-config.interface';
8
+ export type * from './engine-config.interface';
9
+ export type * from './global-active-context';
10
+ export type * from './i18n-engine.interface';
11
+ export type * from './language-definition.interface';
12
+ export type * from './translation-options.interface';
13
+ export type * from './validation-result.interface';
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Language definition interface
3
+ */
4
+
5
+ /**
6
+ * Defines a language with its metadata.
7
+ */
8
+ export interface LanguageDefinition {
9
+ /** Unique identifier for the language (e.g., 'en-US') */
10
+ readonly id: string;
11
+ /** Display name in the native language */
12
+ readonly name: string;
13
+ /** ISO language code */
14
+ readonly code: string;
15
+ /** Whether this is the default/fallback language */
16
+ readonly isDefault?: boolean;
17
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Translation options interface
3
+ */
4
+
5
+ /**
6
+ * Options that can be passed when requesting a translation.
7
+ */
8
+ export interface TranslationOptions {
9
+ /** Variables to replace in template strings */
10
+ readonly variables?: Record<string, any>;
11
+ /** Language code to use for the translation */
12
+ readonly language?: string;
13
+ /** Fallback value to return if translation fails */
14
+ readonly fallback?: string;
15
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Validation result interface
3
+ */
4
+
5
+ /**
6
+ * Result of validating a component registration or the entire engine.
7
+ */
8
+ export interface ValidationResult {
9
+ /** Whether the validation passed */
10
+ readonly isValid: boolean;
11
+ /** Array of validation errors */
12
+ readonly errors: readonly string[];
13
+ /** Array of validation warnings */
14
+ readonly warnings: readonly string[];
15
+ /** Detailed information about missing translation keys */
16
+ readonly missingKeys?: readonly {
17
+ /** The language ID where the key is missing */
18
+ languageId: string;
19
+ /** The component ID where the key is missing */
20
+ componentId: string;
21
+ /** The string key that is missing */
22
+ stringKey: string;
23
+ }[];
24
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Common language codes following BCP 47 standard.
3
+ * These are provided as constants for convenience, but any string can be used as a language code.
4
+ * Site builders can use these or define their own custom language codes.
5
+ */
6
+ export const LanguageCodes = {
7
+ EN_US: 'en-US',
8
+ EN_GB: 'en-GB',
9
+ FR: 'fr',
10
+ ES: 'es',
11
+ DE: 'de',
12
+ ZH_CN: 'zh-CN',
13
+ JA: 'ja',
14
+ UK: 'uk',
15
+ } as const;
16
+
17
+ /**
18
+ * Type representing any language code (string)
19
+ */
20
+ export type LanguageCode = string;
21
+
22
+ /**
23
+ * Type representing the common language codes provided by this library
24
+ */
25
+ export type CommonLanguageCode =
26
+ (typeof LanguageCodes)[keyof typeof LanguageCodes];
27
+
28
+ /**
29
+ * Helper to get display names for common language codes
30
+ */
31
+ export const LanguageDisplayNames: Record<CommonLanguageCode, string> = {
32
+ [LanguageCodes.EN_US]: 'English (US)',
33
+ [LanguageCodes.EN_GB]: 'English (UK)',
34
+ [LanguageCodes.FR]: 'Français',
35
+ [LanguageCodes.ES]: 'Español',
36
+ [LanguageCodes.DE]: 'Deutsch',
37
+ [LanguageCodes.ZH_CN]: '中文',
38
+ [LanguageCodes.JA]: '日本語',
39
+ [LanguageCodes.UK]: 'Українська',
40
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Language definition with its properties
3
+ */
4
+ export interface LanguageDefinition {
5
+ /** Unique identifier for the language */
6
+ readonly id: string;
7
+ /** Display name in the native language */
8
+ readonly name: string;
9
+ /** ISO language code (e.g., 'en', 'fr', 'zh-CN') */
10
+ readonly code: string;
11
+ /** Whether this is the fallback/default language */
12
+ readonly isDefault?: boolean;
13
+ }