@digitaldefiance/ecies-lib 4.4.1 → 4.4.3

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 (590) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +4 -0
  3. package/package.json +10 -7
  4. package/src/builders/ecies-builder.ts +39 -0
  5. package/src/builders/{index.js → index.ts} +1 -1
  6. package/src/builders/member-builder.ts +155 -0
  7. package/src/constants.ts +609 -0
  8. package/src/core/errors/crypto-error.ts +78 -0
  9. package/src/core/{index.js → index.ts} +1 -1
  10. package/src/core/types/result.ts +19 -0
  11. package/src/email-string.ts +82 -0
  12. package/src/enumerations/disposed-error-type.ts +11 -0
  13. package/src/enumerations/ecies-cipher-suite.ts +4 -0
  14. package/src/enumerations/ecies-encryption-type.ts +41 -0
  15. package/src/enumerations/ecies-error-type.ts +43 -0
  16. package/src/enumerations/ecies-string-key.ts +205 -0
  17. package/src/enumerations/ecies-version.ts +3 -0
  18. package/src/enumerations/guid-brand-type.ts +26 -0
  19. package/src/enumerations/guid-error-type.ts +6 -0
  20. package/src/enumerations/id-provider-error-type.ts +50 -0
  21. package/src/enumerations/{index.js → index.ts} +0 -1
  22. package/src/enumerations/invalid-email-type.ts +5 -0
  23. package/src/enumerations/length-encoding-type.ts +6 -0
  24. package/src/enumerations/length-error-type.ts +5 -0
  25. package/src/enumerations/member-error-type.ts +106 -0
  26. package/src/enumerations/{member-type.d.ts → member-type.ts} +7 -6
  27. package/src/enumerations/password-login-error-type.ts +4 -0
  28. package/src/enumerations/pbkdf2-error-type.ts +5 -0
  29. package/src/enumerations/pbkdf2-profile.ts +5 -0
  30. package/src/enumerations/secure-storage-error-type.ts +5 -0
  31. package/src/errors/disposed.ts +36 -0
  32. package/src/errors/ecies.ts +153 -0
  33. package/src/errors/guid.ts +130 -0
  34. package/src/errors/id-provider.ts +40 -0
  35. package/src/errors/{index.d.ts → index.ts} +0 -1
  36. package/src/errors/invalid-email.ts +23 -0
  37. package/src/errors/length.ts +19 -0
  38. package/src/errors/member.ts +20 -0
  39. package/src/errors/pbkdf2.ts +20 -0
  40. package/src/errors/secure-storage.ts +17 -0
  41. package/src/errors/simple-ecies.ts +21 -0
  42. package/src/errors/simple-test-error.ts +6 -0
  43. package/src/i18n-setup.ts +130 -0
  44. package/src/{index.js → index.ts} +64 -7
  45. package/src/interfaces/checksum-config.ts +4 -0
  46. package/src/interfaces/checksum-consts.ts +13 -0
  47. package/src/interfaces/configuration-provenance.ts +54 -0
  48. package/src/interfaces/constants.ts +75 -0
  49. package/src/interfaces/ecies-config.ts +8 -0
  50. package/src/interfaces/ecies-consts.ts +74 -0
  51. package/src/interfaces/ecies-file-service.ts +6 -0
  52. package/src/interfaces/encrypted-chunk.ts +64 -0
  53. package/src/interfaces/encryption-state.ts +19 -0
  54. package/src/interfaces/frontend-member-operational.ts +77 -0
  55. package/src/interfaces/guid.ts +86 -0
  56. package/src/interfaces/id-provider.ts +152 -0
  57. package/src/interfaces/{index.d.ts → index.ts} +0 -1
  58. package/src/interfaces/invariant.ts +60 -0
  59. package/src/interfaces/library-error.ts +23 -0
  60. package/src/interfaces/{member-storage.d.ts → member-storage.ts} +11 -10
  61. package/src/interfaces/{member-with-mnemonic.d.ts → member-with-mnemonic.ts} +3 -3
  62. package/src/interfaces/member.ts +84 -0
  63. package/src/interfaces/multi-recipient-chunk.ts +61 -0
  64. package/src/interfaces/pbkdf2-config.ts +6 -0
  65. package/src/interfaces/pbkdf2-consts.ts +10 -0
  66. package/src/interfaces/pbkdf2-result.ts +5 -0
  67. package/src/interfaces/stream-config.ts +17 -0
  68. package/src/interfaces/stream-header.ts +34 -0
  69. package/src/interfaces/stream-progress.ts +31 -0
  70. package/src/lib/configuration-provenance-utils.ts +26 -0
  71. package/src/lib/crypto-container.ts +64 -0
  72. package/src/lib/guid.ts +1097 -0
  73. package/src/lib/id-providers/custom-provider.ts +109 -0
  74. package/src/lib/id-providers/guidv4-provider.ts +141 -0
  75. package/src/lib/id-providers/{index.d.ts → index.ts} +6 -5
  76. package/src/lib/id-providers/objectid-provider.ts +125 -0
  77. package/src/lib/id-providers/uuid-provider.ts +133 -0
  78. package/src/lib/{index.js → index.ts} +2 -2
  79. package/src/lib/invariant-validator.ts +133 -0
  80. package/src/lib/invariants/encryption-algorithm-consistency.ts +73 -0
  81. package/src/lib/invariants/{index.js → index.ts} +0 -1
  82. package/src/lib/invariants/pbkdf2-profiles-validity.ts +78 -0
  83. package/src/lib/invariants/recipient-id-consistency.ts +46 -0
  84. package/src/lib/multi-recipient-chunk-utils.ts +63 -0
  85. package/src/member.ts +495 -0
  86. package/src/{pbkdf2-profiles.d.ts → pbkdf2-profiles.ts} +2 -2
  87. package/src/phone-number.ts +18 -0
  88. package/src/regexes.ts +10 -0
  89. package/src/secure-buffer.ts +226 -0
  90. package/src/secure-string.ts +244 -0
  91. package/src/services/aes-gcm.ts +220 -0
  92. package/src/services/chunk-processor.ts +188 -0
  93. package/src/services/ecies/README.md +147 -0
  94. package/src/services/ecies/crypto-core.ts +292 -0
  95. package/src/services/ecies/example.ts +185 -0
  96. package/src/services/ecies/file.ts +167 -0
  97. package/src/services/ecies/{index.js → index.ts} +2 -1
  98. package/src/services/ecies/integration.ts +241 -0
  99. package/src/services/ecies/interfaces.ts +62 -0
  100. package/src/services/ecies/manual-test.ts +219 -0
  101. package/src/services/ecies/multi-recipient.ts +545 -0
  102. package/src/services/ecies/service.ts +370 -0
  103. package/src/services/ecies/signature.ts +93 -0
  104. package/src/services/ecies/single-recipient.ts +476 -0
  105. package/src/services/encryption-stream.ts +435 -0
  106. package/src/services/{index.js → index.ts} +0 -1
  107. package/src/services/multi-recipient-processor.ts +377 -0
  108. package/src/services/password-login.ts +226 -0
  109. package/src/services/pbkdf2.ts +169 -0
  110. package/src/services/progress-tracker.ts +128 -0
  111. package/src/services/resumable-encryption.ts +135 -0
  112. package/src/services/xor.ts +65 -0
  113. package/src/test-mocks/index.ts +1 -0
  114. package/src/test-mocks/mock-frontend-member.ts +276 -0
  115. package/src/{testing.js → testing.ts} +0 -1
  116. package/src/translations/{de.js → de.ts} +112 -56
  117. package/src/translations/{en-US.js → en-US.ts} +116 -58
  118. package/src/translations/{es.js → es.ts} +134 -67
  119. package/src/translations/{fr.js → fr.ts} +129 -64
  120. package/src/translations/{ja.js → ja.ts} +111 -55
  121. package/src/translations/{uk.js → uk.ts} +132 -67
  122. package/src/translations/{zh-cn.js → zh-cn.ts} +60 -29
  123. package/src/types/deep-partial.ts +11 -0
  124. package/src/{types.d.ts → types.ts} +15 -7
  125. package/src/utils/encryption-type-utils.ts +76 -0
  126. package/src/utils.ts +329 -0
  127. package/src/builders/ecies-builder.d.ts +0 -18
  128. package/src/builders/ecies-builder.d.ts.map +0 -1
  129. package/src/builders/ecies-builder.js +0 -30
  130. package/src/builders/ecies-builder.js.map +0 -1
  131. package/src/builders/index.d.ts +0 -6
  132. package/src/builders/index.d.ts.map +0 -1
  133. package/src/builders/index.js.map +0 -1
  134. package/src/builders/member-builder.d.ts +0 -51
  135. package/src/builders/member-builder.d.ts.map +0 -1
  136. package/src/builders/member-builder.js +0 -97
  137. package/src/builders/member-builder.js.map +0 -1
  138. package/src/constants.d.ts +0 -60
  139. package/src/constants.d.ts.map +0 -1
  140. package/src/constants.js +0 -446
  141. package/src/constants.js.map +0 -1
  142. package/src/core/errors/crypto-error.d.ts +0 -34
  143. package/src/core/errors/crypto-error.d.ts.map +0 -1
  144. package/src/core/errors/crypto-error.js +0 -56
  145. package/src/core/errors/crypto-error.js.map +0 -1
  146. package/src/core/index.d.ts +0 -6
  147. package/src/core/index.d.ts.map +0 -1
  148. package/src/core/index.js.map +0 -1
  149. package/src/core/types/result.d.ts +0 -16
  150. package/src/core/types/result.d.ts.map +0 -1
  151. package/src/core/types/result.js +0 -12
  152. package/src/core/types/result.js.map +0 -1
  153. package/src/email-string.d.ts +0 -42
  154. package/src/email-string.d.ts.map +0 -1
  155. package/src/email-string.js +0 -67
  156. package/src/email-string.js.map +0 -1
  157. package/src/enumerations/disposed-error-type.d.ts +0 -12
  158. package/src/enumerations/disposed-error-type.d.ts.map +0 -1
  159. package/src/enumerations/disposed-error-type.js +0 -13
  160. package/src/enumerations/disposed-error-type.js.map +0 -1
  161. package/src/enumerations/ecies-cipher-suite.d.ts +0 -4
  162. package/src/enumerations/ecies-cipher-suite.d.ts.map +0 -1
  163. package/src/enumerations/ecies-cipher-suite.js +0 -6
  164. package/src/enumerations/ecies-cipher-suite.js.map +0 -1
  165. package/src/enumerations/ecies-encryption-type.d.ts +0 -11
  166. package/src/enumerations/ecies-encryption-type.d.ts.map +0 -1
  167. package/src/enumerations/ecies-encryption-type.js +0 -27
  168. package/src/enumerations/ecies-encryption-type.js.map +0 -1
  169. package/src/enumerations/ecies-error-type.d.ts +0 -44
  170. package/src/enumerations/ecies-error-type.d.ts.map +0 -1
  171. package/src/enumerations/ecies-error-type.js +0 -45
  172. package/src/enumerations/ecies-error-type.js.map +0 -1
  173. package/src/enumerations/ecies-string-key.d.ts +0 -192
  174. package/src/enumerations/ecies-string-key.d.ts.map +0 -1
  175. package/src/enumerations/ecies-string-key.js +0 -199
  176. package/src/enumerations/ecies-string-key.js.map +0 -1
  177. package/src/enumerations/ecies-version.d.ts +0 -4
  178. package/src/enumerations/ecies-version.d.ts.map +0 -1
  179. package/src/enumerations/ecies-version.js +0 -5
  180. package/src/enumerations/ecies-version.js.map +0 -1
  181. package/src/enumerations/guid-brand-type.d.ts +0 -27
  182. package/src/enumerations/guid-brand-type.d.ts.map +0 -1
  183. package/src/enumerations/guid-brand-type.js +0 -28
  184. package/src/enumerations/guid-brand-type.js.map +0 -1
  185. package/src/enumerations/guid-error-type.d.ts +0 -7
  186. package/src/enumerations/guid-error-type.d.ts.map +0 -1
  187. package/src/enumerations/guid-error-type.js +0 -8
  188. package/src/enumerations/guid-error-type.js.map +0 -1
  189. package/src/enumerations/id-provider-error-type.d.ts +0 -43
  190. package/src/enumerations/id-provider-error-type.d.ts.map +0 -1
  191. package/src/enumerations/id-provider-error-type.js +0 -44
  192. package/src/enumerations/id-provider-error-type.js.map +0 -1
  193. package/src/enumerations/index.d.ts +0 -18
  194. package/src/enumerations/index.d.ts.map +0 -1
  195. package/src/enumerations/index.js.map +0 -1
  196. package/src/enumerations/invalid-email-type.d.ts +0 -6
  197. package/src/enumerations/invalid-email-type.d.ts.map +0 -1
  198. package/src/enumerations/invalid-email-type.js +0 -7
  199. package/src/enumerations/invalid-email-type.js.map +0 -1
  200. package/src/enumerations/length-encoding-type.d.ts +0 -7
  201. package/src/enumerations/length-encoding-type.d.ts.map +0 -1
  202. package/src/enumerations/length-encoding-type.js +0 -8
  203. package/src/enumerations/length-encoding-type.js.map +0 -1
  204. package/src/enumerations/length-error-type.d.ts +0 -6
  205. package/src/enumerations/length-error-type.d.ts.map +0 -1
  206. package/src/enumerations/length-error-type.js +0 -7
  207. package/src/enumerations/length-error-type.js.map +0 -1
  208. package/src/enumerations/member-error-type.d.ts +0 -87
  209. package/src/enumerations/member-error-type.d.ts.map +0 -1
  210. package/src/enumerations/member-error-type.js +0 -88
  211. package/src/enumerations/member-error-type.js.map +0 -1
  212. package/src/enumerations/member-type.d.ts.map +0 -1
  213. package/src/enumerations/member-type.js +0 -16
  214. package/src/enumerations/member-type.js.map +0 -1
  215. package/src/enumerations/password-login-error-type.d.ts +0 -5
  216. package/src/enumerations/password-login-error-type.d.ts.map +0 -1
  217. package/src/enumerations/password-login-error-type.js +0 -6
  218. package/src/enumerations/password-login-error-type.js.map +0 -1
  219. package/src/enumerations/pbkdf2-error-type.d.ts +0 -6
  220. package/src/enumerations/pbkdf2-error-type.d.ts.map +0 -1
  221. package/src/enumerations/pbkdf2-error-type.js +0 -7
  222. package/src/enumerations/pbkdf2-error-type.js.map +0 -1
  223. package/src/enumerations/pbkdf2-profile.d.ts +0 -6
  224. package/src/enumerations/pbkdf2-profile.d.ts.map +0 -1
  225. package/src/enumerations/pbkdf2-profile.js +0 -7
  226. package/src/enumerations/pbkdf2-profile.js.map +0 -1
  227. package/src/enumerations/secure-storage-error-type.d.ts +0 -6
  228. package/src/enumerations/secure-storage-error-type.d.ts.map +0 -1
  229. package/src/enumerations/secure-storage-error-type.js +0 -7
  230. package/src/enumerations/secure-storage-error-type.js.map +0 -1
  231. package/src/errors/disposed.d.ts +0 -22
  232. package/src/errors/disposed.d.ts.map +0 -1
  233. package/src/errors/disposed.js +0 -28
  234. package/src/errors/disposed.js.map +0 -1
  235. package/src/errors/ecies.d.ts +0 -52
  236. package/src/errors/ecies.d.ts.map +0 -1
  237. package/src/errors/ecies.js +0 -78
  238. package/src/errors/ecies.js.map +0 -1
  239. package/src/errors/guid.d.ts +0 -49
  240. package/src/errors/guid.d.ts.map +0 -1
  241. package/src/errors/guid.js +0 -96
  242. package/src/errors/guid.js.map +0 -1
  243. package/src/errors/id-provider.d.ts +0 -23
  244. package/src/errors/id-provider.d.ts.map +0 -1
  245. package/src/errors/id-provider.js +0 -29
  246. package/src/errors/id-provider.js.map +0 -1
  247. package/src/errors/index.d.ts.map +0 -1
  248. package/src/errors/index.js +0 -10
  249. package/src/errors/index.js.map +0 -1
  250. package/src/errors/invalid-email.d.ts +0 -8
  251. package/src/errors/invalid-email.d.ts.map +0 -1
  252. package/src/errors/invalid-email.js +0 -15
  253. package/src/errors/invalid-email.js.map +0 -1
  254. package/src/errors/length.d.ts +0 -7
  255. package/src/errors/length.d.ts.map +0 -1
  256. package/src/errors/length.js +0 -11
  257. package/src/errors/length.js.map +0 -1
  258. package/src/errors/member.d.ts +0 -7
  259. package/src/errors/member.d.ts.map +0 -1
  260. package/src/errors/member.js +0 -11
  261. package/src/errors/member.js.map +0 -1
  262. package/src/errors/pbkdf2.d.ts +0 -7
  263. package/src/errors/pbkdf2.d.ts.map +0 -1
  264. package/src/errors/pbkdf2.js +0 -11
  265. package/src/errors/pbkdf2.js.map +0 -1
  266. package/src/errors/secure-storage.d.ts +0 -7
  267. package/src/errors/secure-storage.d.ts.map +0 -1
  268. package/src/errors/secure-storage.js +0 -12
  269. package/src/errors/secure-storage.js.map +0 -1
  270. package/src/errors/simple-ecies.d.ts +0 -6
  271. package/src/errors/simple-ecies.d.ts.map +0 -1
  272. package/src/errors/simple-ecies.js +0 -12
  273. package/src/errors/simple-ecies.js.map +0 -1
  274. package/src/errors/simple-test-error.d.ts +0 -4
  275. package/src/errors/simple-test-error.d.ts.map +0 -1
  276. package/src/errors/simple-test-error.js +0 -7
  277. package/src/errors/simple-test-error.js.map +0 -1
  278. package/src/i18n-setup.d.ts +0 -32
  279. package/src/i18n-setup.d.ts.map +0 -1
  280. package/src/i18n-setup.js +0 -101
  281. package/src/i18n-setup.js.map +0 -1
  282. package/src/index.d.ts +0 -80
  283. package/src/index.d.ts.map +0 -1
  284. package/src/index.js.map +0 -1
  285. package/src/interfaces/checksum-config.d.ts +0 -5
  286. package/src/interfaces/checksum-config.d.ts.map +0 -1
  287. package/src/interfaces/checksum-config.js +0 -2
  288. package/src/interfaces/checksum-config.js.map +0 -1
  289. package/src/interfaces/checksum-consts.d.ts +0 -11
  290. package/src/interfaces/checksum-consts.d.ts.map +0 -1
  291. package/src/interfaces/checksum-consts.js +0 -2
  292. package/src/interfaces/checksum-consts.js.map +0 -1
  293. package/src/interfaces/configuration-provenance.d.ts +0 -43
  294. package/src/interfaces/configuration-provenance.d.ts.map +0 -1
  295. package/src/interfaces/configuration-provenance.js +0 -3
  296. package/src/interfaces/configuration-provenance.js.map +0 -1
  297. package/src/interfaces/constants.d.ts +0 -70
  298. package/src/interfaces/constants.d.ts.map +0 -1
  299. package/src/interfaces/constants.js +0 -2
  300. package/src/interfaces/constants.js.map +0 -1
  301. package/src/interfaces/ecies-config.d.ts +0 -9
  302. package/src/interfaces/ecies-config.d.ts.map +0 -1
  303. package/src/interfaces/ecies-config.js +0 -2
  304. package/src/interfaces/ecies-config.js.map +0 -1
  305. package/src/interfaces/ecies-consts.d.ts +0 -61
  306. package/src/interfaces/ecies-consts.d.ts.map +0 -1
  307. package/src/interfaces/ecies-consts.js +0 -2
  308. package/src/interfaces/ecies-consts.js.map +0 -1
  309. package/src/interfaces/ecies-file-service.d.ts +0 -7
  310. package/src/interfaces/ecies-file-service.d.ts.map +0 -1
  311. package/src/interfaces/ecies-file-service.js +0 -2
  312. package/src/interfaces/ecies-file-service.js.map +0 -1
  313. package/src/interfaces/encrypted-chunk.d.ts +0 -55
  314. package/src/interfaces/encrypted-chunk.d.ts.map +0 -1
  315. package/src/interfaces/encrypted-chunk.js +0 -12
  316. package/src/interfaces/encrypted-chunk.js.map +0 -1
  317. package/src/interfaces/encryption-state.d.ts +0 -18
  318. package/src/interfaces/encryption-state.d.ts.map +0 -1
  319. package/src/interfaces/encryption-state.js +0 -2
  320. package/src/interfaces/encryption-state.js.map +0 -1
  321. package/src/interfaces/frontend-member-operational.d.ts +0 -51
  322. package/src/interfaces/frontend-member-operational.d.ts.map +0 -1
  323. package/src/interfaces/frontend-member-operational.js +0 -2
  324. package/src/interfaces/frontend-member-operational.js.map +0 -1
  325. package/src/interfaces/guid.d.ts +0 -78
  326. package/src/interfaces/guid.d.ts.map +0 -1
  327. package/src/interfaces/guid.js +0 -2
  328. package/src/interfaces/guid.js.map +0 -1
  329. package/src/interfaces/id-provider.d.ts +0 -107
  330. package/src/interfaces/id-provider.d.ts.map +0 -1
  331. package/src/interfaces/id-provider.js +0 -52
  332. package/src/interfaces/id-provider.js.map +0 -1
  333. package/src/interfaces/index.d.ts.map +0 -1
  334. package/src/interfaces/index.js +0 -13
  335. package/src/interfaces/index.js.map +0 -1
  336. package/src/interfaces/invariant.d.ts +0 -46
  337. package/src/interfaces/invariant.d.ts.map +0 -1
  338. package/src/interfaces/invariant.js +0 -18
  339. package/src/interfaces/invariant.js.map +0 -1
  340. package/src/interfaces/library-error.d.ts +0 -23
  341. package/src/interfaces/library-error.d.ts.map +0 -1
  342. package/src/interfaces/library-error.js +0 -2
  343. package/src/interfaces/library-error.js.map +0 -1
  344. package/src/interfaces/member-storage.d.ts.map +0 -1
  345. package/src/interfaces/member-storage.js +0 -2
  346. package/src/interfaces/member-storage.js.map +0 -1
  347. package/src/interfaces/member-with-mnemonic.d.ts.map +0 -1
  348. package/src/interfaces/member-with-mnemonic.js +0 -2
  349. package/src/interfaces/member-with-mnemonic.js.map +0 -1
  350. package/src/interfaces/member.d.ts +0 -55
  351. package/src/interfaces/member.d.ts.map +0 -1
  352. package/src/interfaces/member.js +0 -2
  353. package/src/interfaces/member.js.map +0 -1
  354. package/src/interfaces/multi-recipient-chunk.d.ts +0 -54
  355. package/src/interfaces/multi-recipient-chunk.d.ts.map +0 -1
  356. package/src/interfaces/multi-recipient-chunk.js +0 -11
  357. package/src/interfaces/multi-recipient-chunk.js.map +0 -1
  358. package/src/interfaces/pbkdf2-config.d.ts +0 -7
  359. package/src/interfaces/pbkdf2-config.d.ts.map +0 -1
  360. package/src/interfaces/pbkdf2-config.js +0 -2
  361. package/src/interfaces/pbkdf2-config.js.map +0 -1
  362. package/src/interfaces/pbkdf2-consts.d.ts +0 -9
  363. package/src/interfaces/pbkdf2-consts.d.ts.map +0 -1
  364. package/src/interfaces/pbkdf2-consts.js +0 -2
  365. package/src/interfaces/pbkdf2-consts.js.map +0 -1
  366. package/src/interfaces/pbkdf2-result.d.ts +0 -6
  367. package/src/interfaces/pbkdf2-result.d.ts.map +0 -1
  368. package/src/interfaces/pbkdf2-result.js +0 -2
  369. package/src/interfaces/pbkdf2-result.js.map +0 -1
  370. package/src/interfaces/stream-config.d.ts +0 -14
  371. package/src/interfaces/stream-config.d.ts.map +0 -1
  372. package/src/interfaces/stream-config.js +0 -8
  373. package/src/interfaces/stream-config.js.map +0 -1
  374. package/src/interfaces/stream-header.d.ts +0 -29
  375. package/src/interfaces/stream-header.d.ts.map +0 -1
  376. package/src/interfaces/stream-header.js +0 -9
  377. package/src/interfaces/stream-header.js.map +0 -1
  378. package/src/interfaces/stream-progress.d.ts +0 -33
  379. package/src/interfaces/stream-progress.d.ts.map +0 -1
  380. package/src/interfaces/stream-progress.js +0 -2
  381. package/src/interfaces/stream-progress.js.map +0 -1
  382. package/src/lib/configuration-provenance-utils.d.ts +0 -11
  383. package/src/lib/configuration-provenance-utils.d.ts.map +0 -1
  384. package/src/lib/configuration-provenance-utils.js +0 -23
  385. package/src/lib/configuration-provenance-utils.js.map +0 -1
  386. package/src/lib/crypto-container.d.ts +0 -25
  387. package/src/lib/crypto-container.d.ts.map +0 -1
  388. package/src/lib/crypto-container.js +0 -46
  389. package/src/lib/crypto-container.js.map +0 -1
  390. package/src/lib/guid.d.ts +0 -344
  391. package/src/lib/guid.d.ts.map +0 -1
  392. package/src/lib/guid.js +0 -914
  393. package/src/lib/guid.js.map +0 -1
  394. package/src/lib/id-providers/custom-provider.d.ts +0 -46
  395. package/src/lib/id-providers/custom-provider.d.ts.map +0 -1
  396. package/src/lib/id-providers/custom-provider.js +0 -85
  397. package/src/lib/id-providers/custom-provider.js.map +0 -1
  398. package/src/lib/id-providers/guidv4-provider.d.ts +0 -56
  399. package/src/lib/id-providers/guidv4-provider.d.ts.map +0 -1
  400. package/src/lib/id-providers/guidv4-provider.js +0 -122
  401. package/src/lib/id-providers/guidv4-provider.js.map +0 -1
  402. package/src/lib/id-providers/index.d.ts.map +0 -1
  403. package/src/lib/id-providers/index.js +0 -29
  404. package/src/lib/id-providers/index.js.map +0 -1
  405. package/src/lib/id-providers/objectid-provider.d.ts +0 -43
  406. package/src/lib/id-providers/objectid-provider.d.ts.map +0 -1
  407. package/src/lib/id-providers/objectid-provider.js +0 -104
  408. package/src/lib/id-providers/objectid-provider.js.map +0 -1
  409. package/src/lib/id-providers/uuid-provider.d.ts +0 -52
  410. package/src/lib/id-providers/uuid-provider.d.ts.map +0 -1
  411. package/src/lib/id-providers/uuid-provider.js +0 -110
  412. package/src/lib/id-providers/uuid-provider.js.map +0 -1
  413. package/src/lib/index.d.ts +0 -6
  414. package/src/lib/index.d.ts.map +0 -1
  415. package/src/lib/index.js.map +0 -1
  416. package/src/lib/invariant-validator.d.ts +0 -59
  417. package/src/lib/invariant-validator.d.ts.map +0 -1
  418. package/src/lib/invariant-validator.js +0 -97
  419. package/src/lib/invariant-validator.js.map +0 -1
  420. package/src/lib/invariants/encryption-algorithm-consistency.d.ts +0 -17
  421. package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +0 -1
  422. package/src/lib/invariants/encryption-algorithm-consistency.js +0 -49
  423. package/src/lib/invariants/encryption-algorithm-consistency.js.map +0 -1
  424. package/src/lib/invariants/index.d.ts +0 -4
  425. package/src/lib/invariants/index.d.ts.map +0 -1
  426. package/src/lib/invariants/index.js.map +0 -1
  427. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +0 -16
  428. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +0 -1
  429. package/src/lib/invariants/pbkdf2-profiles-validity.js +0 -58
  430. package/src/lib/invariants/pbkdf2-profiles-validity.js.map +0 -1
  431. package/src/lib/invariants/recipient-id-consistency.d.ts +0 -18
  432. package/src/lib/invariants/recipient-id-consistency.d.ts.map +0 -1
  433. package/src/lib/invariants/recipient-id-consistency.js +0 -31
  434. package/src/lib/invariants/recipient-id-consistency.js.map +0 -1
  435. package/src/lib/multi-recipient-chunk-utils.d.ts +0 -38
  436. package/src/lib/multi-recipient-chunk-utils.d.ts.map +0 -1
  437. package/src/lib/multi-recipient-chunk-utils.js +0 -41
  438. package/src/lib/multi-recipient-chunk-utils.js.map +0 -1
  439. package/src/member.d.ts +0 -92
  440. package/src/member.d.ts.map +0 -1
  441. package/src/member.js +0 -322
  442. package/src/member.js.map +0 -1
  443. package/src/pbkdf2-profiles.d.ts.map +0 -1
  444. package/src/pbkdf2-profiles.js +0 -2
  445. package/src/pbkdf2-profiles.js.map +0 -1
  446. package/src/phone-number.d.ts +0 -6
  447. package/src/phone-number.d.ts.map +0 -1
  448. package/src/phone-number.js +0 -18
  449. package/src/phone-number.js.map +0 -1
  450. package/src/regexes.d.ts +0 -7
  451. package/src/regexes.d.ts.map +0 -1
  452. package/src/regexes.js +0 -7
  453. package/src/regexes.js.map +0 -1
  454. package/src/secure-buffer.d.ts +0 -61
  455. package/src/secure-buffer.d.ts.map +0 -1
  456. package/src/secure-buffer.js +0 -201
  457. package/src/secure-buffer.js.map +0 -1
  458. package/src/secure-string.d.ts +0 -46
  459. package/src/secure-string.d.ts.map +0 -1
  460. package/src/secure-string.js +0 -206
  461. package/src/secure-string.js.map +0 -1
  462. package/src/services/aes-gcm.d.ts +0 -57
  463. package/src/services/aes-gcm.d.ts.map +0 -1
  464. package/src/services/aes-gcm.js +0 -142
  465. package/src/services/aes-gcm.js.map +0 -1
  466. package/src/services/chunk-processor.d.ts +0 -31
  467. package/src/services/chunk-processor.d.ts.map +0 -1
  468. package/src/services/chunk-processor.js +0 -145
  469. package/src/services/chunk-processor.js.map +0 -1
  470. package/src/services/ecies/crypto-core.d.ts +0 -72
  471. package/src/services/ecies/crypto-core.d.ts.map +0 -1
  472. package/src/services/ecies/crypto-core.js +0 -205
  473. package/src/services/ecies/crypto-core.js.map +0 -1
  474. package/src/services/ecies/example.d.ts +0 -25
  475. package/src/services/ecies/example.d.ts.map +0 -1
  476. package/src/services/ecies/example.js +0 -121
  477. package/src/services/ecies/example.js.map +0 -1
  478. package/src/services/ecies/file.d.ts +0 -18
  479. package/src/services/ecies/file.d.ts.map +0 -1
  480. package/src/services/ecies/file.js +0 -106
  481. package/src/services/ecies/file.js.map +0 -1
  482. package/src/services/ecies/index.d.ts +0 -38
  483. package/src/services/ecies/index.d.ts.map +0 -1
  484. package/src/services/ecies/index.js.map +0 -1
  485. package/src/services/ecies/integration.d.ts +0 -59
  486. package/src/services/ecies/integration.d.ts.map +0 -1
  487. package/src/services/ecies/integration.js +0 -167
  488. package/src/services/ecies/integration.js.map +0 -1
  489. package/src/services/ecies/interfaces.d.ts +0 -54
  490. package/src/services/ecies/interfaces.d.ts.map +0 -1
  491. package/src/services/ecies/interfaces.js +0 -5
  492. package/src/services/ecies/interfaces.js.map +0 -1
  493. package/src/services/ecies/manual-test.d.ts +0 -29
  494. package/src/services/ecies/manual-test.d.ts.map +0 -1
  495. package/src/services/ecies/manual-test.js +0 -163
  496. package/src/services/ecies/manual-test.js.map +0 -1
  497. package/src/services/ecies/multi-recipient.d.ts +0 -56
  498. package/src/services/ecies/multi-recipient.d.ts.map +0 -1
  499. package/src/services/ecies/multi-recipient.js +0 -344
  500. package/src/services/ecies/multi-recipient.js.map +0 -1
  501. package/src/services/ecies/service.d.ts +0 -120
  502. package/src/services/ecies/service.d.ts.map +0 -1
  503. package/src/services/ecies/service.js +0 -210
  504. package/src/services/ecies/service.js.map +0 -1
  505. package/src/services/ecies/signature.d.ts +0 -27
  506. package/src/services/ecies/signature.d.ts.map +0 -1
  507. package/src/services/ecies/signature.js +0 -72
  508. package/src/services/ecies/signature.js.map +0 -1
  509. package/src/services/ecies/single-recipient.d.ts +0 -46
  510. package/src/services/ecies/single-recipient.d.ts.map +0 -1
  511. package/src/services/ecies/single-recipient.js +0 -322
  512. package/src/services/ecies/single-recipient.js.map +0 -1
  513. package/src/services/encryption-stream.d.ts +0 -71
  514. package/src/services/encryption-stream.d.ts.map +0 -1
  515. package/src/services/encryption-stream.js +0 -295
  516. package/src/services/encryption-stream.js.map +0 -1
  517. package/src/services/index.d.ts +0 -11
  518. package/src/services/index.d.ts.map +0 -1
  519. package/src/services/index.js.map +0 -1
  520. package/src/services/multi-recipient-processor.d.ts +0 -35
  521. package/src/services/multi-recipient-processor.d.ts.map +0 -1
  522. package/src/services/multi-recipient-processor.js +0 -289
  523. package/src/services/multi-recipient-processor.js.map +0 -1
  524. package/src/services/password-login.d.ts +0 -47
  525. package/src/services/password-login.d.ts.map +0 -1
  526. package/src/services/password-login.js +0 -115
  527. package/src/services/password-login.js.map +0 -1
  528. package/src/services/pbkdf2.d.ts +0 -54
  529. package/src/services/pbkdf2.d.ts.map +0 -1
  530. package/src/services/pbkdf2.js +0 -108
  531. package/src/services/pbkdf2.js.map +0 -1
  532. package/src/services/progress-tracker.d.ts +0 -23
  533. package/src/services/progress-tracker.d.ts.map +0 -1
  534. package/src/services/progress-tracker.js +0 -103
  535. package/src/services/progress-tracker.js.map +0 -1
  536. package/src/services/resumable-encryption.d.ts +0 -19
  537. package/src/services/resumable-encryption.d.ts.map +0 -1
  538. package/src/services/resumable-encryption.js +0 -105
  539. package/src/services/resumable-encryption.js.map +0 -1
  540. package/src/services/xor.d.ts +0 -37
  541. package/src/services/xor.d.ts.map +0 -1
  542. package/src/services/xor.js +0 -63
  543. package/src/services/xor.js.map +0 -1
  544. package/src/test-mocks/index.d.ts +0 -2
  545. package/src/test-mocks/index.d.ts.map +0 -1
  546. package/src/test-mocks/index.js +0 -2
  547. package/src/test-mocks/index.js.map +0 -1
  548. package/src/test-mocks/mock-frontend-member.d.ts +0 -85
  549. package/src/test-mocks/mock-frontend-member.d.ts.map +0 -1
  550. package/src/test-mocks/mock-frontend-member.js +0 -190
  551. package/src/test-mocks/mock-frontend-member.js.map +0 -1
  552. package/src/testing.d.ts +0 -2
  553. package/src/testing.d.ts.map +0 -1
  554. package/src/testing.js.map +0 -1
  555. package/src/translations/de.d.ts +0 -4
  556. package/src/translations/de.d.ts.map +0 -1
  557. package/src/translations/de.js.map +0 -1
  558. package/src/translations/en-US.d.ts +0 -4
  559. package/src/translations/en-US.d.ts.map +0 -1
  560. package/src/translations/en-US.js.map +0 -1
  561. package/src/translations/es.d.ts +0 -4
  562. package/src/translations/es.d.ts.map +0 -1
  563. package/src/translations/es.js.map +0 -1
  564. package/src/translations/fr.d.ts +0 -4
  565. package/src/translations/fr.d.ts.map +0 -1
  566. package/src/translations/fr.js.map +0 -1
  567. package/src/translations/ja.d.ts +0 -4
  568. package/src/translations/ja.d.ts.map +0 -1
  569. package/src/translations/ja.js.map +0 -1
  570. package/src/translations/uk.d.ts +0 -4
  571. package/src/translations/uk.d.ts.map +0 -1
  572. package/src/translations/uk.js.map +0 -1
  573. package/src/translations/zh-cn.d.ts +0 -4
  574. package/src/translations/zh-cn.d.ts.map +0 -1
  575. package/src/translations/zh-cn.js.map +0 -1
  576. package/src/types/deep-partial.d.ts +0 -4
  577. package/src/types/deep-partial.d.ts.map +0 -1
  578. package/src/types/deep-partial.js +0 -2
  579. package/src/types/deep-partial.js.map +0 -1
  580. package/src/types.d.ts.map +0 -1
  581. package/src/types.js +0 -2
  582. package/src/types.js.map +0 -1
  583. package/src/utils/encryption-type-utils.d.ts +0 -29
  584. package/src/utils/encryption-type-utils.d.ts.map +0 -1
  585. package/src/utils/encryption-type-utils.js +0 -61
  586. package/src/utils/encryption-type-utils.js.map +0 -1
  587. package/src/utils.d.ts +0 -68
  588. package/src/utils.d.ts.map +0 -1
  589. package/src/utils.js +0 -273
  590. package/src/utils.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ export enum Pbkdf2ProfileEnum {
2
+ BROWSER_PASSWORD = 'BROWSER_PASSWORD',
3
+ HIGH_SECURITY = 'HIGH_SECURITY',
4
+ TEST_FAST = 'TEST_FAST',
5
+ }
@@ -0,0 +1,5 @@
1
+ export enum SecureStorageErrorType {
2
+ DecryptedValueLengthMismatch = 'DecryptedValueLengthMismatch',
3
+ DecryptedValueChecksumMismatch = 'DecryptedValueChecksumMismatch',
4
+ ValueIsNull = 'ValueIsNull',
5
+ }
@@ -0,0 +1,36 @@
1
+ import { TranslatableGenericError } from '@digitaldefiance/i18n-lib';
2
+ import { EciesComponentId } from '../i18n-setup';
3
+ import { EciesStringKey } from '../enumerations';
4
+
5
+ /**
6
+ * Error thrown when operations are attempted on disposed objects.
7
+ * Uses TranslatableGenericError for simple i18n support since there's only one error type.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * throw new DisposedError();
12
+ * throw new DisposedError('fr'); // French
13
+ * ```
14
+ */
15
+ export class DisposedError extends TranslatableGenericError<EciesStringKey> {
16
+ /**
17
+ * Creates a new DisposedError instance.
18
+ *
19
+ * @param language - Optional language code for error message localization.
20
+ * @param instanceKey - Optional i18n engine instance key (defaults to ecies engine).
21
+ */
22
+ constructor(language?: string, instanceKey: string = 'ecies') {
23
+ super(
24
+ EciesComponentId,
25
+ EciesStringKey.Error_DisposedError_ObjectDisposed,
26
+ undefined,
27
+ language,
28
+ undefined,
29
+ instanceKey
30
+ );
31
+ this.name = 'DisposedError';
32
+
33
+ // Maintains proper prototype chain for instanceof checks
34
+ Object.setPrototypeOf(this, DisposedError.prototype);
35
+ }
36
+ }
@@ -0,0 +1,153 @@
1
+ import {
2
+ buildReasonMap,
3
+ HandleableErrorOptions,
4
+ TypedHandleableError,
5
+ } from '@digitaldefiance/i18n-lib';
6
+ import { ECIESErrorTypeEnum } from '../enumerations/ecies-error-type';
7
+ import { EciesStringKey } from '../enumerations/ecies-string-key';
8
+ import { EciesComponentId } from '../i18n-setup';
9
+
10
+ /**
11
+ * Context information captured when an error occurs.
12
+ * This provides debugging information beyond just the error message.
13
+ */
14
+ export interface IErrorContext {
15
+ /**
16
+ * The operation that was being performed when the error occurred
17
+ * e.g., 'encryptChunk', 'decryptStream', 'validateRecipientId'
18
+ */
19
+ operation: string;
20
+
21
+ /**
22
+ * Stack trace from when the error was created
23
+ */
24
+ stackTrace: string;
25
+
26
+ /**
27
+ * Relevant configuration values (sanitized to remove sensitive data)
28
+ */
29
+ config?: Partial<{
30
+ idProviderName: string;
31
+ idProviderByteLength: number;
32
+ memberIdLength: number;
33
+ recipientIdSize: number;
34
+ curveName: string;
35
+ }>;
36
+
37
+ /**
38
+ * Timestamp when error occurred
39
+ */
40
+ timestamp: Date;
41
+
42
+ /**
43
+ * Additional metadata specific to the error
44
+ */
45
+ metadata?: Record<string, unknown>;
46
+ }
47
+
48
+ export class ECIESError extends TypedHandleableError<
49
+ typeof ECIESErrorTypeEnum,
50
+ EciesStringKey
51
+ > {
52
+ /**
53
+ * Rich context information for debugging
54
+ */
55
+ public readonly context?: IErrorContext;
56
+
57
+ constructor(
58
+ type: ECIESErrorTypeEnum,
59
+ options?: HandleableErrorOptions,
60
+ language?: string,
61
+ otherVars?: Record<string, string | number>,
62
+ context?: Partial<IErrorContext>,
63
+ ) {
64
+ let source: Error;
65
+ if (
66
+ options &&
67
+ typeof options === 'object' &&
68
+ 'cause' in options &&
69
+ options.cause instanceof Error
70
+ ) {
71
+ source = options.cause;
72
+ } else {
73
+ source = new Error();
74
+ }
75
+ super(
76
+ EciesComponentId,
77
+ type,
78
+ buildReasonMap<typeof ECIESErrorTypeEnum, EciesStringKey>(
79
+ ECIESErrorTypeEnum,
80
+ ['Error', 'ECIESError'],
81
+ ),
82
+ source,
83
+ options,
84
+ language,
85
+ otherVars,
86
+ );
87
+ this.name = 'ECIESError';
88
+
89
+ // Capture context if provided
90
+ if (context) {
91
+ this.context = {
92
+ operation: context.operation ?? 'unknown',
93
+ stackTrace:
94
+ context.stackTrace ?? new Error().stack ?? 'stack unavailable',
95
+ config: context.config,
96
+ timestamp: context.timestamp ?? new Date(),
97
+ metadata: context.metadata,
98
+ };
99
+ }
100
+ }
101
+
102
+ /**
103
+ * Serialize error to JSON including context
104
+ */
105
+ override toJSON(): Record<string, unknown> {
106
+ return {
107
+ name: this.name,
108
+ message: this.message,
109
+ type: this.type,
110
+ context: this.context,
111
+ cause:
112
+ this.cause instanceof Error
113
+ ? {
114
+ name: this.cause.name,
115
+ message: this.cause.message,
116
+ }
117
+ : undefined,
118
+ };
119
+ }
120
+
121
+ /**
122
+ * Get a detailed error report including all context
123
+ */
124
+ getDetailedReport(): string {
125
+ const parts = [`${this.name}: ${this.message}`, `Type: ${this.type}`];
126
+
127
+ if (this.context) {
128
+ parts.push(`Operation: ${this.context.operation}`);
129
+ parts.push(`Timestamp: ${this.context.timestamp.toISOString()}`);
130
+
131
+ if (this.context.config) {
132
+ parts.push('Configuration:');
133
+ Object.entries(this.context.config).forEach(([key, value]) => {
134
+ parts.push(` ${key}: ${value}`);
135
+ });
136
+ }
137
+
138
+ if (this.context.metadata) {
139
+ parts.push('Metadata:');
140
+ Object.entries(this.context.metadata).forEach(([key, value]) => {
141
+ parts.push(` ${key}: ${JSON.stringify(value)}`);
142
+ });
143
+ }
144
+
145
+ if (this.context.stackTrace) {
146
+ parts.push('\nStack Trace:');
147
+ parts.push(this.context.stackTrace);
148
+ }
149
+ }
150
+
151
+ return parts.join('\n');
152
+ }
153
+ }
@@ -0,0 +1,130 @@
1
+ import {
2
+ buildReasonMap,
3
+ TypedHandleableError,
4
+ } from '@digitaldefiance/i18n-lib';
5
+ import { EciesStringKey } from '../enumerations';
6
+ import { GuidBrandType } from '../enumerations/guid-brand-type';
7
+ import { GuidErrorType } from '../enumerations/guid-error-type';
8
+ import { EciesComponentId } from '../i18n-setup';
9
+ import { RawGuidBuffer } from '../types';
10
+
11
+ /**
12
+ * Error class for handling GUID-related errors.
13
+ * Provides detailed error information including the error type, optional brand, length, and GUID value.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * throw new GuidError(GuidErrorType.InvalidGuid);
18
+ * throw new GuidError(GuidErrorType.InvalidGuidUnknownLength, undefined, 17);
19
+ * throw new GuidError(GuidErrorType.InvalidGuidWithDetails, undefined, undefined, buffer);
20
+ * ```
21
+ */
22
+ export class GuidError extends TypedHandleableError<
23
+ typeof GuidErrorType,
24
+ EciesStringKey
25
+ > {
26
+ /**
27
+ * Reason map cache to avoid rebuilding on every error instantiation.
28
+ * This improves performance in scenarios where many errors are created.
29
+ */
30
+ private static readonly REASON_MAP = buildReasonMap<
31
+ typeof GuidErrorType,
32
+ EciesStringKey
33
+ >(
34
+ GuidErrorType,
35
+ ['Error', 'GuidError'],
36
+ new Set([
37
+ GuidErrorType.InvalidGuidWithDetails,
38
+ GuidErrorType.InvalidGuidUnknownBrand,
39
+ GuidErrorType.InvalidGuidUnknownLength,
40
+ ]),
41
+ );
42
+
43
+ /**
44
+ * Creates a new GuidError instance.
45
+ *
46
+ * @param type - The type of GUID error that occurred.
47
+ * @param brand - Optional GUID brand type (for brand-related errors).
48
+ * @param length - Optional length value (for length-related errors).
49
+ * @param guid - Optional GUID buffer (for errors involving specific GUID values).
50
+ * @param language - Optional language code for error message localization.
51
+ *
52
+ * @throws {Error} If guid parameter is provided but is not a Buffer.
53
+ */
54
+ constructor(
55
+ type: GuidErrorType,
56
+ public readonly brand?: GuidBrandType,
57
+ public readonly length?: number,
58
+ public readonly guid?: RawGuidBuffer | Buffer,
59
+ language?: string,
60
+ ) {
61
+ // Build template parameters only for the values that are provided
62
+ const templateParams: Record<string, string> = {};
63
+
64
+ if (brand !== undefined) {
65
+ templateParams.BRAND = String(brand);
66
+ }
67
+
68
+ if (length !== undefined) {
69
+ templateParams.LENGTH = String(length);
70
+ }
71
+
72
+ if (guid !== undefined) {
73
+ // Defensive check to ensure guid is a Buffer
74
+ if (!Buffer.isBuffer(guid)) {
75
+ throw new Error('GuidError: guid parameter must be a Buffer');
76
+ }
77
+ templateParams.GUID = guid.toString('hex');
78
+ }
79
+
80
+ super(
81
+ EciesComponentId,
82
+ type,
83
+ GuidError.REASON_MAP,
84
+ new Error(), // source error
85
+ undefined, // options
86
+ language,
87
+ templateParams,
88
+ );
89
+ this.name = 'GuidError';
90
+
91
+ // Maintains proper prototype chain for instanceof checks
92
+ Object.setPrototypeOf(this, GuidError.prototype);
93
+ }
94
+
95
+ /**
96
+ * Returns a string representation of the error with all relevant details.
97
+ * @returns A detailed error string.
98
+ */
99
+ public override toString(): string {
100
+ const parts = [`${this.name}: ${this.message}`];
101
+
102
+ if (this.brand !== undefined) {
103
+ parts.push(`Brand: ${this.brand}`);
104
+ }
105
+
106
+ if (this.length !== undefined) {
107
+ parts.push(`Length: ${this.length}`);
108
+ }
109
+
110
+ if (this.guid !== undefined) {
111
+ parts.push(`GUID: ${this.guid.toString('hex')}`);
112
+ }
113
+
114
+ return parts.join(' | ');
115
+ }
116
+
117
+ /**
118
+ * Serializes the error to JSON including all custom properties.
119
+ * @returns JSON representation of the error.
120
+ */
121
+ public override toJSON(): Record<string, unknown> {
122
+ const baseJson = super.toJSON();
123
+ return {
124
+ ...baseJson,
125
+ brand: this.brand,
126
+ length: this.length,
127
+ guid: this.guid ? this.guid.toString('hex') : undefined,
128
+ };
129
+ }
130
+ }
@@ -0,0 +1,40 @@
1
+ import { IdProviderErrorType } from '../enumerations/id-provider-error-type';
2
+ import { HandleableErrorOptions, TypedHandleableError, buildReasonMap } from '@digitaldefiance/i18n-lib';
3
+ import { EciesStringKey } from '../enumerations/ecies-string-key';
4
+ import { EciesComponentId } from '../i18n-setup';
5
+
6
+ /**
7
+ * Error class for ID provider operations.
8
+ * Provides i18n support for errors during ID generation, validation, serialization, and deserialization.
9
+ */
10
+ export class IdProviderError extends TypedHandleableError<typeof IdProviderErrorType, EciesStringKey> {
11
+ /**
12
+ * Reason map cache to avoid rebuilding on every error instantiation.
13
+ */
14
+ private static readonly REASON_MAP = buildReasonMap<typeof IdProviderErrorType, EciesStringKey>(
15
+ IdProviderErrorType,
16
+ ['Error', 'IdProviderError']
17
+ );
18
+
19
+ /**
20
+ * Creates a new IdProviderError instance.
21
+ *
22
+ * @param type - The type of ID provider error that occurred.
23
+ * @param options - Optional error handling options.
24
+ * @param language - Optional language code for error message localization.
25
+ * @param templateParams - Optional parameters for error message templates.
26
+ */
27
+ constructor(
28
+ type: IdProviderErrorType,
29
+ options?: HandleableErrorOptions,
30
+ language?: string,
31
+ templateParams?: Record<string, string | number>
32
+ ) {
33
+ const source = options?.cause instanceof Error ? options.cause : new Error();
34
+ super(EciesComponentId, type, IdProviderError.REASON_MAP, source, options, language, templateParams);
35
+ this.name = 'IdProviderError';
36
+
37
+ // Maintains proper prototype chain for instanceof checks
38
+ Object.setPrototypeOf(this, IdProviderError.prototype);
39
+ }
40
+ }
@@ -8,4 +8,3 @@ export * from './length';
8
8
  export * from './member';
9
9
  export * from './pbkdf2';
10
10
  export * from './secure-storage';
11
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,23 @@
1
+ import { InvalidEmailErrorType } from '../enumerations/invalid-email-type';
2
+ import { buildReasonMap, HandleableErrorOptions, TypedHandleableError } from '@digitaldefiance/i18n-lib';
3
+ import { EciesStringKey } from '../enumerations/ecies-string-key';
4
+ import { EciesComponentId } from '../i18n-setup';
5
+
6
+ export class InvalidEmailError extends TypedHandleableError<typeof InvalidEmailErrorType, EciesStringKey> {
7
+ public readonly email?: string;
8
+ constructor(type: InvalidEmailErrorType, email?: string, options?: HandleableErrorOptions, language?: string) {
9
+ const source = options?.cause instanceof Error ? options.cause : new Error();
10
+ super(
11
+ EciesComponentId,
12
+ type,
13
+ buildReasonMap<typeof InvalidEmailErrorType, EciesStringKey>(InvalidEmailErrorType, ['Error', 'InvalidEmailError']),
14
+ source,
15
+ { statusCode: 422, ...options },
16
+ language, {
17
+ email: email ?? ''
18
+ }
19
+ );
20
+ this.email = email;
21
+ this.name = 'InvalidEmailError';
22
+ }
23
+ }
@@ -0,0 +1,19 @@
1
+ import { LengthErrorType } from '../enumerations/length-error-type';
2
+ import { buildReasonMap, HandleableErrorOptions, TypedHandleableError } from '@digitaldefiance/i18n-lib';
3
+ import { EciesStringKey } from '../enumerations/ecies-string-key';
4
+ import { EciesComponentId } from '../i18n-setup';
5
+
6
+ export class LengthError extends TypedHandleableError<typeof LengthErrorType, EciesStringKey> {
7
+ constructor(type: LengthErrorType, options?: HandleableErrorOptions, language?: string) {
8
+ const source = options?.cause instanceof Error ? options.cause : new Error();
9
+ super(
10
+ EciesComponentId,
11
+ type,
12
+ buildReasonMap<typeof LengthErrorType, EciesStringKey>(LengthErrorType, ['Error', 'LengthError']),
13
+ source,
14
+ options,
15
+ language
16
+ );
17
+ this.name = 'LengthError';
18
+ }
19
+ }
@@ -0,0 +1,20 @@
1
+ import { MemberErrorType } from '../enumerations/member-error-type';
2
+ import { buildReasonMap, HandleableErrorOptions, TypedHandleableError } from '@digitaldefiance/i18n-lib';
3
+ import { EciesStringKey } from '../enumerations/ecies-string-key';
4
+ import { EciesComponentId } from '../i18n-setup';
5
+
6
+ export class MemberError extends TypedHandleableError<typeof MemberErrorType, EciesStringKey> {
7
+
8
+ constructor(type: MemberErrorType, options?: HandleableErrorOptions, language?: string) {
9
+ const source = options?.cause instanceof Error ? options.cause : new Error();
10
+ super(
11
+ EciesComponentId,
12
+ type,
13
+ buildReasonMap<typeof MemberErrorType, EciesStringKey>(MemberErrorType, ['Error', 'MemberError']),
14
+ source,
15
+ options,
16
+ language
17
+ );
18
+ this.name = 'MemberError';
19
+ }
20
+ }
@@ -0,0 +1,20 @@
1
+ import { Pbkdf2ErrorType } from '../enumerations/pbkdf2-error-type';
2
+ import { buildReasonMap, HandleableErrorOptions, TypedHandleableError } from '@digitaldefiance/i18n-lib';
3
+ import { EciesStringKey } from '../enumerations/ecies-string-key';
4
+ import { EciesComponentId } from '../i18n-setup';
5
+
6
+ export class Pbkdf2Error extends TypedHandleableError<typeof Pbkdf2ErrorType, EciesStringKey> {
7
+
8
+ constructor(type: Pbkdf2ErrorType, options?: HandleableErrorOptions, language?: string) {
9
+ const source = options?.cause instanceof Error ? options.cause : new Error();
10
+ super(
11
+ EciesComponentId,
12
+ type,
13
+ buildReasonMap<typeof Pbkdf2ErrorType, EciesStringKey>(Pbkdf2ErrorType, ['Error', 'Pbkdf2Error']),
14
+ source,
15
+ options,
16
+ language
17
+ );
18
+ this.name = 'Pbkdf2Error';
19
+ }
20
+ }
@@ -0,0 +1,17 @@
1
+ import { SecureStorageErrorType } from '../enumerations/secure-storage-error-type';
2
+ import { buildReasonMap, HandleableErrorOptions, TypedHandleableError } from '@digitaldefiance/i18n-lib';
3
+ import { EciesStringKey } from '../enumerations/ecies-string-key';
4
+ import { EciesComponentId } from '../i18n-setup';
5
+
6
+ export class SecureStorageError extends TypedHandleableError<typeof SecureStorageErrorType, EciesStringKey> {
7
+ constructor(type: SecureStorageErrorType, options?: HandleableErrorOptions, language?: string) {
8
+ const source = options?.cause instanceof Error ? options.cause : new Error();
9
+ const reasonMap = buildReasonMap<typeof SecureStorageErrorType, EciesStringKey>(
10
+ SecureStorageErrorType,
11
+ ['Error', 'SecureStorageError']
12
+ );
13
+
14
+ super(EciesComponentId, type, reasonMap, source, options, language);
15
+ this.name = 'SecureStorageError';
16
+ }
17
+ }
@@ -0,0 +1,21 @@
1
+ import { buildReasonMap, HandleableErrorOptions, TypedHandleableError } from '@digitaldefiance/i18n-lib';
2
+ import { ECIESErrorTypeEnum, EciesStringKey } from '../enumerations';
3
+ import { EciesComponentId } from '../i18n-setup';
4
+
5
+ export class SimpleECIESError extends TypedHandleableError<typeof ECIESErrorTypeEnum, EciesStringKey> {
6
+ constructor(
7
+ type: ECIESErrorTypeEnum,
8
+ options?: HandleableErrorOptions,
9
+ language?: string,
10
+ otherVars?: Record<string, string | number>
11
+ ) {
12
+ const source = options?.cause instanceof Error ? options.cause : new Error();
13
+ const reasonMap = buildReasonMap<typeof ECIESErrorTypeEnum, EciesStringKey>(
14
+ ECIESErrorTypeEnum,
15
+ ['Error', 'ECIESError']
16
+ );
17
+
18
+ super(EciesComponentId, type, reasonMap, source, options, language, otherVars);
19
+ this.name = 'SimpleECIESError';
20
+ }
21
+ }
@@ -0,0 +1,6 @@
1
+ export class SimpleTestError extends Error {
2
+ constructor(message: string) {
3
+ super(message);
4
+ this.name = 'SimpleTestError';
5
+ }
6
+ }
@@ -0,0 +1,130 @@
1
+ /**
2
+ * ECIES i18n Setup - v2.0 Architecture
3
+ * Uses i18n-lib 2.0 patterns with runtime validation
4
+ */
5
+
6
+ import {
7
+ I18nEngine,
8
+ LanguageCodes,
9
+ createDefaultLanguages,
10
+ createCoreComponentRegistration,
11
+ } from '@digitaldefiance/i18n-lib';
12
+ import type { ComponentConfig, EngineConfig } from '@digitaldefiance/i18n-lib';
13
+ import { EciesStringKey } from './enumerations/ecies-string-key';
14
+ import { englishTranslations } from './translations/en-US';
15
+ import { frenchTranslations } from './translations/fr';
16
+ import { spanishTranslations } from './translations/es';
17
+ import { germanTranslations } from './translations/de';
18
+ import { mandarinChineseTranslations } from './translations/zh-cn';
19
+ import { japaneseTranslations } from './translations/ja';
20
+ import { ukrainianTranslations } from './translations/uk';
21
+
22
+ export const EciesI18nEngineKey = 'DigitalDefiance.Ecies.I18nEngine' as const;
23
+ export const EciesComponentId = 'ecies' as const;
24
+
25
+ /**
26
+ * Create ECIES component configuration with all translations
27
+ * Note: Includes all 8 supported languages
28
+ */
29
+ export function createEciesComponentConfig(): ComponentConfig {
30
+ return {
31
+ id: EciesComponentId,
32
+ strings: {
33
+ [LanguageCodes.EN_US]: englishTranslations,
34
+ [LanguageCodes.EN_GB]: englishTranslations,
35
+ [LanguageCodes.FR]: frenchTranslations,
36
+ [LanguageCodes.ES]: spanishTranslations,
37
+ [LanguageCodes.DE]: germanTranslations,
38
+ [LanguageCodes.ZH_CN]: mandarinChineseTranslations,
39
+ [LanguageCodes.JA]: japaneseTranslations,
40
+ [LanguageCodes.UK]: ukrainianTranslations,
41
+ },
42
+ };
43
+ }
44
+
45
+ /**
46
+ * Create ECIES i18n engine instance
47
+ * Uses i18n 2.0 pattern with runtime validation
48
+ * IMPORTANT: Uses 'default' as instance key so TypedHandleableError can find it
49
+ */
50
+ function createInstance(config?: EngineConfig): I18nEngine {
51
+ const engine = I18nEngine.registerIfNotExists('default', createDefaultLanguages(), config);
52
+
53
+ // Register core component first (required for error messages)
54
+ const coreReg = createCoreComponentRegistration();
55
+ engine.registerIfNotExists({
56
+ id: coreReg.component.id,
57
+ strings: coreReg.strings as Record<string, Record<string, string>>,
58
+ });
59
+
60
+ // Register ECIES component with aliases
61
+ const eciesConfig = createEciesComponentConfig();
62
+ const result = engine.registerIfNotExists({
63
+ ...eciesConfig,
64
+ aliases: ['EciesStringKey']
65
+ });
66
+
67
+ // Warn about missing translations (non-blocking)
68
+ if (!result.isValid && result.errors.length > 0) {
69
+ console.warn(
70
+ `ECIES component has ${result.errors.length} errors`,
71
+ result.errors.slice(0, 5) // Show first 5
72
+ );
73
+ }
74
+
75
+ return engine;
76
+ }
77
+
78
+ /**
79
+ * Lazy initialization with Proxy (like core-i18n.ts pattern)
80
+ */
81
+ let _eciesEngine: I18nEngine | undefined;
82
+
83
+ export function getEciesI18nEngine(config?: EngineConfig): I18nEngine {
84
+ if (!_eciesEngine || !I18nEngine.hasInstance('default')) {
85
+ _eciesEngine = createInstance(config);
86
+ }
87
+ return _eciesEngine;
88
+ }
89
+
90
+ /**
91
+ * Proxy for backward compatibility
92
+ */
93
+ export const eciesI18nEngine = new Proxy({} as I18nEngine, {
94
+ get(target, prop) {
95
+ return getEciesI18nEngine()[prop as keyof I18nEngine];
96
+ }
97
+ });
98
+
99
+ /**
100
+ * Reset function for tests
101
+ */
102
+ export function resetEciesI18nEngine(): void {
103
+ _eciesEngine = undefined;
104
+ }
105
+
106
+ /**
107
+ * Helper to translate ECIES strings
108
+ */
109
+ export function getEciesTranslation(
110
+ stringKey: EciesStringKey,
111
+ variables?: Record<string, string | number>,
112
+ language?: string,
113
+ ): string {
114
+ return getEciesI18nEngine().translate(EciesComponentId, stringKey, variables, language);
115
+ }
116
+
117
+ /**
118
+ * Safe translation with fallback
119
+ */
120
+ export function safeEciesTranslation(
121
+ stringKey: EciesStringKey,
122
+ variables?: Record<string, string | number>,
123
+ language?: string,
124
+ ): string {
125
+ try {
126
+ return getEciesTranslation(stringKey, variables, language);
127
+ } catch {
128
+ return `[${stringKey}]`;
129
+ }
130
+ }