@digitaldefiance/node-express-suite 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +673 -0
  3. package/dist/application-base.d.ts +112 -0
  4. package/dist/application-base.d.ts.map +1 -0
  5. package/dist/application-base.js +301 -0
  6. package/dist/application-base.js.map +1 -0
  7. package/dist/application.d.ts +22 -0
  8. package/dist/application.d.ts.map +1 -0
  9. package/dist/application.js +123 -0
  10. package/dist/application.js.map +1 -0
  11. package/dist/backup-code.d.ts +67 -0
  12. package/dist/backup-code.d.ts.map +1 -0
  13. package/dist/backup-code.js +270 -0
  14. package/dist/backup-code.js.map +1 -0
  15. package/dist/constants.d.ts +16 -0
  16. package/dist/constants.d.ts.map +1 -0
  17. package/dist/constants.js +54 -0
  18. package/dist/constants.js.map +1 -0
  19. package/dist/controllers/base.d.ts +60 -0
  20. package/dist/controllers/base.d.ts.map +1 -0
  21. package/dist/controllers/base.js +270 -0
  22. package/dist/controllers/base.js.map +1 -0
  23. package/dist/controllers/index.d.ts +3 -0
  24. package/dist/controllers/index.d.ts.map +1 -0
  25. package/dist/controllers/index.js +19 -0
  26. package/dist/controllers/index.js.map +1 -0
  27. package/dist/controllers/user.d.ts +42 -0
  28. package/dist/controllers/user.d.ts.map +1 -0
  29. package/dist/controllers/user.js +750 -0
  30. package/dist/controllers/user.js.map +1 -0
  31. package/dist/decorators/base-controller.d.ts +9 -0
  32. package/dist/decorators/base-controller.d.ts.map +1 -0
  33. package/dist/decorators/base-controller.js +49 -0
  34. package/dist/decorators/base-controller.js.map +1 -0
  35. package/dist/decorators/controller.d.ts +31 -0
  36. package/dist/decorators/controller.d.ts.map +1 -0
  37. package/dist/decorators/controller.js +67 -0
  38. package/dist/decorators/controller.js.map +1 -0
  39. package/dist/decorators/index.d.ts +4 -0
  40. package/dist/decorators/index.d.ts.map +1 -0
  41. package/dist/decorators/index.js +20 -0
  42. package/dist/decorators/index.js.map +1 -0
  43. package/dist/decorators/zod-validation.d.ts +5 -0
  44. package/dist/decorators/zod-validation.d.ts.map +1 -0
  45. package/dist/decorators/zod-validation.js +47 -0
  46. package/dist/decorators/zod-validation.js.map +1 -0
  47. package/dist/defaults.d.ts +7 -0
  48. package/dist/defaults.d.ts.map +1 -0
  49. package/dist/defaults.js +83 -0
  50. package/dist/defaults.js.map +1 -0
  51. package/dist/documents/base.d.ts +3 -0
  52. package/dist/documents/base.d.ts.map +1 -0
  53. package/dist/documents/base.js +3 -0
  54. package/dist/documents/base.js.map +1 -0
  55. package/dist/documents/email-token.d.ts +8 -0
  56. package/dist/documents/email-token.d.ts.map +1 -0
  57. package/dist/documents/email-token.js +3 -0
  58. package/dist/documents/email-token.js.map +1 -0
  59. package/dist/documents/index.d.ts +8 -0
  60. package/dist/documents/index.d.ts.map +1 -0
  61. package/dist/documents/index.js +3 -0
  62. package/dist/documents/index.js.map +1 -0
  63. package/dist/documents/mnemonic.d.ts +8 -0
  64. package/dist/documents/mnemonic.d.ts.map +1 -0
  65. package/dist/documents/mnemonic.js +3 -0
  66. package/dist/documents/mnemonic.js.map +1 -0
  67. package/dist/documents/role.d.ts +8 -0
  68. package/dist/documents/role.d.ts.map +1 -0
  69. package/dist/documents/role.js +3 -0
  70. package/dist/documents/role.js.map +1 -0
  71. package/dist/documents/used-direct-login-token.d.ts +5 -0
  72. package/dist/documents/used-direct-login-token.d.ts.map +1 -0
  73. package/dist/documents/used-direct-login-token.js +3 -0
  74. package/dist/documents/used-direct-login-token.js.map +1 -0
  75. package/dist/documents/user-role.d.ts +8 -0
  76. package/dist/documents/user-role.d.ts.map +1 -0
  77. package/dist/documents/user-role.js +3 -0
  78. package/dist/documents/user-role.js.map +1 -0
  79. package/dist/documents/user.d.ts +9 -0
  80. package/dist/documents/user.d.ts.map +1 -0
  81. package/dist/documents/user.js +3 -0
  82. package/dist/documents/user.js.map +1 -0
  83. package/dist/enumerations/base-model-name.d.ts +38 -0
  84. package/dist/enumerations/base-model-name.d.ts.map +1 -0
  85. package/dist/enumerations/base-model-name.js +34 -0
  86. package/dist/enumerations/base-model-name.js.map +1 -0
  87. package/dist/enumerations/index.d.ts +4 -0
  88. package/dist/enumerations/index.d.ts.map +1 -0
  89. package/dist/enumerations/index.js +20 -0
  90. package/dist/enumerations/index.js.map +1 -0
  91. package/dist/enumerations/length-encoding-type.d.ts +7 -0
  92. package/dist/enumerations/length-encoding-type.d.ts.map +1 -0
  93. package/dist/enumerations/length-encoding-type.js +11 -0
  94. package/dist/enumerations/length-encoding-type.js.map +1 -0
  95. package/dist/enumerations/schema-collection.d.ts +34 -0
  96. package/dist/enumerations/schema-collection.d.ts.map +1 -0
  97. package/dist/enumerations/schema-collection.js +38 -0
  98. package/dist/enumerations/schema-collection.js.map +1 -0
  99. package/dist/enumerations/symmetric-error-type.d.ts +5 -0
  100. package/dist/enumerations/symmetric-error-type.d.ts.map +1 -0
  101. package/dist/enumerations/symmetric-error-type.js +9 -0
  102. package/dist/enumerations/symmetric-error-type.js.map +1 -0
  103. package/dist/environment.d.ts +189 -0
  104. package/dist/environment.d.ts.map +1 -0
  105. package/dist/environment.js +618 -0
  106. package/dist/environment.js.map +1 -0
  107. package/dist/error-factory.d.ts +6 -0
  108. package/dist/error-factory.d.ts.map +1 -0
  109. package/dist/error-factory.js +15 -0
  110. package/dist/error-factory.js.map +1 -0
  111. package/dist/errors/express-validation.d.ts +9 -0
  112. package/dist/errors/express-validation.d.ts.map +1 -0
  113. package/dist/errors/express-validation.js +17 -0
  114. package/dist/errors/express-validation.js.map +1 -0
  115. package/dist/errors/index.d.ts +13 -0
  116. package/dist/errors/index.d.ts.map +1 -0
  117. package/dist/errors/index.js +29 -0
  118. package/dist/errors/index.js.map +1 -0
  119. package/dist/errors/invalid-backup-code-version.d.ts +6 -0
  120. package/dist/errors/invalid-backup-code-version.d.ts.map +1 -0
  121. package/dist/errors/invalid-backup-code-version.js +14 -0
  122. package/dist/errors/invalid-backup-code-version.js.map +1 -0
  123. package/dist/errors/invalid-jwt-token.d.ts +5 -0
  124. package/dist/errors/invalid-jwt-token.d.ts.map +1 -0
  125. package/dist/errors/invalid-jwt-token.js +11 -0
  126. package/dist/errors/invalid-jwt-token.js.map +1 -0
  127. package/dist/errors/invalid-model.d.ts +6 -0
  128. package/dist/errors/invalid-model.d.ts.map +1 -0
  129. package/dist/errors/invalid-model.js +13 -0
  130. package/dist/errors/invalid-model.js.map +1 -0
  131. package/dist/errors/invalid-new-password.d.ts +5 -0
  132. package/dist/errors/invalid-new-password.d.ts.map +1 -0
  133. package/dist/errors/invalid-new-password.js +14 -0
  134. package/dist/errors/invalid-new-password.js.map +1 -0
  135. package/dist/errors/invalid-password.d.ts +5 -0
  136. package/dist/errors/invalid-password.d.ts.map +1 -0
  137. package/dist/errors/invalid-password.js +14 -0
  138. package/dist/errors/invalid-password.js.map +1 -0
  139. package/dist/errors/missing-validated-data.d.ts +7 -0
  140. package/dist/errors/missing-validated-data.d.ts.map +1 -0
  141. package/dist/errors/missing-validated-data.js +34 -0
  142. package/dist/errors/missing-validated-data.js.map +1 -0
  143. package/dist/errors/mnemonic-or-password-required.d.ts +5 -0
  144. package/dist/errors/mnemonic-or-password-required.d.ts.map +1 -0
  145. package/dist/errors/mnemonic-or-password-required.js +13 -0
  146. package/dist/errors/mnemonic-or-password-required.js.map +1 -0
  147. package/dist/errors/model-not-registered.d.ts +5 -0
  148. package/dist/errors/model-not-registered.d.ts.map +1 -0
  149. package/dist/errors/model-not-registered.js +12 -0
  150. package/dist/errors/model-not-registered.js.map +1 -0
  151. package/dist/errors/mongoose-validation.d.ts +11 -0
  152. package/dist/errors/mongoose-validation.d.ts.map +1 -0
  153. package/dist/errors/mongoose-validation.js +16 -0
  154. package/dist/errors/mongoose-validation.js.map +1 -0
  155. package/dist/errors/symmetric.d.ts +8 -0
  156. package/dist/errors/symmetric.d.ts.map +1 -0
  157. package/dist/errors/symmetric.js +23 -0
  158. package/dist/errors/symmetric.js.map +1 -0
  159. package/dist/errors/token-expired.d.ts +5 -0
  160. package/dist/errors/token-expired.d.ts.map +1 -0
  161. package/dist/errors/token-expired.js +11 -0
  162. package/dist/errors/token-expired.js.map +1 -0
  163. package/dist/get-language.d.ts +2 -0
  164. package/dist/get-language.d.ts.map +1 -0
  165. package/dist/get-language.js +30 -0
  166. package/dist/get-language.js.map +1 -0
  167. package/dist/get-timezone.d.ts +3 -0
  168. package/dist/get-timezone.d.ts.map +1 -0
  169. package/dist/get-timezone.js +31 -0
  170. package/dist/get-timezone.js.map +1 -0
  171. package/dist/index.d.ts +23 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js +39 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/interfaces/api-error-response.d.ts +5 -0
  176. package/dist/interfaces/api-error-response.d.ts.map +1 -0
  177. package/dist/interfaces/api-error-response.js +3 -0
  178. package/dist/interfaces/api-error-response.js.map +1 -0
  179. package/dist/interfaces/api-express-validation-error-response.d.ts +7 -0
  180. package/dist/interfaces/api-express-validation-error-response.d.ts.map +1 -0
  181. package/dist/interfaces/api-express-validation-error-response.js +3 -0
  182. package/dist/interfaces/api-express-validation-error-response.js.map +1 -0
  183. package/dist/interfaces/api-message-response.d.ts +4 -0
  184. package/dist/interfaces/api-message-response.d.ts.map +1 -0
  185. package/dist/interfaces/api-message-response.js +3 -0
  186. package/dist/interfaces/api-message-response.js.map +1 -0
  187. package/dist/interfaces/api-mongo-validation-error-response.d.ts +6 -0
  188. package/dist/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
  189. package/dist/interfaces/api-mongo-validation-error-response.js +3 -0
  190. package/dist/interfaces/api-mongo-validation-error-response.js.map +1 -0
  191. package/dist/interfaces/api-responses/backup-codes-response.d.ts +5 -0
  192. package/dist/interfaces/api-responses/backup-codes-response.d.ts.map +1 -0
  193. package/dist/interfaces/api-responses/backup-codes-response.js +3 -0
  194. package/dist/interfaces/api-responses/backup-codes-response.js.map +1 -0
  195. package/dist/interfaces/api-responses/challenge-response.d.ts +6 -0
  196. package/dist/interfaces/api-responses/challenge-response.d.ts.map +1 -0
  197. package/dist/interfaces/api-responses/challenge-response.js +3 -0
  198. package/dist/interfaces/api-responses/challenge-response.js.map +1 -0
  199. package/dist/interfaces/api-responses/code-count-response.d.ts +5 -0
  200. package/dist/interfaces/api-responses/code-count-response.d.ts.map +1 -0
  201. package/dist/interfaces/api-responses/code-count-response.js +3 -0
  202. package/dist/interfaces/api-responses/code-count-response.js.map +1 -0
  203. package/dist/interfaces/api-responses/index.d.ts +8 -0
  204. package/dist/interfaces/api-responses/index.d.ts.map +1 -0
  205. package/dist/interfaces/api-responses/index.js +24 -0
  206. package/dist/interfaces/api-responses/index.js.map +1 -0
  207. package/dist/interfaces/api-responses/login-response.d.ts +8 -0
  208. package/dist/interfaces/api-responses/login-response.d.ts.map +1 -0
  209. package/dist/interfaces/api-responses/login-response.js +3 -0
  210. package/dist/interfaces/api-responses/login-response.js.map +1 -0
  211. package/dist/interfaces/api-responses/mnemonic-response.d.ts +5 -0
  212. package/dist/interfaces/api-responses/mnemonic-response.d.ts.map +1 -0
  213. package/dist/interfaces/api-responses/mnemonic-response.js +3 -0
  214. package/dist/interfaces/api-responses/mnemonic-response.js.map +1 -0
  215. package/dist/interfaces/api-responses/registration-response.d.ts +6 -0
  216. package/dist/interfaces/api-responses/registration-response.d.ts.map +1 -0
  217. package/dist/interfaces/api-responses/registration-response.js +3 -0
  218. package/dist/interfaces/api-responses/registration-response.js.map +1 -0
  219. package/dist/interfaces/api-responses/request-user-response.d.ts +6 -0
  220. package/dist/interfaces/api-responses/request-user-response.d.ts.map +1 -0
  221. package/dist/interfaces/api-responses/request-user-response.js +3 -0
  222. package/dist/interfaces/api-responses/request-user-response.js.map +1 -0
  223. package/dist/interfaces/application.d.ts +12 -0
  224. package/dist/interfaces/application.d.ts.map +1 -0
  225. package/dist/interfaces/application.js +3 -0
  226. package/dist/interfaces/application.js.map +1 -0
  227. package/dist/interfaces/backend-objects/email-token.d.ts +4 -0
  228. package/dist/interfaces/backend-objects/email-token.d.ts.map +1 -0
  229. package/dist/interfaces/backend-objects/email-token.js +3 -0
  230. package/dist/interfaces/backend-objects/email-token.js.map +1 -0
  231. package/dist/interfaces/backend-objects/index.d.ts +5 -0
  232. package/dist/interfaces/backend-objects/index.d.ts.map +1 -0
  233. package/dist/interfaces/backend-objects/index.js +21 -0
  234. package/dist/interfaces/backend-objects/index.js.map +1 -0
  235. package/dist/interfaces/backend-objects/request-user.d.ts +5 -0
  236. package/dist/interfaces/backend-objects/request-user.d.ts.map +1 -0
  237. package/dist/interfaces/backend-objects/request-user.js +3 -0
  238. package/dist/interfaces/backend-objects/request-user.js.map +1 -0
  239. package/dist/interfaces/backend-objects/role.d.ts +4 -0
  240. package/dist/interfaces/backend-objects/role.d.ts.map +1 -0
  241. package/dist/interfaces/backend-objects/role.js +3 -0
  242. package/dist/interfaces/backend-objects/role.js.map +1 -0
  243. package/dist/interfaces/backend-objects/user.d.ts +4 -0
  244. package/dist/interfaces/backend-objects/user.d.ts.map +1 -0
  245. package/dist/interfaces/backend-objects/user.js +3 -0
  246. package/dist/interfaces/backend-objects/user.js.map +1 -0
  247. package/dist/interfaces/checksum-config.d.ts +5 -0
  248. package/dist/interfaces/checksum-config.d.ts.map +1 -0
  249. package/dist/interfaces/checksum-config.js +3 -0
  250. package/dist/interfaces/checksum-config.js.map +1 -0
  251. package/dist/interfaces/checksum-consts.d.ts +11 -0
  252. package/dist/interfaces/checksum-consts.d.ts.map +1 -0
  253. package/dist/interfaces/checksum-consts.js +3 -0
  254. package/dist/interfaces/checksum-consts.js.map +1 -0
  255. package/dist/interfaces/constants.d.ts +12 -0
  256. package/dist/interfaces/constants.d.ts.map +1 -0
  257. package/dist/interfaces/constants.js +3 -0
  258. package/dist/interfaces/constants.js.map +1 -0
  259. package/dist/interfaces/create-user-basics.d.ts +18 -0
  260. package/dist/interfaces/create-user-basics.d.ts.map +1 -0
  261. package/dist/interfaces/create-user-basics.js +3 -0
  262. package/dist/interfaces/create-user-basics.js.map +1 -0
  263. package/dist/interfaces/csp-config.d.ts +14 -0
  264. package/dist/interfaces/csp-config.d.ts.map +1 -0
  265. package/dist/interfaces/csp-config.js +3 -0
  266. package/dist/interfaces/csp-config.js.map +1 -0
  267. package/dist/interfaces/deep-partial.d.ts +4 -0
  268. package/dist/interfaces/deep-partial.d.ts.map +1 -0
  269. package/dist/interfaces/deep-partial.js +3 -0
  270. package/dist/interfaces/deep-partial.js.map +1 -0
  271. package/dist/interfaces/discriminator-collections.d.ts +7 -0
  272. package/dist/interfaces/discriminator-collections.d.ts.map +1 -0
  273. package/dist/interfaces/discriminator-collections.js +3 -0
  274. package/dist/interfaces/discriminator-collections.js.map +1 -0
  275. package/dist/interfaces/email-service.d.ts +4 -0
  276. package/dist/interfaces/email-service.d.ts.map +1 -0
  277. package/dist/interfaces/email-service.js +3 -0
  278. package/dist/interfaces/email-service.js.map +1 -0
  279. package/dist/interfaces/environment-mongo.d.ts +76 -0
  280. package/dist/interfaces/environment-mongo.d.ts.map +1 -0
  281. package/dist/interfaces/environment-mongo.js +3 -0
  282. package/dist/interfaces/environment-mongo.js.map +1 -0
  283. package/dist/interfaces/environment.d.ts +181 -0
  284. package/dist/interfaces/environment.d.ts.map +1 -0
  285. package/dist/interfaces/environment.js +3 -0
  286. package/dist/interfaces/environment.js.map +1 -0
  287. package/dist/interfaces/failable-result.d.ts +7 -0
  288. package/dist/interfaces/failable-result.d.ts.map +1 -0
  289. package/dist/interfaces/failable-result.js +3 -0
  290. package/dist/interfaces/failable-result.js.map +1 -0
  291. package/dist/interfaces/fec-consts.d.ts +5 -0
  292. package/dist/interfaces/fec-consts.d.ts.map +1 -0
  293. package/dist/interfaces/fec-consts.js +3 -0
  294. package/dist/interfaces/fec-consts.js.map +1 -0
  295. package/dist/interfaces/handleable-error-options.d.ts +7 -0
  296. package/dist/interfaces/handleable-error-options.d.ts.map +1 -0
  297. package/dist/interfaces/handleable-error-options.js +3 -0
  298. package/dist/interfaces/handleable-error-options.js.map +1 -0
  299. package/dist/interfaces/index.d.ts +30 -0
  300. package/dist/interfaces/index.d.ts.map +1 -0
  301. package/dist/interfaces/index.js +46 -0
  302. package/dist/interfaces/index.js.map +1 -0
  303. package/dist/interfaces/jwt-consts.d.ts +11 -0
  304. package/dist/interfaces/jwt-consts.d.ts.map +1 -0
  305. package/dist/interfaces/jwt-consts.js +3 -0
  306. package/dist/interfaces/jwt-consts.js.map +1 -0
  307. package/dist/interfaces/jwt-sign-response.d.ts +11 -0
  308. package/dist/interfaces/jwt-sign-response.d.ts.map +1 -0
  309. package/dist/interfaces/jwt-sign-response.js +3 -0
  310. package/dist/interfaces/jwt-sign-response.js.map +1 -0
  311. package/dist/interfaces/mongo-errors.d.ts +5 -0
  312. package/dist/interfaces/mongo-errors.d.ts.map +1 -0
  313. package/dist/interfaces/mongo-errors.js +3 -0
  314. package/dist/interfaces/mongo-errors.js.map +1 -0
  315. package/dist/interfaces/request-user.d.ts +42 -0
  316. package/dist/interfaces/request-user.d.ts.map +1 -0
  317. package/dist/interfaces/request-user.js +3 -0
  318. package/dist/interfaces/request-user.js.map +1 -0
  319. package/dist/interfaces/required-string-keys.d.ts +22 -0
  320. package/dist/interfaces/required-string-keys.d.ts.map +1 -0
  321. package/dist/interfaces/required-string-keys.js +3 -0
  322. package/dist/interfaces/required-string-keys.js.map +1 -0
  323. package/dist/interfaces/schema.d.ts +29 -0
  324. package/dist/interfaces/schema.d.ts.map +1 -0
  325. package/dist/interfaces/schema.js +3 -0
  326. package/dist/interfaces/schema.js.map +1 -0
  327. package/dist/interfaces/server-init-result.d.ts +35 -0
  328. package/dist/interfaces/server-init-result.d.ts.map +1 -0
  329. package/dist/interfaces/server-init-result.js +3 -0
  330. package/dist/interfaces/server-init-result.js.map +1 -0
  331. package/dist/interfaces/status-code-response.d.ts +7 -0
  332. package/dist/interfaces/status-code-response.d.ts.map +1 -0
  333. package/dist/interfaces/status-code-response.js +3 -0
  334. package/dist/interfaces/status-code-response.js.map +1 -0
  335. package/dist/interfaces/symmetric-encryption-results.d.ts +5 -0
  336. package/dist/interfaces/symmetric-encryption-results.d.ts.map +1 -0
  337. package/dist/interfaces/symmetric-encryption-results.js +3 -0
  338. package/dist/interfaces/symmetric-encryption-results.js.map +1 -0
  339. package/dist/interfaces/token-response.d.ts +5 -0
  340. package/dist/interfaces/token-response.d.ts.map +1 -0
  341. package/dist/interfaces/token-response.js +3 -0
  342. package/dist/interfaces/token-response.js.map +1 -0
  343. package/dist/middlewares/authenticate-crypto.d.ts +9 -0
  344. package/dist/middlewares/authenticate-crypto.d.ts.map +1 -0
  345. package/dist/middlewares/authenticate-crypto.js +146 -0
  346. package/dist/middlewares/authenticate-crypto.js.map +1 -0
  347. package/dist/middlewares/authenticate-token.d.ts +21 -0
  348. package/dist/middlewares/authenticate-token.d.ts.map +1 -0
  349. package/dist/middlewares/authenticate-token.js +102 -0
  350. package/dist/middlewares/authenticate-token.js.map +1 -0
  351. package/dist/middlewares/cleanup-crypto.d.ts +7 -0
  352. package/dist/middlewares/cleanup-crypto.d.ts.map +1 -0
  353. package/dist/middlewares/cleanup-crypto.js +32 -0
  354. package/dist/middlewares/cleanup-crypto.js.map +1 -0
  355. package/dist/middlewares/index.d.ts +5 -0
  356. package/dist/middlewares/index.d.ts.map +1 -0
  357. package/dist/middlewares/index.js +21 -0
  358. package/dist/middlewares/index.js.map +1 -0
  359. package/dist/middlewares/set-global-context-language.d.ts +3 -0
  360. package/dist/middlewares/set-global-context-language.d.ts.map +1 -0
  361. package/dist/middlewares/set-global-context-language.js +14 -0
  362. package/dist/middlewares/set-global-context-language.js.map +1 -0
  363. package/dist/middlewares.d.ts +18 -0
  364. package/dist/middlewares.d.ts.map +1 -0
  365. package/dist/middlewares.js +76 -0
  366. package/dist/middlewares.js.map +1 -0
  367. package/dist/model-registry.d.ts +23 -0
  368. package/dist/model-registry.d.ts.map +1 -0
  369. package/dist/model-registry.js +47 -0
  370. package/dist/model-registry.js.map +1 -0
  371. package/dist/models/email-token.d.ts +11 -0
  372. package/dist/models/email-token.d.ts.map +1 -0
  373. package/dist/models/email-token.js +11 -0
  374. package/dist/models/email-token.js.map +1 -0
  375. package/dist/models/index.d.ts +7 -0
  376. package/dist/models/index.d.ts.map +1 -0
  377. package/dist/models/index.js +23 -0
  378. package/dist/models/index.js.map +1 -0
  379. package/dist/models/mnemonic.d.ts +11 -0
  380. package/dist/models/mnemonic.d.ts.map +1 -0
  381. package/dist/models/mnemonic.js +11 -0
  382. package/dist/models/mnemonic.js.map +1 -0
  383. package/dist/models/role.d.ts +11 -0
  384. package/dist/models/role.d.ts.map +1 -0
  385. package/dist/models/role.js +11 -0
  386. package/dist/models/role.js.map +1 -0
  387. package/dist/models/used-direct-login-token.d.ts +11 -0
  388. package/dist/models/used-direct-login-token.d.ts.map +1 -0
  389. package/dist/models/used-direct-login-token.js +11 -0
  390. package/dist/models/used-direct-login-token.js.map +1 -0
  391. package/dist/models/user-role.d.ts +6 -0
  392. package/dist/models/user-role.d.ts.map +1 -0
  393. package/dist/models/user-role.js +10 -0
  394. package/dist/models/user-role.js.map +1 -0
  395. package/dist/models/user.d.ts +7 -0
  396. package/dist/models/user.d.ts.map +1 -0
  397. package/dist/models/user.js +11 -0
  398. package/dist/models/user.js.map +1 -0
  399. package/dist/registry/email-service-registry.d.ts +9 -0
  400. package/dist/registry/email-service-registry.d.ts.map +1 -0
  401. package/dist/registry/email-service-registry.js +17 -0
  402. package/dist/registry/email-service-registry.js.map +1 -0
  403. package/dist/registry/index.d.ts +2 -0
  404. package/dist/registry/index.d.ts.map +1 -0
  405. package/dist/registry/index.js +6 -0
  406. package/dist/registry/index.js.map +1 -0
  407. package/dist/routers/api.d.ts +23 -0
  408. package/dist/routers/api.d.ts.map +1 -0
  409. package/dist/routers/api.js +44 -0
  410. package/dist/routers/api.js.map +1 -0
  411. package/dist/routers/app.d.ts +24 -0
  412. package/dist/routers/app.d.ts.map +1 -0
  413. package/dist/routers/app.js +182 -0
  414. package/dist/routers/app.js.map +1 -0
  415. package/dist/routers/base.d.ts +8 -0
  416. package/dist/routers/base.d.ts.map +1 -0
  417. package/dist/routers/base.js +12 -0
  418. package/dist/routers/base.js.map +1 -0
  419. package/dist/routers/index.d.ts +3 -0
  420. package/dist/routers/index.d.ts.map +1 -0
  421. package/dist/routers/index.js +19 -0
  422. package/dist/routers/index.js.map +1 -0
  423. package/dist/schemas/email-token.d.ts +38 -0
  424. package/dist/schemas/email-token.d.ts.map +1 -0
  425. package/dist/schemas/email-token.js +56 -0
  426. package/dist/schemas/email-token.js.map +1 -0
  427. package/dist/schemas/mnemonic.d.ts +20 -0
  428. package/dist/schemas/mnemonic.d.ts.map +1 -0
  429. package/dist/schemas/mnemonic.js +30 -0
  430. package/dist/schemas/mnemonic.js.map +1 -0
  431. package/dist/schemas/role.d.ts +32 -0
  432. package/dist/schemas/role.d.ts.map +1 -0
  433. package/dist/schemas/role.js +86 -0
  434. package/dist/schemas/role.js.map +1 -0
  435. package/dist/schemas/schema.d.ts +40 -0
  436. package/dist/schemas/schema.d.ts.map +1 -0
  437. package/dist/schemas/schema.js +64 -0
  438. package/dist/schemas/schema.js.map +1 -0
  439. package/dist/schemas/used-direct-login-token.d.ts +27 -0
  440. package/dist/schemas/used-direct-login-token.d.ts.map +1 -0
  441. package/dist/schemas/used-direct-login-token.js +23 -0
  442. package/dist/schemas/used-direct-login-token.js.map +1 -0
  443. package/dist/schemas/user-role.d.ts +29 -0
  444. package/dist/schemas/user-role.d.ts.map +1 -0
  445. package/dist/schemas/user-role.js +54 -0
  446. package/dist/schemas/user-role.js.map +1 -0
  447. package/dist/schemas/user.d.ts +21 -0
  448. package/dist/schemas/user.d.ts.map +1 -0
  449. package/dist/schemas/user.js +178 -0
  450. package/dist/schemas/user.js.map +1 -0
  451. package/dist/services/backup-code.d.ts +76 -0
  452. package/dist/services/backup-code.d.ts.map +1 -0
  453. package/dist/services/backup-code.js +180 -0
  454. package/dist/services/backup-code.js.map +1 -0
  455. package/dist/services/base.d.ts +10 -0
  456. package/dist/services/base.d.ts.map +1 -0
  457. package/dist/services/base.js +14 -0
  458. package/dist/services/base.js.map +1 -0
  459. package/dist/services/checksum.d.ts +67 -0
  460. package/dist/services/checksum.d.ts.map +1 -0
  461. package/dist/services/checksum.js +175 -0
  462. package/dist/services/checksum.js.map +1 -0
  463. package/dist/services/crc.d.ts +87 -0
  464. package/dist/services/crc.d.ts.map +1 -0
  465. package/dist/services/crc.js +198 -0
  466. package/dist/services/crc.js.map +1 -0
  467. package/dist/services/database-initialization.d.ts +101 -0
  468. package/dist/services/database-initialization.d.ts.map +1 -0
  469. package/dist/services/database-initialization.js +779 -0
  470. package/dist/services/database-initialization.js.map +1 -0
  471. package/dist/services/direct-login-token.d.ts +6 -0
  472. package/dist/services/direct-login-token.d.ts.map +1 -0
  473. package/dist/services/direct-login-token.js +41 -0
  474. package/dist/services/direct-login-token.js.map +1 -0
  475. package/dist/services/fec-usage-example.d.ts +38 -0
  476. package/dist/services/fec-usage-example.d.ts.map +1 -0
  477. package/dist/services/fec-usage-example.js +77 -0
  478. package/dist/services/fec-usage-example.js.map +1 -0
  479. package/dist/services/fec.d.ts +46 -0
  480. package/dist/services/fec.d.ts.map +1 -0
  481. package/dist/services/fec.js +192 -0
  482. package/dist/services/fec.js.map +1 -0
  483. package/dist/services/index.d.ts +19 -0
  484. package/dist/services/index.d.ts.map +1 -0
  485. package/dist/services/index.js +35 -0
  486. package/dist/services/index.js.map +1 -0
  487. package/dist/services/jwt.d.ts +30 -0
  488. package/dist/services/jwt.d.ts.map +1 -0
  489. package/dist/services/jwt.js +90 -0
  490. package/dist/services/jwt.js.map +1 -0
  491. package/dist/services/key-wrapping.d.ts +60 -0
  492. package/dist/services/key-wrapping.d.ts.map +1 -0
  493. package/dist/services/key-wrapping.js +311 -0
  494. package/dist/services/key-wrapping.js.map +1 -0
  495. package/dist/services/mnemonic.d.ts +61 -0
  496. package/dist/services/mnemonic.d.ts.map +1 -0
  497. package/dist/services/mnemonic.js +112 -0
  498. package/dist/services/mnemonic.js.map +1 -0
  499. package/dist/services/request-user.d.ts +20 -0
  500. package/dist/services/request-user.d.ts.map +1 -0
  501. package/dist/services/request-user.js +50 -0
  502. package/dist/services/request-user.js.map +1 -0
  503. package/dist/services/role.d.ts +85 -0
  504. package/dist/services/role.d.ts.map +1 -0
  505. package/dist/services/role.js +254 -0
  506. package/dist/services/role.js.map +1 -0
  507. package/dist/services/symmetric.d.ts +42 -0
  508. package/dist/services/symmetric.d.ts.map +1 -0
  509. package/dist/services/symmetric.js +101 -0
  510. package/dist/services/symmetric.js.map +1 -0
  511. package/dist/services/system-user.d.ts +17 -0
  512. package/dist/services/system-user.d.ts.map +1 -0
  513. package/dist/services/system-user.js +46 -0
  514. package/dist/services/system-user.js.map +1 -0
  515. package/dist/services/user.d.ts +317 -0
  516. package/dist/services/user.d.ts.map +1 -0
  517. package/dist/services/user.js +1364 -0
  518. package/dist/services/user.js.map +1 -0
  519. package/dist/services/xor.d.ts +24 -0
  520. package/dist/services/xor.d.ts.map +1 -0
  521. package/dist/services/xor.js +37 -0
  522. package/dist/services/xor.js.map +1 -0
  523. package/dist/types.d.ts +70 -0
  524. package/dist/types.d.ts.map +1 -0
  525. package/dist/types.js +14 -0
  526. package/dist/types.js.map +1 -0
  527. package/dist/utils.d.ts +202 -0
  528. package/dist/utils.d.ts.map +1 -0
  529. package/dist/utils.js +786 -0
  530. package/dist/utils.js.map +1 -0
  531. package/package.json +60 -0
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MnemonicService = void 0;
4
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
5
+ const crypto_1 = require("crypto");
6
+ const constants_1 = require("../constants");
7
+ /**
8
+ * Encrypts and stores mnemonics securely, using an HMAC to check for
9
+ * uniqueness without exposing the mnemonic itself.
10
+ */
11
+ class MnemonicService {
12
+ constructor(mnemonicModel, hmacSecret, keyWrappingService) {
13
+ this.MnemonicModel = mnemonicModel;
14
+ // Immediately wrap secrets in secure containers
15
+ this.hmacSecret = hmacSecret;
16
+ this.keyWrappingService = keyWrappingService;
17
+ }
18
+ /**
19
+ * Disposes of the secure secrets held by this service.
20
+ */
21
+ dispose() {
22
+ this.hmacSecret.dispose();
23
+ }
24
+ /**
25
+ * Creates a non-reversible HMAC of the mnemonic for fast, indexed lookups.
26
+ * @param mnemonic The mnemonic to hash, wrapped in a SecureString.
27
+ */
28
+ getMnemonicHmac(mnemonic) {
29
+ // Use the raw secret buffer for the HMAC
30
+ return (0, crypto_1.createHmac)('sha256', this.hmacSecret.value)
31
+ .update(mnemonic.valueAsUint8Array) // Use the raw buffer for consistency
32
+ .digest('hex');
33
+ }
34
+ /**
35
+ * Checks if a mnemonic already exists in the database using its HMAC.
36
+ * @param mnemonic The mnemonic to check, wrapped in a SecureString.
37
+ * @param session Optional Mongoose session for transaction support.
38
+ */
39
+ async mnemonicExists(mnemonic, session) {
40
+ const hmac = this.getMnemonicHmac(mnemonic);
41
+ const count = await this.MnemonicModel.countDocuments({ hmac }).session(session ?? null);
42
+ return count > 0;
43
+ }
44
+ /**
45
+ * Adds a new, unique mnemonic to the database with password-based key wrapping.
46
+ * @param mnemonic The mnemonic to add, wrapped in a SecureString.
47
+ * @param password User's password for key wrapping.
48
+ * @param session Optional Mongoose session for transaction support.
49
+ */
50
+ async addMnemonicWithPassword(mnemonic, _password, session) {
51
+ if (!mnemonic.value || !constants_1.Constants.MnemonicRegex.test(mnemonic.value)) {
52
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicRegex);
53
+ }
54
+ if (await this.mnemonicExists(mnemonic, session)) {
55
+ return { document: null };
56
+ }
57
+ try {
58
+ const hmac = this.getMnemonicHmac(mnemonic);
59
+ const [newDoc] = await this.MnemonicModel.create([
60
+ {
61
+ hmac: hmac,
62
+ },
63
+ ], { session });
64
+ return { document: newDoc };
65
+ }
66
+ finally {
67
+ // nothing to dispose
68
+ }
69
+ }
70
+ /**
71
+ * Adds a new, unique mnemonic to the database.
72
+ * @param mnemonic The mnemonic to add, wrapped in a SecureString.
73
+ * @param session Optional Mongoose session for transaction support.
74
+ */
75
+ async addMnemonic(mnemonic, session) {
76
+ if (!mnemonic.value || !constants_1.Constants.MnemonicRegex.test(mnemonic.value)) {
77
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicRegex);
78
+ }
79
+ if (await this.mnemonicExists(mnemonic, session)) {
80
+ return null;
81
+ }
82
+ const hmac = this.getMnemonicHmac(mnemonic);
83
+ const [newDoc] = await this.MnemonicModel.create([
84
+ {
85
+ hmac: hmac,
86
+ },
87
+ ], { session });
88
+ return newDoc;
89
+ }
90
+ /**
91
+ * Retrieves a mnemonic document by ID.
92
+ * @param mnemonicId The ID of the mnemonic document.
93
+ * @param session Optional Mongoose session for transaction support.
94
+ */
95
+ async getMnemonicDocument(mnemonicId, session) {
96
+ return await this.MnemonicModel.findById(mnemonicId).session(session ?? null);
97
+ }
98
+ /**
99
+ * Decrypts a mnemonic from a document using the service's master encryption key.
100
+ * @param doc The mnemonic document.
101
+ */
102
+ /**
103
+ * Deletes a mnemonic document by ID.
104
+ * @param mnemonicId The ID of the mnemonic document.
105
+ * @param session Optional Mongoose session for transaction support.
106
+ */
107
+ async deleteMnemonicDocument(mnemonicId, session) {
108
+ await this.MnemonicModel.findByIdAndDelete(mnemonicId).session(session ?? null);
109
+ }
110
+ }
111
+ exports.MnemonicService = MnemonicService;
112
+ //# sourceMappingURL=mnemonic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../../src/services/mnemonic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { IRequestUserDTO, ITokenRole } from '@digitaldefiance/suite-core-lib';
2
+ import { IUserDocument } from '../documents';
3
+ import { IRequestUserBackendObject } from '../interfaces/backend-objects/request-user';
4
+ export declare class RequestUserService<I, TTokenRole extends ITokenRole<I>> {
5
+ /**
6
+ * Given a user document and an array of role documents, create the IRequestUser
7
+ * @param userDoc
8
+ * @returns
9
+ */
10
+ static makeRequestUserDTO<I, TTokenRole extends ITokenRole<I>, TRequestUserDTO extends IRequestUserDTO>(userDoc: IUserDocument, roles: TTokenRole[]): TRequestUserDTO;
11
+ /**
12
+ * Given a request user, reconstitute dates, objectids, and enums
13
+ * @param requestUser a RequestUser DTO
14
+ * @returns An IRequestUserBackendObject
15
+ */
16
+ static hydrateRequestUser<S extends string, TRequestUserDTO extends IRequestUserDTO & {
17
+ siteLanguage: S;
18
+ }>(requestUser: TRequestUserDTO): IRequestUserBackendObject<S>;
19
+ }
20
+ //# sourceMappingURL=request-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-user.d.ts","sourceRoot":"","sources":["../../src/services/request-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAGvF,qBAAa,kBAAkB,CAAC,CAAC,EAAE,UAAU,SAAS,UAAU,CAAC,CAAC,CAAC;IACjE;;;;OAIG;WACW,kBAAkB,CAC9B,CAAC,EACD,UAAU,SAAS,UAAU,CAAC,CAAC,CAAC,EAChC,eAAe,SAAS,eAAe,EACvC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,eAAe;IAgB/D;;;;OAIG;WACW,kBAAkB,CAC9B,CAAC,SAAS,MAAM,EAChB,eAAe,SAAS,eAAe,GAAG;QAAE,YAAY,EAAE,CAAC,CAAA;KAAE,EAC7D,WAAW,EAAE,eAAe,GAAG,yBAAyB,CAAC,CAAC,CAAC;CAqB9D"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestUserService = void 0;
4
+ const mongoose_1 = require("mongoose");
5
+ const role_1 = require("./role");
6
+ class RequestUserService {
7
+ /**
8
+ * Given a user document and an array of role documents, create the IRequestUser
9
+ * @param userDoc
10
+ * @returns
11
+ */
12
+ static makeRequestUserDTO(userDoc, roles) {
13
+ if (!userDoc._id) {
14
+ throw new Error('User document is missing _id');
15
+ }
16
+ return {
17
+ id: userDoc._id.toString(),
18
+ email: userDoc.email,
19
+ roles: roles.map((r) => role_1.RoleService.roleToRoleDTO(r)),
20
+ username: userDoc.username,
21
+ timezone: userDoc.timezone,
22
+ ...(userDoc.lastLogin && { lastLogin: userDoc.lastLogin.toString() }),
23
+ emailVerified: userDoc.emailVerified,
24
+ siteLanguage: userDoc.siteLanguage,
25
+ };
26
+ }
27
+ /**
28
+ * Given a request user, reconstitute dates, objectids, and enums
29
+ * @param requestUser a RequestUser DTO
30
+ * @returns An IRequestUserBackendObject
31
+ */
32
+ static hydrateRequestUser(requestUser) {
33
+ const hydratedRoles = requestUser.roles.map((role) => role_1.RoleService.hydrateRoleDTOToBackend(role));
34
+ const hydratedUser = {
35
+ id: new mongoose_1.Types.ObjectId(requestUser.id),
36
+ email: requestUser.email,
37
+ roles: hydratedRoles,
38
+ username: requestUser.username,
39
+ timezone: requestUser.timezone,
40
+ emailVerified: requestUser.emailVerified,
41
+ siteLanguage: requestUser.siteLanguage,
42
+ };
43
+ if (requestUser.lastLogin) {
44
+ hydratedUser.lastLogin = new Date(requestUser.lastLogin);
45
+ }
46
+ return hydratedUser;
47
+ }
48
+ }
49
+ exports.RequestUserService = RequestUserService;
50
+ //# sourceMappingURL=request-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-user.js","sourceRoot":"","sources":["../../src/services/request-user.ts"],"names":[],"mappings":";;;AACA,uCAAiC;AAGjC,iCAAqC;AAErC,MAAa,kBAAkB;IAC7B;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAI9B,OAAsB,EAAE,KAAmB;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACrD,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrE,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,YAAY,EAAE,OAAO,CAAC,YAAsB;SAC1B,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAG9B,WAA4B;QAC5B,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnD,kBAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAC1C,CAAC;QAEF,MAAM,YAAY,GAAiC;YACjD,EAAE,EAAE,IAAI,gBAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,YAAY,EAAE,WAAW,CAAC,YAAY;SACvC,CAAC;QAEF,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;YAC1B,YAAY,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAvDD,gDAuDC"}
@@ -0,0 +1,85 @@
1
+ import { MemberType } from '@digitaldefiance/ecies-lib';
2
+ import { IRoleBase, ITokenRole, ITokenRoleDTO, Role } from '@digitaldefiance/suite-core-lib';
3
+ import { ClientSession, Types } from 'mongoose';
4
+ import { IUserDocument } from '../documents';
5
+ import { IRoleDocument } from '../documents/role';
6
+ import { IUserRoleDocument } from '../documents/user-role';
7
+ import { IApplication } from '../interfaces/application';
8
+ import { IRoleBackendObject } from '../interfaces/backend-objects/role';
9
+ import { BaseService } from './base';
10
+ /**
11
+ * Service for managing roles
12
+ */
13
+ export declare class RoleService<I = Types.ObjectId, D extends Date = Date, TTokenRole extends ITokenRole<I, D> = ITokenRole<I, D>> extends BaseService {
14
+ /**
15
+ * Constructor for the role service
16
+ * @param application The application object
17
+ */
18
+ constructor(application: IApplication);
19
+ static roleToRoleDTO<I = Types.ObjectId, D extends Date = Date>(role: ITokenRole<I, D> | IRoleDocument | Partial<IRoleBase<I>>): ITokenRoleDTO;
20
+ /**
21
+ * Given a Role DTO, reconstitute ids and dates
22
+ * @param role The Role DTO
23
+ * @returns An IRoleBackendObject
24
+ */
25
+ static hydrateRoleDTOToBackend(role: ITokenRoleDTO): IRoleBackendObject;
26
+ /**
27
+ * Gets the role ID by name
28
+ * @param roleName The name of the role
29
+ * @returns The role ID or null if not found
30
+ */
31
+ getRoleIdByName(roleName: Role, session?: ClientSession): Promise<Types.ObjectId | null>;
32
+ /**
33
+ * Creates a new role
34
+ * @param roleData The role data
35
+ * @param session Optional mongoose session
36
+ * @returns The created role document
37
+ */
38
+ createRole(roleData: IRoleBase<Types.ObjectId, Date, Role>, session?: ClientSession | null): Promise<IRoleDocument>;
39
+ /**
40
+ * Adds a user to a role
41
+ * @param roleId - The role id
42
+ * @param userId - The user id
43
+ * @param createdBy - The user creating the relationship
44
+ * @param session Optional mongoose session
45
+ */
46
+ addUserToRole(roleId: Types.ObjectId, userId: Types.ObjectId, createdBy: Types.ObjectId, session?: ClientSession, overrideId?: Types.ObjectId): Promise<IUserRoleDocument>;
47
+ /**
48
+ * Removes a user from a role
49
+ * @param roleId - The role id
50
+ * @param userId - The user id
51
+ * @param deletedBy - The user removing the relationship
52
+ * @param session Optional mongoose session
53
+ */
54
+ removeUserFromRole(roleId: Types.ObjectId, userId: Types.ObjectId, deletedBy: Types.ObjectId, session?: ClientSession): Promise<void>;
55
+ /**
56
+ * Deletes a role by ID
57
+ * @param roleId The role ID
58
+ * @param deleter The ID of the user deleting the role
59
+ * @param hardDelete Whether to hard delete the role
60
+ * @param session Optional mongoose session
61
+ */
62
+ deleteRole(roleId: Types.ObjectId, deleter: Types.ObjectId, hardDelete: boolean, session?: ClientSession): Promise<void>;
63
+ /**
64
+ * Gets all roles for a user
65
+ * @param userId The user ID
66
+ * @param session Optional mongoose session
67
+ * @returns The roles the user is a member of
68
+ */
69
+ getUserRoles(userId: Types.ObjectId, session?: ClientSession): Promise<IRoleDocument[]>;
70
+ /**
71
+ * Gets all users for a role
72
+ * @param roleId The role ID
73
+ * @param session Optional mongoose session
74
+ * @returns The user IDs that are members of the role
75
+ */
76
+ getRoleUsers(roleId: Types.ObjectId, session?: ClientSession): Promise<Types.ObjectId[]>;
77
+ /** Convert roles to translated TokenRoles */
78
+ rolesToTokenRoles(roles: Array<IRoleBackendObject>, overrideLanguage?: string): Array<TTokenRole>;
79
+ isUserAdmin(userDoc: IUserDocument, session?: ClientSession, providedRoles?: Array<IRoleDocument>): Promise<boolean>;
80
+ isUserMember(userDoc: IUserDocument, session?: ClientSession, providedRoles?: Array<IRoleDocument>): Promise<boolean>;
81
+ isUserChild(userDoc: IUserDocument, session?: ClientSession, providedRoles?: Array<IRoleDocument>): Promise<boolean>;
82
+ isSuiteCore(userDoc: IUserDocument, session?: ClientSession, providedRoles?: Array<IRoleDocument>): Promise<boolean>;
83
+ getMemberType(userDoc: IUserDocument, session?: ClientSession, providedRoles?: Array<IRoleDocument>): Promise<MemberType>;
84
+ }
85
+ //# sourceMappingURL=role.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/services/role.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoleService = void 0;
4
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
5
+ const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
6
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
7
+ const mongoose_1 = require("mongoose");
8
+ const base_model_name_1 = require("../enumerations/base-model-name");
9
+ const model_registry_1 = require("../model-registry");
10
+ const utils_1 = require("../utils");
11
+ const base_1 = require("./base");
12
+ /**
13
+ * Service for managing roles
14
+ */
15
+ class RoleService extends base_1.BaseService {
16
+ /**
17
+ * Constructor for the role service
18
+ * @param application The application object
19
+ */
20
+ constructor(application) {
21
+ super(application);
22
+ }
23
+ static roleToRoleDTO(role) {
24
+ return {
25
+ ...(role instanceof mongoose_1.Document ? role.toObject() : role),
26
+ _id: (role._id instanceof mongoose_1.Types.ObjectId
27
+ ? role._id.toString()
28
+ : role._id),
29
+ translatedName: 'translatedName' in role ? role.translatedName : role.name,
30
+ createdBy: (role.createdBy instanceof Date
31
+ ? role.createdBy.toString()
32
+ : role.createdBy),
33
+ updatedBy: (role.updatedBy instanceof Date
34
+ ? role.updatedBy.toString()
35
+ : role.updatedBy),
36
+ ...(role.deletedBy
37
+ ? {
38
+ deletedBy: (role.deletedBy instanceof Date
39
+ ? role.deletedBy.toString()
40
+ : role.deletedBy),
41
+ }
42
+ : {}),
43
+ };
44
+ }
45
+ /**
46
+ * Given a Role DTO, reconstitute ids and dates
47
+ * @param role The Role DTO
48
+ * @returns An IRoleBackendObject
49
+ */
50
+ static hydrateRoleDTOToBackend(role) {
51
+ return {
52
+ ...(0, utils_1.omit)(role, [
53
+ 'translatedName',
54
+ ]),
55
+ _id: new mongoose_1.Types.ObjectId(role._id),
56
+ name: role.name,
57
+ createdAt: new Date(role.createdAt),
58
+ createdBy: new mongoose_1.Types.ObjectId(role.createdBy),
59
+ updatedAt: new Date(role.updatedAt),
60
+ updatedBy: new mongoose_1.Types.ObjectId(role.updatedBy),
61
+ ...(role.deletedAt ? { deletedAt: new Date(role.deletedAt) } : {}),
62
+ ...(role.deletedBy
63
+ ? {
64
+ deletedBy: new mongoose_1.Types.ObjectId(role.deletedBy),
65
+ }
66
+ : {}),
67
+ };
68
+ }
69
+ /**
70
+ * Gets the role ID by name
71
+ * @param roleName The name of the role
72
+ * @returns The role ID or null if not found
73
+ */
74
+ async getRoleIdByName(roleName, session) {
75
+ const RoleModel = model_registry_1.ModelRegistry.instance.get('Role').model;
76
+ const role = await RoleModel.findOne({ name: roleName }, undefined, {
77
+ session,
78
+ }).select('_id');
79
+ if (!role) {
80
+ return null;
81
+ }
82
+ return role._id;
83
+ }
84
+ /**
85
+ * Creates a new role
86
+ * @param roleData The role data
87
+ * @param session Optional mongoose session
88
+ * @returns The created role document
89
+ */
90
+ async createRole(roleData, session) {
91
+ const RoleModel = model_registry_1.ModelRegistry.instance.get('Role').model;
92
+ const role = new RoleModel(roleData);
93
+ const savedRole = await role.save(session ? { session } : {});
94
+ return savedRole;
95
+ }
96
+ /**
97
+ * Adds a user to a role
98
+ * @param roleId - The role id
99
+ * @param userId - The user id
100
+ * @param createdBy - The user creating the relationship
101
+ * @param session Optional mongoose session
102
+ */
103
+ async addUserToRole(roleId, userId, createdBy, session, overrideId) {
104
+ const UserRoleModel = model_registry_1.ModelRegistry.instance.get('UserRole').model;
105
+ // Check if the user-role relationship already exists (and is not deleted)
106
+ const existingUserRole = await UserRoleModel.findOne({
107
+ userId,
108
+ roleId,
109
+ deletedAt: { $exists: false },
110
+ }).session(session ?? null);
111
+ if (existingUserRole) {
112
+ // Relationship already exists, no need to create it again
113
+ return existingUserRole;
114
+ }
115
+ const userRole = new UserRoleModel({
116
+ ...(overrideId ? { _id: overrideId } : {}),
117
+ userId,
118
+ roleId,
119
+ createdBy,
120
+ updatedBy: createdBy,
121
+ });
122
+ const result = await userRole.save({ session });
123
+ return result;
124
+ }
125
+ /**
126
+ * Removes a user from a role
127
+ * @param roleId - The role id
128
+ * @param userId - The user id
129
+ * @param deletedBy - The user removing the relationship
130
+ * @param session Optional mongoose session
131
+ */
132
+ async removeUserFromRole(roleId, userId, deletedBy, session) {
133
+ const UserRoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.UserRole).model;
134
+ await UserRoleModel.findOneAndUpdate({ userId, roleId, deletedAt: { $exists: false } }, { deletedAt: new Date(), deletedBy }, { session });
135
+ }
136
+ /**
137
+ * Deletes a role by ID
138
+ * @param roleId The role ID
139
+ * @param deleter The ID of the user deleting the role
140
+ * @param hardDelete Whether to hard delete the role
141
+ * @param session Optional mongoose session
142
+ */
143
+ async deleteRole(roleId, deleter, hardDelete, session) {
144
+ const RoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.Role).model;
145
+ if (hardDelete) {
146
+ await RoleModel.findByIdAndDelete(roleId).session(session ?? null);
147
+ }
148
+ else {
149
+ await RoleModel.findByIdAndUpdate(roleId, {
150
+ deletedAt: new Date(),
151
+ deletedBy: deleter,
152
+ }).session(session ?? null);
153
+ }
154
+ }
155
+ /**
156
+ * Gets all roles for a user
157
+ * @param userId The user ID
158
+ * @param session Optional mongoose session
159
+ * @returns The roles the user is a member of
160
+ */
161
+ async getUserRoles(userId, session) {
162
+ const UserRoleModel = model_registry_1.ModelRegistry.instance.get('UserRole').model;
163
+ const RoleModel = model_registry_1.ModelRegistry.instance.get('Role').model;
164
+ if (!UserRoleModel || !RoleModel)
165
+ throw new Error('Model not registered');
166
+ // Return full documents
167
+ const userRoles = await UserRoleModel.find({
168
+ userId,
169
+ deletedAt: { $exists: false },
170
+ })
171
+ .select('roleId')
172
+ .session(session ?? null);
173
+ const roleIds = userRoles.map((ur) => ur.roleId);
174
+ return await RoleModel.find({
175
+ _id: { $in: roleIds },
176
+ deletedAt: { $exists: false },
177
+ }).session(session ?? null);
178
+ }
179
+ /**
180
+ * Gets all users for a role
181
+ * @param roleId The role ID
182
+ * @param session Optional mongoose session
183
+ * @returns The user IDs that are members of the role
184
+ */
185
+ async getRoleUsers(roleId, session) {
186
+ const UserRoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.UserRole).model;
187
+ // Return full documents
188
+ const userRoles = await UserRoleModel.find({
189
+ roleId,
190
+ deletedAt: { $exists: false },
191
+ })
192
+ .select('userId')
193
+ .session(session ?? null);
194
+ return userRoles.map((ur) => ur.userId);
195
+ }
196
+ /** Convert roles to translated TokenRoles */
197
+ rolesToTokenRoles(roles, overrideLanguage) {
198
+ return roles.map((role) => {
199
+ const engine = i18n_lib_1.PluginI18nEngine.getInstance();
200
+ const userLang = i18n_lib_1.GlobalActiveContext.getInstance().userLanguage;
201
+ const lang = (overrideLanguage || userLang || 'en-US');
202
+ const roleTranslation = engine.translateEnum(suite_core_lib_1.Role, role.name, lang);
203
+ return {
204
+ ...role,
205
+ translatedName: roleTranslation,
206
+ };
207
+ });
208
+ }
209
+ async isUserAdmin(userDoc, session, providedRoles) {
210
+ const roles = providedRoles ?? (await this.getUserRoles(userDoc._id, session));
211
+ if (roles.filter((r) => r.admin).length > 0) {
212
+ return true;
213
+ }
214
+ return false;
215
+ }
216
+ async isUserMember(userDoc, session, providedRoles) {
217
+ const roles = providedRoles ?? (await this.getUserRoles(userDoc._id, session));
218
+ if (roles.filter((r) => r.member).length > 0) {
219
+ return true;
220
+ }
221
+ return false;
222
+ }
223
+ async isUserChild(userDoc, session, providedRoles) {
224
+ const roles = providedRoles ?? (await this.getUserRoles(userDoc._id, session));
225
+ if (roles.filter((r) => r.child).length > 0) {
226
+ return true;
227
+ }
228
+ return false;
229
+ }
230
+ async isSuiteCore(userDoc, session, providedRoles) {
231
+ const roles = providedRoles ?? (await this.getUserRoles(userDoc._id, session));
232
+ if (roles.filter((r) => r.system).length > 0) {
233
+ return true;
234
+ }
235
+ return false;
236
+ }
237
+ async getMemberType(userDoc, session, providedRoles) {
238
+ const roles = providedRoles ?? (await this.getUserRoles(userDoc._id, session));
239
+ if (await this.isSuiteCore(userDoc, session, roles)) {
240
+ return ecies_lib_1.MemberType.System;
241
+ }
242
+ else if (await this.isUserAdmin(userDoc, session, roles)) {
243
+ return ecies_lib_1.MemberType.Admin;
244
+ }
245
+ else if (await this.isUserMember(userDoc, session, roles)) {
246
+ return ecies_lib_1.MemberType.User;
247
+ }
248
+ else {
249
+ return ecies_lib_1.MemberType.Anonymous;
250
+ }
251
+ }
252
+ }
253
+ exports.RoleService = RoleService;
254
+ //# sourceMappingURL=role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/services/role.ts"],"names":[],"mappings":";;;AAAA,0DAAwD;AACxD,wDAImC;AACnC,oEAOyC;AACzC,uCAA0D;AAI1D,qEAAgE;AAGhE,sDAAkD;AAClD,oCAAgC;AAChC,iCAAqC;AAErC;;GAEG;AACH,MAAa,WAIX,SAAQ,kBAAW;IACnB;;;OAGG;IACH,YAAY,WAAyB;QACnC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,aAAa,CACzB,IAA8D;QAE9D,OAAO;YACL,GAAG,CAAC,IAAI,YAAY,mBAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,YAAY,gBAAK,CAAC,QAAQ;gBACtC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;gBACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAW;YACvB,cAAc,EACZ,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;YAC5D,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,YAAY,IAAI;gBACxC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAW;YAC7B,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,YAAY,IAAI;gBACxC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAW;YAC7B,GAAG,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC;oBACE,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,YAAY,IAAI;wBACxC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;wBAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAW;iBAC9B;gBACH,CAAC,CAAC,EAAE,CAAC;SACS,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,uBAAuB,CACnC,IAAmB;QAEnB,OAAO;YACL,GAAI,IAAA,YAAI,EAAkC,IAAI,EAAE;gBAC9C,gBAAgB;aACjB,CAAc;YACf,GAAG,EAAE,IAAI,gBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,IAAY;YACvB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACnC,SAAS,EAAE,IAAI,gBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7C,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACnC,SAAS,EAAE,IAAI,gBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC;oBACE,SAAS,EAAE,IAAI,gBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC9C;gBACH,CAAC,CAAC,EAAE,CAAC;SACc,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,eAAe,CAC1B,QAAc,EACd,OAAuB;QAEvB,MAAM,SAAS,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAG1C,MAAM,CAAC,CAAC,KAAK,CAAC;QAChB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE;YAClE,OAAO;SACR,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,UAAU,CACrB,QAA+C,EAC/C,OAA8B;QAE9B,MAAM,SAAS,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAG1C,MAAM,CAAC,CAAC,KAAK,CAAC;QAChB,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,aAAa,CACxB,MAAsB,EACtB,MAAsB,EACtB,SAAyB,EACzB,OAAuB,EACvB,UAA2B;QAE3B,MAAM,aAAa,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAG9C,UAAU,CAAC,CAAC,KAAK,CAAC;QAEpB,0EAA0E;QAC1E,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC;YACnD,MAAM;YACN,MAAM;YACN,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAC9B,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAE5B,IAAI,gBAAgB,EAAE,CAAC;YACrB,0DAA0D;YAC1D,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC;YACjC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,kBAAkB,CAC7B,MAAsB,EACtB,MAAsB,EACtB,SAAyB,EACzB,OAAuB;QAEvB,MAAM,aAAa,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAG9C,+BAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;QAChC,MAAM,aAAa,CAAC,gBAAgB,CAClC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EACjD,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,EACpC,EAAE,OAAO,EAAE,CACZ,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,UAAU,CACrB,MAAsB,EACtB,OAAuB,EACvB,UAAmB,EACnB,OAAuB;QAEvB,MAAM,SAAS,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAG1C,+BAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QAC5B,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE;gBACxC,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,OAAO;aACnB,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CACvB,MAAsB,EACtB,OAAuB;QAEvB,MAAM,aAAa,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAG9C,UAAU,CAAC,CAAC,KAAK,CAAC;QACpB,MAAM,SAAS,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAG1C,MAAM,CAAC,CAAC,KAAK,CAAC;QAChB,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAE1E,wBAAwB;QACxB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;YACzC,MAAM;YACN,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAC9B,CAAC;aACC,MAAM,CAAC,QAAQ,CAAC;aAChB,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAE5B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC;YAC1B,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;YACrB,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAC9B,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CACvB,MAAsB,EACtB,OAAuB;QAEvB,MAAM,aAAa,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAG9C,+BAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;QAEhC,wBAAwB;QACxB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;YACzC,MAAM;YACN,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAC9B,CAAC;aACC,MAAM,CAAC,QAAQ,CAAC;aAChB,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAE5B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,6CAA6C;IACtC,iBAAiB,CACtB,KAAgC,EAChC,gBAAyB;QAEzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,2BAAgB,CAAC,WAAW,EAAU,CAAC;YACtD,MAAM,QAAQ,GAAG,8BAAmB,CAAC,WAAW,EAG7C,CAAC,YAAY,CAAC;YACjB,MAAM,IAAI,GAAG,CAAC,gBAAgB,IAAI,QAAQ,IAAI,OAAO,CAAW,CAAC;YACjE,MAAM,eAAe,GAAG,MAAM,CAAC,aAAa,CAAC,qBAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpE,OAAO;gBACL,GAAG,IAAI;gBACP,cAAc,EAAE,eAAe;aAClB,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,OAAsB,EACtB,OAAuB,EACvB,aAAoC;QAEpC,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,OAAsB,EACtB,OAAuB,EACvB,aAAoC;QAEpC,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,OAAsB,EACtB,OAAuB,EACvB,aAAoC;QAEpC,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,OAAsB,EACtB,OAAuB,EACvB,aAAoC;QAEpC,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,OAAsB,EACtB,OAAuB,EACvB,aAAoC;QAEpC,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,sBAAU,CAAC,MAAM,CAAC;QAC3B,CAAC;aAAM,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,sBAAU,CAAC,KAAK,CAAC;QAC1B,CAAC;aAAM,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,sBAAU,CAAC,IAAI,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,sBAAU,CAAC,SAAS,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AA9VD,kCA8VC"}
@@ -0,0 +1,42 @@
1
+ import { IECIESConstants } from '@digitaldefiance/ecies-lib';
2
+ import { ISymmetricEncryptionResults } from '../interfaces/symmetric-encryption-results';
3
+ /**
4
+ * Service for handling symmetric encryption operations.
5
+ * This service provides functionality for:
6
+ * - AES encryption/decryption of buffers and JSON data
7
+ * - Key and IV generation
8
+ * - Secure cryptographic operations
9
+ */
10
+ export declare class SymmetricService {
11
+ static symmetricKeyBits(eciesConstants?: IECIESConstants): number;
12
+ static symmetricKeyBytes(eciesConstants?: IECIESConstants): number;
13
+ /**
14
+ * Encrypt data with AES
15
+ * @param data The data to encrypt
16
+ * @param encryptionKey Optional encryption key (will be randomly generated if not provided)
17
+ * @returns Object containing encrypted data and key
18
+ */
19
+ static encryptBuffer(data: Buffer, encryptionKey?: Buffer, eciesConstants?: IECIESConstants): ISymmetricEncryptionResults;
20
+ /**
21
+ * Decrypt the given buffer with AES
22
+ * @param encryptedData The encrypted data to decrypt
23
+ * @param key The key to use for decryption
24
+ * @returns Decrypted data as a Buffer
25
+ */
26
+ static decryptBuffer(encryptedData: Buffer, key: Buffer, eciesConstants?: IECIESConstants): Buffer;
27
+ /**
28
+ * Encrypt JSON data with AES
29
+ * @param data The data to encrypt
30
+ * @param encryptionKey Optional encryption key (will be randomly generated if not provided)
31
+ * @returns Object containing encrypted data and key
32
+ */
33
+ static encryptJson<T>(data: T, encryptionKey?: Buffer): ISymmetricEncryptionResults;
34
+ /**
35
+ * Decrypt the given buffer with AES and parse as JSON
36
+ * @param encryptedData The encrypted data to decrypt
37
+ * @param key The key to use for decryption
38
+ * @returns Decrypted data parsed as type T
39
+ */
40
+ static decryptJson<T>(encryptedData: Buffer, key: Buffer): T;
41
+ }
42
+ //# sourceMappingURL=symmetric.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symmetric.d.ts","sourceRoot":"","sources":["../../src/services/symmetric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAMzF;;;;;;GAMG;AACH,qBAAa,gBAAgB;WACb,gBAAgB,CAC5B,cAAc,GAAE,eAAuB,GACtC,MAAM;WAIK,iBAAiB,CAC7B,cAAc,GAAE,eAAuB,GACtC,MAAM;IAIT;;;;;OAKG;WACW,aAAa,CACzB,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,EACtB,cAAc,GAAE,eAAuB,GACtC,2BAA2B;IAmC9B;;;;;OAKG;WACW,aAAa,CACzB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,cAAc,GAAE,eAAuB,GACtC,MAAM;IAmBT;;;;;OAKG;WACW,WAAW,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,EACP,aAAa,CAAC,EAAE,MAAM,GACrB,2BAA2B;IAc9B;;;;;OAKG;WACW,WAAW,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;CAKpE"}