@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,246 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Forward Error Correction (FEC) service using Reed-Solomon erasure coding.
4
+ * Provides parity data creation, file recovery, and integrity verification for distributed storage.
5
+ * @module services/fec
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.FecService = void 0;
9
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
10
+ const reed_solomon_erasure_wasm_1 = require("@subspace/reed-solomon-erasure.wasm");
11
+ const constants_1 = require("../constants");
12
+ class FecService {
13
+ /**
14
+ * Encodes data using Reed-Solomon erasure coding.
15
+ * @param data Data buffer to encode
16
+ * @param shardSize Size of each shard in bytes
17
+ * @param dataShards Number of data shards
18
+ * @param parityShards Number of parity shards
19
+ * @param fecOnly If true, returns only parity shards; otherwise returns all shards
20
+ * @param fecConstants FEC constants (defaults to FEC)
21
+ * @returns Encoded buffer containing shards
22
+ * @throws {FecError} If parameters are invalid or encoding fails
23
+ */
24
+ async encode(data, shardSize, dataShards, parityShards, fecOnly, fecConstants = constants_1.FEC) {
25
+ // Validate parameters
26
+ if (!data || data.length === 0) {
27
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.DataRequired);
28
+ }
29
+ if (data.length !== shardSize * dataShards) {
30
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.InvalidDataLength, undefined, {
31
+ LENGTH: data.length.toString(),
32
+ EXPECTED: (shardSize * dataShards).toString(),
33
+ });
34
+ }
35
+ if (shardSize > fecConstants.MAX_SHARD_SIZE) {
36
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.ShardSizeExceedsMaximum, undefined, {
37
+ SIZE: shardSize.toString(),
38
+ MAXIMUM: fecConstants.MAX_SHARD_SIZE.toString(),
39
+ });
40
+ }
41
+ if (dataShards <= 0 || parityShards <= 0) {
42
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.InvalidShardCounts);
43
+ }
44
+ try {
45
+ const shards = new Uint8Array(shardSize * (dataShards + parityShards));
46
+ shards.set(new Uint8Array(data));
47
+ // Encoding
48
+ const reedSolomonErasure = await reed_solomon_erasure_wasm_1.ReedSolomonErasure.fromCurrentDirectory();
49
+ reedSolomonErasure.encode(shards, dataShards, parityShards);
50
+ return fecOnly
51
+ ? Buffer.from(shards.subarray(shardSize * dataShards))
52
+ : Buffer.from(shards);
53
+ }
54
+ catch (error) {
55
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.FecEncodingFailed, undefined, {
56
+ ERROR: error instanceof Error ? error.message : 'Unknown error',
57
+ });
58
+ }
59
+ }
60
+ /**
61
+ * Decodes/reconstructs data using Reed-Solomon erasure coding.
62
+ * @param data Encoded data buffer containing all shards
63
+ * @param shardSize Size of each shard in bytes
64
+ * @param dataShards Number of data shards
65
+ * @param parityShards Number of parity shards
66
+ * @param shardsAvailable Boolean array indicating which shards are available
67
+ * @returns Reconstructed data buffer
68
+ * @throws {FecError} If parameters are invalid or decoding fails
69
+ */
70
+ async decode(data, shardSize, dataShards, parityShards, shardsAvailable) {
71
+ // Validate parameters
72
+ if (!data || data.length === 0) {
73
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.DataRequired);
74
+ }
75
+ if (data.length !== shardSize * (dataShards + parityShards)) {
76
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.InvalidDataLength, undefined, {
77
+ LENGTH: data.length.toString(),
78
+ EXPECTED: (shardSize * (dataShards + parityShards)).toString(),
79
+ });
80
+ }
81
+ if (!shardsAvailable ||
82
+ shardsAvailable.length !== dataShards + parityShards) {
83
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.InvalidShardsAvailableArray);
84
+ }
85
+ const availableCount = shardsAvailable.filter((x) => x).length;
86
+ if (availableCount < dataShards) {
87
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.NotEnoughShardsAvailable, undefined, {
88
+ AVAILABLE: availableCount.toString(),
89
+ REQUIRED: dataShards.toString(),
90
+ });
91
+ }
92
+ try {
93
+ const uint8Data = new Uint8Array(data);
94
+ const reedSolomonErasure = await reed_solomon_erasure_wasm_1.ReedSolomonErasure.fromCurrentDirectory();
95
+ reedSolomonErasure.reconstruct(uint8Data, dataShards, parityShards, shardsAvailable);
96
+ return Buffer.from(uint8Data.subarray(0, shardSize * dataShards));
97
+ }
98
+ catch (error) {
99
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.FecDecodingFailed, undefined, {
100
+ ERROR: error instanceof Error ? error.message : 'Unknown error',
101
+ });
102
+ }
103
+ }
104
+ /**
105
+ * Creates parity data for a file buffer.
106
+ * @param fileData File data to create parity for
107
+ * @param parityCount Number of parity shards to create
108
+ * @param fecConstants FEC constants (defaults to FEC)
109
+ * @returns Array of parity data objects
110
+ * @throws {FecError} If parameters are invalid or encoding fails
111
+ */
112
+ async createParityData(fileData, parityCount, fecConstants = constants_1.FEC) {
113
+ if (!fileData || fileData.length === 0) {
114
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.DataRequired);
115
+ }
116
+ if (parityCount <= 0) {
117
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.ParityDataCountMustBePositive);
118
+ }
119
+ const shardSize = Math.min(fileData.length, fecConstants.MAX_SHARD_SIZE);
120
+ const requiredShards = Math.ceil(fileData.length / shardSize);
121
+ try {
122
+ const resultParityData = Array(parityCount)
123
+ .fill(null)
124
+ .map(() => Buffer.alloc(0));
125
+ // Process each chunk
126
+ for (let i = 0; i < requiredShards; i++) {
127
+ const start = i * shardSize;
128
+ const end = Math.min(start + shardSize, fileData.length);
129
+ const chunk = fileData.subarray(start, end);
130
+ // Pad chunk if necessary
131
+ const paddedChunk = Buffer.alloc(shardSize);
132
+ paddedChunk.set(chunk.subarray(0, shardSize));
133
+ const chunkParity = await this.encode(paddedChunk, shardSize, 1, parityCount, true, fecConstants);
134
+ // Distribute parity data
135
+ for (let j = 0; j < parityCount; j++) {
136
+ const parityChunk = chunkParity.subarray(j * shardSize, (j + 1) * shardSize);
137
+ const combined = Buffer.alloc(resultParityData[j].length + parityChunk.length);
138
+ combined.set(resultParityData[j], 0);
139
+ combined.set(parityChunk, resultParityData[j].length);
140
+ resultParityData[j] = combined;
141
+ }
142
+ }
143
+ return resultParityData.map((data, index) => ({
144
+ data,
145
+ index,
146
+ }));
147
+ }
148
+ catch (error) {
149
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.FecEncodingFailed, undefined, {
150
+ ERROR: error instanceof Error ? error.message : 'Unknown error',
151
+ });
152
+ }
153
+ }
154
+ /**
155
+ * Recovers file data using parity data. Pass null for corrupted data.
156
+ * @param corruptedData Corrupted file data or null if completely lost
157
+ * @param parityData Array of parity data objects
158
+ * @param originalSize Original file size in bytes
159
+ * @param fecConstants FEC constants (defaults to FEC)
160
+ * @returns Recovery result with data and recovery status
161
+ * @throws {FecError} If parameters are invalid or recovery fails
162
+ */
163
+ async recoverFileData(corruptedData, parityData, originalSize, fecConstants = constants_1.FEC) {
164
+ if (!parityData || parityData.length === 0) {
165
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.ParityDataRequired);
166
+ }
167
+ if (originalSize <= 0) {
168
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.InvalidDataLength);
169
+ }
170
+ try {
171
+ const shardSize = Math.min(originalSize, fecConstants.MAX_SHARD_SIZE);
172
+ const requiredShards = Math.ceil(originalSize / shardSize);
173
+ let recoveredData = Buffer.alloc(0);
174
+ let parityUsed = false;
175
+ // Recover each shard
176
+ for (let i = 0; i < requiredShards; i++) {
177
+ const start = i * shardSize;
178
+ const end = Math.min(start + shardSize, originalSize);
179
+ const chunkSize = end - start;
180
+ // Use corrupted data if available, otherwise create placeholder
181
+ const corruptedShard = corruptedData
182
+ ? corruptedData.subarray(start, Math.min(end, corruptedData.length))
183
+ : Buffer.alloc(0);
184
+ const parityChunks = parityData.map((parity) => parity.data.subarray(i * shardSize, (i + 1) * shardSize));
185
+ const hasDataShard = corruptedShard.length > 0;
186
+ const paddedCorruptedShard = Buffer.alloc(shardSize);
187
+ if (hasDataShard) {
188
+ paddedCorruptedShard.set(corruptedShard.subarray(0, Math.min(shardSize, corruptedShard.length)));
189
+ }
190
+ let shardIsHealthy = false;
191
+ if (hasDataShard) {
192
+ const regeneratedParity = await this.encode(paddedCorruptedShard, shardSize, 1, parityData.length, true, fecConstants);
193
+ shardIsHealthy = parityChunks.every((parityChunk, index) => parityChunk.equals(Uint8Array.from(regeneratedParity.subarray(index * shardSize, (index + 1) * shardSize))));
194
+ }
195
+ if (shardIsHealthy) {
196
+ const actualShard = Buffer.from(paddedCorruptedShard.subarray(0, chunkSize));
197
+ const combinedRecovered = Buffer.alloc(recoveredData.length + actualShard.length);
198
+ combinedRecovered.set(recoveredData, 0);
199
+ combinedRecovered.set(actualShard, recoveredData.length);
200
+ recoveredData = combinedRecovered;
201
+ continue;
202
+ }
203
+ // Mark data shard as missing and attempt recovery using parity
204
+ parityUsed = true;
205
+ const shardData = Buffer.alloc((1 + parityData.length) * shardSize);
206
+ shardData.set(paddedCorruptedShard, 0);
207
+ parityChunks.forEach((chunk, index) => {
208
+ shardData.set(chunk, (index + 1) * shardSize);
209
+ });
210
+ const availableShards = [false, ...Array(parityData.length).fill(true)];
211
+ const recoveredShard = await this.decode(shardData, shardSize, 1, parityData.length, availableShards);
212
+ const actualShard = recoveredShard.subarray(0, chunkSize);
213
+ const combinedRecovered = Buffer.alloc(recoveredData.length + actualShard.length);
214
+ combinedRecovered.set(recoveredData, 0);
215
+ combinedRecovered.set(actualShard, recoveredData.length);
216
+ recoveredData = combinedRecovered;
217
+ }
218
+ return {
219
+ data: recoveredData,
220
+ recovered: parityUsed || corruptedData === null,
221
+ };
222
+ }
223
+ catch (error) {
224
+ throw new suite_core_lib_1.FecError(suite_core_lib_1.FecErrorType.FecDecodingFailed, undefined, {
225
+ ERROR: error instanceof Error ? error.message : 'Unknown error',
226
+ });
227
+ }
228
+ }
229
+ /**
230
+ * Verifies file integrity using parity data.
231
+ * @param fileData File data to verify
232
+ * @param parityData Array of parity data objects
233
+ * @returns True if file integrity is verified, false otherwise
234
+ */
235
+ async verifyFileIntegrity(fileData, parityData) {
236
+ try {
237
+ const regeneratedParity = await this.createParityData(fileData, parityData.length);
238
+ return parityData.every((original, index) => Buffer.compare(new Uint8Array(original.data), new Uint8Array(regeneratedParity[index].data)) === 0);
239
+ }
240
+ catch {
241
+ return false;
242
+ }
243
+ }
244
+ }
245
+ exports.FecService = FecService;
246
+ //# sourceMappingURL=fec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fec.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/fec.ts"],"names":[],"mappings":"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"}
@@ -16,3 +16,4 @@ export * from './symmetric';
16
16
  export * from './system-user';
17
17
  export * from './user';
18
18
  export * from './xor';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,OAAO,CAAC;AACtB,cAAc,qBAAqB,CAAC;AACpC,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./backup-code"), exports);
5
+ tslib_1.__exportStar(require("./base"), exports);
6
+ tslib_1.__exportStar(require("./checksum"), exports);
7
+ tslib_1.__exportStar(require("./database-initialization"), exports);
8
+ tslib_1.__exportStar(require("./db-init-cache"), exports);
9
+ tslib_1.__exportStar(require("./direct-login-token"), exports);
10
+ tslib_1.__exportStar(require("./dummy-email-service"), exports);
11
+ tslib_1.__exportStar(require("./fec"), exports);
12
+ tslib_1.__exportStar(require("./fec-usage-example"), exports);
13
+ tslib_1.__exportStar(require("./jwt"), exports);
14
+ tslib_1.__exportStar(require("./key-wrapping"), exports);
15
+ tslib_1.__exportStar(require("./mnemonic"), exports);
16
+ tslib_1.__exportStar(require("./request-user"), exports);
17
+ tslib_1.__exportStar(require("./role"), exports);
18
+ tslib_1.__exportStar(require("./symmetric"), exports);
19
+ tslib_1.__exportStar(require("./system-user"), exports);
20
+ tslib_1.__exportStar(require("./user"), exports);
21
+ tslib_1.__exportStar(require("./xor"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,iDAAuB;AACvB,qDAA2B;AAC3B,oEAA0C;AAC1C,0DAAgC;AAChC,+DAAqC;AACrC,gEAAsC;AACtC,gDAAsB;AACtB,8DAAoC;AACpC,gDAAsB;AACtB,yDAA+B;AAC/B,qDAA2B;AAC3B,yDAA+B;AAC/B,iDAAuB;AACvB,sDAA4B;AAC5B,wDAA8B;AAC9B,iDAAuB;AACvB,gDAAsB"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @fileoverview JWT token service for authentication and authorization.
3
+ * Handles JWT token generation, signing, and verification with role-based access control.
4
+ * @module services/jwt
5
+ */
6
+ import { ITokenRole, ITokenUser } from '@digitaldefiance/suite-core-lib';
7
+ import { IUserDocument } from '../documents/user';
8
+ import { IApplication } from '../interfaces/application';
9
+ import { IJwtSignResponse } from '../interfaces/jwt-sign-response';
10
+ import { BaseService } from './base';
11
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
12
+ /**
13
+ * Service for JWT token operations including generation, signing, and verification.
14
+ * Integrates with role service to embed user roles in JWT tokens.
15
+ * @template TID - Platform ID type (defaults to Buffer)
16
+ * @template TDate - Date type (defaults to Date)
17
+ * @template TTokenRole - Token role interface type
18
+ * @template TTokenUser - Token user interface type
19
+ * @template TApplication - Application interface type
20
+ * @extends {BaseService<TID, TApplication>}
21
+ */
22
+ export declare class JwtService<TID extends PlatformID = Buffer, TDate extends Date = Date, TTokenRole extends ITokenRole<TID, TDate> = ITokenRole<TID, TDate>, TTokenUser extends ITokenUser = ITokenUser, TApplication extends IApplication<TID> = IApplication<TID>> extends BaseService<TID, TApplication> {
23
+ private readonly roleService;
24
+ /**
25
+ * Constructor for the JWT service
26
+ * @param application The application object
27
+ */
28
+ constructor(application: TApplication);
29
+ /**
30
+ * Sign a JWT token for a user
31
+ * @param userDoc The user document to sign the token for
32
+ * @param jwtSecret The secret to sign the token with
33
+ * @param overrideLanguage Optional language to use for role translations
34
+ * @returns The signed token
35
+ */
36
+ signToken(userDoc: IUserDocument<string, TID>, jwtSecret: string, overrideLanguage?: string): Promise<IJwtSignResponse<TID, TDate, TTokenRole>>;
37
+ /**
38
+ * Verify a JWT token and return the user data
39
+ * @param token The token to verify
40
+ * @returns The user data
41
+ * @throws InvalidTokenError
42
+ */
43
+ verifyToken(token: string): Promise<TTokenUser | null>;
44
+ }
45
+ //# sourceMappingURL=jwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/jwt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EAEV,UAAU,EACX,MAAM,iCAAiC,CAAC;AAUzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AASlE;;;;;;;;;GASG;AACH,qBAAa,UAAU,CACrB,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,KAAK,SAAS,IAAI,GAAG,IAAI,EACzB,UAAU,SAAS,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,EAClE,UAAU,SAAS,UAAU,GAAG,UAAU,EAC1C,YAAY,SAAS,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAC1D,SAAQ,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAElE;;;OAGG;gBACS,WAAW,EAAE,YAAY;IAKrC;;;;;;OAMG;IACU,SAAS,CACpB,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAgCpD;;;;;OAKG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;CAgCpE"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview JWT token service for authentication and authorization.
4
+ * Handles JWT token generation, signing, and verification with role-based access control.
5
+ * @module services/jwt
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.JwtService = void 0;
9
+ const jsonwebtoken_1 = require("jsonwebtoken");
10
+ const util_1 = require("util");
11
+ const invalid_jwt_token_1 = require("../errors/invalid-jwt-token");
12
+ const token_expired_1 = require("../errors/token-expired");
13
+ const base_1 = require("./base");
14
+ const role_1 = require("./role");
15
+ const verifyAsync = (0, util_1.promisify)(jsonwebtoken_1.verify);
16
+ /**
17
+ * Service for JWT token operations including generation, signing, and verification.
18
+ * Integrates with role service to embed user roles in JWT tokens.
19
+ * @template TID - Platform ID type (defaults to Buffer)
20
+ * @template TDate - Date type (defaults to Date)
21
+ * @template TTokenRole - Token role interface type
22
+ * @template TTokenUser - Token user interface type
23
+ * @template TApplication - Application interface type
24
+ * @extends {BaseService<TID, TApplication>}
25
+ */
26
+ class JwtService extends base_1.BaseService {
27
+ roleService;
28
+ /**
29
+ * Constructor for the JWT service
30
+ * @param application The application object
31
+ */
32
+ constructor(application) {
33
+ super(application);
34
+ this.roleService = new role_1.RoleService(application);
35
+ }
36
+ /**
37
+ * Sign a JWT token for a user
38
+ * @param userDoc The user document to sign the token for
39
+ * @param jwtSecret The secret to sign the token with
40
+ * @param overrideLanguage Optional language to use for role translations
41
+ * @returns The signed token
42
+ */
43
+ async signToken(userDoc, jwtSecret, overrideLanguage) {
44
+ // look for roles the user is a member of (the role contains the user id in the user's roles array)
45
+ const roles = await this.roleService.getUserRoles(userDoc._id);
46
+ const tokenRoles = this.roleService.rolesToTokenRoles(roles, overrideLanguage);
47
+ const tokenRoleDTOs = tokenRoles.map((role) => role_1.RoleService.roleToRoleDTO(role));
48
+ const roleTranslatedNames = tokenRoles.map((role) => role.translatedName);
49
+ const roleNames = tokenRoles.map((role) => role.name);
50
+ const tokenUser = {
51
+ userId: userDoc._id.toString(),
52
+ roles: tokenRoleDTOs,
53
+ };
54
+ // amazonq-ignore-next-line false positive
55
+ const token = (0, jsonwebtoken_1.sign)(tokenUser, jwtSecret, {
56
+ algorithm: this.application.constants.JWT.ALGORITHM,
57
+ allowInsecureKeySizes: false,
58
+ expiresIn: this.application.constants.JWT.EXPIRATION_SEC,
59
+ });
60
+ return {
61
+ token,
62
+ tokenUser,
63
+ roleNames,
64
+ roleTranslatedNames,
65
+ roles: tokenRoles,
66
+ roleDTOs: tokenRoleDTOs,
67
+ };
68
+ }
69
+ /**
70
+ * Verify a JWT token and return the user data
71
+ * @param token The token to verify
72
+ * @returns The user data
73
+ * @throws InvalidTokenError
74
+ */
75
+ async verifyToken(token) {
76
+ try {
77
+ const decoded = (await verifyAsync(token, this.application.environment.jwtSecret, {
78
+ algorithms: [this.application.constants.JWT.ALGORITHM],
79
+ }));
80
+ if (typeof decoded === 'object' &&
81
+ decoded !== null &&
82
+ 'userId' in decoded &&
83
+ 'roles' in decoded) {
84
+ return {
85
+ userId: decoded['userId'],
86
+ roles: decoded['roles'],
87
+ };
88
+ }
89
+ else {
90
+ return null;
91
+ }
92
+ }
93
+ catch (err) {
94
+ if (err instanceof jsonwebtoken_1.TokenExpiredError) {
95
+ throw new token_expired_1.TokenExpiredError();
96
+ }
97
+ else if (err instanceof jsonwebtoken_1.JsonWebTokenError) {
98
+ throw err;
99
+ }
100
+ throw new invalid_jwt_token_1.InvalidJwtTokenError();
101
+ }
102
+ }
103
+ }
104
+ exports.JwtService = JwtService;
105
+ //# sourceMappingURL=jwt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/jwt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * @fileoverview Service for password-based key wrapping and unwrapping using AES-256-GCM.
3
+ * Provides secure master key management, password changes, and generic secret wrapping.
4
+ * @module services/key-wrapping
5
+ */
6
+ import { SecureBuffer, SecureString } from '@digitaldefiance/ecies-lib';
7
+ import { IConstants } from '@digitaldefiance/node-ecies-lib';
8
+ /**
9
+ * Represents a password-wrapped master key with all encryption metadata.
10
+ */
11
+ export interface WrappedKey {
12
+ /** Hex-encoded salt for PBKDF2 key derivation */
13
+ salt: string;
14
+ /** Hex-encoded initialization vector for AES-GCM */
15
+ iv: string;
16
+ /** Hex-encoded authentication tag for AES-GCM */
17
+ authTag: string;
18
+ /** Hex-encoded encrypted master key */
19
+ encryptedMasterKey: string;
20
+ /** Number of PBKDF2 iterations used */
21
+ iterations: number;
22
+ }
23
+ /**
24
+ * Generic password-wrapped secret payload with encryption metadata.
25
+ */
26
+ export interface PasswordWrappedSecret {
27
+ /** Hex-encoded salt for PBKDF2 key derivation */
28
+ salt: string;
29
+ /** Hex-encoded initialization vector for AES-GCM */
30
+ iv: string;
31
+ /** Hex-encoded authentication tag for AES-GCM */
32
+ authTag: string;
33
+ /** Hex-encoded encrypted secret data */
34
+ ciphertext: string;
35
+ /** Number of PBKDF2 iterations used */
36
+ iterations: number;
37
+ }
38
+ /**
39
+ * Service for password-based key wrapping and unwrapping operations.
40
+ * Provides secure master key management with AES-256-GCM encryption and PBKDF2 key derivation.
41
+ * Supports both synchronous and asynchronous operations with deduplication for concurrent requests.
42
+ */
43
+ export declare class KeyWrappingService {
44
+ /**
45
+ * In-flight de-duplication map to share PBKDF2 work across concurrent identical requests.
46
+ * Stores promises of base64-encoded master key bytes for sharing across callers.
47
+ * @private
48
+ */
49
+ private static inFlightUnwraps;
50
+ /**
51
+ * Generates a new random master key and wraps it with the user's password.
52
+ * @param password User's password for wrapping
53
+ * @param constants Configuration constants (defaults to Constants)
54
+ * @returns Object containing the master key and wrapped key metadata
55
+ * @throws {InvalidNewPasswordError} If password doesn't meet requirements
56
+ */
57
+ wrapNewMasterKey(password: SecureString, constants?: IConstants): {
58
+ masterKey: SecureBuffer;
59
+ wrappedKey: WrappedKey;
60
+ };
61
+ /**
62
+ * Wraps an existing master key with a password-derived key using AES-256-GCM.
63
+ * @param masterKey Master key to wrap
64
+ * @param password User's password for wrapping
65
+ * @param constants Configuration constants (defaults to Constants)
66
+ * @returns Wrapped key metadata including salt, IV, auth tag, and encrypted key
67
+ * @throws {InvalidNewPasswordError} If password doesn't meet requirements
68
+ */
69
+ wrapMasterKey(masterKey: SecureBuffer, password: SecureString, constants?: IConstants): WrappedKey;
70
+ /**
71
+ * Unwraps a master key using the user's password (synchronous).
72
+ * @param wrappedKey Wrapped key metadata
73
+ * @param password User's password for unwrapping
74
+ * @param constants Configuration constants (defaults to Constants)
75
+ * @returns Unwrapped master key in a SecureBuffer
76
+ * @throws {InvalidPasswordError} If password is incorrect or decryption fails
77
+ */
78
+ unwrapMasterKey(wrappedKey: WrappedKey, password: SecureString, constants?: IConstants): SecureBuffer;
79
+ /**
80
+ * Async version of unwrapMasterKey that uses libuv threadpool via crypto.pbkdf2
81
+ * to avoid blocking the event loop during password verification.
82
+ * @param wrappedKey Wrapped key metadata
83
+ * @param password User's password (SecureString or raw string)
84
+ * @param constants Configuration constants (defaults to Constants)
85
+ * @returns Promise resolving to unwrapped master key in a SecureBuffer
86
+ * @throws {InvalidPasswordError} If password is incorrect or decryption fails
87
+ */
88
+ unwrapMasterKeyAsync(wrappedKey: WrappedKey, password: SecureString | string, constants?: IConstants): Promise<SecureBuffer>;
89
+ /**
90
+ * Deduplicated async unwrap that coalesces concurrent identical PBKDF2 operations.
91
+ * Keyed by salt + iterations + password hash to avoid redundant computation.
92
+ * @param wrappedKey Wrapped key metadata
93
+ * @param password User's password as string
94
+ * @param constants Configuration constants (defaults to Constants)
95
+ * @returns Promise resolving to unwrapped master key in a SecureBuffer
96
+ * @throws {InvalidPasswordError} If password is incorrect or decryption fails
97
+ */
98
+ unwrapMasterKeyAsyncDedup(wrappedKey: WrappedKey, password: string, constants?: IConstants): Promise<SecureBuffer>;
99
+ /**
100
+ * Changes password by re-wrapping the master key with a new password.
101
+ * @param wrappedKey Current wrapped key metadata
102
+ * @param oldPassword Current password
103
+ * @param newPassword New password
104
+ * @param constants Configuration constants (defaults to Constants)
105
+ * @returns New wrapped key metadata
106
+ * @throws {InvalidPasswordError} If old password is incorrect
107
+ * @throws {InvalidNewPasswordError} If new password doesn't meet requirements
108
+ */
109
+ changePassword(wrappedKey: WrappedKey, oldPassword: SecureString, newPassword: SecureString, constants?: IConstants): WrappedKey;
110
+ /**
111
+ * Wraps arbitrary secret bytes with a password-derived key using AES-256-GCM.
112
+ * @param secret Secret data to wrap
113
+ * @param password User's password for wrapping
114
+ * @param constants Configuration constants (defaults to Constants)
115
+ * @returns Password-wrapped secret metadata
116
+ * @throws {InvalidNewPasswordError} If password doesn't meet requirements
117
+ */
118
+ wrapSecret(secret: SecureBuffer, password: SecureString, constants?: IConstants): PasswordWrappedSecret;
119
+ /**
120
+ * Unwraps a password-wrapped secret (synchronous).
121
+ * @param wrapped Password-wrapped secret metadata
122
+ * @param password User's password for unwrapping
123
+ * @param constants Configuration constants (defaults to Constants)
124
+ * @returns Unwrapped secret in a SecureBuffer
125
+ * @throws {InvalidPasswordError} If password is incorrect or decryption fails
126
+ */
127
+ unwrapSecret(wrapped: PasswordWrappedSecret, password: SecureString, constants?: IConstants): SecureBuffer;
128
+ /**
129
+ * Unwraps a password-wrapped secret using async PBKDF2 to avoid blocking.
130
+ * @param wrapped Password-wrapped secret metadata
131
+ * @param password User's password (SecureString or raw string)
132
+ * @param constants Configuration constants (defaults to Constants)
133
+ * @returns Promise resolving to unwrapped secret in a SecureBuffer
134
+ * @throws {InvalidPasswordError} If password is incorrect or decryption fails
135
+ * @throws {Error} If password is undefined, null, or invalid type
136
+ */
137
+ unwrapSecretAsync(wrapped: PasswordWrappedSecret, password: SecureString | string, constants?: IConstants): Promise<SecureBuffer>;
138
+ }
139
+ //# sourceMappingURL=key-wrapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-wrapping.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/key-wrapping.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAEL,UAAU,EAEX,MAAM,iCAAiC,CAAC;AAkBzC;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe,CAA2C;IAEzE;;;;;;OAMG;IACI,gBAAgB,CACrB,QAAQ,EAAE,YAAY,EACtB,SAAS,GAAE,UAAsB,GAChC;QACD,SAAS,EAAE,YAAY,CAAC;QACxB,UAAU,EAAE,UAAU,CAAC;KACxB;IAQD;;;;;;;OAOG;IACI,aAAa,CAClB,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,YAAY,EACtB,SAAS,GAAE,UAAsB,GAChC,UAAU;IAyCb;;;;;;;OAOG;IACI,eAAe,CACpB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,EACtB,SAAS,GAAE,UAAsB,GAChC,YAAY;IAuCf;;;;;;;;OAQG;IACU,oBAAoB,CAC/B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,GAAG,MAAM,EAC/B,SAAS,GAAE,UAAsB,GAChC,OAAO,CAAC,YAAY,CAAC;IA6DxB;;;;;;;;OAQG;IACU,yBAAyB,CACpC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,UAAsB,GAChC,OAAO,CAAC,YAAY,CAAC;IAuCxB;;;;;;;;;OASG;IACI,cAAc,CACnB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,YAAY,EACzB,WAAW,EAAE,YAAY,EACzB,SAAS,GAAE,UAAsB,GAChC,UAAU;IAYb;;;;;;;OAOG;IACI,UAAU,CACf,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,YAAY,EACtB,SAAS,GAAE,UAAsB,GAChC,qBAAqB;IAuCxB;;;;;;;OAOG;IACI,YAAY,CACjB,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,YAAY,EACtB,SAAS,GAAE,UAAsB,GAChC,YAAY;IAoCf;;;;;;;;OAQG;IACU,iBAAiB,CAC5B,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,YAAY,GAAG,MAAM,EAC/B,SAAS,GAAE,UAAsB,GAChC,OAAO,CAAC,YAAY,CAAC;CA+DzB"}