@digitaldefiance/node-express-suite 1.0.2

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 (531) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +673 -0
  3. package/dist/application-base.d.ts +112 -0
  4. package/dist/application-base.d.ts.map +1 -0
  5. package/dist/application-base.js +301 -0
  6. package/dist/application-base.js.map +1 -0
  7. package/dist/application.d.ts +22 -0
  8. package/dist/application.d.ts.map +1 -0
  9. package/dist/application.js +123 -0
  10. package/dist/application.js.map +1 -0
  11. package/dist/backup-code.d.ts +67 -0
  12. package/dist/backup-code.d.ts.map +1 -0
  13. package/dist/backup-code.js +270 -0
  14. package/dist/backup-code.js.map +1 -0
  15. package/dist/constants.d.ts +16 -0
  16. package/dist/constants.d.ts.map +1 -0
  17. package/dist/constants.js +54 -0
  18. package/dist/constants.js.map +1 -0
  19. package/dist/controllers/base.d.ts +60 -0
  20. package/dist/controllers/base.d.ts.map +1 -0
  21. package/dist/controllers/base.js +270 -0
  22. package/dist/controllers/base.js.map +1 -0
  23. package/dist/controllers/index.d.ts +3 -0
  24. package/dist/controllers/index.d.ts.map +1 -0
  25. package/dist/controllers/index.js +19 -0
  26. package/dist/controllers/index.js.map +1 -0
  27. package/dist/controllers/user.d.ts +42 -0
  28. package/dist/controllers/user.d.ts.map +1 -0
  29. package/dist/controllers/user.js +750 -0
  30. package/dist/controllers/user.js.map +1 -0
  31. package/dist/decorators/base-controller.d.ts +9 -0
  32. package/dist/decorators/base-controller.d.ts.map +1 -0
  33. package/dist/decorators/base-controller.js +49 -0
  34. package/dist/decorators/base-controller.js.map +1 -0
  35. package/dist/decorators/controller.d.ts +31 -0
  36. package/dist/decorators/controller.d.ts.map +1 -0
  37. package/dist/decorators/controller.js +67 -0
  38. package/dist/decorators/controller.js.map +1 -0
  39. package/dist/decorators/index.d.ts +4 -0
  40. package/dist/decorators/index.d.ts.map +1 -0
  41. package/dist/decorators/index.js +20 -0
  42. package/dist/decorators/index.js.map +1 -0
  43. package/dist/decorators/zod-validation.d.ts +5 -0
  44. package/dist/decorators/zod-validation.d.ts.map +1 -0
  45. package/dist/decorators/zod-validation.js +47 -0
  46. package/dist/decorators/zod-validation.js.map +1 -0
  47. package/dist/defaults.d.ts +7 -0
  48. package/dist/defaults.d.ts.map +1 -0
  49. package/dist/defaults.js +83 -0
  50. package/dist/defaults.js.map +1 -0
  51. package/dist/documents/base.d.ts +3 -0
  52. package/dist/documents/base.d.ts.map +1 -0
  53. package/dist/documents/base.js +3 -0
  54. package/dist/documents/base.js.map +1 -0
  55. package/dist/documents/email-token.d.ts +8 -0
  56. package/dist/documents/email-token.d.ts.map +1 -0
  57. package/dist/documents/email-token.js +3 -0
  58. package/dist/documents/email-token.js.map +1 -0
  59. package/dist/documents/index.d.ts +8 -0
  60. package/dist/documents/index.d.ts.map +1 -0
  61. package/dist/documents/index.js +3 -0
  62. package/dist/documents/index.js.map +1 -0
  63. package/dist/documents/mnemonic.d.ts +8 -0
  64. package/dist/documents/mnemonic.d.ts.map +1 -0
  65. package/dist/documents/mnemonic.js +3 -0
  66. package/dist/documents/mnemonic.js.map +1 -0
  67. package/dist/documents/role.d.ts +8 -0
  68. package/dist/documents/role.d.ts.map +1 -0
  69. package/dist/documents/role.js +3 -0
  70. package/dist/documents/role.js.map +1 -0
  71. package/dist/documents/used-direct-login-token.d.ts +5 -0
  72. package/dist/documents/used-direct-login-token.d.ts.map +1 -0
  73. package/dist/documents/used-direct-login-token.js +3 -0
  74. package/dist/documents/used-direct-login-token.js.map +1 -0
  75. package/dist/documents/user-role.d.ts +8 -0
  76. package/dist/documents/user-role.d.ts.map +1 -0
  77. package/dist/documents/user-role.js +3 -0
  78. package/dist/documents/user-role.js.map +1 -0
  79. package/dist/documents/user.d.ts +9 -0
  80. package/dist/documents/user.d.ts.map +1 -0
  81. package/dist/documents/user.js +3 -0
  82. package/dist/documents/user.js.map +1 -0
  83. package/dist/enumerations/base-model-name.d.ts +38 -0
  84. package/dist/enumerations/base-model-name.d.ts.map +1 -0
  85. package/dist/enumerations/base-model-name.js +34 -0
  86. package/dist/enumerations/base-model-name.js.map +1 -0
  87. package/dist/enumerations/index.d.ts +4 -0
  88. package/dist/enumerations/index.d.ts.map +1 -0
  89. package/dist/enumerations/index.js +20 -0
  90. package/dist/enumerations/index.js.map +1 -0
  91. package/dist/enumerations/length-encoding-type.d.ts +7 -0
  92. package/dist/enumerations/length-encoding-type.d.ts.map +1 -0
  93. package/dist/enumerations/length-encoding-type.js +11 -0
  94. package/dist/enumerations/length-encoding-type.js.map +1 -0
  95. package/dist/enumerations/schema-collection.d.ts +34 -0
  96. package/dist/enumerations/schema-collection.d.ts.map +1 -0
  97. package/dist/enumerations/schema-collection.js +38 -0
  98. package/dist/enumerations/schema-collection.js.map +1 -0
  99. package/dist/enumerations/symmetric-error-type.d.ts +5 -0
  100. package/dist/enumerations/symmetric-error-type.d.ts.map +1 -0
  101. package/dist/enumerations/symmetric-error-type.js +9 -0
  102. package/dist/enumerations/symmetric-error-type.js.map +1 -0
  103. package/dist/environment.d.ts +189 -0
  104. package/dist/environment.d.ts.map +1 -0
  105. package/dist/environment.js +618 -0
  106. package/dist/environment.js.map +1 -0
  107. package/dist/error-factory.d.ts +6 -0
  108. package/dist/error-factory.d.ts.map +1 -0
  109. package/dist/error-factory.js +15 -0
  110. package/dist/error-factory.js.map +1 -0
  111. package/dist/errors/express-validation.d.ts +9 -0
  112. package/dist/errors/express-validation.d.ts.map +1 -0
  113. package/dist/errors/express-validation.js +17 -0
  114. package/dist/errors/express-validation.js.map +1 -0
  115. package/dist/errors/index.d.ts +13 -0
  116. package/dist/errors/index.d.ts.map +1 -0
  117. package/dist/errors/index.js +29 -0
  118. package/dist/errors/index.js.map +1 -0
  119. package/dist/errors/invalid-backup-code-version.d.ts +6 -0
  120. package/dist/errors/invalid-backup-code-version.d.ts.map +1 -0
  121. package/dist/errors/invalid-backup-code-version.js +14 -0
  122. package/dist/errors/invalid-backup-code-version.js.map +1 -0
  123. package/dist/errors/invalid-jwt-token.d.ts +5 -0
  124. package/dist/errors/invalid-jwt-token.d.ts.map +1 -0
  125. package/dist/errors/invalid-jwt-token.js +11 -0
  126. package/dist/errors/invalid-jwt-token.js.map +1 -0
  127. package/dist/errors/invalid-model.d.ts +6 -0
  128. package/dist/errors/invalid-model.d.ts.map +1 -0
  129. package/dist/errors/invalid-model.js +13 -0
  130. package/dist/errors/invalid-model.js.map +1 -0
  131. package/dist/errors/invalid-new-password.d.ts +5 -0
  132. package/dist/errors/invalid-new-password.d.ts.map +1 -0
  133. package/dist/errors/invalid-new-password.js +14 -0
  134. package/dist/errors/invalid-new-password.js.map +1 -0
  135. package/dist/errors/invalid-password.d.ts +5 -0
  136. package/dist/errors/invalid-password.d.ts.map +1 -0
  137. package/dist/errors/invalid-password.js +14 -0
  138. package/dist/errors/invalid-password.js.map +1 -0
  139. package/dist/errors/missing-validated-data.d.ts +7 -0
  140. package/dist/errors/missing-validated-data.d.ts.map +1 -0
  141. package/dist/errors/missing-validated-data.js +34 -0
  142. package/dist/errors/missing-validated-data.js.map +1 -0
  143. package/dist/errors/mnemonic-or-password-required.d.ts +5 -0
  144. package/dist/errors/mnemonic-or-password-required.d.ts.map +1 -0
  145. package/dist/errors/mnemonic-or-password-required.js +13 -0
  146. package/dist/errors/mnemonic-or-password-required.js.map +1 -0
  147. package/dist/errors/model-not-registered.d.ts +5 -0
  148. package/dist/errors/model-not-registered.d.ts.map +1 -0
  149. package/dist/errors/model-not-registered.js +12 -0
  150. package/dist/errors/model-not-registered.js.map +1 -0
  151. package/dist/errors/mongoose-validation.d.ts +11 -0
  152. package/dist/errors/mongoose-validation.d.ts.map +1 -0
  153. package/dist/errors/mongoose-validation.js +16 -0
  154. package/dist/errors/mongoose-validation.js.map +1 -0
  155. package/dist/errors/symmetric.d.ts +8 -0
  156. package/dist/errors/symmetric.d.ts.map +1 -0
  157. package/dist/errors/symmetric.js +23 -0
  158. package/dist/errors/symmetric.js.map +1 -0
  159. package/dist/errors/token-expired.d.ts +5 -0
  160. package/dist/errors/token-expired.d.ts.map +1 -0
  161. package/dist/errors/token-expired.js +11 -0
  162. package/dist/errors/token-expired.js.map +1 -0
  163. package/dist/get-language.d.ts +2 -0
  164. package/dist/get-language.d.ts.map +1 -0
  165. package/dist/get-language.js +30 -0
  166. package/dist/get-language.js.map +1 -0
  167. package/dist/get-timezone.d.ts +3 -0
  168. package/dist/get-timezone.d.ts.map +1 -0
  169. package/dist/get-timezone.js +31 -0
  170. package/dist/get-timezone.js.map +1 -0
  171. package/dist/index.d.ts +23 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js +39 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/interfaces/api-error-response.d.ts +5 -0
  176. package/dist/interfaces/api-error-response.d.ts.map +1 -0
  177. package/dist/interfaces/api-error-response.js +3 -0
  178. package/dist/interfaces/api-error-response.js.map +1 -0
  179. package/dist/interfaces/api-express-validation-error-response.d.ts +7 -0
  180. package/dist/interfaces/api-express-validation-error-response.d.ts.map +1 -0
  181. package/dist/interfaces/api-express-validation-error-response.js +3 -0
  182. package/dist/interfaces/api-express-validation-error-response.js.map +1 -0
  183. package/dist/interfaces/api-message-response.d.ts +4 -0
  184. package/dist/interfaces/api-message-response.d.ts.map +1 -0
  185. package/dist/interfaces/api-message-response.js +3 -0
  186. package/dist/interfaces/api-message-response.js.map +1 -0
  187. package/dist/interfaces/api-mongo-validation-error-response.d.ts +6 -0
  188. package/dist/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
  189. package/dist/interfaces/api-mongo-validation-error-response.js +3 -0
  190. package/dist/interfaces/api-mongo-validation-error-response.js.map +1 -0
  191. package/dist/interfaces/api-responses/backup-codes-response.d.ts +5 -0
  192. package/dist/interfaces/api-responses/backup-codes-response.d.ts.map +1 -0
  193. package/dist/interfaces/api-responses/backup-codes-response.js +3 -0
  194. package/dist/interfaces/api-responses/backup-codes-response.js.map +1 -0
  195. package/dist/interfaces/api-responses/challenge-response.d.ts +6 -0
  196. package/dist/interfaces/api-responses/challenge-response.d.ts.map +1 -0
  197. package/dist/interfaces/api-responses/challenge-response.js +3 -0
  198. package/dist/interfaces/api-responses/challenge-response.js.map +1 -0
  199. package/dist/interfaces/api-responses/code-count-response.d.ts +5 -0
  200. package/dist/interfaces/api-responses/code-count-response.d.ts.map +1 -0
  201. package/dist/interfaces/api-responses/code-count-response.js +3 -0
  202. package/dist/interfaces/api-responses/code-count-response.js.map +1 -0
  203. package/dist/interfaces/api-responses/index.d.ts +8 -0
  204. package/dist/interfaces/api-responses/index.d.ts.map +1 -0
  205. package/dist/interfaces/api-responses/index.js +24 -0
  206. package/dist/interfaces/api-responses/index.js.map +1 -0
  207. package/dist/interfaces/api-responses/login-response.d.ts +8 -0
  208. package/dist/interfaces/api-responses/login-response.d.ts.map +1 -0
  209. package/dist/interfaces/api-responses/login-response.js +3 -0
  210. package/dist/interfaces/api-responses/login-response.js.map +1 -0
  211. package/dist/interfaces/api-responses/mnemonic-response.d.ts +5 -0
  212. package/dist/interfaces/api-responses/mnemonic-response.d.ts.map +1 -0
  213. package/dist/interfaces/api-responses/mnemonic-response.js +3 -0
  214. package/dist/interfaces/api-responses/mnemonic-response.js.map +1 -0
  215. package/dist/interfaces/api-responses/registration-response.d.ts +6 -0
  216. package/dist/interfaces/api-responses/registration-response.d.ts.map +1 -0
  217. package/dist/interfaces/api-responses/registration-response.js +3 -0
  218. package/dist/interfaces/api-responses/registration-response.js.map +1 -0
  219. package/dist/interfaces/api-responses/request-user-response.d.ts +6 -0
  220. package/dist/interfaces/api-responses/request-user-response.d.ts.map +1 -0
  221. package/dist/interfaces/api-responses/request-user-response.js +3 -0
  222. package/dist/interfaces/api-responses/request-user-response.js.map +1 -0
  223. package/dist/interfaces/application.d.ts +12 -0
  224. package/dist/interfaces/application.d.ts.map +1 -0
  225. package/dist/interfaces/application.js +3 -0
  226. package/dist/interfaces/application.js.map +1 -0
  227. package/dist/interfaces/backend-objects/email-token.d.ts +4 -0
  228. package/dist/interfaces/backend-objects/email-token.d.ts.map +1 -0
  229. package/dist/interfaces/backend-objects/email-token.js +3 -0
  230. package/dist/interfaces/backend-objects/email-token.js.map +1 -0
  231. package/dist/interfaces/backend-objects/index.d.ts +5 -0
  232. package/dist/interfaces/backend-objects/index.d.ts.map +1 -0
  233. package/dist/interfaces/backend-objects/index.js +21 -0
  234. package/dist/interfaces/backend-objects/index.js.map +1 -0
  235. package/dist/interfaces/backend-objects/request-user.d.ts +5 -0
  236. package/dist/interfaces/backend-objects/request-user.d.ts.map +1 -0
  237. package/dist/interfaces/backend-objects/request-user.js +3 -0
  238. package/dist/interfaces/backend-objects/request-user.js.map +1 -0
  239. package/dist/interfaces/backend-objects/role.d.ts +4 -0
  240. package/dist/interfaces/backend-objects/role.d.ts.map +1 -0
  241. package/dist/interfaces/backend-objects/role.js +3 -0
  242. package/dist/interfaces/backend-objects/role.js.map +1 -0
  243. package/dist/interfaces/backend-objects/user.d.ts +4 -0
  244. package/dist/interfaces/backend-objects/user.d.ts.map +1 -0
  245. package/dist/interfaces/backend-objects/user.js +3 -0
  246. package/dist/interfaces/backend-objects/user.js.map +1 -0
  247. package/dist/interfaces/checksum-config.d.ts +5 -0
  248. package/dist/interfaces/checksum-config.d.ts.map +1 -0
  249. package/dist/interfaces/checksum-config.js +3 -0
  250. package/dist/interfaces/checksum-config.js.map +1 -0
  251. package/dist/interfaces/checksum-consts.d.ts +11 -0
  252. package/dist/interfaces/checksum-consts.d.ts.map +1 -0
  253. package/dist/interfaces/checksum-consts.js +3 -0
  254. package/dist/interfaces/checksum-consts.js.map +1 -0
  255. package/dist/interfaces/constants.d.ts +12 -0
  256. package/dist/interfaces/constants.d.ts.map +1 -0
  257. package/dist/interfaces/constants.js +3 -0
  258. package/dist/interfaces/constants.js.map +1 -0
  259. package/dist/interfaces/create-user-basics.d.ts +18 -0
  260. package/dist/interfaces/create-user-basics.d.ts.map +1 -0
  261. package/dist/interfaces/create-user-basics.js +3 -0
  262. package/dist/interfaces/create-user-basics.js.map +1 -0
  263. package/dist/interfaces/csp-config.d.ts +14 -0
  264. package/dist/interfaces/csp-config.d.ts.map +1 -0
  265. package/dist/interfaces/csp-config.js +3 -0
  266. package/dist/interfaces/csp-config.js.map +1 -0
  267. package/dist/interfaces/deep-partial.d.ts +4 -0
  268. package/dist/interfaces/deep-partial.d.ts.map +1 -0
  269. package/dist/interfaces/deep-partial.js +3 -0
  270. package/dist/interfaces/deep-partial.js.map +1 -0
  271. package/dist/interfaces/discriminator-collections.d.ts +7 -0
  272. package/dist/interfaces/discriminator-collections.d.ts.map +1 -0
  273. package/dist/interfaces/discriminator-collections.js +3 -0
  274. package/dist/interfaces/discriminator-collections.js.map +1 -0
  275. package/dist/interfaces/email-service.d.ts +4 -0
  276. package/dist/interfaces/email-service.d.ts.map +1 -0
  277. package/dist/interfaces/email-service.js +3 -0
  278. package/dist/interfaces/email-service.js.map +1 -0
  279. package/dist/interfaces/environment-mongo.d.ts +76 -0
  280. package/dist/interfaces/environment-mongo.d.ts.map +1 -0
  281. package/dist/interfaces/environment-mongo.js +3 -0
  282. package/dist/interfaces/environment-mongo.js.map +1 -0
  283. package/dist/interfaces/environment.d.ts +181 -0
  284. package/dist/interfaces/environment.d.ts.map +1 -0
  285. package/dist/interfaces/environment.js +3 -0
  286. package/dist/interfaces/environment.js.map +1 -0
  287. package/dist/interfaces/failable-result.d.ts +7 -0
  288. package/dist/interfaces/failable-result.d.ts.map +1 -0
  289. package/dist/interfaces/failable-result.js +3 -0
  290. package/dist/interfaces/failable-result.js.map +1 -0
  291. package/dist/interfaces/fec-consts.d.ts +5 -0
  292. package/dist/interfaces/fec-consts.d.ts.map +1 -0
  293. package/dist/interfaces/fec-consts.js +3 -0
  294. package/dist/interfaces/fec-consts.js.map +1 -0
  295. package/dist/interfaces/handleable-error-options.d.ts +7 -0
  296. package/dist/interfaces/handleable-error-options.d.ts.map +1 -0
  297. package/dist/interfaces/handleable-error-options.js +3 -0
  298. package/dist/interfaces/handleable-error-options.js.map +1 -0
  299. package/dist/interfaces/index.d.ts +30 -0
  300. package/dist/interfaces/index.d.ts.map +1 -0
  301. package/dist/interfaces/index.js +46 -0
  302. package/dist/interfaces/index.js.map +1 -0
  303. package/dist/interfaces/jwt-consts.d.ts +11 -0
  304. package/dist/interfaces/jwt-consts.d.ts.map +1 -0
  305. package/dist/interfaces/jwt-consts.js +3 -0
  306. package/dist/interfaces/jwt-consts.js.map +1 -0
  307. package/dist/interfaces/jwt-sign-response.d.ts +11 -0
  308. package/dist/interfaces/jwt-sign-response.d.ts.map +1 -0
  309. package/dist/interfaces/jwt-sign-response.js +3 -0
  310. package/dist/interfaces/jwt-sign-response.js.map +1 -0
  311. package/dist/interfaces/mongo-errors.d.ts +5 -0
  312. package/dist/interfaces/mongo-errors.d.ts.map +1 -0
  313. package/dist/interfaces/mongo-errors.js +3 -0
  314. package/dist/interfaces/mongo-errors.js.map +1 -0
  315. package/dist/interfaces/request-user.d.ts +42 -0
  316. package/dist/interfaces/request-user.d.ts.map +1 -0
  317. package/dist/interfaces/request-user.js +3 -0
  318. package/dist/interfaces/request-user.js.map +1 -0
  319. package/dist/interfaces/required-string-keys.d.ts +22 -0
  320. package/dist/interfaces/required-string-keys.d.ts.map +1 -0
  321. package/dist/interfaces/required-string-keys.js +3 -0
  322. package/dist/interfaces/required-string-keys.js.map +1 -0
  323. package/dist/interfaces/schema.d.ts +29 -0
  324. package/dist/interfaces/schema.d.ts.map +1 -0
  325. package/dist/interfaces/schema.js +3 -0
  326. package/dist/interfaces/schema.js.map +1 -0
  327. package/dist/interfaces/server-init-result.d.ts +35 -0
  328. package/dist/interfaces/server-init-result.d.ts.map +1 -0
  329. package/dist/interfaces/server-init-result.js +3 -0
  330. package/dist/interfaces/server-init-result.js.map +1 -0
  331. package/dist/interfaces/status-code-response.d.ts +7 -0
  332. package/dist/interfaces/status-code-response.d.ts.map +1 -0
  333. package/dist/interfaces/status-code-response.js +3 -0
  334. package/dist/interfaces/status-code-response.js.map +1 -0
  335. package/dist/interfaces/symmetric-encryption-results.d.ts +5 -0
  336. package/dist/interfaces/symmetric-encryption-results.d.ts.map +1 -0
  337. package/dist/interfaces/symmetric-encryption-results.js +3 -0
  338. package/dist/interfaces/symmetric-encryption-results.js.map +1 -0
  339. package/dist/interfaces/token-response.d.ts +5 -0
  340. package/dist/interfaces/token-response.d.ts.map +1 -0
  341. package/dist/interfaces/token-response.js +3 -0
  342. package/dist/interfaces/token-response.js.map +1 -0
  343. package/dist/middlewares/authenticate-crypto.d.ts +9 -0
  344. package/dist/middlewares/authenticate-crypto.d.ts.map +1 -0
  345. package/dist/middlewares/authenticate-crypto.js +146 -0
  346. package/dist/middlewares/authenticate-crypto.js.map +1 -0
  347. package/dist/middlewares/authenticate-token.d.ts +21 -0
  348. package/dist/middlewares/authenticate-token.d.ts.map +1 -0
  349. package/dist/middlewares/authenticate-token.js +102 -0
  350. package/dist/middlewares/authenticate-token.js.map +1 -0
  351. package/dist/middlewares/cleanup-crypto.d.ts +7 -0
  352. package/dist/middlewares/cleanup-crypto.d.ts.map +1 -0
  353. package/dist/middlewares/cleanup-crypto.js +32 -0
  354. package/dist/middlewares/cleanup-crypto.js.map +1 -0
  355. package/dist/middlewares/index.d.ts +5 -0
  356. package/dist/middlewares/index.d.ts.map +1 -0
  357. package/dist/middlewares/index.js +21 -0
  358. package/dist/middlewares/index.js.map +1 -0
  359. package/dist/middlewares/set-global-context-language.d.ts +3 -0
  360. package/dist/middlewares/set-global-context-language.d.ts.map +1 -0
  361. package/dist/middlewares/set-global-context-language.js +14 -0
  362. package/dist/middlewares/set-global-context-language.js.map +1 -0
  363. package/dist/middlewares.d.ts +18 -0
  364. package/dist/middlewares.d.ts.map +1 -0
  365. package/dist/middlewares.js +76 -0
  366. package/dist/middlewares.js.map +1 -0
  367. package/dist/model-registry.d.ts +23 -0
  368. package/dist/model-registry.d.ts.map +1 -0
  369. package/dist/model-registry.js +47 -0
  370. package/dist/model-registry.js.map +1 -0
  371. package/dist/models/email-token.d.ts +11 -0
  372. package/dist/models/email-token.d.ts.map +1 -0
  373. package/dist/models/email-token.js +11 -0
  374. package/dist/models/email-token.js.map +1 -0
  375. package/dist/models/index.d.ts +7 -0
  376. package/dist/models/index.d.ts.map +1 -0
  377. package/dist/models/index.js +23 -0
  378. package/dist/models/index.js.map +1 -0
  379. package/dist/models/mnemonic.d.ts +11 -0
  380. package/dist/models/mnemonic.d.ts.map +1 -0
  381. package/dist/models/mnemonic.js +11 -0
  382. package/dist/models/mnemonic.js.map +1 -0
  383. package/dist/models/role.d.ts +11 -0
  384. package/dist/models/role.d.ts.map +1 -0
  385. package/dist/models/role.js +11 -0
  386. package/dist/models/role.js.map +1 -0
  387. package/dist/models/used-direct-login-token.d.ts +11 -0
  388. package/dist/models/used-direct-login-token.d.ts.map +1 -0
  389. package/dist/models/used-direct-login-token.js +11 -0
  390. package/dist/models/used-direct-login-token.js.map +1 -0
  391. package/dist/models/user-role.d.ts +6 -0
  392. package/dist/models/user-role.d.ts.map +1 -0
  393. package/dist/models/user-role.js +10 -0
  394. package/dist/models/user-role.js.map +1 -0
  395. package/dist/models/user.d.ts +7 -0
  396. package/dist/models/user.d.ts.map +1 -0
  397. package/dist/models/user.js +11 -0
  398. package/dist/models/user.js.map +1 -0
  399. package/dist/registry/email-service-registry.d.ts +9 -0
  400. package/dist/registry/email-service-registry.d.ts.map +1 -0
  401. package/dist/registry/email-service-registry.js +17 -0
  402. package/dist/registry/email-service-registry.js.map +1 -0
  403. package/dist/registry/index.d.ts +2 -0
  404. package/dist/registry/index.d.ts.map +1 -0
  405. package/dist/registry/index.js +6 -0
  406. package/dist/registry/index.js.map +1 -0
  407. package/dist/routers/api.d.ts +23 -0
  408. package/dist/routers/api.d.ts.map +1 -0
  409. package/dist/routers/api.js +44 -0
  410. package/dist/routers/api.js.map +1 -0
  411. package/dist/routers/app.d.ts +24 -0
  412. package/dist/routers/app.d.ts.map +1 -0
  413. package/dist/routers/app.js +182 -0
  414. package/dist/routers/app.js.map +1 -0
  415. package/dist/routers/base.d.ts +8 -0
  416. package/dist/routers/base.d.ts.map +1 -0
  417. package/dist/routers/base.js +12 -0
  418. package/dist/routers/base.js.map +1 -0
  419. package/dist/routers/index.d.ts +3 -0
  420. package/dist/routers/index.d.ts.map +1 -0
  421. package/dist/routers/index.js +19 -0
  422. package/dist/routers/index.js.map +1 -0
  423. package/dist/schemas/email-token.d.ts +38 -0
  424. package/dist/schemas/email-token.d.ts.map +1 -0
  425. package/dist/schemas/email-token.js +56 -0
  426. package/dist/schemas/email-token.js.map +1 -0
  427. package/dist/schemas/mnemonic.d.ts +20 -0
  428. package/dist/schemas/mnemonic.d.ts.map +1 -0
  429. package/dist/schemas/mnemonic.js +30 -0
  430. package/dist/schemas/mnemonic.js.map +1 -0
  431. package/dist/schemas/role.d.ts +32 -0
  432. package/dist/schemas/role.d.ts.map +1 -0
  433. package/dist/schemas/role.js +86 -0
  434. package/dist/schemas/role.js.map +1 -0
  435. package/dist/schemas/schema.d.ts +40 -0
  436. package/dist/schemas/schema.d.ts.map +1 -0
  437. package/dist/schemas/schema.js +64 -0
  438. package/dist/schemas/schema.js.map +1 -0
  439. package/dist/schemas/used-direct-login-token.d.ts +27 -0
  440. package/dist/schemas/used-direct-login-token.d.ts.map +1 -0
  441. package/dist/schemas/used-direct-login-token.js +23 -0
  442. package/dist/schemas/used-direct-login-token.js.map +1 -0
  443. package/dist/schemas/user-role.d.ts +29 -0
  444. package/dist/schemas/user-role.d.ts.map +1 -0
  445. package/dist/schemas/user-role.js +54 -0
  446. package/dist/schemas/user-role.js.map +1 -0
  447. package/dist/schemas/user.d.ts +21 -0
  448. package/dist/schemas/user.d.ts.map +1 -0
  449. package/dist/schemas/user.js +178 -0
  450. package/dist/schemas/user.js.map +1 -0
  451. package/dist/services/backup-code.d.ts +76 -0
  452. package/dist/services/backup-code.d.ts.map +1 -0
  453. package/dist/services/backup-code.js +180 -0
  454. package/dist/services/backup-code.js.map +1 -0
  455. package/dist/services/base.d.ts +10 -0
  456. package/dist/services/base.d.ts.map +1 -0
  457. package/dist/services/base.js +14 -0
  458. package/dist/services/base.js.map +1 -0
  459. package/dist/services/checksum.d.ts +67 -0
  460. package/dist/services/checksum.d.ts.map +1 -0
  461. package/dist/services/checksum.js +175 -0
  462. package/dist/services/checksum.js.map +1 -0
  463. package/dist/services/crc.d.ts +87 -0
  464. package/dist/services/crc.d.ts.map +1 -0
  465. package/dist/services/crc.js +198 -0
  466. package/dist/services/crc.js.map +1 -0
  467. package/dist/services/database-initialization.d.ts +101 -0
  468. package/dist/services/database-initialization.d.ts.map +1 -0
  469. package/dist/services/database-initialization.js +779 -0
  470. package/dist/services/database-initialization.js.map +1 -0
  471. package/dist/services/direct-login-token.d.ts +6 -0
  472. package/dist/services/direct-login-token.d.ts.map +1 -0
  473. package/dist/services/direct-login-token.js +41 -0
  474. package/dist/services/direct-login-token.js.map +1 -0
  475. package/dist/services/fec-usage-example.d.ts +38 -0
  476. package/dist/services/fec-usage-example.d.ts.map +1 -0
  477. package/dist/services/fec-usage-example.js +77 -0
  478. package/dist/services/fec-usage-example.js.map +1 -0
  479. package/dist/services/fec.d.ts +46 -0
  480. package/dist/services/fec.d.ts.map +1 -0
  481. package/dist/services/fec.js +192 -0
  482. package/dist/services/fec.js.map +1 -0
  483. package/dist/services/index.d.ts +19 -0
  484. package/dist/services/index.d.ts.map +1 -0
  485. package/dist/services/index.js +35 -0
  486. package/dist/services/index.js.map +1 -0
  487. package/dist/services/jwt.d.ts +30 -0
  488. package/dist/services/jwt.d.ts.map +1 -0
  489. package/dist/services/jwt.js +90 -0
  490. package/dist/services/jwt.js.map +1 -0
  491. package/dist/services/key-wrapping.d.ts +60 -0
  492. package/dist/services/key-wrapping.d.ts.map +1 -0
  493. package/dist/services/key-wrapping.js +311 -0
  494. package/dist/services/key-wrapping.js.map +1 -0
  495. package/dist/services/mnemonic.d.ts +61 -0
  496. package/dist/services/mnemonic.d.ts.map +1 -0
  497. package/dist/services/mnemonic.js +112 -0
  498. package/dist/services/mnemonic.js.map +1 -0
  499. package/dist/services/request-user.d.ts +20 -0
  500. package/dist/services/request-user.d.ts.map +1 -0
  501. package/dist/services/request-user.js +50 -0
  502. package/dist/services/request-user.js.map +1 -0
  503. package/dist/services/role.d.ts +85 -0
  504. package/dist/services/role.d.ts.map +1 -0
  505. package/dist/services/role.js +254 -0
  506. package/dist/services/role.js.map +1 -0
  507. package/dist/services/symmetric.d.ts +42 -0
  508. package/dist/services/symmetric.d.ts.map +1 -0
  509. package/dist/services/symmetric.js +101 -0
  510. package/dist/services/symmetric.js.map +1 -0
  511. package/dist/services/system-user.d.ts +17 -0
  512. package/dist/services/system-user.d.ts.map +1 -0
  513. package/dist/services/system-user.js +46 -0
  514. package/dist/services/system-user.js.map +1 -0
  515. package/dist/services/user.d.ts +317 -0
  516. package/dist/services/user.d.ts.map +1 -0
  517. package/dist/services/user.js +1364 -0
  518. package/dist/services/user.js.map +1 -0
  519. package/dist/services/xor.d.ts +24 -0
  520. package/dist/services/xor.d.ts.map +1 -0
  521. package/dist/services/xor.js +37 -0
  522. package/dist/services/xor.js.map +1 -0
  523. package/dist/types.d.ts +70 -0
  524. package/dist/types.d.ts.map +1 -0
  525. package/dist/types.js +14 -0
  526. package/dist/types.js.map +1 -0
  527. package/dist/utils.d.ts +202 -0
  528. package/dist/utils.d.ts.map +1 -0
  529. package/dist/utils.js +786 -0
  530. package/dist/utils.js.map +1 -0
  531. package/package.json +60 -0
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BackupCodeService = void 0;
4
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
5
+ const node_ecies_lib_1 = require("@digitaldefiance/node-ecies-lib");
6
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
7
+ const crypto_1 = require("crypto");
8
+ const backup_code_1 = require("../backup-code");
9
+ const constants_1 = require("../constants");
10
+ const invalid_backup_code_version_1 = require("../errors/invalid-backup-code-version");
11
+ const base_1 = require("./base");
12
+ const symmetric_1 = require("./symmetric");
13
+ const system_user_1 = require("./system-user");
14
+ /**
15
+ * Service handling generation, storage, validation, consumption, and recovery using backup codes.
16
+ *
17
+ * v1 scheme:
18
+ * - Code: 32 lowercase alphanumerics (a–z0–9), displayed as 8 groups of 4: xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx
19
+ * - Checksum/tag: HKDF-SHA256(codeUtf8, salt, "backup-checksum") → 32 bytes (stored as hex)
20
+ * - KDF for encryption key: Argon2id(codeUtf8, salt) → 32 bytes
21
+ * - Encryption: SymmetricService AEAD (encryptedData must embed IV + authTag + ciphertext)
22
+ * - Wrapping: AEAD blob wrapped with system user's asymmetric key (ECIES)
23
+ */
24
+ class BackupCodeService extends base_1.BaseService {
25
+ /**
26
+ * Construct a BackupCodeService.
27
+ */
28
+ constructor(application, eciesService, keyWrappingService, roleService) {
29
+ super(application);
30
+ this.eciesService = eciesService;
31
+ this.keyWrappingService = keyWrappingService;
32
+ this.roleService = roleService;
33
+ }
34
+ /**
35
+ * Get the lazily-initialized system user for key wrapping/unwrapping.
36
+ */
37
+ getSystemUser() {
38
+ if (!this.systemUser) {
39
+ this.systemUser = system_user_1.SystemUserService.getSystemUser(this.application.environment);
40
+ }
41
+ return this.systemUser;
42
+ }
43
+ /**
44
+ * Forcibly set the system user (for database initialization)
45
+ * @param user
46
+ */
47
+ setSystemUser(user) {
48
+ this.systemUser = user;
49
+ }
50
+ /**
51
+ * v1: Consume (validate and remove) a backup code via constant-time checksum match.
52
+ */
53
+ useBackupCodeV1(encryptedBackupCodes, backupCode) {
54
+ const normalizedCode = backup_code_1.BackupCode.normalizeCode(backupCode);
55
+ if (!constants_1.Constants.BACKUP_CODES.NormalizedHexRegex.test(normalizedCode)) {
56
+ throw new suite_core_lib_1.InvalidBackupCodeError();
57
+ }
58
+ const codeBytes = Buffer.from(normalizedCode, 'utf8');
59
+ try {
60
+ for (const code of encryptedBackupCodes) {
61
+ if (code.version !== backup_code_1.BackupCode.BackupCodeVersion)
62
+ continue;
63
+ const checksumSalt = Buffer.from(code.checksumSalt, 'hex');
64
+ const expected = backup_code_1.BackupCode.hkdfSha256(codeBytes, checksumSalt, Buffer.from('backup-checksum'), 32);
65
+ if (code.checksum.length === expected.length * 2 &&
66
+ (0, crypto_1.timingSafeEqual)(Buffer.from(code.checksum, 'hex'), expected)) {
67
+ const checksumHex = expected.toString('hex');
68
+ return {
69
+ newCodesArray: encryptedBackupCodes.filter((c) => c.checksum !== checksumHex),
70
+ code,
71
+ };
72
+ }
73
+ }
74
+ throw new suite_core_lib_1.InvalidBackupCodeError();
75
+ }
76
+ finally {
77
+ codeBytes.fill(0);
78
+ }
79
+ }
80
+ /**
81
+ * Consume a backup code by first detecting the version and then dispatching to the appropriate handler.
82
+ */
83
+ useBackupCode(encryptedBackupCodes, backupCode) {
84
+ const version = backup_code_1.BackupCode.detectBackupCodeVersion(encryptedBackupCodes, backupCode);
85
+ switch (version) {
86
+ case backup_code_1.BackupCode.BackupCodeVersion:
87
+ return this.useBackupCodeV1(encryptedBackupCodes.filter((c) => c.version === backup_code_1.BackupCode.BackupCodeVersion), backupCode);
88
+ default:
89
+ throw new invalid_backup_code_version_1.InvalidBackupCodeVersionError(version);
90
+ }
91
+ }
92
+ /**
93
+ * v1: Recover a user's private key using a backup code.
94
+ */
95
+ async recoverKeyWithBackupCodeV1(userDoc, backupCode, newPassword, session) {
96
+ const normalizedCode = backup_code_1.BackupCode.normalizeCode(backupCode);
97
+ return await this.withTransaction(async (sess) => {
98
+ const { code, newCodesArray } = this.useBackupCodeV1(userDoc.backupCodes, normalizedCode);
99
+ userDoc.backupCodes = newCodesArray;
100
+ let decryptionKey;
101
+ try {
102
+ const adminMember = this.getSystemUser();
103
+ decryptionKey = await backup_code_1.BackupCode.getBackupKeyV1(code.checksumSalt, normalizedCode);
104
+ const privateKeyUnwrapped = adminMember.decryptData(Buffer.from(code.encrypted, 'hex'));
105
+ const decryptedPrivateKey = new ecies_lib_1.SecureBuffer(symmetric_1.SymmetricService.decryptBuffer(privateKeyUnwrapped, decryptionKey));
106
+ const memberType = await this.roleService.getMemberType(userDoc, session);
107
+ const user = new node_ecies_lib_1.Member(this.eciesService, memberType, userDoc.username, new ecies_lib_1.EmailString(userDoc.email), Buffer.from(userDoc.publicKey, 'hex'), decryptedPrivateKey, undefined, userDoc._id, new Date(userDoc.createdAt), new Date(userDoc.updatedAt));
108
+ if (!newPassword) {
109
+ await userDoc.save({ session: sess });
110
+ return {
111
+ userDoc,
112
+ user,
113
+ codeCount: newCodesArray.length,
114
+ };
115
+ }
116
+ const wrapped = this.keyWrappingService.wrapSecret(decryptedPrivateKey, newPassword);
117
+ userDoc.passwordWrappedPrivateKey = wrapped;
118
+ await userDoc.save({ session: sess });
119
+ return { userDoc, user, codeCount: newCodesArray.length };
120
+ }
121
+ finally {
122
+ if (decryptionKey)
123
+ decryptionKey.fill(0);
124
+ }
125
+ }, session, {
126
+ timeoutMs: this.application.environment.mongo.transactionTimeout * 5,
127
+ });
128
+ }
129
+ /**
130
+ * Recover a user's private key using a backup code (version-dispatched).
131
+ */
132
+ async recoverKeyWithBackupCode(userDoc, backupCode, newPassword, session) {
133
+ const version = backup_code_1.BackupCode.detectBackupCodeVersion(userDoc.backupCodes, backupCode);
134
+ switch (version) {
135
+ case backup_code_1.BackupCode.BackupCodeVersion:
136
+ return this.recoverKeyWithBackupCodeV1(userDoc, backupCode, newPassword, session);
137
+ default:
138
+ throw new invalid_backup_code_version_1.InvalidBackupCodeVersionError(version);
139
+ }
140
+ }
141
+ /**
142
+ * Rewrap system-wrapped AEAD blobs from old system key to new one without touching inner AEAD.
143
+ */
144
+ async rewrapAllUsersBackupCodes(fetchBatch, saveUser, oldSystem, newSystem, options) {
145
+ const batchSize = options?.batchSize ?? 500;
146
+ let processed = 0;
147
+ let afterId;
148
+ for (;;) {
149
+ const users = await fetchBatch(afterId, batchSize);
150
+ if (!users.length)
151
+ break;
152
+ for (const user of users) {
153
+ let modified = false;
154
+ for (const bc of user.backupCodes ?? []) {
155
+ try {
156
+ const sealed = oldSystem.decryptData(Buffer.from(bc.encrypted, 'hex'));
157
+ const rewrapped = newSystem.encryptData(sealed).toString('hex');
158
+ if (rewrapped !== bc.encrypted) {
159
+ bc.encrypted = rewrapped;
160
+ modified = true;
161
+ }
162
+ }
163
+ catch (e) {
164
+ throw new Error(`Failed to rewrap backup code for user ${user._id}: ${e.message}`);
165
+ }
166
+ }
167
+ if (modified) {
168
+ await saveUser(user);
169
+ processed++;
170
+ options?.onProgress?.(processed);
171
+ }
172
+ }
173
+ afterId =
174
+ users[users.length - 1]?._id ?? undefined;
175
+ }
176
+ return processed;
177
+ }
178
+ }
179
+ exports.BackupCodeService = BackupCodeService;
180
+ //# sourceMappingURL=backup-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-code.js","sourceRoot":"","sources":["../../src/services/backup-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ClientSession } from 'mongoose';
2
+ import { IApplication } from '../interfaces/application';
3
+ import { TransactionCallback } from '../types';
4
+ import { TransactionOptions } from '../utils';
5
+ export declare class BaseService<TApplication extends IApplication = IApplication> {
6
+ protected readonly application: TApplication;
7
+ constructor(application: TApplication);
8
+ withTransaction<T>(callback: TransactionCallback<T>, session?: ClientSession, options?: TransactionOptions, ...args: any): Promise<T>;
9
+ }
10
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/services/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAElB,qBAAa,WAAW,CAAC,YAAY,SAAS,YAAY,GAAG,YAAY;IACvE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;gBAEjC,WAAW,EAAE,YAAY;IAGxB,eAAe,CAAC,CAAC,EAC5B,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAChC,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,kBAAkB,EAC5B,GAAG,IAAI,EAAE,GAAG;CAWf"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseService = void 0;
4
+ const utils_1 = require("../utils");
5
+ class BaseService {
6
+ constructor(application) {
7
+ this.application = application;
8
+ }
9
+ async withTransaction(callback, session, options, ...args) {
10
+ return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, session, callback, options ?? {}, ...args);
11
+ }
12
+ }
13
+ exports.BaseService = BaseService;
14
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/services/base.ts"],"names":[],"mappings":";;;AAGA,oCAGkB;AAElB,MAAa,WAAW;IAGtB,YAAY,WAAyB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IACM,KAAK,CAAC,eAAe,CAC1B,QAAgC,EAChC,OAAuB,EACvB,OAA4B,EAC5B,GAAG,IAAS;QAEZ,OAAO,MAAM,IAAA,uBAAoB,EAC/B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAC9B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,EAClD,OAAO,EACP,QAAQ,EACR,OAAO,IAAI,EAAE,EACb,GAAG,IAAI,CACR,CAAC;IACJ,CAAC;CACF;AArBD,kCAqBC"}
@@ -0,0 +1,67 @@
1
+ import { ChecksumBuffer, ChecksumString } from '@digitaldefiance/node-ecies-lib';
2
+ import { IChecksumConfig } from '../interfaces/checksum-config';
3
+ export declare class ChecksumService {
4
+ private readonly config;
5
+ constructor(config?: Partial<IChecksumConfig>);
6
+ /**
7
+ * Calculate a checksum for a buffer
8
+ * @param data - The data to calculate the checksum for
9
+ * @returns The checksum as a Buffer
10
+ */
11
+ calculateChecksum(data: Buffer): ChecksumBuffer;
12
+ /**
13
+ * Calculate a checksum for multiple buffers
14
+ * @param buffers - The buffers to calculate the checksum for
15
+ * @returns The checksum as a Buffer
16
+ */
17
+ calculateChecksumForBuffers(buffers: Buffer[]): ChecksumBuffer;
18
+ /**
19
+ * Calculate a checksum for a string
20
+ * @param str - The string to calculate the checksum for
21
+ * @returns The checksum as a Buffer
22
+ */
23
+ calculateChecksumForString(str: string): ChecksumBuffer;
24
+ /**
25
+ * Compare two checksums for equality
26
+ * @param checksum1 - The first checksum
27
+ * @param checksum2 - The second checksum
28
+ * @returns True if the checksums are equal, false otherwise
29
+ */
30
+ compareChecksums(checksum1: ChecksumBuffer, checksum2: ChecksumBuffer): boolean;
31
+ /**
32
+ * Convert a checksum to a hex string
33
+ * @param checksum - The checksum to convert
34
+ * @returns The checksum as a hex string
35
+ */
36
+ checksumToHexString(checksum: ChecksumBuffer): ChecksumString;
37
+ /**
38
+ * Convert a hex string to a checksum
39
+ * @param hexString - The hex string to convert
40
+ * @returns The checksum as a Buffer
41
+ */
42
+ hexStringToChecksum(hexString: string): ChecksumBuffer;
43
+ /**
44
+ * Validate a checksum buffer
45
+ * @param checksum - The checksum to validate
46
+ * @returns True if the checksum is valid, false otherwise
47
+ */
48
+ validateChecksum(checksum: ChecksumBuffer): boolean;
49
+ /**
50
+ * Calculate a checksum for a file
51
+ * @param filePath - The path to the file
52
+ * @returns The checksum as a Buffer
53
+ */
54
+ calculateChecksumForFile(filePath: string): Promise<ChecksumBuffer>;
55
+ /**
56
+ * Internal file reading method
57
+ * @private
58
+ */
59
+ private readFile;
60
+ /**
61
+ * Calculate a checksum for a stream
62
+ * @param stream - The readable stream
63
+ * @returns The checksum as a Buffer
64
+ */
65
+ calculateChecksumForStream(stream: NodeJS.ReadableStream): Promise<ChecksumBuffer>;
66
+ }
67
+ //# sourceMappingURL=checksum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../src/services/checksum.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAQ7C;;;;OAIG;IACI,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAOtD;;;;OAIG;IACI,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc;IASrE;;;;OAIG;IACI,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;IAI9D;;;;;OAKG;IACI,gBAAgB,CACrB,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,cAAc,GACxB,OAAO;IAUV;;;;OAIG;IACI,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc;IAIpE;;;;OAIG;IACI,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAO7D;;;;OAIG;IACI,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO;IAI1D;;;;OAIG;IACU,wBAAwB,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC;IAQ1B;;;OAGG;YACW,QAAQ;IAWtB;;;;OAIG;IACI,0BAA0B,CAC/B,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,OAAO,CAAC,cAAc,CAAC;CAoB3B"}
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ChecksumService = void 0;
37
+ const crypto_1 = require("crypto");
38
+ const constants_1 = require("../constants");
39
+ class ChecksumService {
40
+ constructor(config) {
41
+ this.config = {
42
+ algorithm: constants_1.CHECKSUM.ALGORITHM,
43
+ encoding: constants_1.CHECKSUM.ENCODING,
44
+ ...config,
45
+ };
46
+ }
47
+ /**
48
+ * Calculate a checksum for a buffer
49
+ * @param data - The data to calculate the checksum for
50
+ * @returns The checksum as a Buffer
51
+ */
52
+ calculateChecksum(data) {
53
+ const hash = (0, crypto_1.createHash)(this.config.algorithm);
54
+ hash.update(data);
55
+ const digest = hash.digest();
56
+ return Buffer.from(digest);
57
+ }
58
+ /**
59
+ * Calculate a checksum for multiple buffers
60
+ * @param buffers - The buffers to calculate the checksum for
61
+ * @returns The checksum as a Buffer
62
+ */
63
+ calculateChecksumForBuffers(buffers) {
64
+ const hash = (0, crypto_1.createHash)(this.config.algorithm);
65
+ for (const buffer of buffers) {
66
+ hash.update(buffer);
67
+ }
68
+ const digest = hash.digest();
69
+ return Buffer.from(digest);
70
+ }
71
+ /**
72
+ * Calculate a checksum for a string
73
+ * @param str - The string to calculate the checksum for
74
+ * @returns The checksum as a Buffer
75
+ */
76
+ calculateChecksumForString(str) {
77
+ return this.calculateChecksum(Buffer.from(str, 'utf8'));
78
+ }
79
+ /**
80
+ * Compare two checksums for equality
81
+ * @param checksum1 - The first checksum
82
+ * @param checksum2 - The second checksum
83
+ * @returns True if the checksums are equal, false otherwise
84
+ */
85
+ compareChecksums(checksum1, checksum2) {
86
+ if (checksum1.length !== constants_1.CHECKSUM.SHA3_BUFFER_LENGTH ||
87
+ checksum2.length !== constants_1.CHECKSUM.SHA3_BUFFER_LENGTH) {
88
+ return false;
89
+ }
90
+ return checksum1.equals(checksum2);
91
+ }
92
+ /**
93
+ * Convert a checksum to a hex string
94
+ * @param checksum - The checksum to convert
95
+ * @returns The checksum as a hex string
96
+ */
97
+ checksumToHexString(checksum) {
98
+ return checksum.toString(constants_1.CHECKSUM.ENCODING);
99
+ }
100
+ /**
101
+ * Convert a hex string to a checksum
102
+ * @param hexString - The hex string to convert
103
+ * @returns The checksum as a Buffer
104
+ */
105
+ hexStringToChecksum(hexString) {
106
+ if (hexString.length !== constants_1.CHECKSUM.SHA3_BUFFER_LENGTH * 2) {
107
+ throw new Error('Invalid checksum hex string length');
108
+ }
109
+ return Buffer.from(hexString, constants_1.CHECKSUM.ENCODING);
110
+ }
111
+ /**
112
+ * Validate a checksum buffer
113
+ * @param checksum - The checksum to validate
114
+ * @returns True if the checksum is valid, false otherwise
115
+ */
116
+ validateChecksum(checksum) {
117
+ return checksum.length === constants_1.CHECKSUM.SHA3_BUFFER_LENGTH;
118
+ }
119
+ /**
120
+ * Calculate a checksum for a file
121
+ * @param filePath - The path to the file
122
+ * @returns The checksum as a Buffer
123
+ */
124
+ async calculateChecksumForFile(filePath) {
125
+ // Removed dynamic import by using the data service to read file data
126
+ // This is a temporary solution that can be replaced with a proper file service
127
+ // The implementation now delegates file reading to the caller
128
+ const buffer = Buffer.from(await this.readFile(filePath));
129
+ return this.calculateChecksum(buffer);
130
+ }
131
+ /**
132
+ * Internal file reading method
133
+ * @private
134
+ */
135
+ async readFile(filePath) {
136
+ // Import fs using a static import that's available at module load time
137
+ // This solves the dynamic import/require issues
138
+ try {
139
+ const { readFile: fsReadFile } = await Promise.resolve().then(() => __importStar(require('fs/promises')));
140
+ return await fsReadFile(filePath);
141
+ }
142
+ catch {
143
+ throw new Error(`Failed to read file at path: ${filePath}`);
144
+ }
145
+ }
146
+ /**
147
+ * Calculate a checksum for a stream
148
+ * @param stream - The readable stream
149
+ * @returns The checksum as a Buffer
150
+ */
151
+ calculateChecksumForStream(stream) {
152
+ return new Promise((resolve, reject) => {
153
+ const hash = (0, crypto_1.createHash)(this.config.algorithm);
154
+ stream.on('data', (chunk) => {
155
+ // Ensure chunk is a Buffer before updating hash
156
+ if (Buffer.isBuffer(chunk)) {
157
+ hash.update(chunk);
158
+ }
159
+ else if (typeof chunk === 'number') {
160
+ hash.update(Buffer.from([chunk]));
161
+ }
162
+ else {
163
+ hash.update(Buffer.from(chunk));
164
+ }
165
+ });
166
+ stream.on('end', () => {
167
+ const digest = hash.digest();
168
+ resolve(Buffer.from(digest));
169
+ });
170
+ stream.on('error', reject);
171
+ });
172
+ }
173
+ }
174
+ exports.ChecksumService = ChecksumService;
175
+ //# sourceMappingURL=checksum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../src/services/checksum.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { Readable } from 'stream';
2
+ export declare class CrcService {
3
+ /**
4
+ * Perform a CRC8 checksum on the data
5
+ * @param data - The data to checksum
6
+ * @returns The CRC8 checksum as a Buffer
7
+ */
8
+ crc8(data: Buffer): Buffer;
9
+ /**
10
+ * Calculates the CRC8 of a buffer or readable stream
11
+ * @param input - The buffer or readable stream to calculate the CRC8 of
12
+ * @returns The CRC8 as a Buffer
13
+ */
14
+ crc8Async(input: Buffer | Readable): Promise<Buffer>;
15
+ /**
16
+ * Verify a CRC8 checksum on the data
17
+ * @param data - The data to verify
18
+ * @param expectedCrc - The expected CRC8 checksum
19
+ * @returns True if the checksum matches, false otherwise
20
+ */
21
+ verifyCrc8(data: Buffer, expectedCrc: Buffer | number): boolean;
22
+ /**
23
+ * Validates a CRC8 against a buffer or readable stream
24
+ * @param data The data to validate
25
+ * @param expectedCrc8 The CRC8 to validate against
26
+ * @returns True if the CRC8 is valid, false otherwise
27
+ */
28
+ verifyCrc8Async(data: Buffer | Readable, expectedCrc8: Buffer): Promise<boolean>;
29
+ /**
30
+ * Perform a CRC16 checksum on the data
31
+ * @param data - The data to checksum
32
+ * @returns The CRC16 checksum as a Buffer
33
+ */
34
+ crc16(data: Buffer): Buffer;
35
+ /**
36
+ * Calculates the CRC16 of a buffer or readable stream
37
+ * @param input - The buffer or readable stream to calculate the CRC16 of
38
+ * @returns The CRC16 as a Buffer
39
+ */
40
+ crc16Async(input: Buffer | Readable): Promise<Buffer>;
41
+ /**
42
+ * Verify a CRC16 checksum on the data
43
+ * @param data - The data to verify
44
+ * @param expectedCrc - The expected CRC16 checksum
45
+ * @returns True if the checksum matches, false otherwise
46
+ */
47
+ verifyCrc16(data: Buffer, expectedCrc: Buffer | number): boolean;
48
+ /**
49
+ * Validates a CRC16 against a buffer or readable stream
50
+ * @param data The data to validate
51
+ * @param expectedCrc16 The CRC16 to validate against
52
+ * @returns True if the CRC16 is valid, false otherwise
53
+ */
54
+ verifyCrc16Async(data: Buffer | Readable, expectedCrc16: Buffer): Promise<boolean>;
55
+ /**
56
+ * Perform a CRC32 checksum on the data
57
+ * @param data - The data to checksum
58
+ * @returns The CRC32 checksum as a Buffer
59
+ */
60
+ crc32(data: Buffer): Buffer;
61
+ /**
62
+ * Calculates the CRC32 of a buffer or readable stream
63
+ * @param input - The buffer or readable stream to calculate the CRC32 of
64
+ * @returns The CRC32 as a number
65
+ */
66
+ /**
67
+ * Calculates the CRC32 of a buffer or readable stream
68
+ * @param input - The buffer or readable stream to calculate the CRC32 of
69
+ * @returns The CRC32 as a Buffer
70
+ */
71
+ crc32Async(input: Buffer | Readable): Promise<Buffer>;
72
+ /**
73
+ * Verify a CRC32 checksum on the data
74
+ * @param data - The data to verify
75
+ * @param expectedCrc - The expected CRC32 checksum
76
+ * @returns True if the checksum matches, false otherwise
77
+ */
78
+ verifyCrc32(data: Buffer, expectedCrc: Buffer | number): boolean;
79
+ /**
80
+ * Validates a CRC32 against a buffer or readable stream
81
+ * @param data The data to validate
82
+ * @param expectedCrc32 The CRC32 to validate against
83
+ * @returns True if the CRC32 is valid, false otherwise
84
+ */
85
+ verifyCrc32Async(data: Buffer | Readable, expectedCrc32: Buffer): Promise<boolean>;
86
+ }
87
+ //# sourceMappingURL=crc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crc.d.ts","sourceRoot":"","sources":["../../src/services/crc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,qBAAa,UAAU;IACrB;;;;OAIG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMjC;;;;OAIG;IACU,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBjE;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAStE;;;;;OAKG;IACU,eAAe,CAC1B,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMlC;;;;OAIG;IACU,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBlE;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IASvE;;;;;OAKG;IACU,gBAAgB,CAC3B,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMlC;;;;OAIG;IACH;;;;OAIG;IACU,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBlE;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IASvE;;;;;OAKG;IACU,gBAAgB,CAC3B,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC;CAIpB"}