@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,74 +0,0 @@
1
- "use strict";
2
- /**
3
- * Timezone utilities (v2)
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Timezone = void 0;
7
- exports.isValidTimezone = isValidTimezone;
8
- const tslib_1 = require("tslib");
9
- const moment_timezone_1 = tslib_1.__importDefault(require("moment-timezone"));
10
- /**
11
- * Represents a valid timezone with validation.
12
- * Uses moment-timezone for validation and timezone database.
13
- */
14
- class Timezone {
15
- _value;
16
- /**
17
- * Creates a new Timezone instance.
18
- * @param timezone - The timezone name (e.g., 'America/New_York', 'UTC')
19
- * @throws {Error} If the timezone is invalid
20
- */
21
- constructor(timezone) {
22
- if (!Timezone.isValid(timezone)) {
23
- throw new Error(`Invalid timezone: ${timezone}`);
24
- }
25
- this._value = timezone;
26
- }
27
- /**
28
- * Gets the timezone name.
29
- * @returns The timezone name
30
- */
31
- get value() {
32
- return this._value;
33
- }
34
- /**
35
- * Gets the timezone name (alias for value).
36
- * @returns The timezone name
37
- */
38
- get name() {
39
- return this._value;
40
- }
41
- /**
42
- * Checks if a timezone name is valid.
43
- * @param timezone - The timezone name to validate
44
- * @returns True if the timezone is valid, false otherwise
45
- */
46
- static isValid(timezone) {
47
- return moment_timezone_1.default.tz.zone(timezone) !== null;
48
- }
49
- /**
50
- * Gets all available timezone names.
51
- * @returns Array of timezone names
52
- */
53
- static getAll() {
54
- return moment_timezone_1.default.tz.names();
55
- }
56
- /**
57
- * Attempts to guess the user's timezone based on their system settings.
58
- * @returns The guessed timezone name
59
- */
60
- static guess() {
61
- return moment_timezone_1.default.tz.guess();
62
- }
63
- }
64
- exports.Timezone = Timezone;
65
- /**
66
- * Checks if a timezone name is valid.
67
- * This is a convenience function that delegates to Timezone.isValid().
68
- * @param timezone - The timezone name to validate
69
- * @returns True if the timezone is valid, false otherwise
70
- */
71
- function isValidTimezone(timezone) {
72
- return Timezone.isValid(timezone);
73
- }
74
- //# sourceMappingURL=timezone.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timezone.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/timezone.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAuEH,0CAEC;;AAvED,8EAAqC;AAErC;;;GAGG;AACH,MAAa,QAAQ;IACF,MAAM,CAAS;IAEhC;;;;OAIG;IACH,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,yBAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,yBAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK;QACV,OAAO,yBAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF;AAvDD,4BAuDC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC"}
@@ -1,40 +0,0 @@
1
- /**
2
- * Input validation utilities
3
- */
4
- /**
5
- * Security limits for various input types to prevent abuse.
6
- */
7
- export declare const LIMITS: {
8
- readonly MAX_TEMPLATE_LENGTH: 10000;
9
- readonly MAX_KEY_LENGTH: 200;
10
- readonly MAX_COMPONENT_ID_LENGTH: 100;
11
- readonly MAX_LANGUAGE_CODE_LENGTH: 10;
12
- readonly MAX_NESTING_DEPTH: 10;
13
- };
14
- /**
15
- * Validates that a template string does not exceed the maximum allowed length.
16
- * @param template - The template string to validate
17
- * @throws {Error} If the template exceeds the maximum length
18
- */
19
- export declare function validateTemplateLength(template: string): void;
20
- /**
21
- * Validates that a key does not exceed the maximum allowed length.
22
- * @param key - The key to validate
23
- * @throws {Error} If the key exceeds the maximum length
24
- */
25
- export declare function validateKeyLength(key: string): void;
26
- /**
27
- * Validates that a component ID meets length and character requirements.
28
- * Component IDs must contain only alphanumeric characters, underscores, and hyphens.
29
- * @param componentId - The component ID to validate
30
- * @throws {Error} If the component ID is invalid
31
- */
32
- export declare function validateComponentId(componentId: string): void;
33
- /**
34
- * Validates that a language code meets BCP 47 format requirements.
35
- * Expected format: two lowercase letters, optionally followed by a hyphen and two uppercase letters (e.g., 'en', 'en-US').
36
- * @param language - The language code to validate
37
- * @throws {Error} If the language code is invalid
38
- */
39
- export declare function validateLanguageCode(language: string): void;
40
- //# sourceMappingURL=validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI7D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAInD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAO7D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAO3D"}
@@ -1,69 +0,0 @@
1
- "use strict";
2
- /**
3
- * Input validation utilities
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LIMITS = void 0;
7
- exports.validateTemplateLength = validateTemplateLength;
8
- exports.validateKeyLength = validateKeyLength;
9
- exports.validateComponentId = validateComponentId;
10
- exports.validateLanguageCode = validateLanguageCode;
11
- /**
12
- * Security limits for various input types to prevent abuse.
13
- */
14
- exports.LIMITS = {
15
- MAX_TEMPLATE_LENGTH: 10000,
16
- MAX_KEY_LENGTH: 200,
17
- MAX_COMPONENT_ID_LENGTH: 100,
18
- MAX_LANGUAGE_CODE_LENGTH: 10,
19
- MAX_NESTING_DEPTH: 10,
20
- };
21
- /**
22
- * Validates that a template string does not exceed the maximum allowed length.
23
- * @param template - The template string to validate
24
- * @throws {Error} If the template exceeds the maximum length
25
- */
26
- function validateTemplateLength(template) {
27
- if (template.length > exports.LIMITS.MAX_TEMPLATE_LENGTH) {
28
- throw new Error(`Template exceeds maximum length of ${exports.LIMITS.MAX_TEMPLATE_LENGTH}`);
29
- }
30
- }
31
- /**
32
- * Validates that a key does not exceed the maximum allowed length.
33
- * @param key - The key to validate
34
- * @throws {Error} If the key exceeds the maximum length
35
- */
36
- function validateKeyLength(key) {
37
- if (key.length > exports.LIMITS.MAX_KEY_LENGTH) {
38
- throw new Error(`Key exceeds maximum length of ${exports.LIMITS.MAX_KEY_LENGTH}`);
39
- }
40
- }
41
- /**
42
- * Validates that a component ID meets length and character requirements.
43
- * Component IDs must contain only alphanumeric characters, underscores, and hyphens.
44
- * @param componentId - The component ID to validate
45
- * @throws {Error} If the component ID is invalid
46
- */
47
- function validateComponentId(componentId) {
48
- if (componentId.length > exports.LIMITS.MAX_COMPONENT_ID_LENGTH) {
49
- throw new Error(`Component ID exceeds maximum length of ${exports.LIMITS.MAX_COMPONENT_ID_LENGTH}`);
50
- }
51
- if (!/^[a-zA-Z0-9_-]+$/.test(componentId)) {
52
- throw new Error('Component ID contains invalid characters');
53
- }
54
- }
55
- /**
56
- * Validates that a language code meets BCP 47 format requirements.
57
- * Expected format: two lowercase letters, optionally followed by a hyphen and two uppercase letters (e.g., 'en', 'en-US').
58
- * @param language - The language code to validate
59
- * @throws {Error} If the language code is invalid
60
- */
61
- function validateLanguageCode(language) {
62
- if (language.length > exports.LIMITS.MAX_LANGUAGE_CODE_LENGTH) {
63
- throw new Error(`Language code exceeds maximum length of ${exports.LIMITS.MAX_LANGUAGE_CODE_LENGTH}`);
64
- }
65
- if (!/^[a-z]{2}(-[A-Z]{2})?$/.test(language)) {
66
- throw new Error('Invalid language code format');
67
- }
68
- }
69
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/validation.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAkBH,wDAIC;AAOD,8CAIC;AAQD,kDAOC;AAQD,oDAOC;AA7DD;;GAEG;AACU,QAAA,MAAM,GAAG;IACpB,mBAAmB,EAAE,KAAK;IAC1B,cAAc,EAAE,GAAG;IACnB,uBAAuB,EAAE,GAAG;IAC5B,wBAAwB,EAAE,EAAE;IAC5B,iBAAiB,EAAE,EAAE;CACb,CAAC;AAEX;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAM,CAAC,mBAAmB,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,sCAAsC,cAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,IAAI,GAAG,CAAC,MAAM,GAAG,cAAM,CAAC,cAAc,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,iCAAiC,cAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,WAAmB;IACrD,IAAI,WAAW,CAAC,MAAM,GAAG,cAAM,CAAC,uBAAuB,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,0CAA0C,cAAM,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,QAAgB;IACnD,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAM,CAAC,wBAAwB,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,2CAA2C,cAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
package/src/utils.d.ts DELETED
@@ -1,65 +0,0 @@
1
- /**
2
- * Replaces variables in a string with their corresponding values from vars or constants.
3
- * @param str - The string containing variables to replace
4
- * @param vars - An object mapping variable names to their replacement values
5
- * @param constants - An object containing constant values for replacement
6
- * @returns The string with variables replaced
7
- */
8
- export declare function replaceVariables(str: string, vars?: Record<string, string | number>, constants?: any): string;
9
- /**
10
- * Checks if a given key indicates a template string.
11
- * @param key - The key to check
12
- * @returns True if the key indicates a template, false otherwise
13
- */
14
- export declare function isTemplate(key: string): boolean;
15
- /**
16
- * Checks if a given timezone string is valid.
17
- * @param timezone - The timezone string to validate
18
- * @returns
19
- */
20
- export declare function isValidTimezone(timezone: string): boolean;
21
- /**
22
- * Converts parts to a single string key, joining with underscores.
23
- * @param parts - The parts to join
24
- * @returns The joined string key
25
- */
26
- export declare function toStringKey<TStringKey extends string>(...parts: string[]): TStringKey;
27
- /**
28
- * Converts an enum value to a string key by joining parts with underscores and appending the enum value.
29
- * @param value - The enum value
30
- * @param parts - Additional parts to join
31
- * @returns The constructed string key
32
- */
33
- export declare function toStringKeyFromEnum<TStringKey extends string>(value: string, ...parts: string[]): TStringKey;
34
- /**
35
- * Type that constructs string keys from enum values with prefixes and optional template suffix
36
- */
37
- type BuildStringKey<TEnumValue extends string, TPrefixes extends readonly string[], TIsTemplate extends boolean = false> = TPrefixes extends readonly [] ? `${TEnumValue}${TIsTemplate extends true ? 'Template' : ''}` : TPrefixes extends readonly [infer First, ...infer Rest] ? First extends string ? Rest extends readonly string[] ? `${First}_${BuildStringKey<TEnumValue, Rest, TIsTemplate>}` : never : never : never;
38
- /**
39
- * Type that maps all enum values to their corresponding string keys
40
- */
41
- type ReasonMapFromEnum<TEnum extends Record<string, string>, TStringKey extends string, TPrefixes extends readonly string[] = [], TTemplateKeys extends Set<TEnum[keyof TEnum]> = never> = {
42
- [K in TEnum[keyof TEnum]]: BuildStringKey<K, TPrefixes, TTemplateKeys extends Set<K> ? true : false> extends TStringKey ? BuildStringKey<K, TPrefixes, TTemplateKeys extends Set<K> ? true : false> : never;
43
- };
44
- /**
45
- * Builds a reason map from an enum object, mapping each enum value to a string key.
46
- * @param enumObj - The enum object
47
- * @param prefixes - Prefixes to prepend to each string key
48
- * @param templateKeys - Optional set of enum values that should have 'Template' suffix for template processing
49
- * @returns The constructed reason map
50
- */
51
- export declare function buildReasonMap<TEnum extends Record<string, string>, TStringKey extends string>(enumObj: TEnum, prefixes?: string[], templateKeys?: Set<TEnum[keyof TEnum]>): Record<TEnum[keyof TEnum], TStringKey>;
52
- /**
53
- * Type-safe version of buildReasonMap that ensures all enum values are mapped and all string keys exist
54
- */
55
- export declare function buildTypeSafeReasonMap<TEnum extends Record<string, string>, TStringKey extends string, TPrefixes extends readonly string[] = [], TTemplateKeys extends Set<TEnum[keyof TEnum]> = never>(enumObj: TEnum, prefixes: TPrefixes, templateKeys?: TTemplateKeys): ReasonMapFromEnum<TEnum, TStringKey, TPrefixes, TTemplateKeys>;
56
- /**
57
- * Validates that a reason map has entries for all enum values
58
- */
59
- export declare function validateReasonMap<TEnum extends Record<string, string>, TStringKey extends string>(enumObj: TEnum, reasonMap: Partial<Record<TEnum[keyof TEnum], TStringKey>>): reasonMap is Record<TEnum[keyof TEnum], TStringKey>;
60
- /**
61
- * Creates a complete reason map ensuring all enum values are covered
62
- */
63
- export declare function createCompleteReasonMap<TEnum extends Record<string, string>, TStringKey extends string>(enumObj: TEnum, prefixes?: readonly string[], templateKeys?: Set<TEnum[keyof TEnum]>): Record<TEnum[keyof TEnum], TStringKey>;
64
- export {};
65
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/utils.ts"],"names":[],"mappings":"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"}
package/src/utils.js DELETED
@@ -1,129 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.replaceVariables = replaceVariables;
4
- exports.isTemplate = isTemplate;
5
- exports.isValidTimezone = isValidTimezone;
6
- exports.toStringKey = toStringKey;
7
- exports.toStringKeyFromEnum = toStringKeyFromEnum;
8
- exports.buildReasonMap = buildReasonMap;
9
- exports.buildTypeSafeReasonMap = buildTypeSafeReasonMap;
10
- exports.validateReasonMap = validateReasonMap;
11
- exports.createCompleteReasonMap = createCompleteReasonMap;
12
- const tslib_1 = require("tslib");
13
- const moment_timezone_1 = tslib_1.__importDefault(require("moment-timezone"));
14
- /**
15
- * Replaces variables in a string with their corresponding values from vars or constants.
16
- * @param str - The string containing variables to replace
17
- * @param vars - An object mapping variable names to their replacement values
18
- * @param constants - An object containing constant values for replacement
19
- * @returns The string with variables replaced
20
- */
21
- function replaceVariables(str, vars, constants) {
22
- // Ensure input is a string
23
- if (typeof str !== 'string') {
24
- str = String(str);
25
- }
26
- const variables = str.match(/\{(.+?)\}/g);
27
- if (!variables)
28
- return str;
29
- let result = str;
30
- for (const variable of variables) {
31
- const varName = variable.slice(1, -1);
32
- let replacement = '';
33
- if (vars && varName in vars) {
34
- replacement = String(vars[varName]);
35
- }
36
- else if (constants && varName in constants) {
37
- replacement = String(constants[varName]);
38
- }
39
- if (replacement) {
40
- result = result.replace(variable, replacement);
41
- }
42
- }
43
- return result;
44
- }
45
- /**
46
- * Checks if a given key indicates a template string.
47
- * @param key - The key to check
48
- * @returns True if the key indicates a template, false otherwise
49
- */
50
- function isTemplate(key) {
51
- return key.trim().toLowerCase().endsWith('template');
52
- }
53
- /**
54
- * Checks if a given timezone string is valid.
55
- * @param timezone - The timezone string to validate
56
- * @returns
57
- */
58
- function isValidTimezone(timezone) {
59
- return moment_timezone_1.default.tz.zone(timezone) !== null;
60
- }
61
- /**
62
- * Converts parts to a single string key, joining with underscores.
63
- * @param parts - The parts to join
64
- * @returns The joined string key
65
- */
66
- function toStringKey(...parts) {
67
- return parts.join('_');
68
- }
69
- /**
70
- * Converts an enum value to a string key by joining parts with underscores and appending the enum value.
71
- * @param value - The enum value
72
- * @param parts - Additional parts to join
73
- * @returns The constructed string key
74
- */
75
- function toStringKeyFromEnum(value, ...parts) {
76
- const allParts = [...parts, value];
77
- return allParts.join('_');
78
- }
79
- /**
80
- * Builds a reason map from an enum object, mapping each enum value to a string key.
81
- * @param enumObj - The enum object
82
- * @param prefixes - Prefixes to prepend to each string key
83
- * @param templateKeys - Optional set of enum values that should have 'Template' suffix for template processing
84
- * @returns The constructed reason map
85
- */
86
- function buildReasonMap(enumObj, prefixes = [], templateKeys) {
87
- const map = {};
88
- Object.values(enumObj).forEach((value) => {
89
- const baseKey = [...prefixes, value].join('_');
90
- const finalKey = templateKeys?.has(value)
91
- ? baseKey + 'Template'
92
- : baseKey;
93
- map[value] = finalKey;
94
- });
95
- return map;
96
- }
97
- /**
98
- * Type-safe version of buildReasonMap that ensures all enum values are mapped and all string keys exist
99
- */
100
- function buildTypeSafeReasonMap(enumObj, prefixes, templateKeys) {
101
- const map = {};
102
- Object.values(enumObj).forEach((value) => {
103
- const baseKey = [...prefixes, value].join('_');
104
- const finalKey = templateKeys?.has(value)
105
- ? baseKey + 'Template'
106
- : baseKey;
107
- map[value] = finalKey;
108
- });
109
- return map;
110
- }
111
- /**
112
- * Validates that a reason map has entries for all enum values
113
- */
114
- function validateReasonMap(enumObj, reasonMap) {
115
- return Object.values(enumObj).every((value) => value in reasonMap &&
116
- reasonMap[value] !== undefined);
117
- }
118
- /**
119
- * Creates a complete reason map ensuring all enum values are covered
120
- */
121
- function createCompleteReasonMap(enumObj, prefixes = [], templateKeys) {
122
- const map = buildReasonMap(enumObj, [...prefixes], templateKeys);
123
- if (!validateReasonMap(enumObj, map)) {
124
- const missing = Object.values(enumObj).filter((value) => !(value in map));
125
- throw new Error(`Missing reason map entries for: ${missing.join(', ')}`);
126
- }
127
- return map;
128
- }
129
- //# sourceMappingURL=utils.js.map
package/src/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/utils.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/validation/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./plural-validator"), exports);
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/validation/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Plural form validation
3
- */
4
- import { PluralString } from '../types/plural-types';
5
- /**
6
- * Result of validating plural forms.
7
- */
8
- export interface PluralValidationResult {
9
- /** Whether the validation passed */
10
- isValid: boolean;
11
- /** Array of validation errors */
12
- errors: string[];
13
- /** Array of validation warnings */
14
- warnings: string[];
15
- }
16
- /**
17
- * Options for plural form validation.
18
- */
19
- export interface PluralValidationOptions {
20
- /** If true, treat missing required forms as errors instead of warnings */
21
- strict?: boolean;
22
- /** If true, warn about unused plural forms */
23
- checkUnused?: boolean;
24
- /** If true, check for consistent variable usage across forms */
25
- checkVariables?: boolean;
26
- }
27
- /**
28
- * Validate plural forms for a specific language.
29
- * Checks that all required plural forms are present and optionally validates variable consistency.
30
- * @param value - The plural string value to validate
31
- * @param language - The language code
32
- * @param key - The translation key (for error messages)
33
- * @param options - Validation options
34
- * @returns Validation result with errors and warnings
35
- */
36
- export declare function validatePluralForms(value: PluralString, language: string, key: string, options?: PluralValidationOptions): PluralValidationResult;
37
- /**
38
- * Validate that count variable exists when plural forms are used.
39
- * Pluralization requires a 'count' variable to determine which form to use.
40
- * @param value - The plural string value
41
- * @param variables - The variables object to check
42
- * @param key - The translation key (for error messages)
43
- * @returns Validation result with warnings if count is missing
44
- */
45
- export declare function validateCountVariable(value: PluralString, variables: Record<string, any> | undefined, key: string): PluralValidationResult;
46
- //# sourceMappingURL=plural-validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plural-validator.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/validation/plural-validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AAGrE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CA8CxB;AAsDD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC1C,GAAG,EAAE,MAAM,GACV,sBAAsB,CASxB"}
@@ -1,123 +0,0 @@
1
- "use strict";
2
- /**
3
- * Plural form validation
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.validatePluralForms = validatePluralForms;
7
- exports.validateCountVariable = validateCountVariable;
8
- const plural_types_1 = require("../types/plural-types");
9
- const language_plural_map_1 = require("../pluralization/language-plural-map");
10
- /**
11
- * Validate plural forms for a specific language.
12
- * Checks that all required plural forms are present and optionally validates variable consistency.
13
- * @param value - The plural string value to validate
14
- * @param language - The language code
15
- * @param key - The translation key (for error messages)
16
- * @param options - Validation options
17
- * @returns Validation result with errors and warnings
18
- */
19
- function validatePluralForms(value, language, key, options = {}) {
20
- const errors = [];
21
- const warnings = [];
22
- if (!(0, plural_types_1.isPluralString)(value)) {
23
- return { isValid: true, errors, warnings };
24
- }
25
- const required = (0, language_plural_map_1.getRequiredPluralForms)(language);
26
- const all = (0, language_plural_map_1.getAllPluralForms)(language);
27
- const provided = Object.keys(value);
28
- // Check required forms
29
- for (const form of required) {
30
- if (!value[form]) {
31
- if (options.strict) {
32
- errors.push(`Missing required plural form '${form}' for language '${language}' in key '${key}'`);
33
- }
34
- else {
35
- warnings.push(`Missing required plural form '${form}' for language '${language}' in key '${key}'`);
36
- }
37
- }
38
- }
39
- // Check unused forms
40
- if (options.checkUnused) {
41
- for (const form of provided) {
42
- if (!all.includes(form)) {
43
- warnings.push(`Unused plural form '${form}' for language '${language}' in key '${key}'`);
44
- }
45
- }
46
- }
47
- // Check variable consistency
48
- if (options.checkVariables) {
49
- const variables = extractVariables(value);
50
- const inconsistent = findInconsistentVariables(value, variables);
51
- for (const [form, missing] of Object.entries(inconsistent)) {
52
- warnings.push(`Plural form '${form}' in key '${key}' missing variables: ${missing.join(', ')}`);
53
- }
54
- }
55
- return {
56
- isValid: errors.length === 0,
57
- errors,
58
- warnings,
59
- };
60
- }
61
- /**
62
- * Extract all variables from plural forms.
63
- * Scans all plural form texts for {variable} patterns.
64
- * @param value - The plural string value
65
- * @returns Set of all variable names found
66
- */
67
- function extractVariables(value) {
68
- const vars = new Set();
69
- if (typeof value === 'string')
70
- return vars;
71
- for (const text of Object.values(value)) {
72
- if (text) {
73
- const matches = text.match(/\{(\w+)\}/g);
74
- if (matches) {
75
- matches.forEach(m => vars.add(m.slice(1, -1)));
76
- }
77
- }
78
- }
79
- return vars;
80
- }
81
- /**
82
- * Find forms with inconsistent variables.
83
- * Identifies plural forms that are missing variables used in other forms.
84
- * @param value - The plural string value
85
- * @param allVars - Set of all variables found across all forms
86
- * @returns Object mapping form names to arrays of missing variable names
87
- */
88
- function findInconsistentVariables(value, allVars) {
89
- const inconsistent = {};
90
- if (typeof value === 'string')
91
- return inconsistent;
92
- for (const [form, text] of Object.entries(value)) {
93
- if (text) {
94
- const formVars = new Set();
95
- const matches = text.match(/\{(\w+)\}/g);
96
- if (matches) {
97
- matches.forEach(m => formVars.add(m.slice(1, -1)));
98
- }
99
- const missing = Array.from(allVars).filter(v => !formVars.has(v));
100
- if (missing.length > 0) {
101
- inconsistent[form] = missing;
102
- }
103
- }
104
- }
105
- return inconsistent;
106
- }
107
- /**
108
- * Validate that count variable exists when plural forms are used.
109
- * Pluralization requires a 'count' variable to determine which form to use.
110
- * @param value - The plural string value
111
- * @param variables - The variables object to check
112
- * @param key - The translation key (for error messages)
113
- * @returns Validation result with warnings if count is missing
114
- */
115
- function validateCountVariable(value, variables, key) {
116
- const errors = [];
117
- const warnings = [];
118
- if ((0, plural_types_1.isPluralString)(value) && (!variables || variables.count === undefined)) {
119
- warnings.push(`Plural forms used in key '${key}' but no 'count' variable provided`);
120
- }
121
- return { isValid: true, errors, warnings };
122
- }
123
- //# sourceMappingURL=plural-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plural-validator.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/validation/plural-validator.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Configuration for component registration validation
3
- */
4
- export interface ValidationConfig {
5
- /** Whether to require all languages to have all strings */
6
- readonly requireCompleteStrings: boolean;
7
- /** Whether to allow registration with missing strings (will use fallbacks) */
8
- readonly allowPartialRegistration: boolean;
9
- /** Default language to fall back to for missing strings */
10
- readonly fallbackLanguageId: string;
11
- }
12
- //# sourceMappingURL=validation-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation-config.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/validation-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,8EAA8E;IAC9E,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,2DAA2D;IAC3D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=validation-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation-config.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/validation-config.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- /**
2
- * Validation result for component registration
3
- */
4
- export interface ValidationResult {
5
- readonly isValid: boolean;
6
- readonly missingKeys: ReadonlyArray<{
7
- readonly languageId: string;
8
- readonly componentId: string;
9
- readonly stringKey: string;
10
- }>;
11
- readonly errors: readonly string[];
12
- }
13
- //# sourceMappingURL=validation-result.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation-result.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/validation-result.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;QAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC,CAAC;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=validation-result.js.map