@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
@@ -1,83 +0,0 @@
1
- /**
2
- * @fileoverview Service for managing direct login token usage and preventing token reuse.
3
- * Tracks used tokens in the database to ensure one-time use security.
4
- * @module services/direct-login-token
5
- */
6
-
7
- import { ClientSession } from '@digitaldefiance/mongoose-types';
8
- import {
9
- DirectTokenUsedError,
10
- FailedToUseDirectTokenError,
11
- IUsedDirectLoginTokenBase,
12
- } from '@digitaldefiance/suite-core-lib';
13
- import { BaseModelName } from '../enumerations/base-model-name';
14
- import { IApplication } from '../interfaces/application';
15
- import { ModelRegistry } from '../model-registry';
16
- import { withTransaction } from '../utils';
17
- import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
18
-
19
- /**
20
- * Service for managing direct login token usage.
21
- * Ensures tokens can only be used once by tracking them in the database.
22
- */
23
- export abstract class DirectLoginTokenService {
24
- /**
25
- * Marks a direct login token as used in the database.
26
- * Prevents token reuse by checking for existing usage and creating a new record.
27
- * @template TID Platform-specific ID type
28
- * @param app Application instance with database connection
29
- * @param userId User ID associated with the token
30
- * @param token Direct login token to mark as used
31
- * @param session Optional MongoDB session for transaction support
32
- * @returns Promise that resolves when token is successfully marked as used
33
- * @throws {DirectTokenUsedError} If token has already been used
34
- * @throws {FailedToUseDirectTokenError} If token creation fails
35
- */
36
- public static async useToken<TID extends PlatformID = Buffer>(
37
- app: IApplication<TID>,
38
- userId: TID,
39
- token: string,
40
- session?: ClientSession,
41
- ): Promise<void> {
42
- return withTransaction(
43
- app.db.connection,
44
- app.environment.mongo.useTransactions,
45
- session,
46
- async (sess) => {
47
- const UsedDirectLoginTokenModel = ModelRegistry.instance.get<
48
- IUsedDirectLoginTokenBase<TID>,
49
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
- any
51
- >(BaseModelName.UsedDirectLoginToken).model;
52
- const tokenExists = await UsedDirectLoginTokenModel.exists({
53
- userId,
54
- token,
55
- }).session(sess ?? null);
56
- if (tokenExists) {
57
- throw new DirectTokenUsedError();
58
- }
59
- try {
60
- const newTokens = await UsedDirectLoginTokenModel.create(
61
- [{ userId, token }],
62
- {
63
- session: sess,
64
- },
65
- );
66
- if (newTokens.length !== 1) {
67
- throw new FailedToUseDirectTokenError();
68
- }
69
- } catch (err) {
70
- // re-throw FailedToUseDirectTokenError
71
- if (err instanceof FailedToUseDirectTokenError) {
72
- throw err;
73
- }
74
- // throw FailedToUseDirectTokenError on duplicate key error or other errors
75
- throw new FailedToUseDirectTokenError();
76
- }
77
- },
78
- {
79
- timeoutMs: app.environment.mongo.transactionTimeout,
80
- },
81
- );
82
- }
83
- }
@@ -1,43 +0,0 @@
1
- /**
2
- * @fileoverview Dummy email service for testing.
3
- * No-op implementation of IEmailService for development and testing.
4
- * @module services/dummy-email-service
5
- */
6
-
7
- import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
8
- import { IApplication, IEmailService } from '../interfaces';
9
-
10
- /**
11
- * Dummy email service that does nothing.
12
- * Primarily for testing and development environments.
13
- * @template TID - Platform ID type (defaults to Buffer)
14
- * @template TApplication - Application type (defaults to IApplication<TID>)
15
- */
16
- export class DummyEmailService<
17
- TID extends PlatformID = Buffer,
18
- TApplication extends IApplication<TID> = IApplication<TID>,
19
- > implements IEmailService {
20
- /**
21
- * Creates a new dummy email service.
22
- * @param {TApplication} _application - Application instance (unused)
23
- */
24
- constructor(_application: TApplication) {}
25
-
26
- /**
27
- * Sends an email (no-op implementation).
28
- * @param {string} _to - Recipient email address
29
- * @param {string} _subject - Email subject
30
- * @param {string} _text - Plain text body
31
- * @param {string} _html - HTML body
32
- * @returns {Promise<void>} Resolves immediately
33
- */
34
- public async sendEmail(
35
- _to: string,
36
- _subject: string,
37
- _text: string,
38
- _html: string,
39
- ): Promise<void> {
40
- // Do nothing
41
- return;
42
- }
43
- }
@@ -1,123 +0,0 @@
1
- /**
2
- * @fileoverview Example usage patterns for the Forward Error Correction (FEC) service.
3
- * @module services/fec-usage-example
4
- */
5
-
6
- import { FecService } from './fec';
7
-
8
- /**
9
- * Example usage of the adapted FEC service for filesystem/S3 objects.
10
- * Demonstrates creating parity data, recovering corrupted files, and verifying integrity.
11
- */
12
- export class FecUsageExample {
13
- private fecService = new FecService();
14
-
15
- /**
16
- * Creates parity data for a file and returns it for separate storage.
17
- *
18
- * @param fileData - Original file data to protect
19
- * @param parityCount - Number of parity blocks to create (default: 2)
20
- * @returns Object containing original data, parity data, and original size
21
- */
22
- async createFileWithParity(fileData: Buffer, parityCount: number = 2) {
23
- // Create parity data
24
- const parityData = await this.fecService.createParityData(
25
- fileData,
26
- parityCount,
27
- );
28
-
29
- // In a real implementation, you would:
30
- // 1. Store the original file (e.g., to S3 as "file.dat")
31
- // 2. Store each parity data separately (e.g., "file.dat.parity.0", "file.dat.parity.1")
32
- // 3. Store metadata about the original file size
33
-
34
- return {
35
- originalData: fileData,
36
- parityData,
37
- originalSize: fileData.length,
38
- };
39
- }
40
-
41
- /**
42
- * Recovers a corrupted file using parity data.
43
- *
44
- * @param parityData - Array of parity blocks with their indices
45
- * @param originalSize - Original file size in bytes
46
- * @returns Recovered file data
47
- * @throws Error if file recovery fails
48
- */
49
- async recoverCorruptedFile(
50
- parityData: Array<{ data: Buffer; index: number }>,
51
- originalSize: number,
52
- ) {
53
- // Attempt recovery (pass null for corrupted data)
54
- const result = await this.fecService.recoverFileData(
55
- null, // corrupted data
56
- parityData,
57
- originalSize,
58
- );
59
-
60
- if (result.recovered) {
61
- console.log('File successfully recovered!');
62
- return result.data;
63
- } else {
64
- throw new Error('File recovery failed');
65
- }
66
- }
67
-
68
- /**
69
- * Verifies file integrity using parity data.
70
- *
71
- * @param fileData - File data to verify
72
- * @param parityData - Array of parity blocks with their indices
73
- * @returns True if file integrity is valid, false otherwise
74
- */
75
- async verifyFile(
76
- fileData: Buffer,
77
- parityData: Array<{ data: Buffer; index: number }>,
78
- ): Promise<boolean> {
79
- return await this.fecService.verifyFileIntegrity(fileData, parityData);
80
- }
81
-
82
- /**
83
- * Demonstrates a complete FEC workflow including creation, verification, corruption, and recovery.
84
- *
85
- * @returns Object containing original file, recovered file, parity data, and recovery status
86
- */
87
- async demonstrateWorkflow() {
88
- // Original file data
89
- const originalFile = Buffer.from(
90
- 'This is important file data that needs protection!',
91
- );
92
-
93
- // Step 1: Create parity data
94
- console.log('Creating parity data...');
95
- const { parityData, originalSize } = await this.createFileWithParity(
96
- originalFile,
97
- 2,
98
- );
99
-
100
- // Step 2: Verify integrity
101
- console.log('Verifying file integrity...');
102
- const isValid = await this.verifyFile(originalFile, parityData);
103
- console.log('File integrity check:', isValid ? 'PASSED' : 'FAILED');
104
-
105
- // Step 3: Simulate file corruption and recovery
106
- console.log('Simulating file corruption and recovery...');
107
- const recoveredFile = await this.recoverCorruptedFile(
108
- parityData,
109
- originalSize,
110
- );
111
-
112
- // Step 4: Verify recovery
113
- const recoverySuccessful = originalFile.equals(recoveredFile);
114
- console.log('Recovery successful:', recoverySuccessful ? 'YES' : 'NO');
115
-
116
- return {
117
- originalFile,
118
- recoveredFile,
119
- parityData,
120
- recoverySuccessful,
121
- };
122
- }
123
- }
@@ -1,399 +0,0 @@
1
- /**
2
- * @fileoverview Forward Error Correction (FEC) service using Reed-Solomon erasure coding.
3
- * Provides parity data creation, file recovery, and integrity verification for distributed storage.
4
- * @module services/fec
5
- */
6
-
7
- import { FecError, FecErrorType } from '@digitaldefiance/suite-core-lib';
8
- import { ReedSolomonErasure } from '@subspace/reed-solomon-erasure.wasm';
9
- import { FEC } from '../constants';
10
- import { IFECConsts } from '../interfaces';
11
-
12
- /**
13
- * FecService provides Forward Error Correction (FEC) functionality for filesystem/S3 objects.
14
- * This service is used to:
15
- * 1. Create parity data for file recovery
16
- * 2. Recover corrupted files using parity data
17
- * 3. Ensure data integrity across distributed storage
18
- *
19
- * This implementation uses Reed-Solomon erasure coding to:
20
- * 1. Split file data into shards
21
- * 2. Create parity shards
22
- * 3. Recover lost shards using parity
23
- */
24
-
25
- /**
26
- * Represents parity data for a specific shard index.
27
- */
28
- export interface ParityData {
29
- /** Parity data buffer */
30
- data: Buffer;
31
- /** Index of the parity shard */
32
- index: number;
33
- }
34
-
35
- /**
36
- * Result of a file recovery operation.
37
- */
38
- export interface RecoveryResult {
39
- /** Recovered file data */
40
- data: Buffer;
41
- /** Whether parity data was used for recovery */
42
- recovered: boolean;
43
- }
44
-
45
- export class FecService {
46
- /**
47
- * Encodes data using Reed-Solomon erasure coding.
48
- * @param data Data buffer to encode
49
- * @param shardSize Size of each shard in bytes
50
- * @param dataShards Number of data shards
51
- * @param parityShards Number of parity shards
52
- * @param fecOnly If true, returns only parity shards; otherwise returns all shards
53
- * @param fecConstants FEC constants (defaults to FEC)
54
- * @returns Encoded buffer containing shards
55
- * @throws {FecError} If parameters are invalid or encoding fails
56
- */
57
- public async encode(
58
- data: Buffer,
59
- shardSize: number,
60
- dataShards: number,
61
- parityShards: number,
62
- fecOnly: boolean,
63
- fecConstants: IFECConsts = FEC,
64
- ): Promise<Buffer> {
65
- // Validate parameters
66
- if (!data || data.length === 0) {
67
- throw new FecError(FecErrorType.DataRequired);
68
- }
69
-
70
- if (data.length !== shardSize * dataShards) {
71
- throw new FecError(FecErrorType.InvalidDataLength, undefined, {
72
- LENGTH: data.length.toString(),
73
- EXPECTED: (shardSize * dataShards).toString(),
74
- });
75
- }
76
-
77
- if (shardSize > fecConstants.MAX_SHARD_SIZE) {
78
- throw new FecError(FecErrorType.ShardSizeExceedsMaximum, undefined, {
79
- SIZE: shardSize.toString(),
80
- MAXIMUM: fecConstants.MAX_SHARD_SIZE.toString(),
81
- });
82
- }
83
-
84
- if (dataShards <= 0 || parityShards <= 0) {
85
- throw new FecError(FecErrorType.InvalidShardCounts);
86
- }
87
-
88
- try {
89
- const shards = new Uint8Array(shardSize * (dataShards + parityShards));
90
- shards.set(new Uint8Array(data));
91
-
92
- // Encoding
93
- const reedSolomonErasure =
94
- await ReedSolomonErasure.fromCurrentDirectory();
95
- reedSolomonErasure.encode(shards, dataShards, parityShards);
96
-
97
- return fecOnly
98
- ? Buffer.from(shards.subarray(shardSize * dataShards))
99
- : Buffer.from(shards);
100
- } catch (error) {
101
- throw new FecError(FecErrorType.FecEncodingFailed, undefined, {
102
- ERROR: error instanceof Error ? error.message : 'Unknown error',
103
- });
104
- }
105
- }
106
-
107
- /**
108
- * Decodes/reconstructs data using Reed-Solomon erasure coding.
109
- * @param data Encoded data buffer containing all shards
110
- * @param shardSize Size of each shard in bytes
111
- * @param dataShards Number of data shards
112
- * @param parityShards Number of parity shards
113
- * @param shardsAvailable Boolean array indicating which shards are available
114
- * @returns Reconstructed data buffer
115
- * @throws {FecError} If parameters are invalid or decoding fails
116
- */
117
- public async decode(
118
- data: Buffer,
119
- shardSize: number,
120
- dataShards: number,
121
- parityShards: number,
122
- shardsAvailable: boolean[],
123
- ): Promise<Buffer> {
124
- // Validate parameters
125
- if (!data || data.length === 0) {
126
- throw new FecError(FecErrorType.DataRequired);
127
- }
128
-
129
- if (data.length !== shardSize * (dataShards + parityShards)) {
130
- throw new FecError(FecErrorType.InvalidDataLength, undefined, {
131
- LENGTH: data.length.toString(),
132
- EXPECTED: (shardSize * (dataShards + parityShards)).toString(),
133
- });
134
- }
135
-
136
- if (
137
- !shardsAvailable ||
138
- shardsAvailable.length !== dataShards + parityShards
139
- ) {
140
- throw new FecError(FecErrorType.InvalidShardsAvailableArray);
141
- }
142
-
143
- const availableCount = shardsAvailable.filter((x) => x).length;
144
- if (availableCount < dataShards) {
145
- throw new FecError(FecErrorType.NotEnoughShardsAvailable, undefined, {
146
- AVAILABLE: availableCount.toString(),
147
- REQUIRED: dataShards.toString(),
148
- });
149
- }
150
-
151
- try {
152
- const uint8Data = new Uint8Array(data);
153
- const reedSolomonErasure =
154
- await ReedSolomonErasure.fromCurrentDirectory();
155
- reedSolomonErasure.reconstruct(
156
- uint8Data,
157
- dataShards,
158
- parityShards,
159
- shardsAvailable,
160
- );
161
- return Buffer.from(uint8Data.subarray(0, shardSize * dataShards));
162
- } catch (error) {
163
- throw new FecError(FecErrorType.FecDecodingFailed, undefined, {
164
- ERROR: error instanceof Error ? error.message : 'Unknown error',
165
- });
166
- }
167
- }
168
-
169
- /**
170
- * Creates parity data for a file buffer.
171
- * @param fileData File data to create parity for
172
- * @param parityCount Number of parity shards to create
173
- * @param fecConstants FEC constants (defaults to FEC)
174
- * @returns Array of parity data objects
175
- * @throws {FecError} If parameters are invalid or encoding fails
176
- */
177
- public async createParityData(
178
- fileData: Buffer,
179
- parityCount: number,
180
- fecConstants: IFECConsts = FEC,
181
- ): Promise<ParityData[]> {
182
- if (!fileData || fileData.length === 0) {
183
- throw new FecError(FecErrorType.DataRequired);
184
- }
185
-
186
- if (parityCount <= 0) {
187
- throw new FecError(FecErrorType.ParityDataCountMustBePositive);
188
- }
189
-
190
- const shardSize = Math.min(fileData.length, fecConstants.MAX_SHARD_SIZE);
191
- const requiredShards = Math.ceil(fileData.length / shardSize);
192
-
193
- try {
194
- const resultParityData: Buffer[] = Array(parityCount)
195
- .fill(null)
196
- .map(() => Buffer.alloc(0));
197
-
198
- // Process each chunk
199
- for (let i = 0; i < requiredShards; i++) {
200
- const start = i * shardSize;
201
- const end = Math.min(start + shardSize, fileData.length);
202
- const chunk = fileData.subarray(start, end);
203
-
204
- // Pad chunk if necessary
205
- const paddedChunk = Buffer.alloc(shardSize);
206
- paddedChunk.set(chunk.subarray(0, shardSize));
207
-
208
- const chunkParity = await this.encode(
209
- paddedChunk,
210
- shardSize,
211
- 1,
212
- parityCount,
213
- true,
214
- fecConstants,
215
- );
216
-
217
- // Distribute parity data
218
- for (let j = 0; j < parityCount; j++) {
219
- const parityChunk = chunkParity.subarray(
220
- j * shardSize,
221
- (j + 1) * shardSize,
222
- );
223
- const combined = Buffer.alloc(
224
- resultParityData[j].length + parityChunk.length,
225
- );
226
- combined.set(resultParityData[j], 0);
227
- combined.set(parityChunk, resultParityData[j].length);
228
- resultParityData[j] = combined;
229
- }
230
- }
231
-
232
- return resultParityData.map((data, index) => ({
233
- data,
234
- index,
235
- }));
236
- } catch (error) {
237
- throw new FecError(FecErrorType.FecEncodingFailed, undefined, {
238
- ERROR: error instanceof Error ? error.message : 'Unknown error',
239
- });
240
- }
241
- }
242
-
243
- /**
244
- * Recovers file data using parity data. Pass null for corrupted data.
245
- * @param corruptedData Corrupted file data or null if completely lost
246
- * @param parityData Array of parity data objects
247
- * @param originalSize Original file size in bytes
248
- * @param fecConstants FEC constants (defaults to FEC)
249
- * @returns Recovery result with data and recovery status
250
- * @throws {FecError} If parameters are invalid or recovery fails
251
- */
252
- public async recoverFileData(
253
- corruptedData: Buffer | null,
254
- parityData: ParityData[],
255
- originalSize: number,
256
- fecConstants: IFECConsts = FEC,
257
- ): Promise<RecoveryResult> {
258
- if (!parityData || parityData.length === 0) {
259
- throw new FecError(FecErrorType.ParityDataRequired);
260
- }
261
-
262
- if (originalSize <= 0) {
263
- throw new FecError(FecErrorType.InvalidDataLength);
264
- }
265
-
266
- try {
267
- const shardSize = Math.min(originalSize, fecConstants.MAX_SHARD_SIZE);
268
- const requiredShards = Math.ceil(originalSize / shardSize);
269
- let recoveredData = Buffer.alloc(0);
270
- let parityUsed = false;
271
-
272
- // Recover each shard
273
- for (let i = 0; i < requiredShards; i++) {
274
- const start = i * shardSize;
275
- const end = Math.min(start + shardSize, originalSize);
276
- const chunkSize = end - start;
277
-
278
- // Use corrupted data if available, otherwise create placeholder
279
- const corruptedShard = corruptedData
280
- ? corruptedData.subarray(start, Math.min(end, corruptedData.length))
281
- : Buffer.alloc(0);
282
-
283
- const parityChunks = parityData.map((parity) =>
284
- parity.data.subarray(i * shardSize, (i + 1) * shardSize),
285
- );
286
-
287
- const hasDataShard = corruptedShard.length > 0;
288
- const paddedCorruptedShard = Buffer.alloc(shardSize);
289
- if (hasDataShard) {
290
- paddedCorruptedShard.set(
291
- corruptedShard.subarray(
292
- 0,
293
- Math.min(shardSize, corruptedShard.length),
294
- ),
295
- );
296
- }
297
-
298
- let shardIsHealthy = false;
299
- if (hasDataShard) {
300
- const regeneratedParity = await this.encode(
301
- paddedCorruptedShard,
302
- shardSize,
303
- 1,
304
- parityData.length,
305
- true,
306
- fecConstants,
307
- );
308
-
309
- shardIsHealthy = parityChunks.every((parityChunk, index) =>
310
- parityChunk.equals(
311
- Uint8Array.from(
312
- regeneratedParity.subarray(
313
- index * shardSize,
314
- (index + 1) * shardSize,
315
- ),
316
- ),
317
- ),
318
- );
319
- }
320
-
321
- if (shardIsHealthy) {
322
- const actualShard = Buffer.from(
323
- paddedCorruptedShard.subarray(0, chunkSize),
324
- );
325
- const combinedRecovered = Buffer.alloc(
326
- recoveredData.length + actualShard.length,
327
- );
328
- combinedRecovered.set(recoveredData, 0);
329
- combinedRecovered.set(actualShard, recoveredData.length);
330
- recoveredData = combinedRecovered;
331
- continue;
332
- }
333
-
334
- // Mark data shard as missing and attempt recovery using parity
335
- parityUsed = true;
336
- const shardData = Buffer.alloc((1 + parityData.length) * shardSize);
337
- shardData.set(paddedCorruptedShard, 0);
338
- parityChunks.forEach((chunk, index) => {
339
- shardData.set(chunk, (index + 1) * shardSize);
340
- });
341
-
342
- const availableShards = [false, ...Array(parityData.length).fill(true)];
343
-
344
- const recoveredShard = await this.decode(
345
- shardData,
346
- shardSize,
347
- 1,
348
- parityData.length,
349
- availableShards,
350
- );
351
-
352
- const actualShard = recoveredShard.subarray(0, chunkSize);
353
- const combinedRecovered = Buffer.alloc(
354
- recoveredData.length + actualShard.length,
355
- );
356
- combinedRecovered.set(recoveredData, 0);
357
- combinedRecovered.set(actualShard, recoveredData.length);
358
- recoveredData = combinedRecovered;
359
- }
360
-
361
- return {
362
- data: recoveredData,
363
- recovered: parityUsed || corruptedData === null,
364
- };
365
- } catch (error) {
366
- throw new FecError(FecErrorType.FecDecodingFailed, undefined, {
367
- ERROR: error instanceof Error ? error.message : 'Unknown error',
368
- });
369
- }
370
- }
371
-
372
- /**
373
- * Verifies file integrity using parity data.
374
- * @param fileData File data to verify
375
- * @param parityData Array of parity data objects
376
- * @returns True if file integrity is verified, false otherwise
377
- */
378
- public async verifyFileIntegrity(
379
- fileData: Buffer,
380
- parityData: ParityData[],
381
- ): Promise<boolean> {
382
- try {
383
- const regeneratedParity = await this.createParityData(
384
- fileData,
385
- parityData.length,
386
- );
387
-
388
- return parityData.every(
389
- (original, index) =>
390
- Buffer.compare(
391
- new Uint8Array(original.data),
392
- new Uint8Array(regeneratedParity[index].data),
393
- ) === 0,
394
- );
395
- } catch {
396
- return false;
397
- }
398
- }
399
- }