@digitaldefiance/node-express-suite 1.0.23 → 1.0.25

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 (632) hide show
  1. package/README.md +8 -0
  2. package/package.json +8 -7
  3. package/src/application-base.d.ts +112 -0
  4. package/src/application-base.d.ts.map +1 -0
  5. package/src/application-base.js +335 -0
  6. package/src/application-base.js.map +1 -0
  7. package/src/application.d.ts +20 -0
  8. package/src/application.d.ts.map +1 -0
  9. package/src/application.js +124 -0
  10. package/src/application.js.map +1 -0
  11. package/src/backup-code.d.ts +67 -0
  12. package/src/backup-code.d.ts.map +1 -0
  13. package/src/backup-code.js +238 -0
  14. package/src/backup-code.js.map +1 -0
  15. package/src/constants.d.ts +16 -0
  16. package/src/constants.d.ts.map +1 -0
  17. package/src/constants.js +54 -0
  18. package/src/constants.js.map +1 -0
  19. package/src/controllers/base.d.ts +63 -0
  20. package/src/controllers/base.d.ts.map +1 -0
  21. package/src/controllers/base.js +272 -0
  22. package/src/controllers/base.js.map +1 -0
  23. package/src/controllers/{index.ts → index.d.ts} +1 -0
  24. package/src/controllers/index.d.ts.map +1 -0
  25. package/src/controllers/index.js +6 -0
  26. package/src/controllers/index.js.map +1 -0
  27. package/src/controllers/user.d.ts +45 -0
  28. package/src/controllers/user.d.ts.map +1 -0
  29. package/src/controllers/user.js +748 -0
  30. package/src/controllers/user.js.map +1 -0
  31. package/src/decorators/base-controller.d.ts +14 -0
  32. package/src/decorators/base-controller.d.ts.map +1 -0
  33. package/src/decorators/base-controller.js +49 -0
  34. package/src/decorators/base-controller.js.map +1 -0
  35. package/src/decorators/controller.d.ts +32 -0
  36. package/src/decorators/controller.d.ts.map +1 -0
  37. package/src/decorators/controller.js +67 -0
  38. package/src/decorators/controller.js.map +1 -0
  39. package/src/decorators/{index.ts → index.d.ts} +1 -0
  40. package/src/decorators/index.d.ts.map +1 -0
  41. package/src/decorators/index.js +7 -0
  42. package/src/decorators/index.js.map +1 -0
  43. package/src/decorators/zod-validation.d.ts +5 -0
  44. package/src/decorators/zod-validation.d.ts.map +1 -0
  45. package/src/decorators/zod-validation.js +47 -0
  46. package/src/decorators/zod-validation.js.map +1 -0
  47. package/src/defaults.d.ts +7 -0
  48. package/src/defaults.d.ts.map +1 -0
  49. package/src/defaults.js +83 -0
  50. package/src/defaults.js.map +1 -0
  51. package/src/documents/base.d.ts +3 -0
  52. package/src/documents/base.d.ts.map +1 -0
  53. package/src/documents/base.js +3 -0
  54. package/src/documents/base.js.map +1 -0
  55. package/src/documents/email-token.d.ts +8 -0
  56. package/src/documents/email-token.d.ts.map +1 -0
  57. package/src/documents/email-token.js +3 -0
  58. package/src/documents/email-token.js.map +1 -0
  59. package/src/documents/{index.ts → index.d.ts} +1 -0
  60. package/src/documents/index.d.ts.map +1 -0
  61. package/src/documents/index.js +3 -0
  62. package/src/documents/index.js.map +1 -0
  63. package/src/documents/{mnemonic.ts → mnemonic.d.ts} +2 -5
  64. package/src/documents/mnemonic.d.ts.map +1 -0
  65. package/src/documents/mnemonic.js +3 -0
  66. package/src/documents/mnemonic.js.map +1 -0
  67. package/src/documents/{role.ts → role.d.ts} +2 -5
  68. package/src/documents/role.d.ts.map +1 -0
  69. package/src/documents/role.js +3 -0
  70. package/src/documents/role.js.map +1 -0
  71. package/src/documents/used-direct-login-token.d.ts +5 -0
  72. package/src/documents/used-direct-login-token.d.ts.map +1 -0
  73. package/src/documents/used-direct-login-token.js +3 -0
  74. package/src/documents/used-direct-login-token.js.map +1 -0
  75. package/src/documents/{user-role.ts → user-role.d.ts} +2 -5
  76. package/src/documents/user-role.d.ts.map +1 -0
  77. package/src/documents/user-role.js +3 -0
  78. package/src/documents/user-role.js.map +1 -0
  79. package/src/documents/{user.ts → user.d.ts} +2 -4
  80. package/src/documents/user.d.ts.map +1 -0
  81. package/src/documents/user.js +3 -0
  82. package/src/documents/user.js.map +1 -0
  83. package/src/enumerations/base-model-name.d.ts +38 -0
  84. package/src/enumerations/base-model-name.d.ts.map +1 -0
  85. package/src/enumerations/base-model-name.js +34 -0
  86. package/src/enumerations/base-model-name.js.map +1 -0
  87. package/src/enumerations/{index.ts → index.d.ts} +1 -0
  88. package/src/enumerations/index.d.ts.map +1 -0
  89. package/src/enumerations/index.js +8 -0
  90. package/src/enumerations/index.js.map +1 -0
  91. package/src/enumerations/length-encoding-type.d.ts +7 -0
  92. package/src/enumerations/length-encoding-type.d.ts.map +1 -0
  93. package/src/enumerations/length-encoding-type.js +11 -0
  94. package/src/enumerations/length-encoding-type.js.map +1 -0
  95. package/src/enumerations/schema-collection.d.ts +34 -0
  96. package/src/enumerations/schema-collection.d.ts.map +1 -0
  97. package/src/enumerations/schema-collection.js +38 -0
  98. package/src/enumerations/schema-collection.js.map +1 -0
  99. package/src/enumerations/symmetric-error-type.d.ts +5 -0
  100. package/src/enumerations/symmetric-error-type.d.ts.map +1 -0
  101. package/src/enumerations/symmetric-error-type.js +9 -0
  102. package/src/enumerations/symmetric-error-type.js.map +1 -0
  103. package/src/environment.d.ts +189 -0
  104. package/src/environment.d.ts.map +1 -0
  105. package/src/environment.js +620 -0
  106. package/src/environment.js.map +1 -0
  107. package/src/errors/express-validation.d.ts +9 -0
  108. package/src/errors/express-validation.d.ts.map +1 -0
  109. package/src/errors/express-validation.js +18 -0
  110. package/src/errors/express-validation.js.map +1 -0
  111. package/src/errors/{index.ts → index.d.ts} +1 -0
  112. package/src/errors/index.d.ts.map +1 -0
  113. package/src/errors/index.js +16 -0
  114. package/src/errors/index.js.map +1 -0
  115. package/src/errors/invalid-backup-code-version.d.ts +6 -0
  116. package/src/errors/invalid-backup-code-version.d.ts.map +1 -0
  117. package/src/errors/invalid-backup-code-version.js +15 -0
  118. package/src/errors/invalid-backup-code-version.js.map +1 -0
  119. package/src/errors/invalid-jwt-token.d.ts +5 -0
  120. package/src/errors/invalid-jwt-token.d.ts.map +1 -0
  121. package/src/errors/invalid-jwt-token.js +11 -0
  122. package/src/errors/invalid-jwt-token.js.map +1 -0
  123. package/src/errors/invalid-model.d.ts +6 -0
  124. package/src/errors/invalid-model.d.ts.map +1 -0
  125. package/src/errors/invalid-model.js +14 -0
  126. package/src/errors/invalid-model.js.map +1 -0
  127. package/src/errors/invalid-new-password.d.ts +5 -0
  128. package/src/errors/invalid-new-password.d.ts.map +1 -0
  129. package/src/errors/invalid-new-password.js +14 -0
  130. package/src/errors/invalid-new-password.js.map +1 -0
  131. package/src/errors/invalid-password.d.ts +5 -0
  132. package/src/errors/invalid-password.d.ts.map +1 -0
  133. package/src/errors/invalid-password.js +14 -0
  134. package/src/errors/invalid-password.js.map +1 -0
  135. package/src/errors/missing-validated-data.d.ts +7 -0
  136. package/src/errors/missing-validated-data.d.ts.map +1 -0
  137. package/src/errors/missing-validated-data.js +36 -0
  138. package/src/errors/missing-validated-data.js.map +1 -0
  139. package/src/errors/mnemonic-or-password-required.d.ts +5 -0
  140. package/src/errors/mnemonic-or-password-required.d.ts.map +1 -0
  141. package/src/errors/mnemonic-or-password-required.js +13 -0
  142. package/src/errors/mnemonic-or-password-required.js.map +1 -0
  143. package/src/errors/model-not-registered.d.ts +5 -0
  144. package/src/errors/model-not-registered.d.ts.map +1 -0
  145. package/src/errors/model-not-registered.js +12 -0
  146. package/src/errors/model-not-registered.js.map +1 -0
  147. package/src/errors/mongoose-validation.d.ts +11 -0
  148. package/src/errors/mongoose-validation.d.ts.map +1 -0
  149. package/src/errors/mongoose-validation.js +17 -0
  150. package/src/errors/mongoose-validation.js.map +1 -0
  151. package/src/errors/symmetric.d.ts +8 -0
  152. package/src/errors/symmetric.d.ts.map +1 -0
  153. package/src/errors/symmetric.js +23 -0
  154. package/src/errors/symmetric.js.map +1 -0
  155. package/src/errors/token-expired.d.ts +5 -0
  156. package/src/errors/token-expired.d.ts.map +1 -0
  157. package/src/errors/token-expired.js +11 -0
  158. package/src/errors/token-expired.js.map +1 -0
  159. package/src/get-language.d.ts +2 -0
  160. package/src/get-language.d.ts.map +1 -0
  161. package/src/get-language.js +30 -0
  162. package/src/get-language.js.map +1 -0
  163. package/src/get-timezone.d.ts +3 -0
  164. package/src/get-timezone.d.ts.map +1 -0
  165. package/src/get-timezone.js +31 -0
  166. package/src/get-timezone.js.map +1 -0
  167. package/src/{index.ts → index.d.ts} +1 -1
  168. package/src/index.d.ts.map +1 -0
  169. package/src/index.js +28 -0
  170. package/src/index.js.map +1 -0
  171. package/src/interfaces/{api-error-response.ts → api-error-response.d.ts} +2 -2
  172. package/src/interfaces/api-error-response.d.ts.map +1 -0
  173. package/src/interfaces/api-error-response.js +3 -0
  174. package/src/interfaces/api-error-response.js.map +1 -0
  175. package/src/interfaces/api-express-validation-error-response.d.ts +7 -0
  176. package/src/interfaces/api-express-validation-error-response.d.ts.map +1 -0
  177. package/src/interfaces/api-express-validation-error-response.js +3 -0
  178. package/src/interfaces/api-express-validation-error-response.js.map +1 -0
  179. package/src/interfaces/api-message-response.d.ts +4 -0
  180. package/src/interfaces/api-message-response.d.ts.map +1 -0
  181. package/src/interfaces/api-message-response.js +3 -0
  182. package/src/interfaces/api-message-response.js.map +1 -0
  183. package/src/interfaces/{api-mongo-validation-error-response.ts → api-mongo-validation-error-response.d.ts} +2 -2
  184. package/src/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
  185. package/src/interfaces/api-mongo-validation-error-response.js +3 -0
  186. package/src/interfaces/api-mongo-validation-error-response.js.map +1 -0
  187. package/src/interfaces/api-responses/{backup-codes-response.ts → backup-codes-response.d.ts} +2 -2
  188. package/src/interfaces/api-responses/backup-codes-response.d.ts.map +1 -0
  189. package/src/interfaces/api-responses/backup-codes-response.js +3 -0
  190. package/src/interfaces/api-responses/backup-codes-response.js.map +1 -0
  191. package/src/interfaces/api-responses/{challenge-response.ts → challenge-response.d.ts} +3 -3
  192. package/src/interfaces/api-responses/challenge-response.d.ts.map +1 -0
  193. package/src/interfaces/api-responses/challenge-response.js +3 -0
  194. package/src/interfaces/api-responses/challenge-response.js.map +1 -0
  195. package/src/interfaces/api-responses/{code-count-response.ts → code-count-response.d.ts} +2 -2
  196. package/src/interfaces/api-responses/code-count-response.d.ts.map +1 -0
  197. package/src/interfaces/api-responses/code-count-response.js +3 -0
  198. package/src/interfaces/api-responses/code-count-response.js.map +1 -0
  199. package/src/interfaces/api-responses/{index.ts → index.d.ts} +1 -0
  200. package/src/interfaces/api-responses/index.d.ts.map +1 -0
  201. package/src/interfaces/api-responses/index.js +11 -0
  202. package/src/interfaces/api-responses/index.js.map +1 -0
  203. package/src/interfaces/api-responses/{login-response.ts → login-response.d.ts} +4 -4
  204. package/src/interfaces/api-responses/login-response.d.ts.map +1 -0
  205. package/src/interfaces/api-responses/login-response.js +3 -0
  206. package/src/interfaces/api-responses/login-response.js.map +1 -0
  207. package/src/interfaces/api-responses/{mnemonic-response.ts → mnemonic-response.d.ts} +2 -2
  208. package/src/interfaces/api-responses/mnemonic-response.d.ts.map +1 -0
  209. package/src/interfaces/api-responses/mnemonic-response.js +3 -0
  210. package/src/interfaces/api-responses/mnemonic-response.js.map +1 -0
  211. package/src/interfaces/api-responses/{registration-response.ts → registration-response.d.ts} +3 -3
  212. package/src/interfaces/api-responses/registration-response.d.ts.map +1 -0
  213. package/src/interfaces/api-responses/registration-response.js +3 -0
  214. package/src/interfaces/api-responses/registration-response.js.map +1 -0
  215. package/src/interfaces/api-responses/{request-user-response.ts → request-user-response.d.ts} +2 -2
  216. package/src/interfaces/api-responses/request-user-response.d.ts.map +1 -0
  217. package/src/interfaces/api-responses/request-user-response.js +3 -0
  218. package/src/interfaces/api-responses/request-user-response.js.map +1 -0
  219. package/src/interfaces/{application.ts → application.d.ts} +7 -7
  220. package/src/interfaces/application.d.ts.map +1 -0
  221. package/src/interfaces/application.js +3 -0
  222. package/src/interfaces/application.js.map +1 -0
  223. package/src/interfaces/backend-objects/email-token.d.ts +4 -0
  224. package/src/interfaces/backend-objects/email-token.d.ts.map +1 -0
  225. package/src/interfaces/backend-objects/email-token.js +3 -0
  226. package/src/interfaces/backend-objects/email-token.js.map +1 -0
  227. package/src/interfaces/backend-objects/{index.ts → index.d.ts} +1 -0
  228. package/src/interfaces/backend-objects/index.d.ts.map +1 -0
  229. package/src/interfaces/backend-objects/index.js +8 -0
  230. package/src/interfaces/backend-objects/index.js.map +1 -0
  231. package/src/interfaces/backend-objects/{request-user.ts → request-user.d.ts} +2 -7
  232. package/src/interfaces/backend-objects/request-user.d.ts.map +1 -0
  233. package/src/interfaces/backend-objects/request-user.js +3 -0
  234. package/src/interfaces/backend-objects/request-user.js.map +1 -0
  235. package/src/interfaces/backend-objects/{role.ts → role.d.ts} +1 -1
  236. package/src/interfaces/backend-objects/role.d.ts.map +1 -0
  237. package/src/interfaces/backend-objects/role.js +3 -0
  238. package/src/interfaces/backend-objects/role.js.map +1 -0
  239. package/src/interfaces/backend-objects/user.d.ts +4 -0
  240. package/src/interfaces/backend-objects/user.d.ts.map +1 -0
  241. package/src/interfaces/backend-objects/user.js +3 -0
  242. package/src/interfaces/backend-objects/user.js.map +1 -0
  243. package/src/interfaces/checksum-config.d.ts +5 -0
  244. package/src/interfaces/checksum-config.d.ts.map +1 -0
  245. package/src/interfaces/checksum-config.js +3 -0
  246. package/src/interfaces/checksum-config.js.map +1 -0
  247. package/src/interfaces/checksum-consts.d.ts +11 -0
  248. package/src/interfaces/checksum-consts.d.ts.map +1 -0
  249. package/src/interfaces/checksum-consts.js +3 -0
  250. package/src/interfaces/checksum-consts.js.map +1 -0
  251. package/src/interfaces/{constants.ts → constants.d.ts} +5 -5
  252. package/src/interfaces/constants.d.ts.map +1 -0
  253. package/src/interfaces/constants.js +3 -0
  254. package/src/interfaces/constants.js.map +1 -0
  255. package/src/interfaces/create-user-basics.d.ts +18 -0
  256. package/src/interfaces/create-user-basics.d.ts.map +1 -0
  257. package/src/interfaces/create-user-basics.js +3 -0
  258. package/src/interfaces/create-user-basics.js.map +1 -0
  259. package/src/interfaces/csp-config.d.ts +14 -0
  260. package/src/interfaces/csp-config.d.ts.map +1 -0
  261. package/src/interfaces/csp-config.js +3 -0
  262. package/src/interfaces/csp-config.js.map +1 -0
  263. package/src/interfaces/deep-partial.d.ts +4 -0
  264. package/src/interfaces/deep-partial.d.ts.map +1 -0
  265. package/src/interfaces/deep-partial.js +3 -0
  266. package/src/interfaces/deep-partial.js.map +1 -0
  267. package/src/interfaces/{discriminator-collections.ts → discriminator-collections.d.ts} +3 -3
  268. package/src/interfaces/discriminator-collections.d.ts.map +1 -0
  269. package/src/interfaces/discriminator-collections.js +3 -0
  270. package/src/interfaces/discriminator-collections.js.map +1 -0
  271. package/src/interfaces/email-service.d.ts +4 -0
  272. package/src/interfaces/email-service.d.ts.map +1 -0
  273. package/src/interfaces/email-service.js +3 -0
  274. package/src/interfaces/email-service.js.map +1 -0
  275. package/src/interfaces/environment-mongo.d.ts +76 -0
  276. package/src/interfaces/environment-mongo.d.ts.map +1 -0
  277. package/src/interfaces/environment-mongo.js +3 -0
  278. package/src/interfaces/environment-mongo.js.map +1 -0
  279. package/src/interfaces/environment.d.ts +181 -0
  280. package/src/interfaces/environment.d.ts.map +1 -0
  281. package/src/interfaces/environment.js +3 -0
  282. package/src/interfaces/environment.js.map +1 -0
  283. package/src/interfaces/failable-result.d.ts +7 -0
  284. package/src/interfaces/failable-result.d.ts.map +1 -0
  285. package/src/interfaces/failable-result.js +3 -0
  286. package/src/interfaces/failable-result.js.map +1 -0
  287. package/src/interfaces/fec-consts.d.ts +5 -0
  288. package/src/interfaces/fec-consts.d.ts.map +1 -0
  289. package/src/interfaces/fec-consts.js +3 -0
  290. package/src/interfaces/fec-consts.js.map +1 -0
  291. package/src/interfaces/handleable-error-options.d.ts +7 -0
  292. package/src/interfaces/handleable-error-options.d.ts.map +1 -0
  293. package/src/interfaces/handleable-error-options.js +3 -0
  294. package/src/interfaces/handleable-error-options.js.map +1 -0
  295. package/src/interfaces/{index.ts → index.d.ts} +1 -0
  296. package/src/interfaces/index.d.ts.map +1 -0
  297. package/src/interfaces/index.js +33 -0
  298. package/src/interfaces/index.js.map +1 -0
  299. package/src/interfaces/jwt-consts.d.ts +11 -0
  300. package/src/interfaces/jwt-consts.d.ts.map +1 -0
  301. package/src/interfaces/jwt-consts.js +3 -0
  302. package/src/interfaces/jwt-consts.js.map +1 -0
  303. package/src/interfaces/jwt-sign-response.d.ts +11 -0
  304. package/src/interfaces/jwt-sign-response.d.ts.map +1 -0
  305. package/src/interfaces/jwt-sign-response.js +3 -0
  306. package/src/interfaces/jwt-sign-response.js.map +1 -0
  307. package/src/interfaces/mongo-errors.d.ts +5 -0
  308. package/src/interfaces/mongo-errors.d.ts.map +1 -0
  309. package/src/interfaces/mongo-errors.js +3 -0
  310. package/src/interfaces/mongo-errors.js.map +1 -0
  311. package/src/interfaces/request-user.d.ts +42 -0
  312. package/src/interfaces/request-user.d.ts.map +1 -0
  313. package/src/interfaces/request-user.js +3 -0
  314. package/src/interfaces/request-user.js.map +1 -0
  315. package/src/interfaces/required-string-keys.d.ts +22 -0
  316. package/src/interfaces/required-string-keys.d.ts.map +1 -0
  317. package/src/interfaces/required-string-keys.js +3 -0
  318. package/src/interfaces/required-string-keys.js.map +1 -0
  319. package/src/interfaces/schema.d.ts +29 -0
  320. package/src/interfaces/schema.d.ts.map +1 -0
  321. package/src/interfaces/schema.js +3 -0
  322. package/src/interfaces/schema.js.map +1 -0
  323. package/src/interfaces/server-init-result.d.ts +35 -0
  324. package/src/interfaces/server-init-result.d.ts.map +1 -0
  325. package/src/interfaces/server-init-result.js +3 -0
  326. package/src/interfaces/server-init-result.js.map +1 -0
  327. package/src/interfaces/status-code-response.d.ts +7 -0
  328. package/src/interfaces/status-code-response.d.ts.map +1 -0
  329. package/src/interfaces/status-code-response.js +3 -0
  330. package/src/interfaces/status-code-response.js.map +1 -0
  331. package/src/interfaces/symmetric-encryption-results.d.ts +3 -3
  332. package/src/interfaces/symmetric-encryption-results.d.ts.map +1 -1
  333. package/src/interfaces/symmetric-encryption-results.js.map +1 -1
  334. package/src/interfaces/{token-response.ts → token-response.d.ts} +2 -2
  335. package/src/interfaces/token-response.d.ts.map +1 -0
  336. package/src/interfaces/token-response.js +3 -0
  337. package/src/interfaces/token-response.js.map +1 -0
  338. package/src/middlewares/authenticate-crypto.d.ts +13 -0
  339. package/src/middlewares/authenticate-crypto.d.ts.map +1 -0
  340. package/src/middlewares/authenticate-crypto.js +146 -0
  341. package/src/middlewares/authenticate-crypto.js.map +1 -0
  342. package/src/middlewares/authenticate-token.d.ts +24 -0
  343. package/src/middlewares/authenticate-token.d.ts.map +1 -0
  344. package/src/middlewares/authenticate-token.js +102 -0
  345. package/src/middlewares/authenticate-token.js.map +1 -0
  346. package/src/middlewares/cleanup-crypto.d.ts +7 -0
  347. package/src/middlewares/cleanup-crypto.d.ts.map +1 -0
  348. package/src/middlewares/cleanup-crypto.js +32 -0
  349. package/src/middlewares/cleanup-crypto.js.map +1 -0
  350. package/src/middlewares/{index.ts → index.d.ts} +1 -0
  351. package/src/middlewares/index.d.ts.map +1 -0
  352. package/src/middlewares/index.js +8 -0
  353. package/src/middlewares/index.js.map +1 -0
  354. package/src/middlewares/set-global-context-language.d.ts +3 -0
  355. package/src/middlewares/set-global-context-language.d.ts.map +1 -0
  356. package/src/middlewares/set-global-context-language.js +14 -0
  357. package/src/middlewares/set-global-context-language.js.map +1 -0
  358. package/src/middlewares.d.ts +18 -0
  359. package/src/middlewares.d.ts.map +1 -0
  360. package/src/middlewares.js +74 -0
  361. package/src/middlewares.js.map +1 -0
  362. package/src/model-registry.d.ts +23 -0
  363. package/src/model-registry.d.ts.map +1 -0
  364. package/src/model-registry.js +47 -0
  365. package/src/model-registry.js.map +1 -0
  366. package/src/models/email-token.d.ts +11 -0
  367. package/src/models/email-token.d.ts.map +1 -0
  368. package/src/models/email-token.js +11 -0
  369. package/src/models/email-token.js.map +1 -0
  370. package/src/models/{index.ts → index.d.ts} +1 -0
  371. package/src/models/index.d.ts.map +1 -0
  372. package/src/models/index.js +10 -0
  373. package/src/models/index.js.map +1 -0
  374. package/src/models/mnemonic.d.ts +11 -0
  375. package/src/models/mnemonic.d.ts.map +1 -0
  376. package/src/models/mnemonic.js +11 -0
  377. package/src/models/mnemonic.js.map +1 -0
  378. package/src/models/role.d.ts +11 -0
  379. package/src/models/role.d.ts.map +1 -0
  380. package/src/models/role.js +11 -0
  381. package/src/models/role.js.map +1 -0
  382. package/src/models/used-direct-login-token.d.ts +11 -0
  383. package/src/models/used-direct-login-token.d.ts.map +1 -0
  384. package/src/models/used-direct-login-token.js +11 -0
  385. package/src/models/used-direct-login-token.js.map +1 -0
  386. package/src/models/user-role.d.ts +6 -0
  387. package/src/models/user-role.d.ts.map +1 -0
  388. package/src/models/user-role.js +10 -0
  389. package/src/models/user-role.js.map +1 -0
  390. package/src/models/user.d.ts +7 -0
  391. package/src/models/user.d.ts.map +1 -0
  392. package/src/models/user.js +11 -0
  393. package/src/models/user.js.map +1 -0
  394. package/src/registry/email-service-registry.d.ts +9 -0
  395. package/src/registry/email-service-registry.d.ts.map +1 -0
  396. package/src/registry/email-service-registry.js +18 -0
  397. package/src/registry/email-service-registry.js.map +1 -0
  398. package/src/registry/{index.ts → index.d.ts} +1 -0
  399. package/src/registry/index.d.ts.map +1 -0
  400. package/src/registry/index.js +6 -0
  401. package/src/registry/index.js.map +1 -0
  402. package/src/routers/api.d.ts +27 -0
  403. package/src/routers/api.d.ts.map +1 -0
  404. package/src/routers/api.js +52 -0
  405. package/src/routers/api.js.map +1 -0
  406. package/src/routers/app.d.ts +28 -0
  407. package/src/routers/app.d.ts.map +1 -0
  408. package/src/routers/app.js +186 -0
  409. package/src/routers/app.js.map +1 -0
  410. package/src/routers/base.d.ts +12 -0
  411. package/src/routers/base.d.ts.map +1 -0
  412. package/src/routers/base.js +14 -0
  413. package/src/routers/base.js.map +1 -0
  414. package/src/routers/{index.ts → index.d.ts} +1 -0
  415. package/src/routers/index.d.ts.map +1 -0
  416. package/src/routers/index.js +7 -0
  417. package/src/routers/index.js.map +1 -0
  418. package/src/schemas/email-token.d.ts +38 -0
  419. package/src/schemas/email-token.d.ts.map +1 -0
  420. package/src/schemas/email-token.js +54 -0
  421. package/src/schemas/email-token.js.map +1 -0
  422. package/src/schemas/{index.ts → index.d.ts} +2 -1
  423. package/src/schemas/index.d.ts.map +1 -0
  424. package/src/schemas/index.js +11 -0
  425. package/src/schemas/index.js.map +1 -0
  426. package/src/schemas/mnemonic.d.ts +20 -0
  427. package/src/schemas/mnemonic.d.ts.map +1 -0
  428. package/src/schemas/mnemonic.js +30 -0
  429. package/src/schemas/mnemonic.js.map +1 -0
  430. package/src/schemas/role.d.ts +32 -0
  431. package/src/schemas/role.d.ts.map +1 -0
  432. package/src/schemas/role.js +86 -0
  433. package/src/schemas/role.js.map +1 -0
  434. package/src/schemas/schema.d.ts +40 -0
  435. package/src/schemas/schema.d.ts.map +1 -0
  436. package/src/schemas/schema.js +62 -0
  437. package/src/schemas/schema.js.map +1 -0
  438. package/src/schemas/used-direct-login-token.d.ts +27 -0
  439. package/src/schemas/used-direct-login-token.d.ts.map +1 -0
  440. package/src/schemas/used-direct-login-token.js +23 -0
  441. package/src/schemas/used-direct-login-token.js.map +1 -0
  442. package/src/schemas/user-role.d.ts +29 -0
  443. package/src/schemas/user-role.d.ts.map +1 -0
  444. package/src/schemas/user-role.js +54 -0
  445. package/src/schemas/user-role.js.map +1 -0
  446. package/src/schemas/user.d.ts +21 -0
  447. package/src/schemas/user.d.ts.map +1 -0
  448. package/src/schemas/user.js +176 -0
  449. package/src/schemas/user.js.map +1 -0
  450. package/src/services/backup-code.d.ts +78 -0
  451. package/src/services/backup-code.d.ts.map +1 -0
  452. package/src/services/backup-code.js +184 -0
  453. package/src/services/backup-code.js.map +1 -0
  454. package/src/services/base.d.ts +13 -0
  455. package/src/services/base.d.ts.map +1 -0
  456. package/src/services/base.js +15 -0
  457. package/src/services/base.js.map +1 -0
  458. package/src/services/checksum.d.ts +67 -0
  459. package/src/services/checksum.d.ts.map +1 -0
  460. package/src/services/checksum.js +143 -0
  461. package/src/services/checksum.js.map +1 -0
  462. package/src/services/crc.d.ts +87 -0
  463. package/src/services/crc.d.ts.map +1 -0
  464. package/src/services/crc.js +198 -0
  465. package/src/services/crc.js.map +1 -0
  466. package/src/services/database-initialization.d.ts +105 -0
  467. package/src/services/database-initialization.d.ts.map +1 -0
  468. package/src/services/database-initialization.js +782 -0
  469. package/src/services/database-initialization.js.map +1 -0
  470. package/src/services/db-init-cache.d.ts +7 -13
  471. package/src/services/db-init-cache.d.ts.map +1 -0
  472. package/src/services/db-init-cache.js +3 -0
  473. package/src/services/db-init-cache.js.map +1 -0
  474. package/src/services/direct-login-token.d.ts +9 -0
  475. package/src/services/direct-login-token.d.ts.map +1 -0
  476. package/src/services/direct-login-token.js +41 -0
  477. package/src/services/direct-login-token.js.map +1 -0
  478. package/src/services/fec-usage-example.d.ts +38 -0
  479. package/src/services/fec-usage-example.d.ts.map +1 -0
  480. package/src/services/fec-usage-example.js +75 -0
  481. package/src/services/fec-usage-example.js.map +1 -0
  482. package/src/services/fec.d.ts +46 -0
  483. package/src/services/fec.d.ts.map +1 -0
  484. package/src/services/fec.js +192 -0
  485. package/src/services/fec.js.map +1 -0
  486. package/src/services/{index.ts → index.d.ts} +1 -0
  487. package/src/services/index.d.ts.map +1 -0
  488. package/src/services/index.js +22 -0
  489. package/src/services/index.js.map +1 -0
  490. package/src/services/jwt.d.ts +33 -0
  491. package/src/services/jwt.d.ts.map +1 -0
  492. package/src/services/jwt.js +91 -0
  493. package/src/services/jwt.js.map +1 -0
  494. package/src/services/key-wrapping.d.ts +60 -0
  495. package/src/services/key-wrapping.d.ts.map +1 -0
  496. package/src/services/key-wrapping.js +311 -0
  497. package/src/services/key-wrapping.js.map +1 -0
  498. package/src/services/mnemonic.d.ts +61 -0
  499. package/src/services/mnemonic.d.ts.map +1 -0
  500. package/src/services/mnemonic.js +115 -0
  501. package/src/services/mnemonic.js.map +1 -0
  502. package/src/services/request-user.d.ts +20 -0
  503. package/src/services/request-user.d.ts.map +1 -0
  504. package/src/services/request-user.js +50 -0
  505. package/src/services/request-user.js.map +1 -0
  506. package/src/services/role.d.ts +88 -0
  507. package/src/services/role.d.ts.map +1 -0
  508. package/src/services/role.js +263 -0
  509. package/src/services/role.js.map +1 -0
  510. package/src/services/symmetric.d.ts +42 -0
  511. package/src/services/symmetric.d.ts.map +1 -0
  512. package/src/services/symmetric.js +101 -0
  513. package/src/services/symmetric.js.map +1 -0
  514. package/src/services/system-user.d.ts +17 -0
  515. package/src/services/system-user.d.ts.map +1 -0
  516. package/src/services/system-user.js +46 -0
  517. package/src/services/system-user.js.map +1 -0
  518. package/src/services/user.d.ts +320 -0
  519. package/src/services/user.d.ts.map +1 -0
  520. package/src/services/user.js +1378 -0
  521. package/src/services/user.js.map +1 -0
  522. package/src/services/xor.d.ts +24 -0
  523. package/src/services/xor.d.ts.map +1 -0
  524. package/src/services/xor.js +37 -0
  525. package/src/services/xor.js.map +1 -0
  526. package/src/types.d.ts +66 -40
  527. package/src/types.d.ts.map +1 -0
  528. package/src/types.js +14 -0
  529. package/src/types.js.map +1 -0
  530. package/src/utils.d.ts +202 -0
  531. package/src/utils.d.ts.map +1 -0
  532. package/src/utils.js +784 -0
  533. package/src/utils.js.map +1 -0
  534. package/LICENSE +0 -21
  535. package/src/application-base.ts +0 -492
  536. package/src/application.ts +0 -254
  537. package/src/backup-code.ts +0 -336
  538. package/src/constants.ts +0 -69
  539. package/src/controllers/base.ts +0 -440
  540. package/src/controllers/user.ts +0 -1451
  541. package/src/decorators/base-controller.ts +0 -61
  542. package/src/decorators/controller.ts +0 -109
  543. package/src/decorators/zod-validation.ts +0 -57
  544. package/src/defaults.ts +0 -94
  545. package/src/documents/base.ts +0 -7
  546. package/src/documents/email-token.ts +0 -14
  547. package/src/documents/used-direct-login-token.ts +0 -7
  548. package/src/enumerations/base-model-name.ts +0 -41
  549. package/src/enumerations/length-encoding-type.ts +0 -6
  550. package/src/enumerations/schema-collection.ts +0 -33
  551. package/src/enumerations/symmetric-error-type.ts +0 -4
  552. package/src/environment.ts +0 -770
  553. package/src/errors/express-validation.ts +0 -21
  554. package/src/errors/invalid-backup-code-version.ts +0 -14
  555. package/src/errors/invalid-jwt-token.ts +0 -10
  556. package/src/errors/invalid-model.ts +0 -11
  557. package/src/errors/invalid-new-password.ts +0 -18
  558. package/src/errors/invalid-password.ts +0 -13
  559. package/src/errors/missing-validated-data.ts +0 -36
  560. package/src/errors/mnemonic-or-password-required.ts +0 -12
  561. package/src/errors/model-not-registered.ts +0 -11
  562. package/src/errors/mongoose-validation.ts +0 -34
  563. package/src/errors/symmetric.ts +0 -41
  564. package/src/errors/token-expired.ts +0 -10
  565. package/src/get-language.ts +0 -53
  566. package/src/get-timezone.ts +0 -45
  567. package/src/interfaces/api-express-validation-error-response.ts +0 -8
  568. package/src/interfaces/api-message-response.ts +0 -3
  569. package/src/interfaces/backend-objects/email-token.ts +0 -11
  570. package/src/interfaces/backend-objects/user.ts +0 -9
  571. package/src/interfaces/checksum-config.ts +0 -4
  572. package/src/interfaces/checksum-consts.ts +0 -13
  573. package/src/interfaces/create-user-basics.ts +0 -17
  574. package/src/interfaces/csp-config.ts +0 -35
  575. package/src/interfaces/deep-partial.ts +0 -3
  576. package/src/interfaces/email-service.ts +0 -8
  577. package/src/interfaces/environment-mongo.ts +0 -76
  578. package/src/interfaces/environment.ts +0 -181
  579. package/src/interfaces/failable-result.ts +0 -6
  580. package/src/interfaces/fec-consts.ts +0 -4
  581. package/src/interfaces/handleable-error-options.ts +0 -6
  582. package/src/interfaces/jwt-consts.ts +0 -23
  583. package/src/interfaces/jwt-sign-response.ts +0 -19
  584. package/src/interfaces/mongo-errors.ts +0 -5
  585. package/src/interfaces/request-user.ts +0 -50
  586. package/src/interfaces/required-string-keys.ts +0 -26
  587. package/src/interfaces/schema.ts +0 -31
  588. package/src/interfaces/server-init-result.ts +0 -37
  589. package/src/interfaces/status-code-response.ts +0 -7
  590. package/src/interfaces/symmetric-encryption-results.ts +0 -4
  591. package/src/middlewares/authenticate-crypto.ts +0 -243
  592. package/src/middlewares/authenticate-token.ts +0 -152
  593. package/src/middlewares/cleanup-crypto.ts +0 -40
  594. package/src/middlewares/set-global-context-language.ts +0 -24
  595. package/src/middlewares.ts +0 -120
  596. package/src/model-registry.ts +0 -75
  597. package/src/models/email-token.ts +0 -19
  598. package/src/models/mnemonic.ts +0 -19
  599. package/src/models/role.ts +0 -19
  600. package/src/models/used-direct-login-token.ts +0 -23
  601. package/src/models/user-role.ts +0 -17
  602. package/src/models/user.ts +0 -19
  603. package/src/registry/email-service-registry.ts +0 -24
  604. package/src/routers/api.ts +0 -151
  605. package/src/routers/app.ts +0 -258
  606. package/src/routers/base.ts +0 -17
  607. package/src/schemas/email-token.ts +0 -91
  608. package/src/schemas/mnemonic.ts +0 -37
  609. package/src/schemas/role.ts +0 -127
  610. package/src/schemas/schema.ts +0 -140
  611. package/src/schemas/used-direct-login-token.ts +0 -38
  612. package/src/schemas/user-role.ts +0 -75
  613. package/src/schemas/user.ts +0 -202
  614. package/src/services/backup-code.ts +0 -316
  615. package/src/services/base.ts +0 -33
  616. package/src/services/checksum.ts +0 -161
  617. package/src/services/crc.ts +0 -213
  618. package/src/services/database-initialization.ts +0 -1479
  619. package/src/services/direct-login-token.ts +0 -62
  620. package/src/services/fec-usage-example.ts +0 -102
  621. package/src/services/fec.ts +0 -296
  622. package/src/services/jwt.ts +0 -134
  623. package/src/services/key-wrapping.ts +0 -434
  624. package/src/services/mnemonic.ts +0 -167
  625. package/src/services/request-user.ts +0 -62
  626. package/src/services/role.ts +0 -396
  627. package/src/services/symmetric.ts +0 -139
  628. package/src/services/system-user.ts +0 -82
  629. package/src/services/user.ts +0 -2137
  630. package/src/services/xor.ts +0 -34
  631. package/src/types.ts +0 -128
  632. package/src/utils.ts +0 -1022
@@ -0,0 +1,184 @@
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
+ eciesService;
26
+ systemUser;
27
+ keyWrappingService;
28
+ roleService;
29
+ /**
30
+ * Construct a BackupCodeService.
31
+ */
32
+ constructor(application, eciesService, keyWrappingService, roleService) {
33
+ super(application);
34
+ this.eciesService = eciesService;
35
+ this.keyWrappingService = keyWrappingService;
36
+ this.roleService = roleService;
37
+ }
38
+ /**
39
+ * Get the lazily-initialized system user for key wrapping/unwrapping.
40
+ */
41
+ getSystemUser() {
42
+ if (!this.systemUser) {
43
+ this.systemUser = system_user_1.SystemUserService.getSystemUser(this.application.environment);
44
+ }
45
+ return this.systemUser;
46
+ }
47
+ /**
48
+ * Forcibly set the system user (for database initialization)
49
+ * @param user
50
+ */
51
+ setSystemUser(user) {
52
+ this.systemUser = user;
53
+ }
54
+ /**
55
+ * v1: Consume (validate and remove) a backup code via constant-time checksum match.
56
+ */
57
+ useBackupCodeV1(encryptedBackupCodes, backupCode) {
58
+ const normalizedCode = backup_code_1.BackupCode.normalizeCode(backupCode);
59
+ if (!constants_1.Constants.BACKUP_CODES.NormalizedHexRegex.test(normalizedCode)) {
60
+ throw new suite_core_lib_1.InvalidBackupCodeError();
61
+ }
62
+ const codeBytes = Buffer.from(normalizedCode, 'utf8');
63
+ try {
64
+ for (const code of encryptedBackupCodes) {
65
+ if (code.version !== backup_code_1.BackupCode.BackupCodeVersion)
66
+ continue;
67
+ const checksumSalt = Buffer.from(code.checksumSalt, 'hex');
68
+ const expected = backup_code_1.BackupCode.hkdfSha256(codeBytes, checksumSalt, Buffer.from('backup-checksum'), 32);
69
+ if (code.checksum.length === expected.length * 2 &&
70
+ (0, crypto_1.timingSafeEqual)(Buffer.from(code.checksum, 'hex'), expected)) {
71
+ const checksumHex = expected.toString('hex');
72
+ return {
73
+ newCodesArray: encryptedBackupCodes.filter((c) => c.checksum !== checksumHex),
74
+ code,
75
+ };
76
+ }
77
+ }
78
+ throw new suite_core_lib_1.InvalidBackupCodeError();
79
+ }
80
+ finally {
81
+ codeBytes.fill(0);
82
+ }
83
+ }
84
+ /**
85
+ * Consume a backup code by first detecting the version and then dispatching to the appropriate handler.
86
+ */
87
+ useBackupCode(encryptedBackupCodes, backupCode) {
88
+ const version = backup_code_1.BackupCode.detectBackupCodeVersion(encryptedBackupCodes, backupCode);
89
+ switch (version) {
90
+ case backup_code_1.BackupCode.BackupCodeVersion:
91
+ return this.useBackupCodeV1(encryptedBackupCodes.filter((c) => c.version === backup_code_1.BackupCode.BackupCodeVersion), backupCode);
92
+ default:
93
+ throw new invalid_backup_code_version_1.InvalidBackupCodeVersionError(version);
94
+ }
95
+ }
96
+ /**
97
+ * v1: Recover a user's private key using a backup code.
98
+ */
99
+ async recoverKeyWithBackupCodeV1(userDoc, backupCode, newPassword, session) {
100
+ const normalizedCode = backup_code_1.BackupCode.normalizeCode(backupCode);
101
+ return await this.withTransaction(async (sess) => {
102
+ const { code, newCodesArray } = this.useBackupCodeV1(userDoc.backupCodes, normalizedCode);
103
+ userDoc.backupCodes = newCodesArray;
104
+ let decryptionKey;
105
+ try {
106
+ const adminMember = this.getSystemUser();
107
+ decryptionKey = await backup_code_1.BackupCode.getBackupKeyV1(code.checksumSalt, normalizedCode);
108
+ const privateKeyUnwrapped = adminMember.decryptData(Buffer.from(code.encrypted, 'hex'));
109
+ const decryptedPrivateKey = new ecies_lib_1.SecureBuffer(symmetric_1.SymmetricService.decryptBuffer(privateKeyUnwrapped, decryptionKey));
110
+ const memberType = await this.roleService.getMemberType(userDoc, session);
111
+ 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));
112
+ if (!newPassword) {
113
+ await userDoc.save({ session: sess });
114
+ return {
115
+ userDoc,
116
+ user,
117
+ codeCount: newCodesArray.length,
118
+ };
119
+ }
120
+ const wrapped = this.keyWrappingService.wrapSecret(decryptedPrivateKey, newPassword);
121
+ userDoc.passwordWrappedPrivateKey = wrapped;
122
+ await userDoc.save({ session: sess });
123
+ return { userDoc, user, codeCount: newCodesArray.length };
124
+ }
125
+ finally {
126
+ if (decryptionKey)
127
+ decryptionKey.fill(0);
128
+ }
129
+ }, session, {
130
+ timeoutMs: this.application.environment.mongo.transactionTimeout * 5,
131
+ });
132
+ }
133
+ /**
134
+ * Recover a user's private key using a backup code (version-dispatched).
135
+ */
136
+ async recoverKeyWithBackupCode(userDoc, backupCode, newPassword, session) {
137
+ const version = backup_code_1.BackupCode.detectBackupCodeVersion(userDoc.backupCodes, backupCode);
138
+ switch (version) {
139
+ case backup_code_1.BackupCode.BackupCodeVersion:
140
+ return this.recoverKeyWithBackupCodeV1(userDoc, backupCode, newPassword, session);
141
+ default:
142
+ throw new invalid_backup_code_version_1.InvalidBackupCodeVersionError(version);
143
+ }
144
+ }
145
+ /**
146
+ * Rewrap system-wrapped AEAD blobs from old system key to new one without touching inner AEAD.
147
+ */
148
+ async rewrapAllUsersBackupCodes(fetchBatch, saveUser, oldSystem, newSystem, options) {
149
+ const batchSize = options?.batchSize ?? 500;
150
+ let processed = 0;
151
+ let afterId;
152
+ for (;;) {
153
+ const users = await fetchBatch(afterId, batchSize);
154
+ if (!users.length)
155
+ break;
156
+ for (const user of users) {
157
+ let modified = false;
158
+ for (const bc of user.backupCodes ?? []) {
159
+ try {
160
+ const sealed = oldSystem.decryptData(Buffer.from(bc.encrypted, 'hex'));
161
+ const rewrapped = newSystem.encryptData(sealed).toString('hex');
162
+ if (rewrapped !== bc.encrypted) {
163
+ bc.encrypted = rewrapped;
164
+ modified = true;
165
+ }
166
+ }
167
+ catch (e) {
168
+ throw new Error(`Failed to rewrap backup code for user ${user._id}: ${e.message}`);
169
+ }
170
+ }
171
+ if (modified) {
172
+ await saveUser(user);
173
+ processed++;
174
+ options?.onProgress?.(processed);
175
+ }
176
+ }
177
+ afterId =
178
+ users[users.length - 1]?._id ?? undefined;
179
+ }
180
+ return processed;
181
+ }
182
+ }
183
+ exports.BackupCodeService = BackupCodeService;
184
+ //# sourceMappingURL=backup-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-code.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/backup-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { ClientSession, Types } from 'mongoose';
2
+ import { IApplication } from '../interfaces/application';
3
+ import { TransactionCallback } from '../types';
4
+ import { TransactionOptions } from '../utils';
5
+ import { IBaseDocument } from '../documents';
6
+ import { Environment } from '../environment';
7
+ import { IConstants } from '../interfaces';
8
+ export declare class BaseService<TApplication extends IApplication<any, Types.ObjectId, IBaseDocument<any, Types.ObjectId>, Environment, IConstants> = IApplication<any, Types.ObjectId, IBaseDocument<any, Types.ObjectId>, Environment, IConstants>> {
9
+ protected readonly application: TApplication;
10
+ constructor(application: TApplication);
11
+ withTransaction<T>(callback: TransactionCallback<T>, session?: ClientSession, options?: TransactionOptions, ...args: any): Promise<T>;
12
+ }
13
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,WAAW,CAAC,YAAY,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC;IAC3O,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,15 @@
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
+ application;
7
+ constructor(application) {
8
+ this.application = application;
9
+ }
10
+ async withTransaction(callback, session, options, ...args) {
11
+ return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, session, callback, options ?? {}, ...args);
12
+ }
13
+ }
14
+ exports.BaseService = BaseService;
15
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/base.ts"],"names":[],"mappings":";;;AAGA,oCAGkB;AAKlB,MAAa,WAAW;IACH,WAAW,CAAe;IAE7C,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":["../../../../../packages/digitaldefiance-node-express-suite/src/services/checksum.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,iCAAiC,CAAC;AAIzC,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;IAUtB;;;;OAIG;IACI,0BAA0B,CAC/B,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,OAAO,CAAC,cAAc,CAAC;CAoB3B"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChecksumService = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const fs_1 = require("fs");
6
+ const constants_1 = require("../constants");
7
+ class ChecksumService {
8
+ config;
9
+ constructor(config) {
10
+ this.config = {
11
+ algorithm: constants_1.CHECKSUM.ALGORITHM,
12
+ encoding: constants_1.CHECKSUM.ENCODING,
13
+ ...config,
14
+ };
15
+ }
16
+ /**
17
+ * Calculate a checksum for a buffer
18
+ * @param data - The data to calculate the checksum for
19
+ * @returns The checksum as a Buffer
20
+ */
21
+ calculateChecksum(data) {
22
+ const hash = (0, crypto_1.createHash)(this.config.algorithm);
23
+ hash.update(data);
24
+ const digest = hash.digest();
25
+ return Buffer.from(digest);
26
+ }
27
+ /**
28
+ * Calculate a checksum for multiple buffers
29
+ * @param buffers - The buffers to calculate the checksum for
30
+ * @returns The checksum as a Buffer
31
+ */
32
+ calculateChecksumForBuffers(buffers) {
33
+ const hash = (0, crypto_1.createHash)(this.config.algorithm);
34
+ for (const buffer of buffers) {
35
+ hash.update(buffer);
36
+ }
37
+ const digest = hash.digest();
38
+ return Buffer.from(digest);
39
+ }
40
+ /**
41
+ * Calculate a checksum for a string
42
+ * @param str - The string to calculate the checksum for
43
+ * @returns The checksum as a Buffer
44
+ */
45
+ calculateChecksumForString(str) {
46
+ return this.calculateChecksum(Buffer.from(str, 'utf8'));
47
+ }
48
+ /**
49
+ * Compare two checksums for equality
50
+ * @param checksum1 - The first checksum
51
+ * @param checksum2 - The second checksum
52
+ * @returns True if the checksums are equal, false otherwise
53
+ */
54
+ compareChecksums(checksum1, checksum2) {
55
+ if (checksum1.length !== constants_1.CHECKSUM.SHA3_BUFFER_LENGTH ||
56
+ checksum2.length !== constants_1.CHECKSUM.SHA3_BUFFER_LENGTH) {
57
+ return false;
58
+ }
59
+ return checksum1.equals(checksum2);
60
+ }
61
+ /**
62
+ * Convert a checksum to a hex string
63
+ * @param checksum - The checksum to convert
64
+ * @returns The checksum as a hex string
65
+ */
66
+ checksumToHexString(checksum) {
67
+ return checksum.toString(constants_1.CHECKSUM.ENCODING);
68
+ }
69
+ /**
70
+ * Convert a hex string to a checksum
71
+ * @param hexString - The hex string to convert
72
+ * @returns The checksum as a Buffer
73
+ */
74
+ hexStringToChecksum(hexString) {
75
+ if (hexString.length !== constants_1.CHECKSUM.SHA3_BUFFER_LENGTH * 2) {
76
+ throw new Error('Invalid checksum hex string length');
77
+ }
78
+ return Buffer.from(hexString, constants_1.CHECKSUM.ENCODING);
79
+ }
80
+ /**
81
+ * Validate a checksum buffer
82
+ * @param checksum - The checksum to validate
83
+ * @returns True if the checksum is valid, false otherwise
84
+ */
85
+ validateChecksum(checksum) {
86
+ return checksum.length === constants_1.CHECKSUM.SHA3_BUFFER_LENGTH;
87
+ }
88
+ /**
89
+ * Calculate a checksum for a file
90
+ * @param filePath - The path to the file
91
+ * @returns The checksum as a Buffer
92
+ */
93
+ async calculateChecksumForFile(filePath) {
94
+ // Removed dynamic import by using the data service to read file data
95
+ // This is a temporary solution that can be replaced with a proper file service
96
+ // The implementation now delegates file reading to the caller
97
+ const buffer = Buffer.from(await this.readFile(filePath));
98
+ return this.calculateChecksum(buffer);
99
+ }
100
+ /**
101
+ * Internal file reading method
102
+ * @private
103
+ */
104
+ async readFile(filePath) {
105
+ // Import fs using a static import that's available at module load time
106
+ // This solves the dynamic import/require issues
107
+ try {
108
+ return await fs_1.promises.readFile(filePath);
109
+ }
110
+ catch {
111
+ throw new Error(`Failed to read file at path: ${filePath}`);
112
+ }
113
+ }
114
+ /**
115
+ * Calculate a checksum for a stream
116
+ * @param stream - The readable stream
117
+ * @returns The checksum as a Buffer
118
+ */
119
+ calculateChecksumForStream(stream) {
120
+ return new Promise((resolve, reject) => {
121
+ const hash = (0, crypto_1.createHash)(this.config.algorithm);
122
+ stream.on('data', (chunk) => {
123
+ // Ensure chunk is a Buffer before updating hash
124
+ if (Buffer.isBuffer(chunk)) {
125
+ hash.update(chunk);
126
+ }
127
+ else if (typeof chunk === 'number') {
128
+ hash.update(Buffer.from([chunk]));
129
+ }
130
+ else {
131
+ hash.update(Buffer.from(chunk));
132
+ }
133
+ });
134
+ stream.on('end', () => {
135
+ const digest = hash.digest();
136
+ resolve(Buffer.from(digest));
137
+ });
138
+ stream.on('error', reject);
139
+ });
140
+ }
141
+ }
142
+ exports.ChecksumService = ChecksumService;
143
+ //# sourceMappingURL=checksum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/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":["../../../../../packages/digitaldefiance-node-express-suite/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"}