@digitaldefiance/node-express-suite 3.7.4 → 3.7.5

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 (878) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +4 -5
  3. package/src/__tests__/fixtures/{index.d.ts → index.ts} +0 -1
  4. package/src/__tests__/fixtures/model-mocks.mock.ts +164 -0
  5. package/src/__tests__/helpers/application.mock.ts +89 -0
  6. package/src/__tests__/helpers/{index.d.ts → index.ts} +0 -1
  7. package/src/__tests__/helpers/setup-test-env.ts +202 -0
  8. package/src/__tests__/{index.d.ts → index.ts} +0 -1
  9. package/src/application-base.ts +548 -0
  10. package/src/application-concrete.ts +62 -0
  11. package/src/application.ts +330 -0
  12. package/src/backup-code.ts +348 -0
  13. package/src/builders/application-builder.ts +147 -0
  14. package/src/builders/{index.d.ts → index.ts} +0 -1
  15. package/src/constants.ts +89 -0
  16. package/src/container/{index.d.ts → index.ts} +0 -1
  17. package/src/container/service-container.ts +85 -0
  18. package/src/container/service-definitions.ts +23 -0
  19. package/src/controllers/base.ts +512 -0
  20. package/src/controllers/{index.d.ts → index.ts} +0 -1
  21. package/src/controllers/user.ts +1734 -0
  22. package/src/database/database-initializer.ts +13 -0
  23. package/src/database/{index.d.ts → index.ts} +0 -1
  24. package/src/decorators/base-controller.ts +91 -0
  25. package/src/decorators/controller.ts +152 -0
  26. package/src/decorators/{index.d.ts → index.ts} +0 -1
  27. package/src/decorators/zod-validation.ts +64 -0
  28. package/src/defaults.ts +259 -0
  29. package/src/documents/base.ts +17 -0
  30. package/src/documents/email-token.ts +20 -0
  31. package/src/documents/{index.d.ts → index.ts} +0 -1
  32. package/src/documents/mnemonic.ts +20 -0
  33. package/src/documents/role.ts +19 -0
  34. package/src/documents/used-direct-login-token.ts +18 -0
  35. package/src/documents/user-role.ts +20 -0
  36. package/src/documents/user.ts +20 -0
  37. package/src/enumerations/base-model-name.ts +47 -0
  38. package/src/enumerations/{index.d.ts → index.ts} +0 -1
  39. package/src/enumerations/length-encoding-type.ts +16 -0
  40. package/src/enumerations/schema-collection.ts +39 -0
  41. package/src/enumerations/symmetric-error-type.ts +13 -0
  42. package/src/environment.ts +859 -0
  43. package/src/errors/express-validation.ts +38 -0
  44. package/src/errors/{index.d.ts → index.ts} +0 -1
  45. package/src/errors/invalid-backup-code-version.ts +30 -0
  46. package/src/errors/invalid-jwt-token.ts +24 -0
  47. package/src/errors/invalid-model.ts +24 -0
  48. package/src/errors/invalid-new-password.ts +33 -0
  49. package/src/errors/invalid-password.ts +28 -0
  50. package/src/errors/missing-validated-data.ts +55 -0
  51. package/src/errors/mnemonic-or-password-required.ts +26 -0
  52. package/src/errors/model-not-registered.ts +24 -0
  53. package/src/errors/mongoose-validation.ts +56 -0
  54. package/src/errors/symmetric.ts +53 -0
  55. package/src/errors/token-expired.ts +24 -0
  56. package/src/get-language.ts +64 -0
  57. package/src/get-timezone.ts +76 -0
  58. package/src/{index.d.ts → index.ts} +44 -2
  59. package/src/interfaces/api-error-response.ts +15 -0
  60. package/src/interfaces/api-express-validation-error-response.ts +17 -0
  61. package/src/interfaces/api-message-response.ts +12 -0
  62. package/src/interfaces/api-mongo-validation-error-response.ts +17 -0
  63. package/src/interfaces/api-responses/backup-codes-response.ts +15 -0
  64. package/src/interfaces/api-responses/challenge-response.ts +17 -0
  65. package/src/interfaces/api-responses/code-count-response.ts +12 -0
  66. package/src/interfaces/api-responses/{index.d.ts → index.ts} +0 -1
  67. package/src/interfaces/api-responses/login-response.ts +18 -0
  68. package/src/interfaces/api-responses/mnemonic-response.ts +15 -0
  69. package/src/interfaces/api-responses/registration-response.ts +17 -0
  70. package/src/interfaces/api-responses/request-user-response.ts +16 -0
  71. package/src/interfaces/api-responses/user-settings-response.ts +19 -0
  72. package/src/interfaces/application.ts +40 -0
  73. package/src/interfaces/backend-objects/email-token.ts +18 -0
  74. package/src/interfaces/backend-objects/{index.d.ts → index.ts} +0 -1
  75. package/src/interfaces/backend-objects/request-user.ts +19 -0
  76. package/src/interfaces/backend-objects/role.ts +18 -0
  77. package/src/interfaces/backend-objects/user.ts +18 -0
  78. package/src/interfaces/checksum-config.ts +15 -0
  79. package/src/interfaces/checksum-consts.ts +23 -0
  80. package/src/interfaces/constants.ts +114 -0
  81. package/src/interfaces/controller-config.ts +54 -0
  82. package/src/interfaces/create-user-basics.ts +24 -0
  83. package/src/interfaces/csp-config.ts +32 -0
  84. package/src/interfaces/csp-definition.ts +71 -0
  85. package/src/interfaces/db-init-result.ts +17 -0
  86. package/src/interfaces/deep-partial.ts +14 -0
  87. package/src/interfaces/discriminator-collections.ts +21 -0
  88. package/src/interfaces/email-service.ts +26 -0
  89. package/src/interfaces/environment-mongo.ts +86 -0
  90. package/src/interfaces/environment.ts +191 -0
  91. package/src/interfaces/failable-result.ts +20 -0
  92. package/src/interfaces/fec-consts.ts +14 -0
  93. package/src/interfaces/flexible-csp.ts +35 -0
  94. package/src/interfaces/handleable-error-options.ts +19 -0
  95. package/src/interfaces/{index.d.ts → index.ts} +0 -1
  96. package/src/interfaces/jwt-consts.ts +33 -0
  97. package/src/interfaces/jwt-sign-response.ts +31 -0
  98. package/src/interfaces/models/email-token.ts +13 -0
  99. package/src/interfaces/models/{index.d.ts → index.ts} +0 -1
  100. package/src/interfaces/models/mnemonic.ts +14 -0
  101. package/src/interfaces/models/role.ts +13 -0
  102. package/src/interfaces/models/token-role.ts +23 -0
  103. package/src/interfaces/models/used-direct-login-token.ts +21 -0
  104. package/src/interfaces/models/user-role.ts +23 -0
  105. package/src/interfaces/models/user.ts +30 -0
  106. package/src/interfaces/mongo-errors.ts +14 -0
  107. package/src/interfaces/request-user.ts +80 -0
  108. package/src/interfaces/required-string-keys.ts +33 -0
  109. package/src/interfaces/schema.ts +43 -0
  110. package/src/interfaces/server-init-result.ts +48 -0
  111. package/src/interfaces/status-code-response.ts +20 -0
  112. package/src/interfaces/symmetric-encryption-results.d.ts.map +1 -1
  113. package/src/interfaces/symmetric-encryption-results.js.map +1 -1
  114. package/src/interfaces/symmetric-encryption-results.ts +15 -0
  115. package/src/interfaces/test-environment.ts +23 -0
  116. package/src/interfaces/token-response.ts +16 -0
  117. package/src/middleware-utils.ts +138 -0
  118. package/src/middlewares/authenticate-crypto.ts +237 -0
  119. package/src/middlewares/authenticate-token.ts +165 -0
  120. package/src/middlewares/cleanup-crypto.ts +47 -0
  121. package/src/middlewares/{index.d.ts → index.ts} +0 -1
  122. package/src/middlewares/set-global-context-language.ts +38 -0
  123. package/src/model-registry.ts +142 -0
  124. package/src/models/email-token.ts +49 -0
  125. package/src/models/{index.d.ts → index.ts} +0 -1
  126. package/src/models/mnemonic.ts +42 -0
  127. package/src/models/role.ts +38 -0
  128. package/src/models/used-direct-login-token.ts +49 -0
  129. package/src/models/user-role.ts +40 -0
  130. package/src/models/user.ts +42 -0
  131. package/src/pipeline/{index.d.ts → index.ts} +0 -1
  132. package/src/pipeline/pipeline-builder.ts +27 -0
  133. package/src/plugins/{index.d.ts → index.ts} +0 -1
  134. package/src/plugins/plugin-interface.ts +19 -0
  135. package/src/plugins/plugin-manager.ts +53 -0
  136. package/src/registry/email-service-registry.ts +76 -0
  137. package/src/registry/{index.d.ts → index.ts} +0 -1
  138. package/src/responses/{index.d.ts → index.ts} +0 -1
  139. package/src/responses/response-builder.ts +166 -0
  140. package/src/routers/api.ts +233 -0
  141. package/src/routers/app.ts +395 -0
  142. package/src/routers/base.ts +34 -0
  143. package/src/routers/{index.d.ts → index.ts} +0 -1
  144. package/src/routers/router-config.ts +34 -0
  145. package/src/routing/index.ts +1 -0
  146. package/src/routing/route-builder.ts +214 -0
  147. package/src/schemas/email-token.ts +112 -0
  148. package/src/schemas/{index.d.ts → index.ts} +0 -1
  149. package/src/schemas/mnemonic.ts +48 -0
  150. package/src/schemas/role.ts +153 -0
  151. package/src/schemas/schema.ts +185 -0
  152. package/src/schemas/used-direct-login-token.ts +58 -0
  153. package/src/schemas/user-role.ts +93 -0
  154. package/src/schemas/user.ts +244 -0
  155. package/src/services/backup-code.ts +327 -0
  156. package/src/services/base.ts +46 -0
  157. package/src/services/checksum.ts +189 -0
  158. package/src/services/database-initialization.ts +1653 -0
  159. package/src/services/db-init-cache.ts +28 -0
  160. package/src/services/direct-login-token.ts +83 -0
  161. package/src/services/dummy-email-service.ts +43 -0
  162. package/src/services/fec-usage-example.ts +123 -0
  163. package/src/services/fec.ts +399 -0
  164. package/src/services/{index.d.ts → index.ts} +0 -1
  165. package/src/services/jwt.ts +146 -0
  166. package/src/services/key-wrapping.ts +528 -0
  167. package/src/services/mnemonic.ts +174 -0
  168. package/src/services/request-user.ts +127 -0
  169. package/src/services/role.ts +417 -0
  170. package/src/services/symmetric.ts +164 -0
  171. package/src/services/system-user.ts +87 -0
  172. package/src/services/user.ts +2324 -0
  173. package/src/services/xor.ts +39 -0
  174. package/src/testing.ts +9 -0
  175. package/src/transactions/{index.d.ts → index.ts} +0 -1
  176. package/src/transactions/transaction-manager.ts +63 -0
  177. package/src/types/app-config.ts +36 -0
  178. package/src/types/controller-config.ts +28 -0
  179. package/src/types/{environment-variables.d.ts → environment-variables.ts} +32 -5
  180. package/src/types/{index.d.ts → index.ts} +0 -1
  181. package/src/types/{mongoose-helpers.d.ts → mongoose-helpers.ts} +8 -2
  182. package/src/types/mongoose-override.d.ts +1 -0
  183. package/src/types/mongoose.d.ts +1 -0
  184. package/src/types.ts +189 -0
  185. package/src/utils.ts +1116 -0
  186. package/src/validation/{index.d.ts → index.ts} +0 -1
  187. package/src/validation/validation-builder.ts +155 -0
  188. package/src/__tests__/fixtures/index.d.ts.map +0 -1
  189. package/src/__tests__/fixtures/index.js +0 -5
  190. package/src/__tests__/fixtures/index.js.map +0 -1
  191. package/src/__tests__/fixtures/model-mocks.mock.d.ts +0 -12
  192. package/src/__tests__/fixtures/model-mocks.mock.d.ts.map +0 -1
  193. package/src/__tests__/fixtures/model-mocks.mock.js +0 -102
  194. package/src/__tests__/fixtures/model-mocks.mock.js.map +0 -1
  195. package/src/__tests__/helpers/application.mock.d.ts +0 -8
  196. package/src/__tests__/helpers/application.mock.d.ts.map +0 -1
  197. package/src/__tests__/helpers/application.mock.js +0 -77
  198. package/src/__tests__/helpers/application.mock.js.map +0 -1
  199. package/src/__tests__/helpers/index.d.ts.map +0 -1
  200. package/src/__tests__/helpers/index.js +0 -7
  201. package/src/__tests__/helpers/index.js.map +0 -1
  202. package/src/__tests__/helpers/setup-test-env.d.ts +0 -12
  203. package/src/__tests__/helpers/setup-test-env.d.ts.map +0 -1
  204. package/src/__tests__/helpers/setup-test-env.js +0 -121
  205. package/src/__tests__/helpers/setup-test-env.js.map +0 -1
  206. package/src/__tests__/index.d.ts.map +0 -1
  207. package/src/__tests__/index.js +0 -6
  208. package/src/__tests__/index.js.map +0 -1
  209. package/src/application-base.d.ts +0 -123
  210. package/src/application-base.d.ts.map +0 -1
  211. package/src/application-base.js +0 -359
  212. package/src/application-base.js.map +0 -1
  213. package/src/application-concrete.d.ts +0 -13
  214. package/src/application-concrete.d.ts.map +0 -1
  215. package/src/application-concrete.js +0 -21
  216. package/src/application-concrete.js.map +0 -1
  217. package/src/application.d.ts +0 -29
  218. package/src/application.d.ts.map +0 -1
  219. package/src/application.js +0 -167
  220. package/src/application.js.map +0 -1
  221. package/src/backup-code.d.ts +0 -67
  222. package/src/backup-code.d.ts.map +0 -1
  223. package/src/backup-code.js +0 -238
  224. package/src/backup-code.js.map +0 -1
  225. package/src/builders/application-builder.d.ts +0 -35
  226. package/src/builders/application-builder.d.ts.map +0 -1
  227. package/src/builders/application-builder.js +0 -64
  228. package/src/builders/application-builder.js.map +0 -1
  229. package/src/builders/index.d.ts.map +0 -1
  230. package/src/builders/index.js +0 -5
  231. package/src/builders/index.js.map +0 -1
  232. package/src/constants.d.ts +0 -16
  233. package/src/constants.d.ts.map +0 -1
  234. package/src/constants.js +0 -58
  235. package/src/constants.js.map +0 -1
  236. package/src/container/index.d.ts.map +0 -1
  237. package/src/container/index.js +0 -6
  238. package/src/container/index.js.map +0 -1
  239. package/src/container/service-container.d.ts +0 -11
  240. package/src/container/service-container.d.ts.map +0 -1
  241. package/src/container/service-container.js +0 -38
  242. package/src/container/service-container.js.map +0 -1
  243. package/src/container/service-definitions.d.ts +0 -11
  244. package/src/container/service-definitions.d.ts.map +0 -1
  245. package/src/container/service-definitions.js +0 -13
  246. package/src/container/service-definitions.js.map +0 -1
  247. package/src/controllers/base.d.ts +0 -67
  248. package/src/controllers/base.d.ts.map +0 -1
  249. package/src/controllers/base.js +0 -305
  250. package/src/controllers/base.js.map +0 -1
  251. package/src/controllers/index.d.ts.map +0 -1
  252. package/src/controllers/index.js +0 -6
  253. package/src/controllers/index.js.map +0 -1
  254. package/src/controllers/user.d.ts +0 -49
  255. package/src/controllers/user.d.ts.map +0 -1
  256. package/src/controllers/user.js +0 -919
  257. package/src/controllers/user.js.map +0 -1
  258. package/src/database/database-initializer.d.ts +0 -7
  259. package/src/database/database-initializer.d.ts.map +0 -1
  260. package/src/database/database-initializer.js +0 -3
  261. package/src/database/database-initializer.js.map +0 -1
  262. package/src/database/index.d.ts.map +0 -1
  263. package/src/database/index.js +0 -5
  264. package/src/database/index.js.map +0 -1
  265. package/src/decorators/base-controller.d.ts +0 -11
  266. package/src/decorators/base-controller.d.ts.map +0 -1
  267. package/src/decorators/base-controller.js +0 -60
  268. package/src/decorators/base-controller.js.map +0 -1
  269. package/src/decorators/controller.d.ts +0 -38
  270. package/src/decorators/controller.d.ts.map +0 -1
  271. package/src/decorators/controller.js +0 -68
  272. package/src/decorators/controller.js.map +0 -1
  273. package/src/decorators/index.d.ts.map +0 -1
  274. package/src/decorators/index.js +0 -7
  275. package/src/decorators/index.js.map +0 -1
  276. package/src/decorators/zod-validation.d.ts +0 -5
  277. package/src/decorators/zod-validation.d.ts.map +0 -1
  278. package/src/decorators/zod-validation.js +0 -48
  279. package/src/decorators/zod-validation.js.map +0 -1
  280. package/src/defaults.d.ts +0 -7
  281. package/src/defaults.d.ts.map +0 -1
  282. package/src/defaults.js +0 -205
  283. package/src/defaults.js.map +0 -1
  284. package/src/documents/base.d.ts +0 -4
  285. package/src/documents/base.d.ts.map +0 -1
  286. package/src/documents/base.js +0 -3
  287. package/src/documents/base.js.map +0 -1
  288. package/src/documents/email-token.d.ts +0 -8
  289. package/src/documents/email-token.d.ts.map +0 -1
  290. package/src/documents/email-token.js +0 -3
  291. package/src/documents/email-token.js.map +0 -1
  292. package/src/documents/index.d.ts.map +0 -1
  293. package/src/documents/index.js +0 -3
  294. package/src/documents/index.js.map +0 -1
  295. package/src/documents/mnemonic.d.ts +0 -8
  296. package/src/documents/mnemonic.d.ts.map +0 -1
  297. package/src/documents/mnemonic.js +0 -3
  298. package/src/documents/mnemonic.js.map +0 -1
  299. package/src/documents/role.d.ts +0 -8
  300. package/src/documents/role.d.ts.map +0 -1
  301. package/src/documents/role.js +0 -3
  302. package/src/documents/role.js.map +0 -1
  303. package/src/documents/used-direct-login-token.d.ts +0 -5
  304. package/src/documents/used-direct-login-token.d.ts.map +0 -1
  305. package/src/documents/used-direct-login-token.js +0 -3
  306. package/src/documents/used-direct-login-token.js.map +0 -1
  307. package/src/documents/user-role.d.ts +0 -8
  308. package/src/documents/user-role.d.ts.map +0 -1
  309. package/src/documents/user-role.js +0 -3
  310. package/src/documents/user-role.js.map +0 -1
  311. package/src/documents/user.d.ts +0 -8
  312. package/src/documents/user.d.ts.map +0 -1
  313. package/src/documents/user.js +0 -3
  314. package/src/documents/user.js.map +0 -1
  315. package/src/enumerations/base-model-name.d.ts +0 -38
  316. package/src/enumerations/base-model-name.d.ts.map +0 -1
  317. package/src/enumerations/base-model-name.js +0 -34
  318. package/src/enumerations/base-model-name.js.map +0 -1
  319. package/src/enumerations/index.d.ts.map +0 -1
  320. package/src/enumerations/index.js +0 -8
  321. package/src/enumerations/index.js.map +0 -1
  322. package/src/enumerations/length-encoding-type.d.ts +0 -7
  323. package/src/enumerations/length-encoding-type.d.ts.map +0 -1
  324. package/src/enumerations/length-encoding-type.js +0 -11
  325. package/src/enumerations/length-encoding-type.js.map +0 -1
  326. package/src/enumerations/schema-collection.d.ts +0 -34
  327. package/src/enumerations/schema-collection.d.ts.map +0 -1
  328. package/src/enumerations/schema-collection.js +0 -38
  329. package/src/enumerations/schema-collection.js.map +0 -1
  330. package/src/enumerations/symmetric-error-type.d.ts +0 -5
  331. package/src/enumerations/symmetric-error-type.d.ts.map +0 -1
  332. package/src/enumerations/symmetric-error-type.js +0 -9
  333. package/src/enumerations/symmetric-error-type.js.map +0 -1
  334. package/src/environment.d.ts +0 -189
  335. package/src/environment.d.ts.map +0 -1
  336. package/src/environment.js +0 -641
  337. package/src/environment.js.map +0 -1
  338. package/src/errors/express-validation.d.ts +0 -9
  339. package/src/errors/express-validation.d.ts.map +0 -1
  340. package/src/errors/express-validation.js +0 -18
  341. package/src/errors/express-validation.js.map +0 -1
  342. package/src/errors/index.d.ts.map +0 -1
  343. package/src/errors/index.js +0 -16
  344. package/src/errors/index.js.map +0 -1
  345. package/src/errors/invalid-backup-code-version.d.ts +0 -6
  346. package/src/errors/invalid-backup-code-version.d.ts.map +0 -1
  347. package/src/errors/invalid-backup-code-version.js +0 -16
  348. package/src/errors/invalid-backup-code-version.js.map +0 -1
  349. package/src/errors/invalid-jwt-token.d.ts +0 -5
  350. package/src/errors/invalid-jwt-token.d.ts.map +0 -1
  351. package/src/errors/invalid-jwt-token.js +0 -12
  352. package/src/errors/invalid-jwt-token.js.map +0 -1
  353. package/src/errors/invalid-model.d.ts +0 -6
  354. package/src/errors/invalid-model.d.ts.map +0 -1
  355. package/src/errors/invalid-model.js +0 -14
  356. package/src/errors/invalid-model.js.map +0 -1
  357. package/src/errors/invalid-new-password.d.ts +0 -5
  358. package/src/errors/invalid-new-password.d.ts.map +0 -1
  359. package/src/errors/invalid-new-password.js +0 -14
  360. package/src/errors/invalid-new-password.js.map +0 -1
  361. package/src/errors/invalid-password.d.ts +0 -5
  362. package/src/errors/invalid-password.d.ts.map +0 -1
  363. package/src/errors/invalid-password.js +0 -14
  364. package/src/errors/invalid-password.js.map +0 -1
  365. package/src/errors/missing-validated-data.d.ts +0 -7
  366. package/src/errors/missing-validated-data.d.ts.map +0 -1
  367. package/src/errors/missing-validated-data.js +0 -36
  368. package/src/errors/missing-validated-data.js.map +0 -1
  369. package/src/errors/mnemonic-or-password-required.d.ts +0 -5
  370. package/src/errors/mnemonic-or-password-required.d.ts.map +0 -1
  371. package/src/errors/mnemonic-or-password-required.js +0 -14
  372. package/src/errors/mnemonic-or-password-required.js.map +0 -1
  373. package/src/errors/model-not-registered.d.ts +0 -6
  374. package/src/errors/model-not-registered.d.ts.map +0 -1
  375. package/src/errors/model-not-registered.js +0 -14
  376. package/src/errors/model-not-registered.js.map +0 -1
  377. package/src/errors/mongoose-validation.d.ts +0 -12
  378. package/src/errors/mongoose-validation.d.ts.map +0 -1
  379. package/src/errors/mongoose-validation.js +0 -17
  380. package/src/errors/mongoose-validation.js.map +0 -1
  381. package/src/errors/symmetric.d.ts +0 -8
  382. package/src/errors/symmetric.d.ts.map +0 -1
  383. package/src/errors/symmetric.js +0 -22
  384. package/src/errors/symmetric.js.map +0 -1
  385. package/src/errors/token-expired.d.ts +0 -5
  386. package/src/errors/token-expired.d.ts.map +0 -1
  387. package/src/errors/token-expired.js +0 -12
  388. package/src/errors/token-expired.js.map +0 -1
  389. package/src/get-language.d.ts +0 -2
  390. package/src/get-language.d.ts.map +0 -1
  391. package/src/get-language.js +0 -30
  392. package/src/get-language.js.map +0 -1
  393. package/src/get-timezone.d.ts +0 -2
  394. package/src/get-timezone.d.ts.map +0 -1
  395. package/src/get-timezone.js +0 -39
  396. package/src/get-timezone.js.map +0 -1
  397. package/src/index.d.ts.map +0 -1
  398. package/src/index.js +0 -80
  399. package/src/index.js.map +0 -1
  400. package/src/interfaces/api-error-response.d.ts +0 -5
  401. package/src/interfaces/api-error-response.d.ts.map +0 -1
  402. package/src/interfaces/api-error-response.js +0 -3
  403. package/src/interfaces/api-error-response.js.map +0 -1
  404. package/src/interfaces/api-express-validation-error-response.d.ts +0 -7
  405. package/src/interfaces/api-express-validation-error-response.d.ts.map +0 -1
  406. package/src/interfaces/api-express-validation-error-response.js +0 -3
  407. package/src/interfaces/api-express-validation-error-response.js.map +0 -1
  408. package/src/interfaces/api-message-response.d.ts +0 -4
  409. package/src/interfaces/api-message-response.d.ts.map +0 -1
  410. package/src/interfaces/api-message-response.js +0 -3
  411. package/src/interfaces/api-message-response.js.map +0 -1
  412. package/src/interfaces/api-mongo-validation-error-response.d.ts +0 -6
  413. package/src/interfaces/api-mongo-validation-error-response.d.ts.map +0 -1
  414. package/src/interfaces/api-mongo-validation-error-response.js +0 -3
  415. package/src/interfaces/api-mongo-validation-error-response.js.map +0 -1
  416. package/src/interfaces/api-responses/backup-codes-response.d.ts +0 -5
  417. package/src/interfaces/api-responses/backup-codes-response.d.ts.map +0 -1
  418. package/src/interfaces/api-responses/backup-codes-response.js +0 -3
  419. package/src/interfaces/api-responses/backup-codes-response.js.map +0 -1
  420. package/src/interfaces/api-responses/challenge-response.d.ts +0 -6
  421. package/src/interfaces/api-responses/challenge-response.d.ts.map +0 -1
  422. package/src/interfaces/api-responses/challenge-response.js +0 -3
  423. package/src/interfaces/api-responses/challenge-response.js.map +0 -1
  424. package/src/interfaces/api-responses/code-count-response.d.ts +0 -5
  425. package/src/interfaces/api-responses/code-count-response.d.ts.map +0 -1
  426. package/src/interfaces/api-responses/code-count-response.js +0 -3
  427. package/src/interfaces/api-responses/code-count-response.js.map +0 -1
  428. package/src/interfaces/api-responses/index.d.ts.map +0 -1
  429. package/src/interfaces/api-responses/index.js +0 -12
  430. package/src/interfaces/api-responses/index.js.map +0 -1
  431. package/src/interfaces/api-responses/login-response.d.ts +0 -8
  432. package/src/interfaces/api-responses/login-response.d.ts.map +0 -1
  433. package/src/interfaces/api-responses/login-response.js +0 -3
  434. package/src/interfaces/api-responses/login-response.js.map +0 -1
  435. package/src/interfaces/api-responses/mnemonic-response.d.ts +0 -5
  436. package/src/interfaces/api-responses/mnemonic-response.d.ts.map +0 -1
  437. package/src/interfaces/api-responses/mnemonic-response.js +0 -3
  438. package/src/interfaces/api-responses/mnemonic-response.js.map +0 -1
  439. package/src/interfaces/api-responses/registration-response.d.ts +0 -6
  440. package/src/interfaces/api-responses/registration-response.d.ts.map +0 -1
  441. package/src/interfaces/api-responses/registration-response.js +0 -3
  442. package/src/interfaces/api-responses/registration-response.js.map +0 -1
  443. package/src/interfaces/api-responses/request-user-response.d.ts +0 -6
  444. package/src/interfaces/api-responses/request-user-response.d.ts.map +0 -1
  445. package/src/interfaces/api-responses/request-user-response.js +0 -3
  446. package/src/interfaces/api-responses/request-user-response.js.map +0 -1
  447. package/src/interfaces/api-responses/user-settings-response.d.ts +0 -12
  448. package/src/interfaces/api-responses/user-settings-response.d.ts.map +0 -1
  449. package/src/interfaces/api-responses/user-settings-response.js +0 -3
  450. package/src/interfaces/api-responses/user-settings-response.js.map +0 -1
  451. package/src/interfaces/application.d.ts +0 -17
  452. package/src/interfaces/application.d.ts.map +0 -1
  453. package/src/interfaces/application.js +0 -3
  454. package/src/interfaces/application.js.map +0 -1
  455. package/src/interfaces/backend-objects/email-token.d.ts +0 -4
  456. package/src/interfaces/backend-objects/email-token.d.ts.map +0 -1
  457. package/src/interfaces/backend-objects/email-token.js +0 -3
  458. package/src/interfaces/backend-objects/email-token.js.map +0 -1
  459. package/src/interfaces/backend-objects/index.d.ts.map +0 -1
  460. package/src/interfaces/backend-objects/index.js +0 -8
  461. package/src/interfaces/backend-objects/index.js.map +0 -1
  462. package/src/interfaces/backend-objects/request-user.d.ts +0 -5
  463. package/src/interfaces/backend-objects/request-user.d.ts.map +0 -1
  464. package/src/interfaces/backend-objects/request-user.js +0 -3
  465. package/src/interfaces/backend-objects/request-user.js.map +0 -1
  466. package/src/interfaces/backend-objects/role.d.ts +0 -4
  467. package/src/interfaces/backend-objects/role.d.ts.map +0 -1
  468. package/src/interfaces/backend-objects/role.js +0 -3
  469. package/src/interfaces/backend-objects/role.js.map +0 -1
  470. package/src/interfaces/backend-objects/user.d.ts +0 -4
  471. package/src/interfaces/backend-objects/user.d.ts.map +0 -1
  472. package/src/interfaces/backend-objects/user.js +0 -3
  473. package/src/interfaces/backend-objects/user.js.map +0 -1
  474. package/src/interfaces/checksum-config.d.ts +0 -5
  475. package/src/interfaces/checksum-config.d.ts.map +0 -1
  476. package/src/interfaces/checksum-config.js +0 -3
  477. package/src/interfaces/checksum-config.js.map +0 -1
  478. package/src/interfaces/checksum-consts.d.ts +0 -11
  479. package/src/interfaces/checksum-consts.d.ts.map +0 -1
  480. package/src/interfaces/checksum-consts.js +0 -3
  481. package/src/interfaces/checksum-consts.js.map +0 -1
  482. package/src/interfaces/constants.d.ts +0 -102
  483. package/src/interfaces/constants.d.ts.map +0 -1
  484. package/src/interfaces/constants.js +0 -3
  485. package/src/interfaces/constants.js.map +0 -1
  486. package/src/interfaces/controller-config.d.ts +0 -21
  487. package/src/interfaces/controller-config.d.ts.map +0 -1
  488. package/src/interfaces/controller-config.js +0 -3
  489. package/src/interfaces/controller-config.js.map +0 -1
  490. package/src/interfaces/create-user-basics.d.ts +0 -18
  491. package/src/interfaces/create-user-basics.d.ts.map +0 -1
  492. package/src/interfaces/create-user-basics.js +0 -3
  493. package/src/interfaces/create-user-basics.js.map +0 -1
  494. package/src/interfaces/csp-config.d.ts +0 -7
  495. package/src/interfaces/csp-config.d.ts.map +0 -1
  496. package/src/interfaces/csp-config.js +0 -13
  497. package/src/interfaces/csp-config.js.map +0 -1
  498. package/src/interfaces/csp-definition.d.ts +0 -13
  499. package/src/interfaces/csp-definition.d.ts.map +0 -1
  500. package/src/interfaces/csp-definition.js +0 -22
  501. package/src/interfaces/csp-definition.js.map +0 -1
  502. package/src/interfaces/db-init-result.d.ts +0 -5
  503. package/src/interfaces/db-init-result.d.ts.map +0 -1
  504. package/src/interfaces/db-init-result.js +0 -3
  505. package/src/interfaces/db-init-result.js.map +0 -1
  506. package/src/interfaces/deep-partial.d.ts +0 -4
  507. package/src/interfaces/deep-partial.d.ts.map +0 -1
  508. package/src/interfaces/deep-partial.js +0 -3
  509. package/src/interfaces/deep-partial.js.map +0 -1
  510. package/src/interfaces/discriminator-collections.d.ts +0 -7
  511. package/src/interfaces/discriminator-collections.d.ts.map +0 -1
  512. package/src/interfaces/discriminator-collections.js +0 -3
  513. package/src/interfaces/discriminator-collections.js.map +0 -1
  514. package/src/interfaces/email-service.d.ts +0 -4
  515. package/src/interfaces/email-service.d.ts.map +0 -1
  516. package/src/interfaces/email-service.js +0 -3
  517. package/src/interfaces/email-service.js.map +0 -1
  518. package/src/interfaces/environment-mongo.d.ts +0 -76
  519. package/src/interfaces/environment-mongo.d.ts.map +0 -1
  520. package/src/interfaces/environment-mongo.js +0 -3
  521. package/src/interfaces/environment-mongo.js.map +0 -1
  522. package/src/interfaces/environment.d.ts +0 -180
  523. package/src/interfaces/environment.d.ts.map +0 -1
  524. package/src/interfaces/environment.js +0 -3
  525. package/src/interfaces/environment.js.map +0 -1
  526. package/src/interfaces/failable-result.d.ts +0 -7
  527. package/src/interfaces/failable-result.d.ts.map +0 -1
  528. package/src/interfaces/failable-result.js +0 -3
  529. package/src/interfaces/failable-result.js.map +0 -1
  530. package/src/interfaces/fec-consts.d.ts +0 -5
  531. package/src/interfaces/fec-consts.d.ts.map +0 -1
  532. package/src/interfaces/fec-consts.js +0 -3
  533. package/src/interfaces/fec-consts.js.map +0 -1
  534. package/src/interfaces/flexible-csp.d.ts +0 -8
  535. package/src/interfaces/flexible-csp.d.ts.map +0 -1
  536. package/src/interfaces/flexible-csp.js +0 -14
  537. package/src/interfaces/flexible-csp.js.map +0 -1
  538. package/src/interfaces/handleable-error-options.d.ts +0 -7
  539. package/src/interfaces/handleable-error-options.d.ts.map +0 -1
  540. package/src/interfaces/handleable-error-options.js +0 -3
  541. package/src/interfaces/handleable-error-options.js.map +0 -1
  542. package/src/interfaces/index.d.ts.map +0 -1
  543. package/src/interfaces/index.js +0 -38
  544. package/src/interfaces/index.js.map +0 -1
  545. package/src/interfaces/jwt-consts.d.ts +0 -11
  546. package/src/interfaces/jwt-consts.d.ts.map +0 -1
  547. package/src/interfaces/jwt-consts.js +0 -3
  548. package/src/interfaces/jwt-consts.js.map +0 -1
  549. package/src/interfaces/jwt-sign-response.d.ts +0 -11
  550. package/src/interfaces/jwt-sign-response.d.ts.map +0 -1
  551. package/src/interfaces/jwt-sign-response.js +0 -3
  552. package/src/interfaces/jwt-sign-response.js.map +0 -1
  553. package/src/interfaces/models/email-token.d.ts +0 -6
  554. package/src/interfaces/models/email-token.d.ts.map +0 -1
  555. package/src/interfaces/models/email-token.js +0 -3
  556. package/src/interfaces/models/email-token.js.map +0 -1
  557. package/src/interfaces/models/index.d.ts.map +0 -1
  558. package/src/interfaces/models/index.js +0 -11
  559. package/src/interfaces/models/index.js.map +0 -1
  560. package/src/interfaces/models/mnemonic.d.ts +0 -6
  561. package/src/interfaces/models/mnemonic.d.ts.map +0 -1
  562. package/src/interfaces/models/mnemonic.js +0 -3
  563. package/src/interfaces/models/mnemonic.js.map +0 -1
  564. package/src/interfaces/models/role.d.ts +0 -6
  565. package/src/interfaces/models/role.d.ts.map +0 -1
  566. package/src/interfaces/models/role.js +0 -3
  567. package/src/interfaces/models/role.js.map +0 -1
  568. package/src/interfaces/models/token-role.d.ts +0 -11
  569. package/src/interfaces/models/token-role.d.ts.map +0 -1
  570. package/src/interfaces/models/token-role.js +0 -3
  571. package/src/interfaces/models/token-role.js.map +0 -1
  572. package/src/interfaces/models/used-direct-login-token.d.ts +0 -11
  573. package/src/interfaces/models/used-direct-login-token.d.ts.map +0 -1
  574. package/src/interfaces/models/used-direct-login-token.js +0 -3
  575. package/src/interfaces/models/used-direct-login-token.js.map +0 -1
  576. package/src/interfaces/models/user-role.d.ts +0 -11
  577. package/src/interfaces/models/user-role.d.ts.map +0 -1
  578. package/src/interfaces/models/user-role.js +0 -3
  579. package/src/interfaces/models/user-role.js.map +0 -1
  580. package/src/interfaces/models/user.d.ts +0 -11
  581. package/src/interfaces/models/user.d.ts.map +0 -1
  582. package/src/interfaces/models/user.js +0 -3
  583. package/src/interfaces/models/user.js.map +0 -1
  584. package/src/interfaces/mongo-errors.d.ts +0 -5
  585. package/src/interfaces/mongo-errors.d.ts.map +0 -1
  586. package/src/interfaces/mongo-errors.js +0 -3
  587. package/src/interfaces/mongo-errors.js.map +0 -1
  588. package/src/interfaces/request-user.d.ts +0 -58
  589. package/src/interfaces/request-user.d.ts.map +0 -1
  590. package/src/interfaces/request-user.js +0 -3
  591. package/src/interfaces/request-user.js.map +0 -1
  592. package/src/interfaces/required-string-keys.d.ts +0 -22
  593. package/src/interfaces/required-string-keys.d.ts.map +0 -1
  594. package/src/interfaces/required-string-keys.js +0 -3
  595. package/src/interfaces/required-string-keys.js.map +0 -1
  596. package/src/interfaces/schema.d.ts +0 -29
  597. package/src/interfaces/schema.d.ts.map +0 -1
  598. package/src/interfaces/schema.js +0 -3
  599. package/src/interfaces/schema.js.map +0 -1
  600. package/src/interfaces/server-init-result.d.ts +0 -35
  601. package/src/interfaces/server-init-result.d.ts.map +0 -1
  602. package/src/interfaces/server-init-result.js +0 -3
  603. package/src/interfaces/server-init-result.js.map +0 -1
  604. package/src/interfaces/status-code-response.d.ts +0 -7
  605. package/src/interfaces/status-code-response.d.ts.map +0 -1
  606. package/src/interfaces/status-code-response.js +0 -3
  607. package/src/interfaces/status-code-response.js.map +0 -1
  608. package/src/interfaces/symmetric-encryption-results.d.ts +0 -5
  609. package/src/interfaces/test-environment.d.ts +0 -12
  610. package/src/interfaces/test-environment.d.ts.map +0 -1
  611. package/src/interfaces/test-environment.js +0 -3
  612. package/src/interfaces/test-environment.js.map +0 -1
  613. package/src/interfaces/token-response.d.ts +0 -5
  614. package/src/interfaces/token-response.d.ts.map +0 -1
  615. package/src/interfaces/token-response.js +0 -3
  616. package/src/interfaces/token-response.js.map +0 -1
  617. package/src/middleware-utils.d.ts +0 -8
  618. package/src/middleware-utils.d.ts.map +0 -1
  619. package/src/middleware-utils.js +0 -94
  620. package/src/middleware-utils.js.map +0 -1
  621. package/src/middlewares/authenticate-crypto.d.ts +0 -10
  622. package/src/middlewares/authenticate-crypto.d.ts.map +0 -1
  623. package/src/middlewares/authenticate-crypto.js +0 -126
  624. package/src/middlewares/authenticate-crypto.js.map +0 -1
  625. package/src/middlewares/authenticate-token.d.ts +0 -21
  626. package/src/middlewares/authenticate-token.d.ts.map +0 -1
  627. package/src/middlewares/authenticate-token.js +0 -104
  628. package/src/middlewares/authenticate-token.js.map +0 -1
  629. package/src/middlewares/cleanup-crypto.d.ts +0 -7
  630. package/src/middlewares/cleanup-crypto.d.ts.map +0 -1
  631. package/src/middlewares/cleanup-crypto.js +0 -32
  632. package/src/middlewares/cleanup-crypto.js.map +0 -1
  633. package/src/middlewares/index.d.ts.map +0 -1
  634. package/src/middlewares/index.js +0 -8
  635. package/src/middlewares/index.js.map +0 -1
  636. package/src/middlewares/set-global-context-language.d.ts +0 -3
  637. package/src/middlewares/set-global-context-language.d.ts.map +0 -1
  638. package/src/middlewares/set-global-context-language.js +0 -14
  639. package/src/middlewares/set-global-context-language.js.map +0 -1
  640. package/src/model-registry.d.ts +0 -23
  641. package/src/model-registry.d.ts.map +0 -1
  642. package/src/model-registry.js +0 -47
  643. package/src/model-registry.js.map +0 -1
  644. package/src/models/email-token.d.ts +0 -8
  645. package/src/models/email-token.d.ts.map +0 -1
  646. package/src/models/email-token.js +0 -11
  647. package/src/models/email-token.js.map +0 -1
  648. package/src/models/index.d.ts.map +0 -1
  649. package/src/models/index.js +0 -10
  650. package/src/models/index.js.map +0 -1
  651. package/src/models/mnemonic.d.ts +0 -8
  652. package/src/models/mnemonic.d.ts.map +0 -1
  653. package/src/models/mnemonic.js +0 -11
  654. package/src/models/mnemonic.js.map +0 -1
  655. package/src/models/role.d.ts +0 -8
  656. package/src/models/role.d.ts.map +0 -1
  657. package/src/models/role.js +0 -11
  658. package/src/models/role.js.map +0 -1
  659. package/src/models/used-direct-login-token.d.ts +0 -8
  660. package/src/models/used-direct-login-token.d.ts.map +0 -1
  661. package/src/models/used-direct-login-token.js +0 -11
  662. package/src/models/used-direct-login-token.js.map +0 -1
  663. package/src/models/user-role.d.ts +0 -7
  664. package/src/models/user-role.d.ts.map +0 -1
  665. package/src/models/user-role.js +0 -10
  666. package/src/models/user-role.js.map +0 -1
  667. package/src/models/user.d.ts +0 -8
  668. package/src/models/user.d.ts.map +0 -1
  669. package/src/models/user.js +0 -11
  670. package/src/models/user.js.map +0 -1
  671. package/src/pipeline/index.d.ts.map +0 -1
  672. package/src/pipeline/index.js +0 -5
  673. package/src/pipeline/index.js.map +0 -1
  674. package/src/pipeline/pipeline-builder.d.ts +0 -8
  675. package/src/pipeline/pipeline-builder.d.ts.map +0 -1
  676. package/src/pipeline/pipeline-builder.js +0 -18
  677. package/src/pipeline/pipeline-builder.js.map +0 -1
  678. package/src/plugins/index.d.ts.map +0 -1
  679. package/src/plugins/index.js +0 -6
  680. package/src/plugins/index.js.map +0 -1
  681. package/src/plugins/plugin-interface.d.ts +0 -9
  682. package/src/plugins/plugin-interface.d.ts.map +0 -1
  683. package/src/plugins/plugin-interface.js +0 -3
  684. package/src/plugins/plugin-interface.js.map +0 -1
  685. package/src/plugins/plugin-manager.d.ts +0 -13
  686. package/src/plugins/plugin-manager.d.ts.map +0 -1
  687. package/src/plugins/plugin-manager.js +0 -37
  688. package/src/plugins/plugin-manager.js.map +0 -1
  689. package/src/registry/email-service-registry.d.ts +0 -27
  690. package/src/registry/email-service-registry.d.ts.map +0 -1
  691. package/src/registry/email-service-registry.js +0 -42
  692. package/src/registry/email-service-registry.js.map +0 -1
  693. package/src/registry/index.d.ts.map +0 -1
  694. package/src/registry/index.js +0 -6
  695. package/src/registry/index.js.map +0 -1
  696. package/src/responses/index.d.ts.map +0 -1
  697. package/src/responses/index.js +0 -5
  698. package/src/responses/index.js.map +0 -1
  699. package/src/responses/response-builder.d.ts +0 -24
  700. package/src/responses/response-builder.d.ts.map +0 -1
  701. package/src/responses/response-builder.js +0 -63
  702. package/src/responses/response-builder.js.map +0 -1
  703. package/src/routers/api.d.ts +0 -28
  704. package/src/routers/api.d.ts.map +0 -1
  705. package/src/routers/api.js +0 -80
  706. package/src/routers/api.js.map +0 -1
  707. package/src/routers/app.d.ts +0 -33
  708. package/src/routers/app.d.ts.map +0 -1
  709. package/src/routers/app.js +0 -228
  710. package/src/routers/app.js.map +0 -1
  711. package/src/routers/base.d.ts +0 -9
  712. package/src/routers/base.d.ts.map +0 -1
  713. package/src/routers/base.js +0 -14
  714. package/src/routers/base.js.map +0 -1
  715. package/src/routers/index.d.ts.map +0 -1
  716. package/src/routers/index.js +0 -7
  717. package/src/routers/index.js.map +0 -1
  718. package/src/routers/router-config.d.ts +0 -18
  719. package/src/routers/router-config.d.ts.map +0 -1
  720. package/src/routers/router-config.js +0 -8
  721. package/src/routers/router-config.js.map +0 -1
  722. package/src/routing/index.d.ts +0 -2
  723. package/src/routing/index.d.ts.map +0 -1
  724. package/src/routing/index.js +0 -5
  725. package/src/routing/index.js.map +0 -1
  726. package/src/routing/route-builder.d.ts +0 -36
  727. package/src/routing/route-builder.d.ts.map +0 -1
  728. package/src/routing/route-builder.js +0 -86
  729. package/src/routing/route-builder.js.map +0 -1
  730. package/src/schemas/email-token.d.ts +0 -49
  731. package/src/schemas/email-token.d.ts.map +0 -1
  732. package/src/schemas/email-token.js +0 -55
  733. package/src/schemas/email-token.js.map +0 -1
  734. package/src/schemas/index.d.ts.map +0 -1
  735. package/src/schemas/index.js +0 -11
  736. package/src/schemas/index.js.map +0 -1
  737. package/src/schemas/mnemonic.d.ts +0 -27
  738. package/src/schemas/mnemonic.d.ts.map +0 -1
  739. package/src/schemas/mnemonic.js +0 -31
  740. package/src/schemas/mnemonic.js.map +0 -1
  741. package/src/schemas/role.d.ts +0 -42
  742. package/src/schemas/role.d.ts.map +0 -1
  743. package/src/schemas/role.js +0 -89
  744. package/src/schemas/role.js.map +0 -1
  745. package/src/schemas/schema.d.ts +0 -42
  746. package/src/schemas/schema.d.ts.map +0 -1
  747. package/src/schemas/schema.js +0 -70
  748. package/src/schemas/schema.js.map +0 -1
  749. package/src/schemas/used-direct-login-token.d.ts +0 -37
  750. package/src/schemas/used-direct-login-token.d.ts.map +0 -1
  751. package/src/schemas/used-direct-login-token.js +0 -24
  752. package/src/schemas/used-direct-login-token.js.map +0 -1
  753. package/src/schemas/user-role.d.ts +0 -39
  754. package/src/schemas/user-role.d.ts.map +0 -1
  755. package/src/schemas/user-role.js +0 -55
  756. package/src/schemas/user-role.js.map +0 -1
  757. package/src/schemas/user.d.ts +0 -24
  758. package/src/schemas/user.d.ts.map +0 -1
  759. package/src/schemas/user.js +0 -195
  760. package/src/schemas/user.js.map +0 -1
  761. package/src/services/backup-code.d.ts +0 -76
  762. package/src/services/backup-code.d.ts.map +0 -1
  763. package/src/services/backup-code.js +0 -185
  764. package/src/services/backup-code.js.map +0 -1
  765. package/src/services/base.d.ts +0 -11
  766. package/src/services/base.d.ts.map +0 -1
  767. package/src/services/base.js +0 -15
  768. package/src/services/base.js.map +0 -1
  769. package/src/services/checksum.d.ts +0 -69
  770. package/src/services/checksum.d.ts.map +0 -1
  771. package/src/services/checksum.js +0 -145
  772. package/src/services/checksum.js.map +0 -1
  773. package/src/services/database-initialization.d.ts +0 -111
  774. package/src/services/database-initialization.d.ts.map +0 -1
  775. package/src/services/database-initialization.js +0 -878
  776. package/src/services/database-initialization.js.map +0 -1
  777. package/src/services/db-init-cache.d.ts +0 -10
  778. package/src/services/db-init-cache.d.ts.map +0 -1
  779. package/src/services/db-init-cache.js +0 -3
  780. package/src/services/db-init-cache.js.map +0 -1
  781. package/src/services/direct-login-token.d.ts +0 -7
  782. package/src/services/direct-login-token.d.ts.map +0 -1
  783. package/src/services/direct-login-token.js +0 -41
  784. package/src/services/direct-login-token.js.map +0 -1
  785. package/src/services/dummy-email-service.d.ts +0 -11
  786. package/src/services/dummy-email-service.d.ts.map +0 -1
  787. package/src/services/dummy-email-service.js +0 -16
  788. package/src/services/dummy-email-service.js.map +0 -1
  789. package/src/services/fec-usage-example.d.ts +0 -38
  790. package/src/services/fec-usage-example.d.ts.map +0 -1
  791. package/src/services/fec-usage-example.js +0 -75
  792. package/src/services/fec-usage-example.js.map +0 -1
  793. package/src/services/fec.d.ts +0 -46
  794. package/src/services/fec.d.ts.map +0 -1
  795. package/src/services/fec.js +0 -214
  796. package/src/services/fec.js.map +0 -1
  797. package/src/services/index.d.ts.map +0 -1
  798. package/src/services/index.js +0 -22
  799. package/src/services/index.js.map +0 -1
  800. package/src/services/jwt.d.ts +0 -30
  801. package/src/services/jwt.d.ts.map +0 -1
  802. package/src/services/jwt.js +0 -90
  803. package/src/services/jwt.js.map +0 -1
  804. package/src/services/key-wrapping.d.ts +0 -61
  805. package/src/services/key-wrapping.d.ts.map +0 -1
  806. package/src/services/key-wrapping.js +0 -307
  807. package/src/services/key-wrapping.js.map +0 -1
  808. package/src/services/mnemonic.d.ts +0 -62
  809. package/src/services/mnemonic.d.ts.map +0 -1
  810. package/src/services/mnemonic.js +0 -114
  811. package/src/services/mnemonic.js.map +0 -1
  812. package/src/services/request-user.d.ts +0 -23
  813. package/src/services/request-user.d.ts.map +0 -1
  814. package/src/services/request-user.js +0 -68
  815. package/src/services/request-user.js.map +0 -1
  816. package/src/services/role.d.ts +0 -87
  817. package/src/services/role.d.ts.map +0 -1
  818. package/src/services/role.js +0 -279
  819. package/src/services/role.js.map +0 -1
  820. package/src/services/symmetric.d.ts +0 -42
  821. package/src/services/symmetric.d.ts.map +0 -1
  822. package/src/services/symmetric.js +0 -101
  823. package/src/services/symmetric.js.map +0 -1
  824. package/src/services/system-user.d.ts +0 -16
  825. package/src/services/system-user.d.ts.map +0 -1
  826. package/src/services/system-user.js +0 -46
  827. package/src/services/system-user.js.map +0 -1
  828. package/src/services/user.d.ts +0 -345
  829. package/src/services/user.d.ts.map +0 -1
  830. package/src/services/user.js +0 -1447
  831. package/src/services/user.js.map +0 -1
  832. package/src/services/xor.d.ts +0 -24
  833. package/src/services/xor.d.ts.map +0 -1
  834. package/src/services/xor.js +0 -37
  835. package/src/services/xor.js.map +0 -1
  836. package/src/testing.d.ts +0 -3
  837. package/src/testing.d.ts.map +0 -1
  838. package/src/testing.js +0 -7
  839. package/src/testing.js.map +0 -1
  840. package/src/transactions/index.d.ts.map +0 -1
  841. package/src/transactions/index.js +0 -5
  842. package/src/transactions/index.js.map +0 -1
  843. package/src/transactions/transaction-manager.d.ts +0 -12
  844. package/src/transactions/transaction-manager.d.ts.map +0 -1
  845. package/src/transactions/transaction-manager.js +0 -30
  846. package/src/transactions/transaction-manager.js.map +0 -1
  847. package/src/types/app-config.d.ts +0 -16
  848. package/src/types/app-config.d.ts.map +0 -1
  849. package/src/types/app-config.js +0 -3
  850. package/src/types/app-config.js.map +0 -1
  851. package/src/types/controller-config.d.ts +0 -14
  852. package/src/types/controller-config.d.ts.map +0 -1
  853. package/src/types/controller-config.js +0 -3
  854. package/src/types/controller-config.js.map +0 -1
  855. package/src/types/environment-variables.d.ts.map +0 -1
  856. package/src/types/environment-variables.js +0 -39
  857. package/src/types/environment-variables.js.map +0 -1
  858. package/src/types/index.d.ts.map +0 -1
  859. package/src/types/index.js +0 -6
  860. package/src/types/index.js.map +0 -1
  861. package/src/types/mongoose-helpers.d.ts.map +0 -1
  862. package/src/types/mongoose-helpers.js +0 -6
  863. package/src/types/mongoose-helpers.js.map +0 -1
  864. package/src/types.d.ts +0 -104
  865. package/src/types.d.ts.map +0 -1
  866. package/src/types.js +0 -14
  867. package/src/types.js.map +0 -1
  868. package/src/utils.d.ts +0 -211
  869. package/src/utils.d.ts.map +0 -1
  870. package/src/utils.js +0 -818
  871. package/src/utils.js.map +0 -1
  872. package/src/validation/index.d.ts.map +0 -1
  873. package/src/validation/index.js +0 -5
  874. package/src/validation/index.js.map +0 -1
  875. package/src/validation/validation-builder.d.ts +0 -32
  876. package/src/validation/validation-builder.d.ts.map +0 -1
  877. package/src/validation/validation-builder.js +0 -81
  878. package/src/validation/validation-builder.js.map +0 -1
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @fileoverview Request user interface for Express request object.
3
+ * Defines user data structure attached to authenticated requests.
4
+ * @module interfaces/request-user
5
+ */
6
+
7
+ import {
8
+ ICombinedRolePrivileges,
9
+ IRoleDTO,
10
+ IRoleFrontendObject,
11
+ } from '@digitaldefiance/suite-core-lib';
12
+ import { IRoleBackendObject } from './backend-objects/role';
13
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
14
+
15
+ /**
16
+ * Interface for the user object stored in the request object.
17
+ * Used for request handling, not for Mongoose documents.
18
+ * @template TID - Platform ID type (defaults to Buffer)
19
+ * @template TRole - Role array type (defaults to IRoleDTO[])
20
+ * @template TLanguage - String type for language (defaults to string)
21
+ * @template TDate - Date type (defaults to string)
22
+ */
23
+ export interface IRequestUser<
24
+ TID extends PlatformID = Buffer,
25
+ TRole extends
26
+ | Array<IRoleDTO>
27
+ | Array<IRoleFrontendObject>
28
+ | Array<IRoleBackendObject> = Array<IRoleDTO>,
29
+ TLanguage extends string = string,
30
+ TDate extends Date | string = string,
31
+ > {
32
+ /**
33
+ * The ID of the user
34
+ */
35
+ id: TID;
36
+ /**
37
+ * The roles associated with the user
38
+ */
39
+ roles: TRole;
40
+ /**
41
+ * Combined role privileges across all user roles
42
+ */
43
+ rolePrivileges: ICombinedRolePrivileges;
44
+ /**
45
+ * The username of the user
46
+ */
47
+ username: string;
48
+ /**
49
+ * The email address of the user
50
+ */
51
+ email: string;
52
+ /**
53
+ * The timezone of the user
54
+ */
55
+ timezone: string;
56
+ /**
57
+ * The currency preference of the user
58
+ */
59
+ currency: string;
60
+ /**
61
+ * Whether the user has direct challenge login enabled
62
+ */
63
+ directChallenge: boolean;
64
+ /**
65
+ * The language of the user
66
+ */
67
+ siteLanguage: TLanguage;
68
+ /**
69
+ * The date the user last logged in
70
+ */
71
+ lastLogin?: TDate;
72
+ /**
73
+ * Whether the user has verified their email address
74
+ */
75
+ emailVerified: boolean;
76
+ /**
77
+ * Whether the user prefers dark mode
78
+ */
79
+ darkMode: boolean;
80
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @fileoverview Required string keys interface for i18n.
3
+ * Defines minimum required translation keys for the library.
4
+ * @module interfaces/required-string-keys
5
+ */
6
+
7
+ /**
8
+ * Base interface defining the minimum required string keys.
9
+ * Must be implemented by any application using this library.
10
+ */
11
+ export interface RequiredStringKeys {
12
+ Common_UnexpectedError: string;
13
+ Error_EngineAlreadySet: string;
14
+ Error_EngineNotSet: string;
15
+ Error_LengthExceedsMaximum: string;
16
+ Error_LengthIsInvalidType: string;
17
+ // Validation errors
18
+ ValidationError: string;
19
+ Validation_MissingValidatedData: string;
20
+ Validation_MissingValidatedDataForField: string;
21
+
22
+ // Admin/system messages
23
+ Admin_NoMongoDbClientFoundFallingBack: string;
24
+ Admin_TransactionFailedTransientTemplate: string;
25
+ Admin_TransactionTimeoutTemplate: string;
26
+ }
27
+
28
+ /**
29
+ * Type constraint to ensure user's string key enum extends the required keys.
30
+ * @template T - String key type
31
+ */
32
+ export type ExtendedStringKeys<T extends string> =
33
+ T extends keyof RequiredStringKeys ? T : T | keyof RequiredStringKeys;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @fileoverview Schema interface for Mongoose model registration.
3
+ * Defines structure for schema map entries with models and discriminators.
4
+ * @module interfaces/schema
5
+ */
6
+
7
+ import { Model, Schema } from '@digitaldefiance/mongoose-types';
8
+ import { IBaseDocument } from '../documents/base';
9
+ import { IDiscriminatorCollections } from '../interfaces/discriminator-collections';
10
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
11
+
12
+ /**
13
+ * Interface for each schema in the schema map.
14
+ * Combines Mongoose schema, model, and collection metadata with optional discriminators.
15
+ * @template T - Document type extending IBaseDocument
16
+ */
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ export interface ISchema<
19
+ TID extends PlatformID,
20
+ T extends IBaseDocument<any, TID>,
21
+ > {
22
+ /**
23
+ * The name of the collection, eg 'models'
24
+ */
25
+ collection: string;
26
+ /**
27
+ * The model for the schema
28
+ */
29
+
30
+ model: Model<T>;
31
+ /**
32
+ * The name of the model, eg 'Model'
33
+ */
34
+ modelName: string;
35
+ /**
36
+ * The schema for the model
37
+ */
38
+ schema: Schema;
39
+ /**
40
+ * Discriminators for the model
41
+ */
42
+ discriminators?: IDiscriminatorCollections<TID, T>;
43
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @fileoverview Server initialization result interface.
3
+ * Defines structure for test server initialization with admin, member, and system users.
4
+ * @module interfaces/server-init-result
5
+ */
6
+
7
+ import { Member, PlatformID } from '@digitaldefiance/node-ecies-lib';
8
+ import { IRoleDocument } from '../documents/role';
9
+ import { IUserDocument } from '../documents/user';
10
+ import { IUserRoleDocument } from '../documents/user-role';
11
+
12
+ // Re-export essential document types
13
+ export type { IRoleDocument, IUserDocument, IUserRoleDocument };
14
+
15
+ /**
16
+ * Result of server initialization for testing.
17
+ * Contains admin, member, and system user accounts with credentials and roles.
18
+ * @template TID - Platform ID type (defaults to Buffer)
19
+ */
20
+ export interface IServerInitResult<TID extends PlatformID = Buffer> {
21
+ adminRole: IRoleDocument<TID>;
22
+ adminUser: IUserDocument<string, TID>;
23
+ adminUsername: string;
24
+ adminEmail: string;
25
+ adminMnemonic: string;
26
+ adminPassword: string;
27
+ adminBackupCodes: Array<string>;
28
+ adminMember: Member<TID>;
29
+ adminUserRole: IUserRoleDocument<TID>;
30
+ memberRole: IRoleDocument<TID>;
31
+ memberUser: IUserDocument<string, TID>;
32
+ memberUsername: string;
33
+ memberEmail: string;
34
+ memberMnemonic: string;
35
+ memberPassword: string;
36
+ memberBackupCodes: Array<string>;
37
+ memberMember: Member<TID>;
38
+ memberUserRole: IUserRoleDocument<TID>;
39
+ systemRole: IRoleDocument<TID>;
40
+ systemUser: IUserDocument<string, TID>;
41
+ systemUsername: string;
42
+ systemEmail: string;
43
+ systemMnemonic: string;
44
+ systemPassword: string;
45
+ systemBackupCodes: Array<string>;
46
+ systemMember: Member<TID>;
47
+ systemUserRole: IUserRoleDocument<TID>;
48
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @fileoverview Status code response wrapper interface.
3
+ * Wraps API responses with HTTP status codes and optional headers.
4
+ * @module interfaces/status-code-response
5
+ */
6
+
7
+ import { ApiResponse } from '../types';
8
+
9
+ /**
10
+ * HTTP response wrapper with status code and headers.
11
+ * @template T - API response type
12
+ * @property {number} statusCode - HTTP status code
13
+ * @property {T} response - Response payload
14
+ * @property {Record<string, string>} [headers] - Optional HTTP headers
15
+ */
16
+ export interface IStatusCodeResponse<T extends ApiResponse> {
17
+ statusCode: number;
18
+ response: T;
19
+ headers?: Record<string, string>;
20
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"symmetric-encryption-results.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/symmetric-encryption-results.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb"}
1
+ {"version":3,"file":"symmetric-encryption-results.d.ts","sourceRoot":"","sources":["symmetric-encryption-results.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"symmetric-encryption-results.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/symmetric-encryption-results.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"symmetric-encryption-results.js","sourceRoot":"","sources":["symmetric-encryption-results.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @fileoverview Symmetric encryption results interface.
3
+ * Defines structure for symmetric encryption operation results.
4
+ * @module interfaces/symmetric-encryption-results
5
+ */
6
+
7
+ /**
8
+ * Results of symmetric encryption operation.
9
+ * @property {Buffer} encryptedData - Encrypted data buffer
10
+ * @property {Buffer} key - Encryption key used
11
+ */
12
+ export interface ISymmetricEncryptionResults {
13
+ encryptedData: Buffer;
14
+ key: Buffer;
15
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileoverview Test environment interface.
3
+ * Defines structure for test environment with in-memory MongoDB and initialized accounts.
4
+ * @module interfaces/test-environment
5
+ */
6
+
7
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
8
+ import { MongoMemoryReplSet } from 'mongodb-memory-server';
9
+ import { IApplication } from './application';
10
+ import { IServerInitResult } from './server-init-result';
11
+
12
+ /**
13
+ * Test environment configuration.
14
+ * Contains application instance, in-memory MongoDB, and test account data.
15
+ * @template TID - Platform ID type (defaults to Buffer)
16
+ */
17
+ export interface ITestEnvironment<TID extends PlatformID = Buffer> {
18
+ application: IApplication<TID>;
19
+ mongoServer: MongoMemoryReplSet;
20
+ mongoUri: string;
21
+ accountData: IServerInitResult<TID>;
22
+ dbName: string;
23
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @fileoverview Token response interface for authentication.
3
+ * Extends API message response with JWT token.
4
+ * @module interfaces/token-response
5
+ */
6
+
7
+ import { IApiMessageResponse } from './api-message-response';
8
+
9
+ /**
10
+ * API response containing authentication token.
11
+ * @extends IApiMessageResponse
12
+ * @property {string} token - JWT authentication token
13
+ */
14
+ export interface IApiTokenResponse extends IApiMessageResponse {
15
+ token: string;
16
+ }
@@ -0,0 +1,138 @@
1
+ /**
2
+ * @fileoverview Middleware initialization utilities.
3
+ * Configures Express middleware including Helmet, CORS, and body parsers.
4
+ * @module middleware-utils
5
+ */
6
+
7
+ import {
8
+ SuiteCoreStringKey,
9
+ TranslatableSuiteError,
10
+ } from '@digitaldefiance/suite-core-lib';
11
+ import cors from 'cors';
12
+ import { randomBytes } from 'crypto';
13
+ import {
14
+ Application,
15
+ json,
16
+ NextFunction,
17
+ Request,
18
+ Response,
19
+ urlencoded,
20
+ } from 'express';
21
+ import helmet, { HelmetOptions } from 'helmet';
22
+ import { IncomingMessage, ServerResponse } from 'http';
23
+ import { ISimpleCSPDef, isSimpleCSPDef } from './interfaces/csp-definition';
24
+
25
+ /**
26
+ * Creates a CORS options delegate function.
27
+ * @param {string[]} corsWhitelist - Array of allowed origins
28
+ * @returns {Function} CORS options delegate
29
+ */
30
+ export const corsOptionsDelegate = (corsWhitelist: string[]) => {
31
+ return (
32
+ req: cors.CorsRequest,
33
+ callback: (
34
+ error: Error | null,
35
+ options: cors.CorsOptions | undefined,
36
+ ) => void,
37
+ ) => {
38
+ let corsOptions: cors.CorsOptions;
39
+ const origin = req.headers.origin;
40
+ if (
41
+ origin &&
42
+ corsWhitelist.find((w: string | RegExp) => {
43
+ if (w instanceof RegExp) {
44
+ return w.test(origin);
45
+ } else {
46
+ return w === origin;
47
+ }
48
+ })
49
+ ) {
50
+ corsOptions = { origin: true };
51
+ } else {
52
+ corsOptions = { origin: false };
53
+ }
54
+ callback(null, corsOptions);
55
+ };
56
+ };
57
+
58
+ /**
59
+ * Type guard to check if object is HelmetOptions.
60
+ * @param {unknown} obj - Object to check
61
+ * @returns {boolean} True if object is HelmetOptions
62
+ */
63
+ export const isHelmetOptions = (obj: unknown): obj is HelmetOptions => {
64
+ // A very basic check; in real scenarios, you might want to be more thorough
65
+ return !!(
66
+ obj &&
67
+ typeof obj === 'object' &&
68
+ ('contentSecurityPolicy' in obj ||
69
+ 'crossOriginEmbedderPolicy' in obj ||
70
+ 'crossOriginOpenerPolicy' in obj ||
71
+ 'crossOriginResourcePolicy' in obj ||
72
+ 'originAgentCluster' in obj ||
73
+ 'referrerPolicy' in obj)
74
+ );
75
+ };
76
+
77
+ /**
78
+ * Initializes Express middleware stack.
79
+ * Configures Helmet for security headers, CORS, and body parsers.
80
+ * @param {Application} app - Express application instance
81
+ * @param {string[]} corsWhitelist - Array of allowed CORS origins
82
+ * @param {ISimpleCSPDef | HelmetOptions} csp - CSP configuration or Helmet options
83
+ * @throws {TranslatableSuiteError} If invalid CSP configuration provided
84
+ */
85
+ export const initMiddleware = (
86
+ app: Application,
87
+ corsWhitelist: string[],
88
+ csp: ISimpleCSPDef | HelmetOptions,
89
+ ): void => {
90
+ // Helmet helps you secure your Express apps by setting various HTTP headers
91
+ // CSP nonce
92
+ app.use((req: Request, res: Response, next: NextFunction) => {
93
+ res.locals['cspNonce'] = randomBytes(32).toString('hex');
94
+ next();
95
+ });
96
+ if (isSimpleCSPDef(csp)) {
97
+ app.use(
98
+ helmet({
99
+ contentSecurityPolicy: {
100
+ directives: {
101
+ defaultSrc: ["'self'", ...csp.defaultSrc],
102
+ imgSrc: ["'self'", 'data:', 'blob:', ...csp.imgSrc],
103
+ connectSrc: ["'self'", ...csp.connectSrc],
104
+ scriptSrc: [
105
+ "'self'",
106
+ //"'unsafe-inline'",
107
+ "'strict-dynamic'",
108
+ (req: IncomingMessage, res: ServerResponse) => {
109
+ const response = res as Response;
110
+ return `'nonce-${response.locals['cspNonce']}'`;
111
+ },
112
+ ...csp.scriptSrc,
113
+ ],
114
+ styleSrc: [
115
+ "'self'",
116
+ // "'unsafe-inline'",
117
+ ...csp.styleSrc,
118
+ ],
119
+ fontSrc: ["'self'", ...csp.fontSrc],
120
+ frameSrc: ["'self'", ...csp.frameSrc],
121
+ },
122
+ },
123
+ }),
124
+ );
125
+ } else if (isHelmetOptions(csp)) {
126
+ app.use(helmet(csp));
127
+ } else {
128
+ throw new TranslatableSuiteError(
129
+ SuiteCoreStringKey.Error_InvalidCspOrHelmetOptionsProvided,
130
+ );
131
+ }
132
+ // Enable CORS
133
+ app.use(cors(corsOptionsDelegate(corsWhitelist)));
134
+ // Parse incoming requests with JSON payloads
135
+ app.use(json());
136
+ // Parse incoming requests with urlencoded payloads
137
+ app.use(urlencoded({ extended: true }));
138
+ };
@@ -0,0 +1,237 @@
1
+ /**
2
+ * @fileoverview Cryptographic authentication middleware for operations requiring private keys.
3
+ * Validates mnemonic or password to unlock user's private key for sensitive operations.
4
+ * @module middlewares/authenticate-crypto
5
+ */
6
+
7
+ import { SecureString } from '@digitaldefiance/ecies-lib';
8
+ import { ClientSession } from '@digitaldefiance/mongoose-types';
9
+ import {
10
+ Member as BackendMember,
11
+ PlatformID,
12
+ } from '@digitaldefiance/node-ecies-lib';
13
+ import {
14
+ AccountStatus,
15
+ getSuiteCoreTranslation,
16
+ InvalidCredentialsError,
17
+ SuiteCoreStringKey,
18
+ } from '@digitaldefiance/suite-core-lib';
19
+ import { NextFunction, Request, Response } from 'express';
20
+ import { ServiceKeys } from '../container';
21
+ import { IUserDocument } from '../documents/user';
22
+ import { BaseModelName } from '../enumerations';
23
+ import { InvalidPasswordError } from '../errors';
24
+ import { IApplication } from '../interfaces/application';
25
+ import { withTransaction } from '../utils';
26
+
27
+ /**
28
+ * Express middleware for cryptographic authentication.
29
+ * Requires mnemonic or password in request body to unlock user's private key.
30
+ * Attaches authenticated BackendMember with private key to req.eciesUser.
31
+ * Used for operations requiring cryptographic signing or decryption.
32
+ * @template TID - Platform ID type (defaults to Buffer)
33
+ * @template TAccountStatus - Account status type (defaults to AccountStatus)
34
+ * @param {IApplication<TID>} application - Application instance
35
+ * @param {Request} req - Express request object
36
+ * @param {Response} res - Express response object
37
+ * @param {NextFunction} next - Express next function
38
+ * @param {TAccountStatus} [activeStatusValue] - Expected active account status
39
+ * @returns {Promise<Response | void>} Response or void if successful
40
+ * @throws {InvalidCredentialsError} When credentials are invalid
41
+ * @throws {InvalidPasswordError} When password is incorrect
42
+ */
43
+ export async function authenticateCrypto<
44
+ TID extends PlatformID = Buffer,
45
+ TAccountStatus extends string = AccountStatus,
46
+ >(
47
+ application: IApplication<TID>,
48
+ req: Request,
49
+ res: Response,
50
+ next: NextFunction,
51
+ activeStatusValue: TAccountStatus = AccountStatus.Active as TAccountStatus,
52
+ ): Promise<Response | void> {
53
+ if (!req.user) {
54
+ return res.status(401).send(
55
+ // amazonq-ignore-next-line false positive, hardcoded string
56
+ getSuiteCoreTranslation(SuiteCoreStringKey.Validation_InvalidToken),
57
+ );
58
+ }
59
+
60
+ // Try validatedBody first (if validation has run), then fall back to raw body
61
+ // Note: This middleware runs BEFORE validation, so validatedBody may not exist yet
62
+ const validatedBody = (req as Request & { validatedBody?: unknown })
63
+ .validatedBody as Record<string, unknown> | undefined;
64
+ const rawBody = req.body as Record<string, unknown> | undefined;
65
+ const sourceBody = validatedBody ?? rawBody;
66
+
67
+ if (!sourceBody) {
68
+ return res.status(400).send({
69
+ // amazonq-ignore-next-line false positive, hardcoded string
70
+ message: getSuiteCoreTranslation(
71
+ SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired,
72
+ ),
73
+ });
74
+ }
75
+
76
+ const mnemonic =
77
+ typeof sourceBody['mnemonic'] === 'string'
78
+ ? (sourceBody['mnemonic'] as string)
79
+ : undefined;
80
+ const password =
81
+ // amazonq-ignore-next-line false positive
82
+ typeof sourceBody['password'] === 'string'
83
+ ? (sourceBody['password'] as string)
84
+ : undefined;
85
+ if (!mnemonic && !password) {
86
+ return res.status(400).send({
87
+ // amazonq-ignore-next-line false positive, hardcoded string
88
+ message: getSuiteCoreTranslation(
89
+ SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired,
90
+ ),
91
+ });
92
+ }
93
+ const UserModel = application.getModel<IUserDocument<string, TID>>(
94
+ BaseModelName.User,
95
+ );
96
+ const userService = application.services.get(ServiceKeys.USER) as {
97
+ loginWithMnemonic: (
98
+ email: string,
99
+ mnemonic: SecureString,
100
+ session?: ClientSession,
101
+ ) => Promise<any>;
102
+ loginWithPassword: (
103
+ email: string,
104
+ password: string,
105
+ session?: ClientSession,
106
+ ) => Promise<any>;
107
+ };
108
+
109
+ try {
110
+ return await withTransaction<Response | void>(
111
+ application.db.connection,
112
+ application.environment.mongo.useTransactions,
113
+ undefined,
114
+ async (sess: ClientSession | undefined) => {
115
+ const userDoc = await UserModel.findById(req.user!.id)
116
+ .session(sess ?? null)
117
+ .exec();
118
+
119
+ if (!userDoc || userDoc.accountStatus !== activeStatusValue) {
120
+ return res.status(403).send(
121
+ // amazonq-ignore-next-line false positive, hardcoded string
122
+ getSuiteCoreTranslation(SuiteCoreStringKey.Validation_UserNotFound),
123
+ );
124
+ }
125
+
126
+ // Ensure we're only authenticating the currently logged-in user
127
+ if (userDoc._id.toString() !== req.user!.id) {
128
+ return res.status(403).send(
129
+ // amazonq-ignore-next-line false positive, hardcoded string
130
+ getSuiteCoreTranslation(
131
+ SuiteCoreStringKey.Validation_InvalidCredentials,
132
+ ),
133
+ );
134
+ }
135
+
136
+ let loginResult: {
137
+ userDoc: IUserDocument;
138
+ userMember: BackendMember;
139
+ adminMember: BackendMember;
140
+ };
141
+
142
+ if (mnemonic) {
143
+ // Authenticate with mnemonic
144
+ const userMnemonic = new SecureString(mnemonic);
145
+ try {
146
+ loginResult = await userService.loginWithMnemonic(
147
+ userDoc.email,
148
+ userMnemonic,
149
+ sess,
150
+ );
151
+ } finally {
152
+ userMnemonic.dispose();
153
+ }
154
+ } else if (password) {
155
+ // Authenticate with password
156
+ loginResult = await userService.loginWithPassword(
157
+ userDoc.email,
158
+ password,
159
+ sess,
160
+ );
161
+ } else {
162
+ // Should not happen due to earlier guard; keeps TypeScript happy
163
+ return res.status(400).send({
164
+ // amazonq-ignore-next-line false positive, hardcoded string
165
+ message: getSuiteCoreTranslation(
166
+ SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired,
167
+ ),
168
+ });
169
+ }
170
+
171
+ // Double-check authenticated user matches logged-in user
172
+ if (loginResult.userDoc._id.toString() !== req.user!.id) {
173
+ return res.status(403).send(
174
+ // amazonq-ignore-next-line false positive, hardcoded string
175
+ getSuiteCoreTranslation(
176
+ SuiteCoreStringKey.Validation_InvalidCredentials,
177
+ ),
178
+ );
179
+ }
180
+
181
+ // Attach the fully authenticated member (with private key) to the request
182
+ req.eciesUser = loginResult.userMember;
183
+ // Do not attach the admin user to the request; it's a process-wide singleton
184
+ // and must not be disposed as part of request cleanup.
185
+
186
+ next();
187
+ return;
188
+ },
189
+ {
190
+ timeoutMs: application.environment.mongo.transactionTimeout,
191
+ },
192
+ );
193
+ } catch (err) {
194
+ if (
195
+ err instanceof InvalidCredentialsError ||
196
+ err instanceof InvalidPasswordError
197
+ ) {
198
+ // amazonq-ignore-next-line false positive
199
+ console.error(
200
+ 'Crypto authentication failed:',
201
+ `userId=${String(req.user?.id || 'unknown').replace(
202
+ /[\r\n]/g,
203
+ '',
204
+ )} hasPassword=${!!password} hasMnemonic=${!!mnemonic}`,
205
+ );
206
+ return res.status(401).send({
207
+ // amazonq-ignore-next-line false positive, hardcoded string
208
+ message: getSuiteCoreTranslation(
209
+ SuiteCoreStringKey.Validation_InvalidCredentials,
210
+ ),
211
+ });
212
+ }
213
+ const sanitizedErr =
214
+ err instanceof Error
215
+ ? err.message.replace(/[\r\n]/g, ' ')
216
+ : String(err).replace(/[\r\n]/g, ' ');
217
+ console.error(
218
+ `${getSuiteCoreTranslation(
219
+ SuiteCoreStringKey.Error_UnexpectedErrorInAuthenticateCrypto,
220
+ )}:`,
221
+ sanitizedErr,
222
+ );
223
+ if (err instanceof Error && err.stack) {
224
+ console.error(
225
+ `${getSuiteCoreTranslation(SuiteCoreStringKey.Common_StackTrace)}:`,
226
+ err.stack,
227
+ );
228
+ }
229
+ return res.status(500).send({
230
+ // amazonq-ignore-next-line false positive, hardcoded string
231
+ message: getSuiteCoreTranslation(
232
+ SuiteCoreStringKey.Common_UnexpectedError,
233
+ ),
234
+ error: err,
235
+ });
236
+ }
237
+ }