@digitaldefiance/node-express-suite 3.7.5 → 3.8.0

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 (814) hide show
  1. package/README.md +38 -6
  2. package/package.json +9 -8
  3. package/src/__tests__/fixtures/{index.ts → index.d.ts} +1 -0
  4. package/src/__tests__/fixtures/index.d.ts.map +1 -0
  5. package/src/__tests__/fixtures/index.js +5 -0
  6. package/src/__tests__/fixtures/index.js.map +1 -0
  7. package/src/__tests__/fixtures/model-mocks.mock.d.ts +12 -0
  8. package/src/__tests__/fixtures/model-mocks.mock.d.ts.map +1 -0
  9. package/src/__tests__/fixtures/model-mocks.mock.js +102 -0
  10. package/src/__tests__/fixtures/model-mocks.mock.js.map +1 -0
  11. package/src/__tests__/helpers/application.mock.d.ts +8 -0
  12. package/src/__tests__/helpers/application.mock.d.ts.map +1 -0
  13. package/src/__tests__/helpers/application.mock.js +77 -0
  14. package/src/__tests__/helpers/application.mock.js.map +1 -0
  15. package/src/__tests__/helpers/{index.ts → index.d.ts} +1 -0
  16. package/src/__tests__/helpers/index.d.ts.map +1 -0
  17. package/src/__tests__/helpers/index.js +7 -0
  18. package/src/__tests__/helpers/index.js.map +1 -0
  19. package/src/__tests__/helpers/setup-test-env.d.ts +12 -0
  20. package/src/__tests__/helpers/setup-test-env.d.ts.map +1 -0
  21. package/src/__tests__/helpers/setup-test-env.js +121 -0
  22. package/src/__tests__/helpers/setup-test-env.js.map +1 -0
  23. package/src/__tests__/{index.ts → index.d.ts} +1 -0
  24. package/src/__tests__/index.d.ts.map +1 -0
  25. package/src/__tests__/index.js +6 -0
  26. package/src/__tests__/index.js.map +1 -0
  27. package/src/application-base.d.ts +128 -0
  28. package/src/application-base.d.ts.map +1 -0
  29. package/src/application-base.js +364 -0
  30. package/src/application-base.js.map +1 -0
  31. package/src/application-concrete.d.ts +26 -0
  32. package/src/application-concrete.d.ts.map +1 -0
  33. package/src/application-concrete.js +34 -0
  34. package/src/application-concrete.js.map +1 -0
  35. package/src/application.d.ts +34 -0
  36. package/src/application.d.ts.map +1 -0
  37. package/src/application.js +172 -0
  38. package/src/application.js.map +1 -0
  39. package/src/backup-code.d.ts +72 -0
  40. package/src/backup-code.d.ts.map +1 -0
  41. package/src/backup-code.js +243 -0
  42. package/src/backup-code.js.map +1 -0
  43. package/src/builders/application-builder.d.ts +47 -0
  44. package/src/builders/application-builder.d.ts.map +1 -0
  45. package/src/builders/application-builder.js +76 -0
  46. package/src/builders/application-builder.js.map +1 -0
  47. package/src/builders/{index.ts → index.d.ts} +1 -0
  48. package/src/builders/index.d.ts.map +1 -0
  49. package/src/builders/index.js +5 -0
  50. package/src/builders/index.js.map +1 -0
  51. package/src/constants.d.ts +21 -0
  52. package/src/constants.d.ts.map +1 -0
  53. package/src/constants.js +63 -0
  54. package/src/constants.js.map +1 -0
  55. package/src/container/{index.ts → index.d.ts} +1 -0
  56. package/src/container/index.d.ts.map +1 -0
  57. package/src/container/index.js +6 -0
  58. package/src/container/index.js.map +1 -0
  59. package/src/container/service-container.d.ts +45 -0
  60. package/src/container/service-container.d.ts.map +1 -0
  61. package/src/container/service-container.js +68 -0
  62. package/src/container/service-container.js.map +1 -0
  63. package/src/container/{service-definitions.ts → service-definitions.d.ts} +10 -11
  64. package/src/container/service-definitions.d.ts.map +1 -0
  65. package/src/container/service-definitions.js +21 -0
  66. package/src/container/service-definitions.js.map +1 -0
  67. package/src/controllers/base.d.ts +80 -0
  68. package/src/controllers/base.d.ts.map +1 -0
  69. package/src/controllers/base.js +318 -0
  70. package/src/controllers/base.js.map +1 -0
  71. package/src/controllers/{index.ts → index.d.ts} +1 -0
  72. package/src/controllers/index.d.ts.map +1 -0
  73. package/src/controllers/index.js +6 -0
  74. package/src/controllers/index.js.map +1 -0
  75. package/src/controllers/user.d.ts +66 -0
  76. package/src/controllers/user.d.ts.map +1 -0
  77. package/src/controllers/user.js +936 -0
  78. package/src/controllers/user.js.map +1 -0
  79. package/src/database/{database-initializer.ts → database-initializer.d.ts} +3 -4
  80. package/src/database/database-initializer.d.ts.map +1 -0
  81. package/src/database/database-initializer.js +8 -0
  82. package/src/database/database-initializer.js.map +1 -0
  83. package/src/database/{index.ts → index.d.ts} +1 -0
  84. package/src/database/index.d.ts.map +1 -0
  85. package/src/database/index.js +5 -0
  86. package/src/database/index.js.map +1 -0
  87. package/src/decorators/base-controller.d.ts +22 -0
  88. package/src/decorators/base-controller.d.ts.map +1 -0
  89. package/src/decorators/base-controller.js +71 -0
  90. package/src/decorators/base-controller.js.map +1 -0
  91. package/src/decorators/controller.d.ts +43 -0
  92. package/src/decorators/controller.d.ts.map +1 -0
  93. package/src/decorators/controller.js +73 -0
  94. package/src/decorators/controller.js.map +1 -0
  95. package/src/decorators/{index.ts → index.d.ts} +1 -0
  96. package/src/decorators/index.d.ts.map +1 -0
  97. package/src/decorators/index.js +7 -0
  98. package/src/decorators/index.js.map +1 -0
  99. package/src/decorators/zod-validation.d.ts +10 -0
  100. package/src/decorators/zod-validation.d.ts.map +1 -0
  101. package/src/decorators/zod-validation.js +53 -0
  102. package/src/decorators/zod-validation.js.map +1 -0
  103. package/src/defaults.d.ts +12 -0
  104. package/src/defaults.d.ts.map +1 -0
  105. package/src/defaults.js +212 -0
  106. package/src/defaults.js.map +1 -0
  107. package/src/documents/{base.ts → base.d.ts} +2 -4
  108. package/src/documents/base.d.ts.map +1 -0
  109. package/src/documents/base.js +8 -0
  110. package/src/documents/base.js.map +1 -0
  111. package/src/documents/{email-token.ts → email-token.d.ts} +3 -8
  112. package/src/documents/email-token.d.ts.map +1 -0
  113. package/src/documents/email-token.js +8 -0
  114. package/src/documents/email-token.js.map +1 -0
  115. package/src/documents/{index.ts → index.d.ts} +1 -0
  116. package/src/documents/index.d.ts.map +1 -0
  117. package/src/documents/index.js +3 -0
  118. package/src/documents/index.js.map +1 -0
  119. package/src/documents/{mnemonic.ts → mnemonic.d.ts} +2 -6
  120. package/src/documents/mnemonic.d.ts.map +1 -0
  121. package/src/documents/mnemonic.js +8 -0
  122. package/src/documents/mnemonic.js.map +1 -0
  123. package/src/documents/{role.ts → role.d.ts} +2 -6
  124. package/src/documents/role.d.ts.map +1 -0
  125. package/src/documents/role.js +8 -0
  126. package/src/documents/role.js.map +1 -0
  127. package/src/documents/{used-direct-login-token.ts → used-direct-login-token.d.ts} +2 -4
  128. package/src/documents/used-direct-login-token.d.ts.map +1 -0
  129. package/src/documents/used-direct-login-token.js +8 -0
  130. package/src/documents/used-direct-login-token.js.map +1 -0
  131. package/src/documents/{user-role.ts → user-role.d.ts} +2 -6
  132. package/src/documents/user-role.d.ts.map +1 -0
  133. package/src/documents/user-role.js +8 -0
  134. package/src/documents/user-role.js.map +1 -0
  135. package/src/documents/{user.ts → user.d.ts} +2 -6
  136. package/src/documents/user.d.ts.map +1 -0
  137. package/src/documents/user.js +8 -0
  138. package/src/documents/user.js.map +1 -0
  139. package/src/enumerations/base-model-name.d.ts +43 -0
  140. package/src/enumerations/base-model-name.d.ts.map +1 -0
  141. package/src/enumerations/base-model-name.js +39 -0
  142. package/src/enumerations/base-model-name.js.map +1 -0
  143. package/src/enumerations/{index.ts → index.d.ts} +1 -0
  144. package/src/enumerations/index.d.ts.map +1 -0
  145. package/src/enumerations/index.js +8 -0
  146. package/src/enumerations/index.js.map +1 -0
  147. package/src/enumerations/{length-encoding-type.ts → length-encoding-type.d.ts} +6 -6
  148. package/src/enumerations/length-encoding-type.d.ts.map +1 -0
  149. package/src/enumerations/length-encoding-type.js +20 -0
  150. package/src/enumerations/length-encoding-type.js.map +1 -0
  151. package/src/enumerations/schema-collection.d.ts +39 -0
  152. package/src/enumerations/schema-collection.d.ts.map +1 -0
  153. package/src/enumerations/schema-collection.js +43 -0
  154. package/src/enumerations/schema-collection.js.map +1 -0
  155. package/src/enumerations/{symmetric-error-type.ts → symmetric-error-type.d.ts} +4 -4
  156. package/src/enumerations/symmetric-error-type.d.ts.map +1 -0
  157. package/src/enumerations/symmetric-error-type.js +17 -0
  158. package/src/enumerations/symmetric-error-type.js.map +1 -0
  159. package/src/environment.d.ts +194 -0
  160. package/src/environment.d.ts.map +1 -0
  161. package/src/environment.js +649 -0
  162. package/src/environment.js.map +1 -0
  163. package/src/errors/express-validation.d.ts +24 -0
  164. package/src/errors/express-validation.d.ts.map +1 -0
  165. package/src/errors/express-validation.js +33 -0
  166. package/src/errors/express-validation.js.map +1 -0
  167. package/src/errors/{index.ts → index.d.ts} +1 -0
  168. package/src/errors/index.d.ts.map +1 -0
  169. package/src/errors/index.js +16 -0
  170. package/src/errors/index.js.map +1 -0
  171. package/src/errors/invalid-backup-code-version.d.ts +19 -0
  172. package/src/errors/invalid-backup-code-version.d.ts.map +1 -0
  173. package/src/errors/invalid-backup-code-version.js +29 -0
  174. package/src/errors/invalid-backup-code-version.js.map +1 -0
  175. package/src/errors/invalid-jwt-token.d.ts +17 -0
  176. package/src/errors/invalid-jwt-token.d.ts.map +1 -0
  177. package/src/errors/invalid-jwt-token.js +24 -0
  178. package/src/errors/invalid-jwt-token.js.map +1 -0
  179. package/src/errors/invalid-model.d.ts +18 -0
  180. package/src/errors/invalid-model.d.ts.map +1 -0
  181. package/src/errors/invalid-model.js +26 -0
  182. package/src/errors/invalid-model.js.map +1 -0
  183. package/src/errors/invalid-new-password.d.ts +19 -0
  184. package/src/errors/invalid-new-password.d.ts.map +1 -0
  185. package/src/errors/invalid-new-password.js +28 -0
  186. package/src/errors/invalid-new-password.js.map +1 -0
  187. package/src/errors/invalid-password.d.ts +19 -0
  188. package/src/errors/invalid-password.d.ts.map +1 -0
  189. package/src/errors/invalid-password.js +28 -0
  190. package/src/errors/invalid-password.js.map +1 -0
  191. package/src/errors/missing-validated-data.d.ts +24 -0
  192. package/src/errors/missing-validated-data.d.ts.map +1 -0
  193. package/src/errors/missing-validated-data.js +53 -0
  194. package/src/errors/missing-validated-data.js.map +1 -0
  195. package/src/errors/mnemonic-or-password-required.d.ts +17 -0
  196. package/src/errors/mnemonic-or-password-required.d.ts.map +1 -0
  197. package/src/errors/mnemonic-or-password-required.js +26 -0
  198. package/src/errors/mnemonic-or-password-required.js.map +1 -0
  199. package/src/errors/model-not-registered.d.ts +18 -0
  200. package/src/errors/model-not-registered.d.ts.map +1 -0
  201. package/src/errors/model-not-registered.js +26 -0
  202. package/src/errors/model-not-registered.js.map +1 -0
  203. package/src/errors/mongoose-validation.d.ts +28 -0
  204. package/src/errors/mongoose-validation.d.ts.map +1 -0
  205. package/src/errors/mongoose-validation.js +33 -0
  206. package/src/errors/mongoose-validation.js.map +1 -0
  207. package/src/errors/symmetric.d.ts +23 -0
  208. package/src/errors/symmetric.d.ts.map +1 -0
  209. package/src/errors/symmetric.js +37 -0
  210. package/src/errors/symmetric.js.map +1 -0
  211. package/src/errors/token-expired.d.ts +17 -0
  212. package/src/errors/token-expired.d.ts.map +1 -0
  213. package/src/errors/token-expired.js +24 -0
  214. package/src/errors/token-expired.js.map +1 -0
  215. package/src/get-language.d.ts +12 -0
  216. package/src/get-language.d.ts.map +1 -0
  217. package/src/get-language.js +40 -0
  218. package/src/get-language.js.map +1 -0
  219. package/src/get-timezone.d.ts +12 -0
  220. package/src/get-timezone.d.ts.map +1 -0
  221. package/src/get-timezone.js +53 -0
  222. package/src/get-timezone.js.map +1 -0
  223. package/src/{index.ts → index.d.ts} +2 -44
  224. package/src/index.d.ts.map +1 -0
  225. package/src/index.js +80 -0
  226. package/src/index.js.map +1 -0
  227. package/src/interfaces/{api-error-response.ts → api-error-response.d.ts} +2 -3
  228. package/src/interfaces/api-error-response.d.ts.map +1 -0
  229. package/src/interfaces/api-error-response.js +8 -0
  230. package/src/interfaces/api-error-response.js.map +1 -0
  231. package/src/interfaces/{api-express-validation-error-response.ts → api-express-validation-error-response.d.ts} +3 -4
  232. package/src/interfaces/api-express-validation-error-response.d.ts.map +1 -0
  233. package/src/interfaces/api-express-validation-error-response.js +8 -0
  234. package/src/interfaces/api-express-validation-error-response.js.map +1 -0
  235. package/src/interfaces/{api-message-response.ts → api-message-response.d.ts} +2 -2
  236. package/src/interfaces/api-message-response.d.ts.map +1 -0
  237. package/src/interfaces/api-message-response.js +8 -0
  238. package/src/interfaces/api-message-response.js.map +1 -0
  239. package/src/interfaces/{api-mongo-validation-error-response.ts → api-mongo-validation-error-response.d.ts} +2 -3
  240. package/src/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
  241. package/src/interfaces/api-mongo-validation-error-response.js +8 -0
  242. package/src/interfaces/api-mongo-validation-error-response.js.map +1 -0
  243. package/src/interfaces/api-responses/{backup-codes-response.ts → backup-codes-response.d.ts} +2 -3
  244. package/src/interfaces/api-responses/backup-codes-response.d.ts.map +1 -0
  245. package/src/interfaces/api-responses/backup-codes-response.js +8 -0
  246. package/src/interfaces/api-responses/backup-codes-response.js.map +1 -0
  247. package/src/interfaces/api-responses/{challenge-response.ts → challenge-response.d.ts} +5 -6
  248. package/src/interfaces/api-responses/challenge-response.d.ts.map +1 -0
  249. package/src/interfaces/api-responses/challenge-response.js +7 -0
  250. package/src/interfaces/api-responses/challenge-response.js.map +1 -0
  251. package/src/interfaces/api-responses/{code-count-response.ts → code-count-response.d.ts} +2 -3
  252. package/src/interfaces/api-responses/code-count-response.d.ts.map +1 -0
  253. package/src/interfaces/api-responses/code-count-response.js +8 -0
  254. package/src/interfaces/api-responses/code-count-response.js.map +1 -0
  255. package/src/interfaces/api-responses/{index.ts → index.d.ts} +1 -0
  256. package/src/interfaces/api-responses/index.d.ts.map +1 -0
  257. package/src/interfaces/api-responses/index.js +12 -0
  258. package/src/interfaces/api-responses/index.js.map +1 -0
  259. package/src/interfaces/api-responses/{login-response.ts → login-response.d.ts} +4 -5
  260. package/src/interfaces/api-responses/login-response.d.ts.map +1 -0
  261. package/src/interfaces/api-responses/login-response.js +8 -0
  262. package/src/interfaces/api-responses/login-response.js.map +1 -0
  263. package/src/interfaces/api-responses/{mnemonic-response.ts → mnemonic-response.d.ts} +3 -4
  264. package/src/interfaces/api-responses/mnemonic-response.d.ts.map +1 -0
  265. package/src/interfaces/api-responses/mnemonic-response.js +7 -0
  266. package/src/interfaces/api-responses/mnemonic-response.js.map +1 -0
  267. package/src/interfaces/api-responses/{registration-response.ts → registration-response.d.ts} +5 -6
  268. package/src/interfaces/api-responses/registration-response.d.ts.map +1 -0
  269. package/src/interfaces/api-responses/registration-response.js +7 -0
  270. package/src/interfaces/api-responses/registration-response.js.map +1 -0
  271. package/src/interfaces/api-responses/{request-user-response.ts → request-user-response.d.ts} +2 -3
  272. package/src/interfaces/api-responses/request-user-response.d.ts.map +1 -0
  273. package/src/interfaces/api-responses/request-user-response.js +8 -0
  274. package/src/interfaces/api-responses/request-user-response.js.map +1 -0
  275. package/src/interfaces/api-responses/{user-settings-response.ts → user-settings-response.d.ts} +9 -10
  276. package/src/interfaces/api-responses/user-settings-response.d.ts.map +1 -0
  277. package/src/interfaces/api-responses/user-settings-response.js +8 -0
  278. package/src/interfaces/api-responses/user-settings-response.js.map +1 -0
  279. package/src/interfaces/application.d.ts +39 -0
  280. package/src/interfaces/application.d.ts.map +1 -0
  281. package/src/interfaces/application.js +8 -0
  282. package/src/interfaces/application.js.map +1 -0
  283. package/src/interfaces/backend-objects/{email-token.ts → email-token.d.ts} +3 -8
  284. package/src/interfaces/backend-objects/email-token.d.ts.map +1 -0
  285. package/src/interfaces/backend-objects/email-token.js +8 -0
  286. package/src/interfaces/backend-objects/email-token.js.map +1 -0
  287. package/src/interfaces/backend-objects/{index.ts → index.d.ts} +1 -0
  288. package/src/interfaces/backend-objects/index.d.ts.map +1 -0
  289. package/src/interfaces/backend-objects/index.js +8 -0
  290. package/src/interfaces/backend-objects/index.js.map +1 -0
  291. package/src/interfaces/backend-objects/{request-user.ts → request-user.d.ts} +2 -6
  292. package/src/interfaces/backend-objects/request-user.d.ts.map +1 -0
  293. package/src/interfaces/backend-objects/request-user.js +8 -0
  294. package/src/interfaces/backend-objects/request-user.js.map +1 -0
  295. package/src/interfaces/backend-objects/{role.ts → role.d.ts} +2 -7
  296. package/src/interfaces/backend-objects/role.d.ts.map +1 -0
  297. package/src/interfaces/backend-objects/role.js +8 -0
  298. package/src/interfaces/backend-objects/role.js.map +1 -0
  299. package/src/interfaces/backend-objects/{user.ts → user.d.ts} +2 -6
  300. package/src/interfaces/backend-objects/user.d.ts.map +1 -0
  301. package/src/interfaces/backend-objects/user.js +8 -0
  302. package/src/interfaces/backend-objects/user.js.map +1 -0
  303. package/src/interfaces/{checksum-config.ts → checksum-config.d.ts} +3 -3
  304. package/src/interfaces/checksum-config.d.ts.map +1 -0
  305. package/src/interfaces/checksum-config.js +8 -0
  306. package/src/interfaces/checksum-config.js.map +1 -0
  307. package/src/interfaces/checksum-consts.d.ts +20 -0
  308. package/src/interfaces/checksum-consts.d.ts.map +1 -0
  309. package/src/interfaces/checksum-consts.js +8 -0
  310. package/src/interfaces/checksum-consts.js.map +1 -0
  311. package/src/interfaces/constants.d.ts +66 -0
  312. package/src/interfaces/constants.d.ts.map +1 -0
  313. package/src/interfaces/constants.js +8 -0
  314. package/src/interfaces/constants.js.map +1 -0
  315. package/src/interfaces/{controller-config.ts → controller-config.d.ts} +15 -31
  316. package/src/interfaces/controller-config.d.ts.map +1 -0
  317. package/src/interfaces/controller-config.js +8 -0
  318. package/src/interfaces/controller-config.js.map +1 -0
  319. package/src/interfaces/{create-user-basics.ts → create-user-basics.d.ts} +13 -13
  320. package/src/interfaces/create-user-basics.d.ts.map +1 -0
  321. package/src/interfaces/create-user-basics.js +8 -0
  322. package/src/interfaces/create-user-basics.js.map +1 -0
  323. package/src/interfaces/{csp-config.ts → csp-config.d.ts} +5 -15
  324. package/src/interfaces/csp-config.d.ts.map +1 -0
  325. package/src/interfaces/csp-config.js +23 -0
  326. package/src/interfaces/csp-config.js.map +1 -0
  327. package/src/interfaces/{csp-definition.ts → csp-definition.d.ts} +9 -46
  328. package/src/interfaces/csp-definition.d.ts.map +1 -0
  329. package/src/interfaces/csp-definition.js +32 -0
  330. package/src/interfaces/csp-definition.js.map +1 -0
  331. package/src/interfaces/{db-init-result.ts → db-init-result.d.ts} +2 -3
  332. package/src/interfaces/db-init-result.d.ts.map +1 -0
  333. package/src/interfaces/db-init-result.js +8 -0
  334. package/src/interfaces/db-init-result.js.map +1 -0
  335. package/src/interfaces/{deep-partial.ts → deep-partial.d.ts} +2 -2
  336. package/src/interfaces/deep-partial.d.ts.map +1 -0
  337. package/src/interfaces/deep-partial.js +8 -0
  338. package/src/interfaces/deep-partial.js.map +1 -0
  339. package/src/interfaces/{discriminator-collections.ts → discriminator-collections.d.ts} +4 -8
  340. package/src/interfaces/discriminator-collections.d.ts.map +1 -0
  341. package/src/interfaces/discriminator-collections.js +8 -0
  342. package/src/interfaces/discriminator-collections.js.map +1 -0
  343. package/src/interfaces/email-service.d.ts +21 -0
  344. package/src/interfaces/email-service.d.ts.map +1 -0
  345. package/src/interfaces/email-service.js +8 -0
  346. package/src/interfaces/email-service.js.map +1 -0
  347. package/src/interfaces/environment-mongo.d.ts +85 -0
  348. package/src/interfaces/environment-mongo.d.ts.map +1 -0
  349. package/src/interfaces/environment-mongo.js +8 -0
  350. package/src/interfaces/environment-mongo.js.map +1 -0
  351. package/src/interfaces/environment.d.ts +190 -0
  352. package/src/interfaces/environment.d.ts.map +1 -0
  353. package/src/interfaces/environment.js +8 -0
  354. package/src/interfaces/environment.js.map +1 -0
  355. package/src/interfaces/{failable-result.ts → failable-result.d.ts} +5 -5
  356. package/src/interfaces/failable-result.d.ts.map +1 -0
  357. package/src/interfaces/failable-result.js +8 -0
  358. package/src/interfaces/failable-result.js.map +1 -0
  359. package/src/interfaces/{fec-consts.ts → fec-consts.d.ts} +3 -3
  360. package/src/interfaces/fec-consts.d.ts.map +1 -0
  361. package/src/interfaces/fec-consts.js +8 -0
  362. package/src/interfaces/fec-consts.js.map +1 -0
  363. package/src/interfaces/{flexible-csp.ts → flexible-csp.d.ts} +5 -16
  364. package/src/interfaces/flexible-csp.d.ts.map +1 -0
  365. package/src/interfaces/flexible-csp.js +24 -0
  366. package/src/interfaces/flexible-csp.js.map +1 -0
  367. package/src/interfaces/{handleable-error-options.ts → handleable-error-options.d.ts} +5 -5
  368. package/src/interfaces/handleable-error-options.d.ts.map +1 -0
  369. package/src/interfaces/handleable-error-options.js +8 -0
  370. package/src/interfaces/handleable-error-options.js.map +1 -0
  371. package/src/interfaces/{index.ts → index.d.ts} +1 -0
  372. package/src/interfaces/index.d.ts.map +1 -0
  373. package/src/interfaces/index.js +38 -0
  374. package/src/interfaces/index.js.map +1 -0
  375. package/src/interfaces/jwt-consts.d.ts +20 -0
  376. package/src/interfaces/jwt-consts.d.ts.map +1 -0
  377. package/src/interfaces/jwt-consts.js +8 -0
  378. package/src/interfaces/jwt-consts.js.map +1 -0
  379. package/src/interfaces/{jwt-sign-response.ts → jwt-sign-response.d.ts} +9 -18
  380. package/src/interfaces/jwt-sign-response.d.ts.map +1 -0
  381. package/src/interfaces/jwt-sign-response.js +8 -0
  382. package/src/interfaces/jwt-sign-response.js.map +1 -0
  383. package/src/interfaces/models/{email-token.ts → email-token.d.ts} +1 -2
  384. package/src/interfaces/models/email-token.d.ts.map +1 -0
  385. package/src/interfaces/models/email-token.js +8 -0
  386. package/src/interfaces/models/email-token.js.map +1 -0
  387. package/src/interfaces/models/{index.ts → index.d.ts} +1 -0
  388. package/src/interfaces/models/index.d.ts.map +1 -0
  389. package/src/interfaces/models/index.js +11 -0
  390. package/src/interfaces/models/index.js.map +1 -0
  391. package/src/interfaces/models/{mnemonic.ts → mnemonic.d.ts} +1 -2
  392. package/src/interfaces/models/mnemonic.d.ts.map +1 -0
  393. package/src/interfaces/models/mnemonic.js +8 -0
  394. package/src/interfaces/models/mnemonic.js.map +1 -0
  395. package/src/interfaces/models/{role.ts → role.d.ts} +1 -2
  396. package/src/interfaces/models/role.d.ts.map +1 -0
  397. package/src/interfaces/models/role.js +8 -0
  398. package/src/interfaces/models/role.js.map +1 -0
  399. package/src/interfaces/models/{token-role.ts → token-role.d.ts} +2 -6
  400. package/src/interfaces/models/token-role.d.ts.map +1 -0
  401. package/src/interfaces/models/token-role.js +8 -0
  402. package/src/interfaces/models/token-role.js.map +1 -0
  403. package/src/interfaces/models/{used-direct-login-token.ts → used-direct-login-token.d.ts} +2 -4
  404. package/src/interfaces/models/used-direct-login-token.d.ts.map +1 -0
  405. package/src/interfaces/models/used-direct-login-token.js +8 -0
  406. package/src/interfaces/models/used-direct-login-token.js.map +1 -0
  407. package/src/interfaces/models/{user-role.ts → user-role.d.ts} +2 -6
  408. package/src/interfaces/models/user-role.d.ts.map +1 -0
  409. package/src/interfaces/models/user-role.js +8 -0
  410. package/src/interfaces/models/user-role.js.map +1 -0
  411. package/src/interfaces/models/{user.ts → user.d.ts} +3 -12
  412. package/src/interfaces/models/user.d.ts.map +1 -0
  413. package/src/interfaces/models/user.js +8 -0
  414. package/src/interfaces/models/user.js.map +1 -0
  415. package/src/interfaces/{mongo-errors.ts → mongo-errors.d.ts} +2 -3
  416. package/src/interfaces/mongo-errors.d.ts.map +1 -0
  417. package/src/interfaces/mongo-errors.js +8 -0
  418. package/src/interfaces/mongo-errors.js.map +1 -0
  419. package/src/interfaces/request-user.d.ts +67 -0
  420. package/src/interfaces/request-user.d.ts.map +1 -0
  421. package/src/interfaces/request-user.js +8 -0
  422. package/src/interfaces/request-user.js.map +1 -0
  423. package/src/interfaces/required-string-keys.d.ts +28 -0
  424. package/src/interfaces/required-string-keys.d.ts.map +1 -0
  425. package/src/interfaces/required-string-keys.js +8 -0
  426. package/src/interfaces/required-string-keys.js.map +1 -0
  427. package/src/interfaces/{schema.ts → schema.d.ts} +22 -28
  428. package/src/interfaces/schema.d.ts.map +1 -0
  429. package/src/interfaces/schema.js +8 -0
  430. package/src/interfaces/schema.js.map +1 -0
  431. package/src/interfaces/server-init-result.d.ts +45 -0
  432. package/src/interfaces/server-init-result.d.ts.map +1 -0
  433. package/src/interfaces/server-init-result.js +8 -0
  434. package/src/interfaces/server-init-result.js.map +1 -0
  435. package/src/interfaces/{status-code-response.ts → status-code-response.d.ts} +4 -5
  436. package/src/interfaces/status-code-response.d.ts.map +1 -0
  437. package/src/interfaces/status-code-response.js +8 -0
  438. package/src/interfaces/status-code-response.js.map +1 -0
  439. package/src/interfaces/{symmetric-encryption-results.ts → symmetric-encryption-results.d.ts} +3 -3
  440. package/src/interfaces/symmetric-encryption-results.d.ts.map +1 -1
  441. package/src/interfaces/symmetric-encryption-results.js +5 -0
  442. package/src/interfaces/symmetric-encryption-results.js.map +1 -1
  443. package/src/interfaces/{test-environment.ts → test-environment.d.ts} +6 -7
  444. package/src/interfaces/test-environment.d.ts.map +1 -0
  445. package/src/interfaces/test-environment.js +8 -0
  446. package/src/interfaces/test-environment.js.map +1 -0
  447. package/src/interfaces/{token-response.ts → token-response.d.ts} +2 -3
  448. package/src/interfaces/token-response.d.ts.map +1 -0
  449. package/src/interfaces/token-response.js +8 -0
  450. package/src/interfaces/token-response.js.map +1 -0
  451. package/src/middleware-utils.d.ts +31 -0
  452. package/src/middleware-utils.d.ts.map +1 -0
  453. package/src/middleware-utils.js +117 -0
  454. package/src/middleware-utils.js.map +1 -0
  455. package/src/middlewares/authenticate-crypto.d.ts +27 -0
  456. package/src/middlewares/authenticate-crypto.d.ts.map +1 -0
  457. package/src/middlewares/authenticate-crypto.js +143 -0
  458. package/src/middlewares/authenticate-crypto.js.map +1 -0
  459. package/src/middlewares/authenticate-token.d.ts +34 -0
  460. package/src/middlewares/authenticate-token.d.ts.map +1 -0
  461. package/src/middlewares/authenticate-token.js +117 -0
  462. package/src/middlewares/authenticate-token.js.map +1 -0
  463. package/src/middlewares/cleanup-crypto.d.ts +16 -0
  464. package/src/middlewares/cleanup-crypto.d.ts.map +1 -0
  465. package/src/middlewares/cleanup-crypto.js +41 -0
  466. package/src/middlewares/cleanup-crypto.js.map +1 -0
  467. package/src/middlewares/{index.ts → index.d.ts} +1 -0
  468. package/src/middlewares/index.d.ts.map +1 -0
  469. package/src/middlewares/index.js +8 -0
  470. package/src/middlewares/index.js.map +1 -0
  471. package/src/middlewares/{set-global-context-language.ts → set-global-context-language.d.ts} +2 -24
  472. package/src/middlewares/set-global-context-language.d.ts.map +1 -0
  473. package/src/middlewares/set-global-context-language.js +27 -0
  474. package/src/middlewares/set-global-context-language.js.map +1 -0
  475. package/src/model-registry.d.ts +79 -0
  476. package/src/model-registry.d.ts.map +1 -0
  477. package/src/model-registry.js +97 -0
  478. package/src/model-registry.js.map +1 -0
  479. package/src/models/{email-token.ts → email-token.d.ts} +2 -27
  480. package/src/models/email-token.d.ts.map +1 -0
  481. package/src/models/email-token.js +16 -0
  482. package/src/models/email-token.js.map +1 -0
  483. package/src/models/{index.ts → index.d.ts} +1 -0
  484. package/src/models/index.d.ts.map +1 -0
  485. package/src/models/index.js +10 -0
  486. package/src/models/index.js.map +1 -0
  487. package/src/models/{mnemonic.ts → mnemonic.d.ts} +2 -20
  488. package/src/models/mnemonic.d.ts.map +1 -0
  489. package/src/models/mnemonic.js +27 -0
  490. package/src/models/mnemonic.js.map +1 -0
  491. package/src/models/{role.ts → role.d.ts} +2 -16
  492. package/src/models/role.d.ts.map +1 -0
  493. package/src/models/role.js +27 -0
  494. package/src/models/role.js.map +1 -0
  495. package/src/models/{used-direct-login-token.ts → used-direct-login-token.d.ts} +2 -27
  496. package/src/models/used-direct-login-token.d.ts.map +1 -0
  497. package/src/models/used-direct-login-token.js +16 -0
  498. package/src/models/used-direct-login-token.js.map +1 -0
  499. package/src/models/{user-role.ts → user-role.d.ts} +2 -19
  500. package/src/models/user-role.d.ts.map +1 -0
  501. package/src/models/user-role.js +26 -0
  502. package/src/models/user-role.js.map +1 -0
  503. package/src/models/{user.ts → user.d.ts} +2 -20
  504. package/src/models/user.d.ts.map +1 -0
  505. package/src/models/user.js +27 -0
  506. package/src/models/user.js.map +1 -0
  507. package/src/pipeline/{index.ts → index.d.ts} +1 -0
  508. package/src/pipeline/index.d.ts.map +1 -0
  509. package/src/pipeline/index.js +5 -0
  510. package/src/pipeline/index.js.map +1 -0
  511. package/src/pipeline/pipeline-builder.d.ts +16 -0
  512. package/src/pipeline/pipeline-builder.d.ts.map +1 -0
  513. package/src/pipeline/pipeline-builder.js +26 -0
  514. package/src/pipeline/pipeline-builder.js.map +1 -0
  515. package/src/plugins/{index.ts → index.d.ts} +1 -0
  516. package/src/plugins/index.d.ts.map +1 -0
  517. package/src/plugins/index.js +6 -0
  518. package/src/plugins/index.js.map +1 -0
  519. package/src/plugins/{plugin-interface.ts → plugin-interface.d.ts} +5 -6
  520. package/src/plugins/plugin-interface.d.ts.map +1 -0
  521. package/src/plugins/plugin-interface.js +8 -0
  522. package/src/plugins/plugin-interface.js.map +1 -0
  523. package/src/plugins/plugin-manager.d.ts +22 -0
  524. package/src/plugins/plugin-manager.d.ts.map +1 -0
  525. package/src/plugins/plugin-manager.js +46 -0
  526. package/src/plugins/plugin-manager.js.map +1 -0
  527. package/src/registry/email-service-registry.d.ts +49 -0
  528. package/src/registry/email-service-registry.d.ts.map +1 -0
  529. package/src/registry/email-service-registry.js +64 -0
  530. package/src/registry/email-service-registry.js.map +1 -0
  531. package/src/registry/{index.ts → index.d.ts} +1 -0
  532. package/src/registry/index.d.ts.map +1 -0
  533. package/src/registry/index.js +6 -0
  534. package/src/registry/index.js.map +1 -0
  535. package/src/responses/{index.ts → index.d.ts} +1 -0
  536. package/src/responses/index.d.ts.map +1 -0
  537. package/src/responses/index.js +5 -0
  538. package/src/responses/index.js.map +1 -0
  539. package/src/responses/response-builder.d.ts +103 -0
  540. package/src/responses/response-builder.d.ts.map +1 -0
  541. package/src/responses/response-builder.js +142 -0
  542. package/src/responses/response-builder.js.map +1 -0
  543. package/src/routers/api.d.ts +59 -0
  544. package/src/routers/api.d.ts.map +1 -0
  545. package/src/routers/api.js +110 -0
  546. package/src/routers/api.js.map +1 -0
  547. package/src/routers/app.d.ts +87 -0
  548. package/src/routers/app.d.ts.map +1 -0
  549. package/src/routers/app.js +285 -0
  550. package/src/routers/app.js.map +1 -0
  551. package/src/routers/{base.ts → base.d.ts} +11 -19
  552. package/src/routers/base.d.ts.map +1 -0
  553. package/src/routers/base.js +31 -0
  554. package/src/routers/base.js.map +1 -0
  555. package/src/routers/{index.ts → index.d.ts} +1 -0
  556. package/src/routers/index.d.ts.map +1 -0
  557. package/src/routers/index.js +7 -0
  558. package/src/routers/index.js.map +1 -0
  559. package/src/routers/router-config.d.ts +35 -0
  560. package/src/routers/router-config.d.ts.map +1 -0
  561. package/src/routers/router-config.js +16 -0
  562. package/src/routers/router-config.js.map +1 -0
  563. package/src/routing/index.d.ts +2 -0
  564. package/src/routing/index.d.ts.map +1 -0
  565. package/src/routing/index.js +5 -0
  566. package/src/routing/index.js.map +1 -0
  567. package/src/routing/route-builder.d.ts +121 -0
  568. package/src/routing/route-builder.d.ts.map +1 -0
  569. package/src/routing/route-builder.js +167 -0
  570. package/src/routing/route-builder.js.map +1 -0
  571. package/src/schemas/email-token.d.ts +65 -0
  572. package/src/schemas/email-token.d.ts.map +1 -0
  573. package/src/schemas/email-token.js +68 -0
  574. package/src/schemas/email-token.js.map +1 -0
  575. package/src/schemas/{index.ts → index.d.ts} +1 -0
  576. package/src/schemas/index.d.ts.map +1 -0
  577. package/src/schemas/index.js +11 -0
  578. package/src/schemas/index.js.map +1 -0
  579. package/src/schemas/mnemonic.d.ts +37 -0
  580. package/src/schemas/mnemonic.d.ts.map +1 -0
  581. package/src/schemas/mnemonic.js +41 -0
  582. package/src/schemas/mnemonic.js.map +1 -0
  583. package/src/schemas/role.d.ts +57 -0
  584. package/src/schemas/role.d.ts.map +1 -0
  585. package/src/schemas/role.js +102 -0
  586. package/src/schemas/role.js.map +1 -0
  587. package/src/schemas/schema.d.ts +62 -0
  588. package/src/schemas/schema.d.ts.map +1 -0
  589. package/src/schemas/schema.js +81 -0
  590. package/src/schemas/schema.js.map +1 -0
  591. package/src/schemas/used-direct-login-token.d.ts +49 -0
  592. package/src/schemas/used-direct-login-token.d.ts.map +1 -0
  593. package/src/schemas/used-direct-login-token.js +35 -0
  594. package/src/schemas/used-direct-login-token.js.map +1 -0
  595. package/src/schemas/user-role.d.ts +52 -0
  596. package/src/schemas/user-role.d.ts.map +1 -0
  597. package/src/schemas/user-role.js +67 -0
  598. package/src/schemas/user-role.js.map +1 -0
  599. package/src/schemas/user.d.ts +43 -0
  600. package/src/schemas/user.d.ts.map +1 -0
  601. package/src/schemas/user.js +214 -0
  602. package/src/schemas/user.js.map +1 -0
  603. package/src/services/backup-code.d.ts +80 -0
  604. package/src/services/backup-code.d.ts.map +1 -0
  605. package/src/services/backup-code.js +189 -0
  606. package/src/services/backup-code.js.map +1 -0
  607. package/src/services/base.d.ts +22 -0
  608. package/src/services/base.d.ts.map +1 -0
  609. package/src/services/base.js +26 -0
  610. package/src/services/base.js.map +1 -0
  611. package/src/services/checksum.d.ts +90 -0
  612. package/src/services/checksum.d.ts.map +1 -0
  613. package/src/services/checksum.js +166 -0
  614. package/src/services/checksum.js.map +1 -0
  615. package/src/services/database-initialization.d.ts +138 -0
  616. package/src/services/database-initialization.d.ts.map +1 -0
  617. package/src/services/database-initialization.js +904 -0
  618. package/src/services/database-initialization.js.map +1 -0
  619. package/src/services/{db-init-cache.ts → db-init-cache.d.ts} +6 -16
  620. package/src/services/db-init-cache.d.ts.map +1 -0
  621. package/src/services/db-init-cache.js +7 -0
  622. package/src/services/db-init-cache.js.map +1 -0
  623. package/src/services/direct-login-token.d.ts +28 -0
  624. package/src/services/direct-login-token.d.ts.map +1 -0
  625. package/src/services/direct-login-token.js +62 -0
  626. package/src/services/direct-login-token.js.map +1 -0
  627. package/src/services/dummy-email-service.d.ts +30 -0
  628. package/src/services/dummy-email-service.d.ts.map +1 -0
  629. package/src/services/dummy-email-service.js +35 -0
  630. package/src/services/dummy-email-service.js.map +1 -0
  631. package/src/services/fec-usage-example.d.ts +58 -0
  632. package/src/services/fec-usage-example.d.ts.map +1 -0
  633. package/src/services/fec-usage-example.js +95 -0
  634. package/src/services/fec-usage-example.js.map +1 -0
  635. package/src/services/fec.d.ts +88 -0
  636. package/src/services/fec.d.ts.map +1 -0
  637. package/src/services/fec.js +246 -0
  638. package/src/services/fec.js.map +1 -0
  639. package/src/services/{index.ts → index.d.ts} +1 -0
  640. package/src/services/index.d.ts.map +1 -0
  641. package/src/services/index.js +22 -0
  642. package/src/services/index.js.map +1 -0
  643. package/src/services/jwt.d.ts +45 -0
  644. package/src/services/jwt.d.ts.map +1 -0
  645. package/src/services/jwt.js +105 -0
  646. package/src/services/jwt.js.map +1 -0
  647. package/src/services/key-wrapping.d.ts +139 -0
  648. package/src/services/key-wrapping.d.ts.map +1 -0
  649. package/src/services/key-wrapping.js +372 -0
  650. package/src/services/key-wrapping.js.map +1 -0
  651. package/src/services/mnemonic.d.ts +68 -0
  652. package/src/services/mnemonic.d.ts.map +1 -0
  653. package/src/services/mnemonic.js +120 -0
  654. package/src/services/mnemonic.js.map +1 -0
  655. package/src/services/request-user.d.ts +45 -0
  656. package/src/services/request-user.d.ts.map +1 -0
  657. package/src/services/request-user.js +90 -0
  658. package/src/services/request-user.js.map +1 -0
  659. package/src/services/role.d.ts +97 -0
  660. package/src/services/role.d.ts.map +1 -0
  661. package/src/services/role.js +289 -0
  662. package/src/services/role.js.map +1 -0
  663. package/src/services/symmetric.d.ts +60 -0
  664. package/src/services/symmetric.d.ts.map +1 -0
  665. package/src/services/symmetric.js +125 -0
  666. package/src/services/symmetric.js.map +1 -0
  667. package/src/services/system-user.d.ts +22 -0
  668. package/src/services/system-user.d.ts.map +1 -0
  669. package/src/services/system-user.js +52 -0
  670. package/src/services/system-user.js.map +1 -0
  671. package/src/services/user.d.ts +368 -0
  672. package/src/services/user.d.ts.map +1 -0
  673. package/src/services/user.js +1470 -0
  674. package/src/services/user.js.map +1 -0
  675. package/src/services/xor.d.ts +28 -0
  676. package/src/services/xor.d.ts.map +1 -0
  677. package/src/services/xor.js +45 -0
  678. package/src/services/xor.js.map +1 -0
  679. package/src/{testing.ts → testing.d.ts} +1 -2
  680. package/src/testing.d.ts.map +1 -0
  681. package/src/testing.js +12 -0
  682. package/src/testing.js.map +1 -0
  683. package/src/transactions/{index.ts → index.d.ts} +1 -0
  684. package/src/transactions/index.d.ts.map +1 -0
  685. package/src/transactions/index.js +5 -0
  686. package/src/transactions/index.js.map +1 -0
  687. package/src/transactions/transaction-manager.d.ts +37 -0
  688. package/src/transactions/transaction-manager.d.ts.map +1 -0
  689. package/src/transactions/transaction-manager.js +50 -0
  690. package/src/transactions/transaction-manager.js.map +1 -0
  691. package/src/types/{app-config.ts → app-config.d.ts} +10 -16
  692. package/src/types/app-config.d.ts.map +1 -0
  693. package/src/types/app-config.js +8 -0
  694. package/src/types/app-config.js.map +1 -0
  695. package/src/types/{controller-config.ts → controller-config.d.ts} +7 -9
  696. package/src/types/controller-config.d.ts.map +1 -0
  697. package/src/types/controller-config.js +8 -0
  698. package/src/types/controller-config.js.map +1 -0
  699. package/src/types/{environment-variables.ts → environment-variables.d.ts} +5 -27
  700. package/src/types/environment-variables.d.ts.map +1 -0
  701. package/src/types/environment-variables.js +41 -0
  702. package/src/types/environment-variables.js.map +1 -0
  703. package/src/types/{index.ts → index.d.ts} +1 -0
  704. package/src/types/index.d.ts.map +1 -0
  705. package/src/types/index.js +6 -0
  706. package/src/types/index.js.map +1 -0
  707. package/src/types/{mongoose-helpers.ts → mongoose-helpers.d.ts} +2 -3
  708. package/src/types/mongoose-helpers.d.ts.map +1 -0
  709. package/src/types/mongoose-helpers.js +8 -0
  710. package/src/types/mongoose-helpers.js.map +1 -0
  711. package/src/types.d.ts +118 -0
  712. package/src/types.d.ts.map +1 -0
  713. package/src/types.js +28 -0
  714. package/src/types.js.map +1 -0
  715. package/src/utils.d.ts +240 -0
  716. package/src/utils.d.ts.map +1 -0
  717. package/src/utils.js +843 -0
  718. package/src/utils.js.map +1 -0
  719. package/src/validation/{index.ts → index.d.ts} +1 -0
  720. package/src/validation/index.d.ts.map +1 -0
  721. package/src/validation/index.js +5 -0
  722. package/src/validation/index.js.map +1 -0
  723. package/src/validation/validation-builder.d.ts +71 -0
  724. package/src/validation/validation-builder.d.ts.map +1 -0
  725. package/src/validation/validation-builder.js +120 -0
  726. package/src/validation/validation-builder.js.map +1 -0
  727. package/LICENSE +0 -21
  728. package/src/__tests__/fixtures/model-mocks.mock.ts +0 -164
  729. package/src/__tests__/helpers/application.mock.ts +0 -89
  730. package/src/__tests__/helpers/setup-test-env.ts +0 -202
  731. package/src/application-base.ts +0 -548
  732. package/src/application-concrete.ts +0 -62
  733. package/src/application.ts +0 -330
  734. package/src/backup-code.ts +0 -348
  735. package/src/builders/application-builder.ts +0 -147
  736. package/src/constants.ts +0 -89
  737. package/src/container/service-container.ts +0 -85
  738. package/src/controllers/base.ts +0 -512
  739. package/src/controllers/user.ts +0 -1734
  740. package/src/decorators/base-controller.ts +0 -91
  741. package/src/decorators/controller.ts +0 -152
  742. package/src/decorators/zod-validation.ts +0 -64
  743. package/src/defaults.ts +0 -259
  744. package/src/enumerations/base-model-name.ts +0 -47
  745. package/src/enumerations/schema-collection.ts +0 -39
  746. package/src/environment.ts +0 -859
  747. package/src/errors/express-validation.ts +0 -38
  748. package/src/errors/invalid-backup-code-version.ts +0 -30
  749. package/src/errors/invalid-jwt-token.ts +0 -24
  750. package/src/errors/invalid-model.ts +0 -24
  751. package/src/errors/invalid-new-password.ts +0 -33
  752. package/src/errors/invalid-password.ts +0 -28
  753. package/src/errors/missing-validated-data.ts +0 -55
  754. package/src/errors/mnemonic-or-password-required.ts +0 -26
  755. package/src/errors/model-not-registered.ts +0 -24
  756. package/src/errors/mongoose-validation.ts +0 -56
  757. package/src/errors/symmetric.ts +0 -53
  758. package/src/errors/token-expired.ts +0 -24
  759. package/src/get-language.ts +0 -64
  760. package/src/get-timezone.ts +0 -76
  761. package/src/interfaces/application.ts +0 -40
  762. package/src/interfaces/checksum-consts.ts +0 -23
  763. package/src/interfaces/constants.ts +0 -114
  764. package/src/interfaces/email-service.ts +0 -26
  765. package/src/interfaces/environment-mongo.ts +0 -86
  766. package/src/interfaces/environment.ts +0 -191
  767. package/src/interfaces/jwt-consts.ts +0 -33
  768. package/src/interfaces/request-user.ts +0 -80
  769. package/src/interfaces/required-string-keys.ts +0 -33
  770. package/src/interfaces/server-init-result.ts +0 -48
  771. package/src/middleware-utils.ts +0 -138
  772. package/src/middlewares/authenticate-crypto.ts +0 -237
  773. package/src/middlewares/authenticate-token.ts +0 -165
  774. package/src/middlewares/cleanup-crypto.ts +0 -47
  775. package/src/model-registry.ts +0 -142
  776. package/src/pipeline/pipeline-builder.ts +0 -27
  777. package/src/plugins/plugin-manager.ts +0 -53
  778. package/src/registry/email-service-registry.ts +0 -76
  779. package/src/responses/response-builder.ts +0 -166
  780. package/src/routers/api.ts +0 -233
  781. package/src/routers/app.ts +0 -395
  782. package/src/routers/router-config.ts +0 -34
  783. package/src/routing/index.ts +0 -1
  784. package/src/routing/route-builder.ts +0 -214
  785. package/src/schemas/email-token.ts +0 -112
  786. package/src/schemas/mnemonic.ts +0 -48
  787. package/src/schemas/role.ts +0 -153
  788. package/src/schemas/schema.ts +0 -185
  789. package/src/schemas/used-direct-login-token.ts +0 -58
  790. package/src/schemas/user-role.ts +0 -93
  791. package/src/schemas/user.ts +0 -244
  792. package/src/services/backup-code.ts +0 -327
  793. package/src/services/base.ts +0 -46
  794. package/src/services/checksum.ts +0 -189
  795. package/src/services/database-initialization.ts +0 -1653
  796. package/src/services/direct-login-token.ts +0 -83
  797. package/src/services/dummy-email-service.ts +0 -43
  798. package/src/services/fec-usage-example.ts +0 -123
  799. package/src/services/fec.ts +0 -399
  800. package/src/services/jwt.ts +0 -146
  801. package/src/services/key-wrapping.ts +0 -528
  802. package/src/services/mnemonic.ts +0 -174
  803. package/src/services/request-user.ts +0 -127
  804. package/src/services/role.ts +0 -417
  805. package/src/services/symmetric.ts +0 -164
  806. package/src/services/system-user.ts +0 -87
  807. package/src/services/user.ts +0 -2324
  808. package/src/services/xor.ts +0 -39
  809. package/src/transactions/transaction-manager.ts +0 -63
  810. package/src/types/mongoose-override.d.ts +0 -1
  811. package/src/types/mongoose.d.ts +0 -1
  812. package/src/types.ts +0 -189
  813. package/src/utils.ts +0 -1116
  814. package/src/validation/validation-builder.ts +0 -155
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Service for symmetric encryption operations using AES-256-GCM.
4
+ * Provides encryption/decryption for buffers and JSON data with automatic key generation.
5
+ * @module services/symmetric
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SymmetricService = void 0;
9
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
10
+ const crypto_1 = require("crypto");
11
+ const symmetric_error_type_1 = require("../enumerations/symmetric-error-type");
12
+ const symmetric_1 = require("../errors/symmetric");
13
+ /**
14
+ * Type guard to check if an object has a toJson method.
15
+ * @template T Object type to check
16
+ * @param obj Object to check
17
+ * @returns True if object has toJson method
18
+ */
19
+ function hasToJsonMethod(obj) {
20
+ return typeof obj === 'object' && obj !== null && 'toJson' in obj;
21
+ }
22
+ /**
23
+ * Service for handling symmetric encryption operations using AES-256-GCM.
24
+ * Provides functionality for encrypting/decrypting buffers and JSON data with automatic key generation.
25
+ */
26
+ class SymmetricService {
27
+ /**
28
+ * Gets the symmetric key size in bits from ECIES constants.
29
+ * @param eciesConstants ECIES constants (defaults to ECIES)
30
+ * @returns Symmetric key size in bits
31
+ */
32
+ static symmetricKeyBits(eciesConstants = ecies_lib_1.ECIES) {
33
+ return eciesConstants.SYMMETRIC.KEY_BITS;
34
+ }
35
+ /**
36
+ * Gets the symmetric key size in bytes from ECIES constants.
37
+ * @param eciesConstants ECIES constants (defaults to ECIES)
38
+ * @returns Symmetric key size in bytes
39
+ */
40
+ static symmetricKeyBytes(eciesConstants = ecies_lib_1.ECIES) {
41
+ return eciesConstants.SYMMETRIC.KEY_SIZE;
42
+ }
43
+ /**
44
+ * Encrypts data with AES-256-GCM.
45
+ * @param data Buffer to encrypt
46
+ * @param encryptionKey Optional encryption key (randomly generated if not provided)
47
+ * @param eciesConstants ECIES constants (defaults to ECIES)
48
+ * @returns Object containing encrypted data and key
49
+ * @throws {SymmetricError} If encryption key length is invalid
50
+ */
51
+ static encryptBuffer(data, encryptionKey, eciesConstants = ecies_lib_1.ECIES) {
52
+ if (encryptionKey &&
53
+ encryptionKey.length != eciesConstants.SYMMETRIC.KEY_SIZE) {
54
+ throw new symmetric_1.SymmetricError(symmetric_error_type_1.SymmetricErrorType.InvalidKeyLength);
55
+ }
56
+ // encrypt the document using AES-256 and the key
57
+ // Initialization Vector
58
+ const ivBuffer = (0, crypto_1.randomBytes)(eciesConstants.IV_SIZE);
59
+ const key = encryptionKey ?? (0, crypto_1.randomBytes)(eciesConstants.SYMMETRIC.KEY_SIZE);
60
+ const cipher = (0, crypto_1.createCipheriv)(eciesConstants.SYMMETRIC_ALGORITHM_CONFIGURATION, key, ivBuffer);
61
+ const ciphertextBuffer = cipher.update(data);
62
+ const finalBuffer = cipher.final();
63
+ const authTag = cipher.getAuthTag();
64
+ const encryptionIvPlusData = Buffer.concat([
65
+ ivBuffer,
66
+ ciphertextBuffer,
67
+ finalBuffer,
68
+ authTag,
69
+ ]);
70
+ return {
71
+ encryptedData: encryptionIvPlusData,
72
+ key: key,
73
+ };
74
+ }
75
+ /**
76
+ * Decrypts data with AES-256-GCM.
77
+ * @param encryptedData Encrypted data buffer (includes IV, ciphertext, and auth tag)
78
+ * @param key Decryption key
79
+ * @param eciesConstants ECIES constants (defaults to ECIES)
80
+ * @returns Decrypted data as a Buffer
81
+ */
82
+ static decryptBuffer(encryptedData, key, eciesConstants = ecies_lib_1.ECIES) {
83
+ const ivBuffer = encryptedData.subarray(0, eciesConstants.IV_SIZE);
84
+ const authTagStart = encryptedData.length - eciesConstants.AUTH_TAG_SIZE;
85
+ const ciphertextBuffer = encryptedData.subarray(eciesConstants.IV_SIZE, authTagStart);
86
+ const authTag = encryptedData.subarray(authTagStart);
87
+ const decipher = (0, crypto_1.createDecipheriv)(eciesConstants.SYMMETRIC_ALGORITHM_CONFIGURATION, key, ivBuffer);
88
+ decipher.setAuthTag(authTag);
89
+ return Buffer.concat([decipher.update(ciphertextBuffer), decipher.final()]);
90
+ }
91
+ /**
92
+ * Encrypts JSON data with AES-256-GCM.
93
+ * @template T Type of data to encrypt
94
+ * @param data Data to encrypt (will be JSON stringified)
95
+ * @param encryptionKey Optional encryption key (randomly generated if not provided)
96
+ * @returns Object containing encrypted data and key
97
+ * @throws {SymmetricError} If data is null or undefined
98
+ */
99
+ static encryptJson(data, encryptionKey) {
100
+ if (data === null || data === undefined) {
101
+ throw new symmetric_1.SymmetricError(symmetric_error_type_1.SymmetricErrorType.DataNullOrUndefined);
102
+ }
103
+ let dataBuffer;
104
+ if (hasToJsonMethod(data)) {
105
+ // amazonq-ignore-next-line false positive
106
+ dataBuffer = Buffer.from(data.toJson(), 'utf8');
107
+ }
108
+ else {
109
+ dataBuffer = Buffer.from(JSON.stringify(data), 'utf8');
110
+ }
111
+ return SymmetricService.encryptBuffer(dataBuffer, encryptionKey);
112
+ }
113
+ /**
114
+ * Decrypts data with AES-256-GCM and parses as JSON.
115
+ * @template T Type of data to decrypt
116
+ * @param encryptedData Encrypted data buffer
117
+ * @param key Decryption key
118
+ * @returns Decrypted data parsed as type T
119
+ */
120
+ static decryptJson(encryptedData, key) {
121
+ return JSON.parse(SymmetricService.decryptBuffer(encryptedData, key).toString('utf8'));
122
+ }
123
+ }
124
+ exports.SymmetricService = SymmetricService;
125
+ //# sourceMappingURL=symmetric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symmetric.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/symmetric.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @fileoverview System user singleton service.
3
+ * Manages the system-level cryptographic member for server operations.
4
+ * @module services/system-user
5
+ */
6
+ import { Member as BackendMember, PlatformID } from '@digitaldefiance/node-ecies-lib';
7
+ import { Environment } from '../environment';
8
+ import { IConstants } from '../interfaces/constants';
9
+ /**
10
+ * Service for managing the system user singleton.
11
+ * Provides access to system-level cryptographic operations and key management.
12
+ */
13
+ export declare class SystemUserService {
14
+ private static systemUser;
15
+ /**
16
+ * Initializes and returns the system member's Member instance.
17
+ * The mnemonic should be stored securely in environment variables.
18
+ */
19
+ static getSystemUser<TID extends PlatformID = Buffer>(environment: Environment<TID>, constants: IConstants): BackendMember<TID>;
20
+ static setSystemUser<TID extends PlatformID = Buffer>(user: BackendMember<TID>, constants: IConstants): void;
21
+ }
22
+ //# sourceMappingURL=system-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-user.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/system-user.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EACL,MAAM,IAAI,aAAa,EAEvB,UAAU,EACX,MAAM,iCAAiC,CAAC;AAKzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,UAAU,CAA0C;IAEnE;;;OAGG;WACW,aAAa,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM,EACzD,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAC7B,SAAS,EAAE,UAAU,GACpB,aAAa,CAAC,GAAG,CAAC;WAqCP,aAAa,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM,EACzD,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,EACxB,SAAS,EAAE,UAAU,GACpB,IAAI;CAQR"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview System user singleton service.
4
+ * Manages the system-level cryptographic member for server operations.
5
+ * @module services/system-user
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SystemUserService = void 0;
9
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
10
+ const node_ecies_lib_1 = require("@digitaldefiance/node-ecies-lib");
11
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
12
+ /**
13
+ * Service for managing the system user singleton.
14
+ * Provides access to system-level cryptographic operations and key management.
15
+ */
16
+ class SystemUserService {
17
+ static systemUser = null;
18
+ /**
19
+ * Initializes and returns the system member's Member instance.
20
+ * The mnemonic should be stored securely in environment variables.
21
+ */
22
+ static getSystemUser(environment, constants) {
23
+ if (!SystemUserService.systemUser) {
24
+ if (!environment.systemMnemonic) {
25
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
26
+ NAME: 'SYSTEM_MNEMONIC',
27
+ });
28
+ }
29
+ const mnemonic = environment.systemMnemonic;
30
+ const eciesService = new node_ecies_lib_1.ECIESService(undefined, constants.ECIES);
31
+ const { wallet } = eciesService.walletAndSeedFromMnemonic(mnemonic);
32
+ const keyPair = eciesService.walletToSimpleKeyPairBuffer(wallet);
33
+ SystemUserService.systemUser = new node_ecies_lib_1.Member(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);
34
+ if (SystemUserService.systemUser.publicKey.toString('hex') !==
35
+ environment.systemPublicKeyHex) {
36
+ console.warn('System public key does not match environment variable', {
37
+ derived: SystemUserService.systemUser.publicKey.toString('hex'),
38
+ expected: environment.systemPublicKeyHex,
39
+ });
40
+ }
41
+ }
42
+ return SystemUserService.systemUser;
43
+ }
44
+ static setSystemUser(user, constants) {
45
+ if (user.type !== ecies_lib_1.MemberType.System || user.name !== constants.SystemUser) {
46
+ throw new Error('setSystemUser can only be called with a MemberType.System user');
47
+ }
48
+ SystemUserService.systemUser = user;
49
+ }
50
+ }
51
+ exports.SystemUserService = SystemUserService;
52
+ //# sourceMappingURL=system-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-user.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/system-user.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,0DAKoC;AACpC,oEAIyC;AACzC,oEAGyC;AAIzC;;;GAGG;AACH,MAAa,iBAAiB;IACpB,MAAM,CAAC,UAAU,GAAqC,IAAI,CAAC;IAEnE;;;OAGG;IACI,MAAM,CAAC,aAAa,CACzB,WAA6B,EAC7B,SAAqB;QAErB,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,YAAY,GAAG,IAAI,6BAAY,CAAM,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,YAAY,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;YAEjE,iBAAiB,CAAC,UAAU,GAAG,IAAI,uBAAa,CAC9C,YAAY,EACZ,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,UAAgC,CAAC;IAC5D,CAAC;IAEM,MAAM,CAAC,aAAa,CACzB,IAAwB,EACxB,SAAqB;QAErB,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,IAA0B,CAAC;IAC5D,CAAC;;AAzDH,8CA0DC"}
@@ -0,0 +1,368 @@
1
+ /**
2
+ * @fileoverview Comprehensive user management service.
3
+ * Handles user authentication, registration, password management, email verification,
4
+ * mnemonic recovery, backup codes, and all user-related operations.
5
+ * @module services/user
6
+ */
7
+ import { SecureBuffer, SecureString } from '@digitaldefiance/ecies-lib';
8
+ import { ClientSession, ProjectionType } from '@digitaldefiance/mongoose-types';
9
+ import { Member as BackendMember, ECIESService, PlatformID } from '@digitaldefiance/node-ecies-lib';
10
+ import { EmailTokenType, IBackupCode, IRequestUserDTO, ITokenRole, IUserBase, IUserDTO } from '@digitaldefiance/suite-core-lib';
11
+ import { Wallet } from '@ethereumjs/wallet';
12
+ import { BackupCode } from '../backup-code';
13
+ import { IBaseDocument } from '../documents';
14
+ import { IEmailTokenDocument } from '../documents/email-token';
15
+ import { IUserDocument } from '../documents/user';
16
+ import { Environment } from '../environment';
17
+ import { ICreateUserBasics } from '../interfaces';
18
+ import { IApplication } from '../interfaces/application';
19
+ import { IUserBackendObject } from '../interfaces/backend-objects/user';
20
+ import { IConstants } from '../interfaces/constants';
21
+ import { IEmailService } from '../interfaces/email-service';
22
+ import { BackupCodeService } from './backup-code';
23
+ import { BaseService } from './base';
24
+ import { KeyWrappingService } from './key-wrapping';
25
+ import { MnemonicService } from './mnemonic';
26
+ import { RoleService } from './role';
27
+ /**
28
+ * Comprehensive service for user management and authentication.
29
+ * Provides methods for user creation, authentication (mnemonic/password/challenge),
30
+ * email verification, password reset, backup code recovery, and settings management.
31
+ * @template T - User document type
32
+ * @template TID - Platform ID type
33
+ * @template TDate - Date type
34
+ * @template TLanguage - String type for site language
35
+ * @template TAccountStatus - String type for account status
36
+ * @template _TEnvironment - Environment type
37
+ * @template _TConstants - Constants type
38
+ * @template _TBaseDocument - Base document type
39
+ * @template TUser - User base interface type
40
+ * @template TTokenRole - Token role interface type
41
+ * @template TApplication - Application interface type
42
+ * @extends {BaseService<TID, TApplication>}
43
+ */
44
+ export declare class UserService<T, TID extends PlatformID, TDate extends Date, TLanguage extends string, TAccountStatus extends string, _TEnvironment extends Environment<TID> = Environment<TID>, _TConstants extends IConstants = IConstants, _TBaseDocument extends IBaseDocument<T, TID> = IBaseDocument<T, TID>, TUser extends IUserBase<TID, TDate, TLanguage, TAccountStatus> = IUserBase<TID, TDate, TLanguage, TAccountStatus>, TTokenRole extends ITokenRole<TID, TDate> = ITokenRole<TID, TDate>, TApplication extends IApplication<TID> = IApplication<TID>> extends BaseService<TID, TApplication> {
45
+ protected readonly roleService: RoleService<TID, TDate, TTokenRole>;
46
+ protected readonly eciesService: ECIESService<TID>;
47
+ protected readonly keyWrappingService: KeyWrappingService;
48
+ protected readonly mnemonicService: MnemonicService;
49
+ protected readonly emailService: IEmailService;
50
+ protected readonly backupCodeService: BackupCodeService<TID, TDate, TTokenRole, TApplication>;
51
+ protected readonly serverUrl: string;
52
+ protected readonly disableEmailSend: boolean;
53
+ constructor(application: TApplication, roleService: RoleService<TID, TDate, TTokenRole>, emailService: IEmailService, keyWrappingService: KeyWrappingService, backupCodeService: BackupCodeService<TID, TDate, TTokenRole, TApplication>);
54
+ /**
55
+ * Given a User Document, make a User DTO
56
+ * @param user a User Document
57
+ * @returns An IUserDTO
58
+ */
59
+ static userToUserDTO<TLanguage extends string, TID extends PlatformID = Buffer>(user: IUserDocument<TLanguage, TID> | Record<string, unknown>): IUserDTO;
60
+ /**
61
+ * Given a User DTO, reconstitute ids and dates
62
+ * @param user a User DTO
63
+ * @returns An IUserBackendObject
64
+ */
65
+ hydrateUserDTOToBackend(user: IUserDTO): IUserBackendObject<TLanguage, TID>;
66
+ /**
67
+ * Create a new email token to send to the user for email verification
68
+ * @param userDoc The user to create the email token for
69
+ * @param type The type of email token to create
70
+ * @param session The session to use for the query
71
+ * @returns The email token document
72
+ */
73
+ createEmailToken(userDoc: IUserDocument<TLanguage, TID>, type: EmailTokenType, session?: ClientSession): Promise<IEmailTokenDocument>;
74
+ /**
75
+ * Create and send an email token to the user for email verification
76
+ * @param user The user to send the email token to
77
+ * @param type The type of email token to send
78
+ * @param session The session to use for the query
79
+ * @returns The email token document
80
+ */
81
+ createAndSendEmailToken(user: IUserDocument<TLanguage, TID> | (Pick<IUserDocument<TLanguage, TID>, keyof IUserDocument<TLanguage, TID>> & {
82
+ _id: any;
83
+ }), type?: EmailTokenType, session?: ClientSession, debug?: boolean): Promise<IEmailTokenDocument>;
84
+ /**
85
+ * Create and send an email token directly within an existing transaction
86
+ * @param user The user to send the email token to
87
+ * @param type The type of email token to send
88
+ * @param session The session to use for the query (required)
89
+ * @param debug Whether to enable debug logging
90
+ * @returns The email token document
91
+ */
92
+ createAndSendEmailTokenDirect(user: IUserDocument<TLanguage, TID>, type: EmailTokenType | undefined, session: ClientSession, debug?: boolean): Promise<IEmailTokenDocument>;
93
+ /**
94
+ * Send an email token to the user for email verification
95
+ * @param emailToken The email token to send
96
+ * @param session The session to use for the query
97
+ * @returns void
98
+ */
99
+ sendEmailToken(emailToken: IEmailTokenDocument, session?: ClientSession, debug?: boolean): Promise<void>;
100
+ /**
101
+ * Find a user by email or username and enforce account status checks
102
+ * @param email Optional email
103
+ * @param username Optional username
104
+ * @param session Optional mongoose session
105
+ * @throws UsernameOrEmailRequiredError if neither provided
106
+ * @throws InvalidCredentialsError if not found or deleted
107
+ * @throws AccountLockedError | PendingEmailVerificationError | AccountStatusError per status
108
+ */
109
+ findUser(email?: string, username?: string, session?: ClientSession): Promise<IUserDocument<TLanguage, TID>>;
110
+ /**
111
+ * Finds a user record by ID
112
+ * @param userId The user ID
113
+ * @param throwIfNotActive Whether to throw if the user is inactive
114
+ * @param session The active session, if present
115
+ * @returns The user document
116
+ */
117
+ findUserById(userId: TID, throwIfNotActive: boolean, session?: ClientSession, select?: ProjectionType<IUserDocument<TLanguage, TID>>): Promise<IUserDocument<TLanguage, TID>>;
118
+ /**
119
+ * Ensure required fields are present in a projection for queries that rely on them.
120
+ * Supports string and object-style projections. For inclusion projections, adds fields.
121
+ * For exclusion projections, ensures required fields are not excluded.
122
+ */
123
+ private ensureRequiredFieldsInProjection;
124
+ /**
125
+ * Fill in the default values to a user object
126
+ * @param newUser The user object to fill in
127
+ * @param createdBy The user ID of the user creating the new user
128
+ * @returns The filled in user
129
+ */
130
+ fillUserDefaults(newUser: ICreateUserBasics, createdBy: TID, backupCodes: Array<IBackupCode>, encryptedMnemonic: string, userId?: TID): IUserBackendObject<TLanguage, TID>;
131
+ /**
132
+ * Create a new user document from an IUser and unhashed password
133
+ * @param newUser The user object
134
+ * @returns The new user document
135
+ */
136
+ makeUserDoc(newUser: TUser): Promise<IUserDocument<TLanguage, TID>>;
137
+ /**
138
+ * Create a new user.
139
+ * Do not set createdBy to a new (non-existing) ObjectId unless you also set newUserId to it.
140
+ * If newUserId is not set, one will be generated.
141
+ * @param systemUser The system user performing the operation
142
+ * @param userData Username, email, password in a ICreateUserBasics object
143
+ * @param createdBy The user id of the user creating the user
144
+ * @param newUserId the user id of the new user object- usually the createdBy user id.
145
+ * @param session The session to use for the query
146
+ * @param debug Whether to log debug information
147
+ * @param password The password to use for the new user (optional, if not provided, mnemonic will be used)
148
+ * @returns The new user document
149
+ */
150
+ newUser(systemUser: BackendMember<TID>, userData: ICreateUserBasics, createdBy?: TID, newUserId?: TID, session?: ClientSession, debug?: boolean, password?: string): Promise<{
151
+ user: IUserDocument<TLanguage, TID>;
152
+ mnemonic: string;
153
+ backupCodes: Array<string>;
154
+ password?: string;
155
+ }>;
156
+ /**
157
+ * Get the backup codes for a user.
158
+ * Requires the user not be deleted or inactive
159
+ */
160
+ getEncryptedUserBackupCodes(userId: TID, session?: ClientSession): Promise<Array<IBackupCode>>;
161
+ /**
162
+ * Resets the given user's backup codes
163
+ * @param backupUser The user to generate codes for
164
+ * @param session The current session, if any
165
+ * @returns A promise of an array of backup codes
166
+ */
167
+ resetUserBackupCodes(backupUser: BackendMember<TID>, systemUser: BackendMember<TID>, session?: ClientSession): Promise<Array<BackupCode>>;
168
+ /**
169
+ * Recover a user's mnemonic from an encrypted mnemonic
170
+ * @param user The user whose mnemonic to recover
171
+ * @param encryptedMnemonic The encrypted mnemonic
172
+ * @returns The recovered mnemonic
173
+ */
174
+ recoverMnemonic(user: BackendMember<any>, encryptedMnemonic: string): SecureString;
175
+ /**
176
+ * Make a Member from a user document and optional private key
177
+ * @param userDoc The user document
178
+ * @param privateKey Optional private key to load the wallet
179
+ * @param publicKey Optional public key to override the userDoc public key
180
+ * @param session The current session, if any
181
+ * @returns A promise containing the created Member
182
+ */
183
+ makeUserFromUserDoc(userDoc: IUserDocument<TLanguage, TID>, privateKey?: SecureBuffer, publicKey?: Buffer, mnemonic?: SecureString, wallet?: Wallet, session?: ClientSession): Promise<BackendMember<TID>>;
184
+ /**
185
+ * Challenges a given userDoc with a given mnemonic, returns a system and user Member
186
+ * @param userDoc The userDoc in question
187
+ * @param mnemonic The mnemonic to challenge against
188
+ * @returns A promise containing the user and system Members
189
+ * @throws InvalidCredentialsError if the challenge fails
190
+ * @throws AccountLockedError if the account is locked
191
+ * @throws PendingEmailVerificationError if the email is not verified
192
+ * @throws AccountStatusError if the account status is invalid
193
+ */
194
+ challengeUserWithMnemonic(userDoc: IUserDocument<TLanguage, TID>, mnemonic: SecureString, session?: ClientSession): Promise<{
195
+ userMember: BackendMember<TID>;
196
+ adminMember: BackendMember<TID>;
197
+ }>;
198
+ /**
199
+ * Validates a login challenge response
200
+ * @param challengeResponse The challenge response bytes in hex
201
+ * @param email The email address of the user
202
+ * @param username The username of the user
203
+ * @param session The mongo session for the query
204
+ * @returns A promise that resolves to the user document, user member, and system member
205
+ */
206
+ loginWithChallengeResponse(challengeResponse: string, email?: string, username?: string, session?: ClientSession): Promise<{
207
+ userDoc: IUserDocument<TLanguage, TID>;
208
+ userMember: BackendMember<TID>;
209
+ adminMember: BackendMember<TID>;
210
+ }>;
211
+ /**
212
+ * Authenticate a user with client-verified challenge (skips server-side challenge)
213
+ * @returns The authenticated user document.
214
+ */
215
+ loginWithClientVerifiedChallenge(usernameOrEmail: string, mnemonic: SecureString, session?: ClientSession): Promise<{
216
+ userDoc: IUserDocument<TLanguage, TID>;
217
+ userMember: BackendMember<TID>;
218
+ adminMember: BackendMember<TID>;
219
+ }>;
220
+ /**
221
+ * Authenticate a user with their mnemonic.
222
+ * @returns The authenticated user document.
223
+ */
224
+ loginWithMnemonic(usernameOrEmail: string, mnemonic: SecureString, session?: ClientSession): Promise<{
225
+ userDoc: IUserDocument<TLanguage, TID>;
226
+ userMember: BackendMember<TID>;
227
+ adminMember: BackendMember<TID>;
228
+ }>;
229
+ /**
230
+ * Authenticate a user with their password (for key-wrapped accounts).
231
+ * @returns The authenticated user document.
232
+ */
233
+ loginWithPassword(usernameOrEmail: string, password: string, session?: ClientSession): Promise<{
234
+ userDoc: IUserDocument<TLanguage, TID>;
235
+ userMember: BackendMember<TID>;
236
+ adminMember: BackendMember<TID>;
237
+ }>;
238
+ /**
239
+ * Re-send a previously sent email token
240
+ * @param userId The user id
241
+ * @param session The session to use for the query
242
+ * @returns void
243
+ * @throws EmailTokenUsedOrInvalidError
244
+ */
245
+ resendEmailToken(userId: string, type: EmailTokenType, session?: ClientSession, debug?: boolean): Promise<void>;
246
+ /**
247
+ * Verify the email token and update the user's account status
248
+ * @param emailToken The email token to verify
249
+ * @param session The session to use for the query
250
+ * @returns void
251
+ * @throws EmailTokenUsedOrInvalidError
252
+ * @throws EmailTokenExpiredError
253
+ * @throws EmailVerifiedError
254
+ * @throws UserNotFoundError
255
+ */
256
+ verifyAccountTokenAndComplete(emailToken: string, session?: ClientSession): Promise<void>;
257
+ /**
258
+ * Validate the email token
259
+ * @param token The token to validate
260
+ * @param restrictType The type of email token to validate (or throw)
261
+ * @param session The session to use for the query
262
+ * @returns void
263
+ * @throws EmailTokenUsedOrInvalidError
264
+ */
265
+ validateEmailToken(token: string, restrictType?: EmailTokenType, session?: ClientSession): Promise<void>;
266
+ /**
267
+ * Updates the user's language
268
+ * @param userId - The ID of the user
269
+ * @param newLanguage - The new language
270
+ * @param session - The session to use for the query
271
+ * @returns The updated user
272
+ */
273
+ updateSiteLanguage(userId: string, newLanguage: string, session?: ClientSession): Promise<IRequestUserDTO>;
274
+ /**
275
+ * Updates the user's Dark Mode preference
276
+ * @param userId - The ID of the user
277
+ * @param newDarkMode - The new Dark Mode preference
278
+ * @param session - The session to use for the query
279
+ * @returns The updated user
280
+ */
281
+ updateDarkMode(userId: string, newDarkMode: boolean, session?: ClientSession): Promise<IRequestUserDTO>;
282
+ /**
283
+ * Updates multiple user settings at once
284
+ * @param userId - The ID of the user
285
+ * @param settings - Object containing settings to update
286
+ * @param session - The session to use for the query
287
+ * @returns The updated user
288
+ */
289
+ updateUserSettings(userId: string, settings: {
290
+ email?: string;
291
+ timezone?: string;
292
+ siteLanguage?: string;
293
+ currency?: string;
294
+ darkMode?: boolean;
295
+ directChallenge?: boolean;
296
+ }, session?: ClientSession): Promise<IRequestUserDTO>;
297
+ /**
298
+ * Changes the user's password by re-wrapping their master key
299
+ * @param userId - The ID of the user
300
+ * @param currentPassword - The current password
301
+ * @param newPassword - The new password
302
+ * @param session - The session to use for the query
303
+ * @returns void
304
+ */
305
+ changePassword(userId: string, currentPassword: string, newPassword: string, session?: ClientSession): Promise<void>;
306
+ /**
307
+ * Retrieve an email token by its token string and type
308
+ * @param token - The token string
309
+ * @param type - The type of the email token
310
+ * @param session - The session to use for the query
311
+ * @returns The email token document or null if not found
312
+ */
313
+ findEmailToken(token: string, type?: EmailTokenType, session?: ClientSession): Promise<IEmailTokenDocument | null>;
314
+ /**
315
+ * Verify email token is valid
316
+ * @param token - The email token
317
+ * @param session - The session to use for the query
318
+ * @returns void
319
+ */
320
+ verifyEmailToken(token: string, type: EmailTokenType, session?: ClientSession): Promise<void>;
321
+ /**
322
+ * Reset password using email token
323
+ * @param token - The email token
324
+ * @param newPassword - The new password
325
+ * @param session - The session to use for the query
326
+ * @returns void
327
+ */
328
+ resetPasswordWithToken(token: string, newPassword: string, credential?: string, // either mnemonic or current password; required
329
+ session?: ClientSession): Promise<void>;
330
+ /**
331
+ * Generate a login challenge for the client to sign
332
+ * @returns The login challenge in hex
333
+ */
334
+ generateDirectLoginChallenge(): string;
335
+ /**
336
+ * Verifies a direct login challenge response
337
+ * @param serverSignedRequest The login challenge response in hex
338
+ * @param session The mongoose session, if provided
339
+ * @returns A promise with the user document and user member object
340
+ */
341
+ verifyDirectLoginChallenge(serverSignedRequest: string, signature: string, username?: string, email?: string, session?: ClientSession): Promise<{
342
+ userDoc: IUserDocument<TLanguage, TID>;
343
+ userMember: BackendMember<TID>;
344
+ }>;
345
+ /**
346
+ * Request a login link via email
347
+ * @param email Email address
348
+ * @param username Username
349
+ * @param session Existing session, if any
350
+ * @returns void
351
+ */
352
+ requestEmailLogin(email?: string, username?: string, session?: ClientSession): Promise<void>;
353
+ /**
354
+ * Validate an email login token challenge
355
+ * @param token The token to challenge
356
+ * @param signature The signature of the token by the user's private key
357
+ * @param session The session to use for the query
358
+ * @returns The user document if the challenge is valid
359
+ */
360
+ validateEmailLoginTokenChallenge(token: string, signature: string, session?: ClientSession): Promise<IUserDocument<TLanguage, TID>>;
361
+ /**
362
+ * Updates the user's last login time atomically
363
+ * @param userId - The ID of the user
364
+ * @returns void
365
+ */
366
+ updateLastLogin(userId: TID): Promise<void>;
367
+ }
368
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/user.ts"],"names":[],"mappings":"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"}