@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
@@ -1,181 +0,0 @@
1
- import { SecureBuffer, SecureString } from '@digitaldefiance/ecies-lib';
2
- import { Timezone } from '@digitaldefiance/i18n-lib';
3
- import { Types } from 'mongoose';
4
- import { BackupCode } from '../backup-code';
5
- import { IMongoEnvironment } from './environment-mongo';
6
-
7
- export interface IEnvironment {
8
- /**
9
- * Whether to use a memory database for local development (eg with MongoMemoryServer)
10
- * If set, this will create a new in-memory database instance on application start with the given database name
11
- */
12
- devDatabase?: string;
13
- /**
14
- * Whether to print certain console debug messages
15
- */
16
- debug: boolean;
17
- /**
18
- * Whether to enable super verbose debug messags
19
- */
20
- detailedDebug: boolean;
21
- /**
22
- * The host name of the server
23
- */
24
- host: string;
25
- /**
26
- * The port the server is running on
27
- */
28
- port: number;
29
- /**
30
- * The base path of the server
31
- */
32
- basePath: string;
33
- /**
34
- * The URL of the server
35
- */
36
- serverUrl: string;
37
- /**
38
- * The secret used to sign JWTs
39
- */
40
- jwtSecret: string;
41
- /**
42
- * The email address to send notifications from
43
- */
44
- emailSender: string;
45
- /**
46
- * API distribution directory
47
- */
48
- apiDistDir: string;
49
- /**
50
- * react dist dir
51
- */
52
- reactDistDir: string;
53
- /**
54
- * The directory and root filename to store HTTPS development certificates
55
- */
56
- httpsDevCertRoot?: string;
57
- /**
58
- * The port to use for HTTPS development certificates
59
- */
60
- httpsDevPort: number;
61
- /**
62
- * Disable email sending
63
- */
64
- disableEmailSend: boolean;
65
- /**
66
- * MongoDB configuration
67
- */
68
- mongo: IMongoEnvironment;
69
- /**
70
- * Mnemonic for the admin user
71
- */
72
- adminMnemonic?: SecureString;
73
- /**
74
- * The ID of the admin user
75
- */
76
- adminId?: Types.ObjectId;
77
- /**
78
- * The creation date of the admin user
79
- */
80
- adminCreatedAt?: Date;
81
- /**
82
- * The password of the admin user
83
- */
84
- adminPassword?: SecureString;
85
- /**
86
- * The ID of the admin user role object
87
- */
88
- adminRoleId?: Types.ObjectId;
89
- /**
90
- * The ID of the admin user's user role object
91
- */
92
- adminUserRoleId?: Types.ObjectId;
93
- /**
94
- * Backup codes for the admin user
95
- */
96
- adminBackupCodes?: BackupCode[];
97
- /**
98
- * Mnemonic for the member user
99
- */
100
- memberMnemonic?: SecureString;
101
- /**
102
- * The ID of the member user
103
- */
104
- memberId?: Types.ObjectId;
105
- /**
106
- * The creation date of the member user
107
- */
108
- memberCreatedAt?: Date;
109
- /**
110
- * The password of the member user
111
- */
112
- memberPassword?: SecureString;
113
- /**
114
- * The ID of the member user role object
115
- */
116
- memberRoleId?: Types.ObjectId;
117
- /**
118
- * The ID of the member user's user role object
119
- */
120
- memberUserRoleId?: Types.ObjectId;
121
- /**
122
- * Backup codes for the member user
123
- */
124
- memberBackupCodes?: BackupCode[];
125
- /**
126
- * Mnemonic for the system user
127
- */
128
- systemMnemonic?: SecureString;
129
- /**
130
- * The ID of the system user
131
- */
132
- systemId?: Types.ObjectId;
133
- /**
134
- * The creation date of the system user
135
- */
136
- systemCreatedAt?: Date;
137
- /**
138
- * The public key of the system user
139
- */
140
- systemPublicKeyHex?: string;
141
- /**
142
- * The password of the system user
143
- */
144
- systemPassword?: SecureString;
145
- /**
146
- * The ID of the system user role object
147
- */
148
- systemRoleId?: Types.ObjectId;
149
- /**
150
- * The ID of the system user's user role object
151
- */
152
- systemUserRoleId?: Types.ObjectId;
153
- /**
154
- * Backup codes for the system user
155
- */
156
- systemBackupCodes?: BackupCode[];
157
- /**
158
- * HMAC secret for mnemonic encryption
159
- */
160
- mnemonicHmacSecret: SecureBuffer;
161
- /**
162
- * Encryption key for mnemonics
163
- */
164
- mnemonicEncryptionKey: SecureBuffer;
165
- /**
166
- * The timezone for the server
167
- */
168
- timezone: Timezone;
169
- /**
170
- * The default language for the admin interface/CLI
171
- */
172
- adminLanguage: string;
173
- /**
174
- * The number of PBKDF2 iterations for key wrapping
175
- */
176
- pbkdf2Iterations: number;
177
- /**
178
- * Whether this is a production environment
179
- */
180
- production: boolean;
181
- }
@@ -1,6 +0,0 @@
1
- export interface IFailableResult<T> {
2
- success: boolean;
3
- data?: T;
4
- message?: string;
5
- error?: string | Error;
6
- }
@@ -1,4 +0,0 @@
1
- export interface IFECConsts {
2
- /** Maximum size of a single shard */
3
- MAX_SHARD_SIZE: number;
4
- }
@@ -1,6 +0,0 @@
1
- export interface HandleableErrorOptions {
2
- cause?: Error;
3
- handled?: boolean;
4
- statusCode?: number;
5
- sourceData?: unknown;
6
- }
@@ -1,23 +0,0 @@
1
- export interface IJwtConsts {
2
- /**
3
- * Algorithm to use for JWT
4
- */
5
- ALGORITHM:
6
- | 'HS256'
7
- | 'HS384'
8
- | 'HS512'
9
- | 'RS256'
10
- | 'RS384'
11
- | 'RS512'
12
- | 'ES256'
13
- | 'ES384'
14
- | 'ES512'
15
- | 'PS256'
16
- | 'PS384'
17
- | 'PS512';
18
-
19
- /**
20
- * The expiration time for a JWT token in seconds
21
- */
22
- EXPIRATION_SEC: number;
23
- }
@@ -1,19 +0,0 @@
1
- import {
2
- ITokenRole,
3
- ITokenRoleDTO,
4
- ITokenUser,
5
- } from '@digitaldefiance/suite-core-lib';
6
- import { Types } from 'mongoose';
7
-
8
- export interface IJwtSignResponse<
9
- I = Types.ObjectId,
10
- D extends Date = Date,
11
- TTokenRole extends ITokenRole<I, D> = ITokenRole<I, D>,
12
- > {
13
- token: string;
14
- tokenUser: ITokenUser;
15
- roleNames: string[];
16
- roleTranslatedNames: string[];
17
- roles: TTokenRole[];
18
- roleDTOs: ITokenRoleDTO[];
19
- }
@@ -1,5 +0,0 @@
1
- import { Error } from 'mongoose';
2
-
3
- export interface IMongoErrors {
4
- [key: string]: Error.ValidatorError | Error.CastError;
5
- }
@@ -1,50 +0,0 @@
1
- import { IRoleDTO, IRoleFrontendObject } from '@digitaldefiance/suite-core-lib';
2
- import { Types } from 'mongoose';
3
- import { IRoleBackendObject } from './backend-objects/role';
4
-
5
- /**
6
- * Interface for the user object stored in the request object
7
- * This is not used for mongoose but for request handling
8
- */
9
- export interface IRequestUser<
10
- I extends Types.ObjectId | string = string,
11
- R extends
12
- | Array<IRoleDTO>
13
- | Array<IRoleFrontendObject>
14
- | Array<IRoleBackendObject> = Array<IRoleDTO>,
15
- S extends string = string,
16
- D extends Date | string = string,
17
- > {
18
- /**
19
- * The ID of the user
20
- */
21
- id: I;
22
- /**
23
- * The roles associated with the user
24
- */
25
- roles: R;
26
- /**
27
- * The username of the user
28
- */
29
- username: string;
30
- /**
31
- * The email address of the user
32
- */
33
- email: string;
34
- /**
35
- * The timezone of the user
36
- */
37
- timezone: string;
38
- /**
39
- * The language of the user
40
- */
41
- siteLanguage: S;
42
- /**
43
- * The date the user last logged in
44
- */
45
- lastLogin?: D;
46
- /**
47
- * Whether the user has verified their email address
48
- */
49
- emailVerified: boolean;
50
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * Base interface defining the minimum required string keys that must be implemented
3
- * by any application using this library
4
- */
5
- export interface RequiredStringKeys {
6
- Common_UnexpectedError: string;
7
- Error_EngineAlreadySet: string;
8
- Error_EngineNotSet: string;
9
- Error_LengthExceedsMaximum: string;
10
- Error_LengthIsInvalidType: string;
11
- // Validation errors
12
- ValidationError: string;
13
- Validation_MissingValidatedData: string;
14
- Validation_MissingValidatedDataForField: string;
15
-
16
- // Admin/system messages
17
- Admin_NoMongoDbClientFoundFallingBack: string;
18
- Admin_TransactionFailedTransientTemplate: string;
19
- Admin_TransactionTimeoutTemplate: string;
20
- }
21
-
22
- /**
23
- * Type constraint to ensure user's string key enum extends the required keys
24
- */
25
- export type ExtendedStringKeys<T extends string> =
26
- T extends keyof RequiredStringKeys ? T : T | keyof RequiredStringKeys;
@@ -1,31 +0,0 @@
1
- import { Model, Schema } from 'mongoose';
2
- import { IBaseDocument } from '../documents/base';
3
- import { IDiscriminatorCollections } from '../interfaces/discriminator-collections';
4
-
5
- /**
6
- * Interface for each schema in the schema map
7
- */
8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
- export interface ISchema<T extends IBaseDocument<any>> {
10
- /**
11
- * The name of the collection, eg 'models'
12
- */
13
- collection: string;
14
- /**
15
- * The model for the schema
16
- */
17
-
18
- model: Model<T>;
19
- /**
20
- * The name of the model, eg 'Model'
21
- */
22
- modelName: string;
23
- /**
24
- * The schema for the model
25
- */
26
- schema: Schema;
27
- /**
28
- * Discriminators for the model
29
- */
30
- discriminators?: IDiscriminatorCollections<T>;
31
- }
@@ -1,37 +0,0 @@
1
- import { Member } from '@digitaldefiance/node-ecies-lib';
2
- import { IRoleDocument } from '../documents/role';
3
- import { IUserDocument } from '../documents/user';
4
- import { IUserRoleDocument } from '../documents/user-role';
5
-
6
- // Re-export essential document types
7
- export type { IRoleDocument, IUserDocument, IUserRoleDocument };
8
-
9
- export interface IServerInitResult {
10
- adminRole: IRoleDocument;
11
- adminUser: IUserDocument;
12
- adminUsername: string;
13
- adminEmail: string;
14
- adminMnemonic: string;
15
- adminPassword: string;
16
- adminBackupCodes: Array<string>;
17
- adminMember: Member;
18
- adminUserRole: IUserRoleDocument;
19
- memberRole: IRoleDocument;
20
- memberUser: IUserDocument;
21
- memberUsername: string;
22
- memberEmail: string;
23
- memberMnemonic: string;
24
- memberPassword: string;
25
- memberBackupCodes: Array<string>;
26
- memberMember: Member;
27
- memberUserRole: IUserRoleDocument;
28
- systemRole: IRoleDocument;
29
- systemUser: IUserDocument;
30
- systemUsername: string;
31
- systemEmail: string;
32
- systemMnemonic: string;
33
- systemPassword: string;
34
- systemBackupCodes: Array<string>;
35
- systemMember: Member;
36
- systemUserRole: IUserRoleDocument;
37
- }
@@ -1,7 +0,0 @@
1
- import { ApiResponse } from '../types';
2
-
3
- export interface IStatusCodeResponse<T extends ApiResponse> {
4
- statusCode: number;
5
- response: T;
6
- headers?: Record<string, string>;
7
- }
@@ -1,4 +0,0 @@
1
- export interface ISymmetricEncryptionResults {
2
- encryptedData: Buffer;
3
- key: Buffer;
4
- }
@@ -1,243 +0,0 @@
1
- import { IECIESConfig, SecureString } from '@digitaldefiance/ecies-lib';
2
- import {
3
- Member as BackendMember,
4
- ECIESService,
5
- } from '@digitaldefiance/node-ecies-lib';
6
- import {
7
- AccountStatus,
8
- getSuiteCoreTranslation,
9
- InvalidCredentialsError,
10
- SuiteCoreStringKey,
11
- } from '@digitaldefiance/suite-core-lib';
12
- import { NextFunction, Request, Response } from 'express';
13
- import { ClientSession, Types } from 'mongoose';
14
- import { IUserDocument } from '../documents/user';
15
- import { BaseModelName } from '../enumerations';
16
- import { InvalidPasswordError } from '../errors';
17
- import { IApplication } from '../interfaces/application';
18
- import { emailServiceRegistry } from '../registry';
19
- import { BackupCodeService } from '../services/backup-code';
20
- import { KeyWrappingService } from '../services/key-wrapping';
21
- import { RoleService } from '../services/role';
22
- import { UserService } from '../services/user';
23
- import { withTransaction } from '../utils';
24
- import { IBaseDocument } from '../documents';
25
- import { Environment } from '../environment';
26
- import { IConstants } from '../interfaces';
27
-
28
- /**
29
- * Middleware to authenticate crypto operations requiring private key access
30
- * Expects mnemonic or password in request body for fresh authentication
31
- */
32
- export async function authenticateCrypto<
33
- TAccountStatus extends string = AccountStatus,
34
- >(
35
- application: IApplication<any, Types.ObjectId, IBaseDocument<any, Types.ObjectId>, Environment, IConstants>,
36
- req: Request,
37
- res: Response,
38
- next: NextFunction,
39
- activeStatusValue: TAccountStatus = AccountStatus.Active as TAccountStatus,
40
- ): Promise<Response | void> {
41
- if (!req.user) {
42
- return res
43
- .status(401)
44
- .send(
45
- // amazonq-ignore-next-line false positive, hardcoded string
46
- getSuiteCoreTranslation(SuiteCoreStringKey.Validation_InvalidToken),
47
- );
48
- }
49
-
50
- // Try validatedBody first (if validation has run), then fall back to raw body
51
- // Note: This middleware runs BEFORE validation, so validatedBody may not exist yet
52
- const validatedBody = (req as Request & { validatedBody?: unknown })
53
- .validatedBody as Record<string, unknown> | undefined;
54
- const rawBody = req.body as Record<string, unknown> | undefined;
55
- const sourceBody = validatedBody ?? rawBody;
56
-
57
- if (!sourceBody) {
58
- return res.status(400).send({
59
- // amazonq-ignore-next-line false positive, hardcoded string
60
- message: getSuiteCoreTranslation(
61
- SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired,
62
- ),
63
- });
64
- }
65
-
66
- const mnemonic =
67
- typeof sourceBody['mnemonic'] === 'string'
68
- ? (sourceBody['mnemonic'] as string)
69
- : undefined;
70
- const password =
71
- // amazonq-ignore-next-line false positive
72
- typeof sourceBody['password'] === 'string'
73
- ? (sourceBody['password'] as string)
74
- : undefined;
75
- if (!mnemonic && !password) {
76
- return res.status(400).send({
77
- // amazonq-ignore-next-line false positive, hardcoded string
78
- message: getSuiteCoreTranslation(
79
- SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired,
80
- ),
81
- });
82
- }
83
- const UserModel = application.getModel<IUserDocument<string>>(
84
- BaseModelName.User,
85
- );
86
- const config: IECIESConfig = {
87
- curveName: application.constants.ECIES.CURVE_NAME,
88
- primaryKeyDerivationPath:
89
- application.constants.ECIES.PRIMARY_KEY_DERIVATION_PATH,
90
- mnemonicStrength: application.constants.ECIES.MNEMONIC_STRENGTH,
91
- symmetricAlgorithm:
92
- application.constants.ECIES.SYMMETRIC_ALGORITHM_CONFIGURATION,
93
- symmetricKeyBits: application.constants.ECIES.SYMMETRIC.KEY_BITS,
94
- symmetricKeyMode: application.constants.ECIES.SYMMETRIC.MODE,
95
- };
96
- const keyWrappingService = new KeyWrappingService();
97
-
98
- const roleService = new RoleService(application);
99
- const userService = new UserService(
100
- application,
101
- roleService,
102
- emailServiceRegistry.getService(),
103
- keyWrappingService,
104
- new BackupCodeService(
105
- application,
106
- new ECIESService(config),
107
- keyWrappingService,
108
- roleService,
109
- ),
110
- );
111
-
112
- try {
113
- return await withTransaction<Response | void>(
114
- application.db.connection,
115
- application.environment.mongo.useTransactions,
116
- undefined,
117
- async (sess: ClientSession | undefined) => {
118
- const userDoc = await UserModel.findById(req.user!.id)
119
- .session(sess ?? null)
120
- .exec();
121
-
122
- if (!userDoc || userDoc.accountStatus !== activeStatusValue) {
123
- return (
124
- res
125
- .status(403)
126
- .send(
127
- // amazonq-ignore-next-line false positive, hardcoded string
128
- getSuiteCoreTranslation(
129
- SuiteCoreStringKey.Validation_UserNotFound,
130
- ),
131
- )
132
- );
133
- }
134
-
135
- // Ensure we're only authenticating the currently logged-in user
136
- if (userDoc._id.toString() !== req.user!.id) {
137
- return (
138
- res
139
- .status(403)
140
- .send(
141
- // amazonq-ignore-next-line false positive, hardcoded string
142
- getSuiteCoreTranslation(
143
- SuiteCoreStringKey.Validation_InvalidCredentials,
144
- ),
145
- )
146
- );
147
- }
148
-
149
- let loginResult: {
150
- userDoc: IUserDocument;
151
- userMember: BackendMember;
152
- adminMember: BackendMember;
153
- };
154
-
155
- if (mnemonic) {
156
- // Authenticate with mnemonic
157
- const userMnemonic = new SecureString(mnemonic);
158
- try {
159
- loginResult = await userService.loginWithMnemonic(
160
- userDoc.email,
161
- userMnemonic,
162
- sess,
163
- );
164
- } finally {
165
- userMnemonic.dispose();
166
- }
167
- } else if (password) {
168
- // Authenticate with password
169
- loginResult = await userService.loginWithPassword(
170
- userDoc.email,
171
- password,
172
- sess,
173
- );
174
- } else {
175
- // Should not happen due to earlier guard; keeps TypeScript happy
176
- return res.status(400).send({
177
- // amazonq-ignore-next-line false positive, hardcoded string
178
- message: getSuiteCoreTranslation(
179
- SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired,
180
- ),
181
- });
182
- }
183
-
184
- // Double-check authenticated user matches logged-in user
185
- if (loginResult.userDoc._id.toString() !== req.user!.id) {
186
- return (
187
- res
188
- .status(403)
189
- .send(
190
- // amazonq-ignore-next-line false positive, hardcoded string
191
- getSuiteCoreTranslation(
192
- SuiteCoreStringKey.Validation_InvalidCredentials,
193
- ),
194
- )
195
- );
196
- }
197
-
198
- // Attach the fully authenticated member (with private key) to the request
199
- req.eciesUser = loginResult.userMember;
200
- // Do not attach the admin user to the request; it's a process-wide singleton
201
- // and must not be disposed as part of request cleanup.
202
-
203
- next();
204
- return;
205
- },
206
- {
207
- timeoutMs: application.environment.mongo.transactionTimeout,
208
- },
209
- );
210
- } catch (err) {
211
- if (
212
- err instanceof InvalidCredentialsError ||
213
- err instanceof InvalidPasswordError
214
- ) {
215
- // amazonq-ignore-next-line false positive
216
- console.error(
217
- 'Crypto authentication failed:',
218
- `userId=${String(req.user?.id || 'unknown').replace(
219
- /[\r\n]/g,
220
- '',
221
- )} hasPassword=${!!password} hasMnemonic=${!!mnemonic}`,
222
- );
223
- return res.status(401).send({
224
- // amazonq-ignore-next-line false positive, hardcoded string
225
- message: getSuiteCoreTranslation(
226
- SuiteCoreStringKey.Validation_InvalidCredentials,
227
- ),
228
- });
229
- }
230
- const sanitizedErr =
231
- err instanceof Error
232
- ? err.message.replace(/[\r\n]/g, ' ')
233
- : String(err).replace(/[\r\n]/g, ' ');
234
- console.error('Unexpected error in authenticateCrypto:', sanitizedErr);
235
- return res.status(500).send({
236
- // amazonq-ignore-next-line false positive, hardcoded string
237
- message: getSuiteCoreTranslation(
238
- SuiteCoreStringKey.Common_UnexpectedError,
239
- ),
240
- error: err,
241
- });
242
- }
243
- }