@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,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SymmetricService = void 0;
4
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
5
+ const crypto_1 = require("crypto");
6
+ const symmetric_error_type_1 = require("../enumerations/symmetric-error-type");
7
+ const symmetric_1 = require("../errors/symmetric");
8
+ function hasToJsonMethod(obj) {
9
+ return typeof obj === 'object' && obj !== null && 'toJson' in obj;
10
+ }
11
+ /**
12
+ * Service for handling symmetric encryption operations.
13
+ * This service provides functionality for:
14
+ * - AES encryption/decryption of buffers and JSON data
15
+ * - Key and IV generation
16
+ * - Secure cryptographic operations
17
+ */
18
+ class SymmetricService {
19
+ static symmetricKeyBits(eciesConstants = ecies_lib_1.ECIES) {
20
+ return eciesConstants.SYMMETRIC.KEY_BITS;
21
+ }
22
+ static symmetricKeyBytes(eciesConstants = ecies_lib_1.ECIES) {
23
+ return eciesConstants.SYMMETRIC.KEY_SIZE;
24
+ }
25
+ /**
26
+ * Encrypt data with AES
27
+ * @param data The data to encrypt
28
+ * @param encryptionKey Optional encryption key (will be randomly generated if not provided)
29
+ * @returns Object containing encrypted data and key
30
+ */
31
+ static encryptBuffer(data, encryptionKey, eciesConstants = ecies_lib_1.ECIES) {
32
+ if (encryptionKey &&
33
+ encryptionKey.length != eciesConstants.SYMMETRIC.KEY_SIZE) {
34
+ throw new symmetric_1.SymmetricError(symmetric_error_type_1.SymmetricErrorType.InvalidKeyLength);
35
+ }
36
+ // encrypt the document using AES-256 and the key
37
+ // Initialization Vector
38
+ const ivBuffer = (0, crypto_1.randomBytes)(eciesConstants.IV_SIZE);
39
+ const key = encryptionKey ?? (0, crypto_1.randomBytes)(eciesConstants.SYMMETRIC.KEY_SIZE);
40
+ const cipher = (0, crypto_1.createCipheriv)(eciesConstants.SYMMETRIC_ALGORITHM_CONFIGURATION, key, ivBuffer);
41
+ const ciphertextBuffer = cipher.update(data);
42
+ const finalBuffer = cipher.final();
43
+ const authTag = cipher.getAuthTag();
44
+ const encryptionIvPlusData = Buffer.concat([
45
+ ivBuffer,
46
+ ciphertextBuffer,
47
+ finalBuffer,
48
+ authTag,
49
+ ]);
50
+ return {
51
+ encryptedData: encryptionIvPlusData,
52
+ key: key,
53
+ };
54
+ }
55
+ /**
56
+ * Decrypt the given buffer with AES
57
+ * @param encryptedData The encrypted data to decrypt
58
+ * @param key The key to use for decryption
59
+ * @returns Decrypted data as a Buffer
60
+ */
61
+ static decryptBuffer(encryptedData, key, eciesConstants = ecies_lib_1.ECIES) {
62
+ const ivBuffer = encryptedData.subarray(0, eciesConstants.IV_SIZE);
63
+ const authTagStart = encryptedData.length - eciesConstants.AUTH_TAG_SIZE;
64
+ const ciphertextBuffer = encryptedData.subarray(eciesConstants.IV_SIZE, authTagStart);
65
+ const authTag = encryptedData.subarray(authTagStart);
66
+ const decipher = (0, crypto_1.createDecipheriv)(eciesConstants.SYMMETRIC_ALGORITHM_CONFIGURATION, key, ivBuffer);
67
+ decipher.setAuthTag(authTag);
68
+ return Buffer.concat([decipher.update(ciphertextBuffer), decipher.final()]);
69
+ }
70
+ /**
71
+ * Encrypt JSON data with AES
72
+ * @param data The data to encrypt
73
+ * @param encryptionKey Optional encryption key (will be randomly generated if not provided)
74
+ * @returns Object containing encrypted data and key
75
+ */
76
+ static encryptJson(data, encryptionKey) {
77
+ if (data === null || data === undefined) {
78
+ throw new symmetric_1.SymmetricError(symmetric_error_type_1.SymmetricErrorType.DataNullOrUndefined);
79
+ }
80
+ let dataBuffer;
81
+ if (hasToJsonMethod(data)) {
82
+ // amazonq-ignore-next-line false positive
83
+ dataBuffer = Buffer.from(data.toJson(), 'utf8');
84
+ }
85
+ else {
86
+ dataBuffer = Buffer.from(JSON.stringify(data), 'utf8');
87
+ }
88
+ return SymmetricService.encryptBuffer(dataBuffer, encryptionKey);
89
+ }
90
+ /**
91
+ * Decrypt the given buffer with AES and parse as JSON
92
+ * @param encryptedData The encrypted data to decrypt
93
+ * @param key The key to use for decryption
94
+ * @returns Decrypted data parsed as type T
95
+ */
96
+ static decryptJson(encryptedData, key) {
97
+ return JSON.parse(SymmetricService.decryptBuffer(encryptedData, key).toString('utf8'));
98
+ }
99
+ }
100
+ exports.SymmetricService = SymmetricService;
101
+ //# sourceMappingURL=symmetric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symmetric.js","sourceRoot":"","sources":["../../src/services/symmetric.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Member as BackendMember } from '@digitaldefiance/node-ecies-lib';
2
+ import { IConstants } from '@digitaldefiance/suite-core-lib';
3
+ import { Environment } from '../environment';
4
+ /**
5
+ * Service to manage the system member's wallet.
6
+ */
7
+ export declare class SystemUserService {
8
+ private static systemUser;
9
+ private static eciesService;
10
+ /**
11
+ * Initializes and returns the system member's Member instance.
12
+ * The mnemonic should be stored securely in environment variables.
13
+ */
14
+ static getSystemUser(environment: Environment, constants?: IConstants): BackendMember;
15
+ static setSystemUser(user: BackendMember, constants?: IConstants): void;
16
+ }
17
+ //# sourceMappingURL=system-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-user.d.ts","sourceRoot":"","sources":["../../src/services/system-user.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,MAAM,IAAI,aAAa,EAExB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,UAAU,EAGX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,UAAU,CAA8B;IACvD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAoC;IAE/D;;;OAGG;WACW,aAAa,CACzB,WAAW,EAAE,WAAW,EACxB,SAAS,GAAE,UAAsB,GAChC,aAAa;WAsCF,aAAa,CACzB,IAAI,EAAE,aAAa,EACnB,SAAS,GAAE,UAAsB,GAChC,IAAI;CAQR"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SystemUserService = 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
+ /**
8
+ * Service to manage the system member's wallet.
9
+ */
10
+ class SystemUserService {
11
+ /**
12
+ * Initializes and returns the system member's Member instance.
13
+ * The mnemonic should be stored securely in environment variables.
14
+ */
15
+ static getSystemUser(environment, constants = suite_core_lib_1.Constants) {
16
+ if (!SystemUserService.systemUser) {
17
+ if (!environment.systemMnemonic) {
18
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
19
+ NAME: 'SYSTEM_MNEMONIC',
20
+ });
21
+ }
22
+ const mnemonic = environment.systemMnemonic;
23
+ const { wallet } = SystemUserService.eciesService.walletAndSeedFromMnemonic(mnemonic);
24
+ const keyPair = SystemUserService.eciesService.walletToSimpleKeyPairBuffer(wallet);
25
+ SystemUserService.systemUser = new node_ecies_lib_1.Member(SystemUserService.eciesService, ecies_lib_1.MemberType.System, constants.SystemUser, new ecies_lib_1.EmailString(constants.SystemEmail), keyPair.publicKey, new ecies_lib_1.SecureBuffer(keyPair.privateKey), wallet);
26
+ if (SystemUserService.systemUser.publicKey.toString('hex') !==
27
+ environment.systemPublicKeyHex) {
28
+ console.warn('System public key does not match environment variable', {
29
+ derived: SystemUserService.systemUser.publicKey.toString('hex'),
30
+ expected: environment.systemPublicKeyHex,
31
+ });
32
+ }
33
+ }
34
+ return SystemUserService.systemUser;
35
+ }
36
+ static setSystemUser(user, constants = suite_core_lib_1.Constants) {
37
+ if (user.type !== ecies_lib_1.MemberType.System || user.name !== constants.SystemUser) {
38
+ throw new Error('setSystemUser can only be called with a MemberType.System user');
39
+ }
40
+ SystemUserService.systemUser = user;
41
+ }
42
+ }
43
+ exports.SystemUserService = SystemUserService;
44
+ SystemUserService.systemUser = null;
45
+ SystemUserService.eciesService = new node_ecies_lib_1.ECIESService();
46
+ //# sourceMappingURL=system-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-user.js","sourceRoot":"","sources":["../../src/services/system-user.ts"],"names":[],"mappings":";;;AAAA,0DAKoC;AACpC,oEAGyC;AACzC,oEAKyC;AAGzC;;GAEG;AACH,MAAa,iBAAiB;IAI5B;;;OAGG;IACI,MAAM,CAAC,aAAa,CACzB,WAAwB,EACxB,YAAwB,0BAAS;QAEjC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,IAAI,uCAAsB,CAC9B,mCAAkB,CAAC,uBAAuB,EAC1C;oBACE,IAAI,EAAE,iBAAiB;iBACxB,CACF,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAiB,WAAW,CAAC,cAAc,CAAC;YAC1D,MAAM,EAAE,MAAM,EAAE,GACd,iBAAiB,CAAC,YAAY,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;YACrE,MAAM,OAAO,GACX,iBAAiB,CAAC,YAAY,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;YAErE,iBAAiB,CAAC,UAAU,GAAG,IAAI,uBAAa,CAC9C,iBAAiB,CAAC,YAAY,EAC9B,sBAAU,CAAC,MAAM,EACjB,SAAS,CAAC,UAAU,EACpB,IAAI,uBAAW,CAAC,SAAS,CAAC,WAAW,CAAC,EACtC,OAAO,CAAC,SAAS,EACjB,IAAI,wBAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EACpC,MAAM,CACP,CAAC;YACF,IACE,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACtD,WAAW,CAAC,kBAAkB,EAC9B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE;oBACpE,OAAO,EAAE,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC/D,QAAQ,EAAE,WAAW,CAAC,kBAAkB;iBACzC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,iBAAiB,CAAC,UAAU,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,aAAa,CACzB,IAAmB,EACnB,YAAwB,0BAAS;QAEjC,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAU,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QACD,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;IACtC,CAAC;;AA3DH,8CA4DC;AA3DgB,4BAAU,GAAyB,IAAI,CAAC;AACxC,8BAAY,GAAiB,IAAI,6BAAY,EAAE,CAAC"}
@@ -0,0 +1,317 @@
1
+ import { SecureBuffer, SecureString, SignatureString } from '@digitaldefiance/ecies-lib';
2
+ import { Member as BackendMember, ECIESService } from '@digitaldefiance/node-ecies-lib';
3
+ import { EmailTokenType, IBackupCode, IRequestUserDTO, ITokenRole, IUserBase, IUserDTO } from '@digitaldefiance/suite-core-lib';
4
+ import { Wallet } from '@ethereumjs/wallet';
5
+ import { ClientSession, ProjectionType, Types } from 'mongoose';
6
+ import { IEmailTokenDocument } from '../documents/email-token';
7
+ import { IUserDocument } from '../documents/user';
8
+ import { BackupCode } from '../backup-code';
9
+ import { ICreateUserBasics } from '../interfaces';
10
+ import { IApplication } from '../interfaces/application';
11
+ import { IUserBackendObject } from '../interfaces/backend-objects/user';
12
+ import { IEmailService } from '../interfaces/email-service';
13
+ import { BackupCodeService } from './backup-code';
14
+ import { BaseService } from './base';
15
+ import { KeyWrappingService } from './key-wrapping';
16
+ import { MnemonicService } from './mnemonic';
17
+ import { RoleService } from './role';
18
+ export declare class UserService<I, D extends Date, S extends string, A extends string, TUser extends IUserBase<I, D, S, A> = IUserBase<I, D, S, A>, TTokenRole extends ITokenRole<I, D> = ITokenRole<I, D>, TApplication extends IApplication = IApplication> extends BaseService {
19
+ protected readonly roleService: RoleService<I, D, TTokenRole>;
20
+ protected readonly eciesService: ECIESService;
21
+ protected readonly keyWrappingService: KeyWrappingService;
22
+ protected readonly mnemonicService: MnemonicService;
23
+ protected readonly emailService: IEmailService;
24
+ protected readonly backupCodeService: BackupCodeService<I, D, TTokenRole, TApplication>;
25
+ protected readonly serverUrl: string;
26
+ protected readonly disableEmailSend: boolean;
27
+ constructor(application: IApplication, roleService: RoleService<I, D, TTokenRole>, emailService: IEmailService, keyWrappingService: KeyWrappingService, backupCodeService: BackupCodeService<I, D, TTokenRole, TApplication>);
28
+ /**
29
+ * Given a User Document, make a User DTO
30
+ * @param user a User Document
31
+ * @returns An IUserDTO
32
+ */
33
+ static userToUserDTO(user: IUserDocument | Record<string, unknown>): IUserDTO;
34
+ /**
35
+ * Given a User DTO, reconstitute ids and dates
36
+ * @param user a User DTO
37
+ * @returns An IUserBackendObject
38
+ */
39
+ hydrateUserDTOToBackend(user: IUserDTO): IUserBackendObject<string>;
40
+ /**
41
+ * Create a new email token to send to the user for email verification
42
+ * @param userDoc The user to create the email token for
43
+ * @param type The type of email token to create
44
+ * @param session The session to use for the query
45
+ * @returns The email token document
46
+ */
47
+ createEmailToken(userDoc: IUserDocument, type: EmailTokenType, session?: ClientSession): Promise<IEmailTokenDocument>;
48
+ /**
49
+ * Create and send an email token to the user for email verification
50
+ * @param user The user to send the email token to
51
+ * @param type The type of email token to send
52
+ * @param session The session to use for the query
53
+ * @returns The email token document
54
+ */
55
+ createAndSendEmailToken(user: IUserDocument, type?: EmailTokenType, session?: ClientSession, debug?: boolean): Promise<IEmailTokenDocument>;
56
+ /**
57
+ * Create and send an email token directly within an existing transaction
58
+ * @param user The user to send the email token to
59
+ * @param type The type of email token to send
60
+ * @param session The session to use for the query (required)
61
+ * @param debug Whether to enable debug logging
62
+ * @returns The email token document
63
+ */
64
+ createAndSendEmailTokenDirect(user: IUserDocument, type: EmailTokenType | undefined, session: ClientSession, debug?: boolean): Promise<IEmailTokenDocument>;
65
+ /**
66
+ * Send an email token to the user for email verification
67
+ * @param emailToken The email token to send
68
+ * @param session The session to use for the query
69
+ * @returns void
70
+ */
71
+ sendEmailToken(emailToken: IEmailTokenDocument, session?: ClientSession, debug?: boolean): Promise<void>;
72
+ /**
73
+ * Find a user by email or username and enforce account status checks
74
+ * @param email Optional email
75
+ * @param username Optional username
76
+ * @param session Optional mongoose session
77
+ * @throws UsernameOrEmailRequiredError if neither provided
78
+ * @throws InvalidCredentialsError if not found or deleted
79
+ * @throws AccountLockedError | PendingEmailVerificationError | AccountStatusError per status
80
+ */
81
+ findUser(email?: string, username?: string, session?: ClientSession): Promise<IUserDocument>;
82
+ /**
83
+ * Finds a user record by ID
84
+ * @param userId The user ID
85
+ * @param throwIfNotActive Whether to throw if the user is inactive
86
+ * @param session The active session, if present
87
+ * @returns The user document
88
+ */
89
+ findUserById(userId: Types.ObjectId, throwIfNotActive: boolean, session?: ClientSession, select?: ProjectionType<IUserDocument>): Promise<IUserDocument>;
90
+ /**
91
+ * Ensure required fields are present in a projection for queries that rely on them.
92
+ * Supports string and object-style projections. For inclusion projections, adds fields.
93
+ * For exclusion projections, ensures required fields are not excluded.
94
+ */
95
+ private ensureRequiredFieldsInProjection;
96
+ /**
97
+ * Fill in the default values to a user object
98
+ * @param newUser The user object to fill in
99
+ * @param createdBy The user ID of the user creating the new user
100
+ * @returns The filled in user
101
+ */
102
+ fillUserDefaults(newUser: ICreateUserBasics, createdBy: Types.ObjectId, backupCodes: Array<IBackupCode>, encryptedMnemonic: string, userId?: Types.ObjectId): IUserBackendObject<string>;
103
+ /**
104
+ * Create a new user document from an IUser and unhashed password
105
+ * @param newUser The user object
106
+ * @returns The new user document
107
+ */
108
+ makeUserDoc(newUser: TUser): Promise<IUserDocument>;
109
+ /**
110
+ * Create a new user.
111
+ * Do not set createdBy to a new (non-existing) ObjectId unless you also set newUserId to it.
112
+ * If newUserId is not set, one will be generated.
113
+ * @param systemUser The system user performing the operation
114
+ * @param userData Username, email, password in a ICreateUserBasics object
115
+ * @param createdBy The user id of the user creating the user
116
+ * @param newUserId the user id of the new user object- usually the createdBy user id.
117
+ * @param session The session to use for the query
118
+ * @param debug Whether to log debug information
119
+ * @param password The password to use for the new user (optional, if not provided, mnemonic will be used)
120
+ * @returns The new user document
121
+ */
122
+ newUser(systemUser: BackendMember, userData: ICreateUserBasics, createdBy?: Types.ObjectId, newUserId?: Types.ObjectId, session?: ClientSession, debug?: boolean, password?: string): Promise<{
123
+ user: IUserDocument;
124
+ mnemonic: string;
125
+ backupCodes: Array<string>;
126
+ password?: string;
127
+ }>;
128
+ /**
129
+ * Get the backup codes for a user.
130
+ * Requires the user not be deleted or inactive
131
+ */
132
+ getEncryptedUserBackupCodes(userId: Types.ObjectId, session?: ClientSession): Promise<Array<IBackupCode>>;
133
+ /**
134
+ * Resets the given user's backup codes
135
+ * @param backupUser The user to generate codes for
136
+ * @param session The current session, if any
137
+ * @returns A promise of an array of backup codes
138
+ */
139
+ resetUserBackupCodes(backupUser: BackendMember, systemUser: BackendMember, session?: ClientSession): Promise<Array<BackupCode>>;
140
+ /**
141
+ * Recover a user's mnemonic from an encrypted mnemonic
142
+ * @param user The user whose mnemonic to recover
143
+ * @param encryptedMnemonic The encrypted mnemonic
144
+ * @returns The recovered mnemonic
145
+ */
146
+ recoverMnemonic(user: BackendMember, encryptedMnemonic: string): SecureString;
147
+ /**
148
+ * Make a Member from a user document and optional private key
149
+ * @param userDoc The user document
150
+ * @param privateKey Optional private key to load the wallet
151
+ * @param publicKey Optional public key to override the userDoc public key
152
+ * @param session The current session, if any
153
+ * @returns A promise containing the created Member
154
+ */
155
+ makeUserFromUserDoc(userDoc: IUserDocument, privateKey?: SecureBuffer, publicKey?: Buffer, mnemonic?: SecureString, wallet?: Wallet, session?: ClientSession): Promise<BackendMember>;
156
+ /**
157
+ * Challenges a given userDoc with a given mnemonic, returns a system and user Member
158
+ * @param userDoc The userDoc in question
159
+ * @param mnemonic The mnemonic to challenge against
160
+ * @returns A promise containing the user and system Members
161
+ * @throws InvalidCredentialsError if the challenge fails
162
+ * @throws AccountLockedError if the account is locked
163
+ * @throws PendingEmailVerificationError if the email is not verified
164
+ * @throws AccountStatusError if the account status is invalid
165
+ */
166
+ challengeUserWithMnemonic(userDoc: IUserDocument, mnemonic: SecureString, session?: ClientSession): Promise<{
167
+ userMember: BackendMember;
168
+ adminMember: BackendMember;
169
+ }>;
170
+ /**
171
+ * Validates a login challenge response
172
+ * @param challengeResponse The challenge response bytes in hex
173
+ * @param email The email address of the user
174
+ * @param username The username of the user
175
+ * @param session The mongo session for the query
176
+ * @returns A promise that resolves to the user document, user member, and system member
177
+ */
178
+ loginWithChallengeResponse(challengeResponse: string, email?: string, username?: string, session?: ClientSession): Promise<{
179
+ userDoc: IUserDocument;
180
+ userMember: BackendMember;
181
+ adminMember: BackendMember;
182
+ }>;
183
+ /**
184
+ * Authenticate a user with client-verified challenge (skips server-side challenge)
185
+ * @returns The authenticated user document.
186
+ */
187
+ loginWithClientVerifiedChallenge(usernameOrEmail: string, mnemonic: SecureString, session?: ClientSession): Promise<{
188
+ userDoc: IUserDocument;
189
+ userMember: BackendMember;
190
+ adminMember: BackendMember;
191
+ }>;
192
+ /**
193
+ * Authenticate a user with their mnemonic.
194
+ * @returns The authenticated user document.
195
+ */
196
+ loginWithMnemonic(usernameOrEmail: string, mnemonic: SecureString, session?: ClientSession): Promise<{
197
+ userDoc: IUserDocument;
198
+ userMember: BackendMember;
199
+ adminMember: BackendMember;
200
+ }>;
201
+ /**
202
+ * Authenticate a user with their password (for key-wrapped accounts).
203
+ * @returns The authenticated user document.
204
+ */
205
+ loginWithPassword(usernameOrEmail: string, password: string, session?: ClientSession): Promise<{
206
+ userDoc: IUserDocument;
207
+ userMember: BackendMember;
208
+ adminMember: BackendMember;
209
+ }>;
210
+ /**
211
+ * Re-send a previously sent email token
212
+ * @param userId The user id
213
+ * @param session The session to use for the query
214
+ * @returns void
215
+ * @throws EmailTokenUsedOrInvalidError
216
+ */
217
+ resendEmailToken(userId: string, type: EmailTokenType, session?: ClientSession, debug?: boolean): Promise<void>;
218
+ /**
219
+ * Verify the email token and update the user's account status
220
+ * @param emailToken The email token to verify
221
+ * @param session The session to use for the query
222
+ * @returns void
223
+ * @throws EmailTokenUsedOrInvalidError
224
+ * @throws EmailTokenExpiredError
225
+ * @throws EmailVerifiedError
226
+ * @throws UserNotFoundError
227
+ */
228
+ verifyAccountTokenAndComplete(emailToken: string, session?: ClientSession): Promise<void>;
229
+ /**
230
+ * Validate the email token
231
+ * @param token The token to validate
232
+ * @param restrictType The type of email token to validate (or throw)
233
+ * @param session The session to use for the query
234
+ * @returns void
235
+ * @throws EmailTokenUsedOrInvalidError
236
+ */
237
+ validateEmailToken(token: string, restrictType?: EmailTokenType, session?: ClientSession): Promise<void>;
238
+ /**
239
+ * Updates the user's language
240
+ * @param userId - The ID of the user
241
+ * @param newLanguage - The new language
242
+ * @param session - The session to use for the query
243
+ * @returns The updated user
244
+ */
245
+ updateSiteLanguage(userId: string, newLanguage: string, session?: ClientSession): Promise<IRequestUserDTO>;
246
+ /**
247
+ * Changes the user's password by re-wrapping their master key
248
+ * @param userId - The ID of the user
249
+ * @param currentPassword - The current password
250
+ * @param newPassword - The new password
251
+ * @param session - The session to use for the query
252
+ * @returns void
253
+ */
254
+ changePassword(userId: string, currentPassword: string, newPassword: string, session?: ClientSession): Promise<void>;
255
+ /**
256
+ * Retrieve an email token by its token string and type
257
+ * @param token - The token string
258
+ * @param type - The type of the email token
259
+ * @param session - The session to use for the query
260
+ * @returns The email token document or null if not found
261
+ */
262
+ findEmailToken(token: string, type?: EmailTokenType, session?: ClientSession): Promise<IEmailTokenDocument | null>;
263
+ /**
264
+ * Verify email token is valid
265
+ * @param token - The email token
266
+ * @param session - The session to use for the query
267
+ * @returns void
268
+ */
269
+ verifyEmailToken(token: string, type: EmailTokenType, session?: ClientSession): Promise<void>;
270
+ /**
271
+ * Reset password using email token
272
+ * @param token - The email token
273
+ * @param newPassword - The new password
274
+ * @param session - The session to use for the query
275
+ * @returns void
276
+ */
277
+ resetPasswordWithToken(token: string, newPassword: string, credential?: string, // either mnemonic or current password; required
278
+ session?: ClientSession): Promise<void>;
279
+ /**
280
+ * Generate a login challenge for the client to sign
281
+ * @returns The login challenge in hex
282
+ */
283
+ generateDirectLoginChallenge(): string;
284
+ /**
285
+ * Verifies a direct login challenge response
286
+ * @param serverSignedRequest The login challenge response in hex
287
+ * @param session The mongoose session, if provided
288
+ * @returns A promise with the user document and user member object
289
+ */
290
+ verifyDirectLoginChallenge(serverSignedRequest: string, signature: SignatureString, username?: string, email?: string, session?: ClientSession): Promise<{
291
+ userDoc: IUserDocument;
292
+ userMember: BackendMember;
293
+ }>;
294
+ /**
295
+ * Request a login link via email
296
+ * @param email Email address
297
+ * @param username Username
298
+ * @param session Existing session, if any
299
+ * @returns void
300
+ */
301
+ requestEmailLogin(email?: string, username?: string, session?: ClientSession): Promise<void>;
302
+ /**
303
+ * Validate an email login token challenge
304
+ * @param token The token to challenge
305
+ * @param signature The signature of the token by the user's private key
306
+ * @param session The session to use for the query
307
+ * @returns The user document if the challenge is valid
308
+ */
309
+ validateEmailLoginTokenChallenge(token: string, signature: SignatureString, session?: ClientSession): Promise<IUserDocument>;
310
+ /**
311
+ * Updates the user's last login time atomically
312
+ * @param userId - The ID of the user
313
+ * @returns void
314
+ */
315
+ updateLastLogin(userId: Types.ObjectId): Promise<void>;
316
+ }
317
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/services/user.ts"],"names":[],"mappings":"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"}