@digitaldefiance/node-express-suite 1.0.23 → 1.0.25

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 (632) hide show
  1. package/README.md +8 -0
  2. package/package.json +8 -7
  3. package/src/application-base.d.ts +112 -0
  4. package/src/application-base.d.ts.map +1 -0
  5. package/src/application-base.js +335 -0
  6. package/src/application-base.js.map +1 -0
  7. package/src/application.d.ts +20 -0
  8. package/src/application.d.ts.map +1 -0
  9. package/src/application.js +124 -0
  10. package/src/application.js.map +1 -0
  11. package/src/backup-code.d.ts +67 -0
  12. package/src/backup-code.d.ts.map +1 -0
  13. package/src/backup-code.js +238 -0
  14. package/src/backup-code.js.map +1 -0
  15. package/src/constants.d.ts +16 -0
  16. package/src/constants.d.ts.map +1 -0
  17. package/src/constants.js +54 -0
  18. package/src/constants.js.map +1 -0
  19. package/src/controllers/base.d.ts +63 -0
  20. package/src/controllers/base.d.ts.map +1 -0
  21. package/src/controllers/base.js +272 -0
  22. package/src/controllers/base.js.map +1 -0
  23. package/src/controllers/{index.ts → index.d.ts} +1 -0
  24. package/src/controllers/index.d.ts.map +1 -0
  25. package/src/controllers/index.js +6 -0
  26. package/src/controllers/index.js.map +1 -0
  27. package/src/controllers/user.d.ts +45 -0
  28. package/src/controllers/user.d.ts.map +1 -0
  29. package/src/controllers/user.js +748 -0
  30. package/src/controllers/user.js.map +1 -0
  31. package/src/decorators/base-controller.d.ts +14 -0
  32. package/src/decorators/base-controller.d.ts.map +1 -0
  33. package/src/decorators/base-controller.js +49 -0
  34. package/src/decorators/base-controller.js.map +1 -0
  35. package/src/decorators/controller.d.ts +32 -0
  36. package/src/decorators/controller.d.ts.map +1 -0
  37. package/src/decorators/controller.js +67 -0
  38. package/src/decorators/controller.js.map +1 -0
  39. package/src/decorators/{index.ts → index.d.ts} +1 -0
  40. package/src/decorators/index.d.ts.map +1 -0
  41. package/src/decorators/index.js +7 -0
  42. package/src/decorators/index.js.map +1 -0
  43. package/src/decorators/zod-validation.d.ts +5 -0
  44. package/src/decorators/zod-validation.d.ts.map +1 -0
  45. package/src/decorators/zod-validation.js +47 -0
  46. package/src/decorators/zod-validation.js.map +1 -0
  47. package/src/defaults.d.ts +7 -0
  48. package/src/defaults.d.ts.map +1 -0
  49. package/src/defaults.js +83 -0
  50. package/src/defaults.js.map +1 -0
  51. package/src/documents/base.d.ts +3 -0
  52. package/src/documents/base.d.ts.map +1 -0
  53. package/src/documents/base.js +3 -0
  54. package/src/documents/base.js.map +1 -0
  55. package/src/documents/email-token.d.ts +8 -0
  56. package/src/documents/email-token.d.ts.map +1 -0
  57. package/src/documents/email-token.js +3 -0
  58. package/src/documents/email-token.js.map +1 -0
  59. package/src/documents/{index.ts → index.d.ts} +1 -0
  60. package/src/documents/index.d.ts.map +1 -0
  61. package/src/documents/index.js +3 -0
  62. package/src/documents/index.js.map +1 -0
  63. package/src/documents/{mnemonic.ts → mnemonic.d.ts} +2 -5
  64. package/src/documents/mnemonic.d.ts.map +1 -0
  65. package/src/documents/mnemonic.js +3 -0
  66. package/src/documents/mnemonic.js.map +1 -0
  67. package/src/documents/{role.ts → role.d.ts} +2 -5
  68. package/src/documents/role.d.ts.map +1 -0
  69. package/src/documents/role.js +3 -0
  70. package/src/documents/role.js.map +1 -0
  71. package/src/documents/used-direct-login-token.d.ts +5 -0
  72. package/src/documents/used-direct-login-token.d.ts.map +1 -0
  73. package/src/documents/used-direct-login-token.js +3 -0
  74. package/src/documents/used-direct-login-token.js.map +1 -0
  75. package/src/documents/{user-role.ts → user-role.d.ts} +2 -5
  76. package/src/documents/user-role.d.ts.map +1 -0
  77. package/src/documents/user-role.js +3 -0
  78. package/src/documents/user-role.js.map +1 -0
  79. package/src/documents/{user.ts → user.d.ts} +2 -4
  80. package/src/documents/user.d.ts.map +1 -0
  81. package/src/documents/user.js +3 -0
  82. package/src/documents/user.js.map +1 -0
  83. package/src/enumerations/base-model-name.d.ts +38 -0
  84. package/src/enumerations/base-model-name.d.ts.map +1 -0
  85. package/src/enumerations/base-model-name.js +34 -0
  86. package/src/enumerations/base-model-name.js.map +1 -0
  87. package/src/enumerations/{index.ts → index.d.ts} +1 -0
  88. package/src/enumerations/index.d.ts.map +1 -0
  89. package/src/enumerations/index.js +8 -0
  90. package/src/enumerations/index.js.map +1 -0
  91. package/src/enumerations/length-encoding-type.d.ts +7 -0
  92. package/src/enumerations/length-encoding-type.d.ts.map +1 -0
  93. package/src/enumerations/length-encoding-type.js +11 -0
  94. package/src/enumerations/length-encoding-type.js.map +1 -0
  95. package/src/enumerations/schema-collection.d.ts +34 -0
  96. package/src/enumerations/schema-collection.d.ts.map +1 -0
  97. package/src/enumerations/schema-collection.js +38 -0
  98. package/src/enumerations/schema-collection.js.map +1 -0
  99. package/src/enumerations/symmetric-error-type.d.ts +5 -0
  100. package/src/enumerations/symmetric-error-type.d.ts.map +1 -0
  101. package/src/enumerations/symmetric-error-type.js +9 -0
  102. package/src/enumerations/symmetric-error-type.js.map +1 -0
  103. package/src/environment.d.ts +189 -0
  104. package/src/environment.d.ts.map +1 -0
  105. package/src/environment.js +620 -0
  106. package/src/environment.js.map +1 -0
  107. package/src/errors/express-validation.d.ts +9 -0
  108. package/src/errors/express-validation.d.ts.map +1 -0
  109. package/src/errors/express-validation.js +18 -0
  110. package/src/errors/express-validation.js.map +1 -0
  111. package/src/errors/{index.ts → index.d.ts} +1 -0
  112. package/src/errors/index.d.ts.map +1 -0
  113. package/src/errors/index.js +16 -0
  114. package/src/errors/index.js.map +1 -0
  115. package/src/errors/invalid-backup-code-version.d.ts +6 -0
  116. package/src/errors/invalid-backup-code-version.d.ts.map +1 -0
  117. package/src/errors/invalid-backup-code-version.js +15 -0
  118. package/src/errors/invalid-backup-code-version.js.map +1 -0
  119. package/src/errors/invalid-jwt-token.d.ts +5 -0
  120. package/src/errors/invalid-jwt-token.d.ts.map +1 -0
  121. package/src/errors/invalid-jwt-token.js +11 -0
  122. package/src/errors/invalid-jwt-token.js.map +1 -0
  123. package/src/errors/invalid-model.d.ts +6 -0
  124. package/src/errors/invalid-model.d.ts.map +1 -0
  125. package/src/errors/invalid-model.js +14 -0
  126. package/src/errors/invalid-model.js.map +1 -0
  127. package/src/errors/invalid-new-password.d.ts +5 -0
  128. package/src/errors/invalid-new-password.d.ts.map +1 -0
  129. package/src/errors/invalid-new-password.js +14 -0
  130. package/src/errors/invalid-new-password.js.map +1 -0
  131. package/src/errors/invalid-password.d.ts +5 -0
  132. package/src/errors/invalid-password.d.ts.map +1 -0
  133. package/src/errors/invalid-password.js +14 -0
  134. package/src/errors/invalid-password.js.map +1 -0
  135. package/src/errors/missing-validated-data.d.ts +7 -0
  136. package/src/errors/missing-validated-data.d.ts.map +1 -0
  137. package/src/errors/missing-validated-data.js +36 -0
  138. package/src/errors/missing-validated-data.js.map +1 -0
  139. package/src/errors/mnemonic-or-password-required.d.ts +5 -0
  140. package/src/errors/mnemonic-or-password-required.d.ts.map +1 -0
  141. package/src/errors/mnemonic-or-password-required.js +13 -0
  142. package/src/errors/mnemonic-or-password-required.js.map +1 -0
  143. package/src/errors/model-not-registered.d.ts +5 -0
  144. package/src/errors/model-not-registered.d.ts.map +1 -0
  145. package/src/errors/model-not-registered.js +12 -0
  146. package/src/errors/model-not-registered.js.map +1 -0
  147. package/src/errors/mongoose-validation.d.ts +11 -0
  148. package/src/errors/mongoose-validation.d.ts.map +1 -0
  149. package/src/errors/mongoose-validation.js +17 -0
  150. package/src/errors/mongoose-validation.js.map +1 -0
  151. package/src/errors/symmetric.d.ts +8 -0
  152. package/src/errors/symmetric.d.ts.map +1 -0
  153. package/src/errors/symmetric.js +23 -0
  154. package/src/errors/symmetric.js.map +1 -0
  155. package/src/errors/token-expired.d.ts +5 -0
  156. package/src/errors/token-expired.d.ts.map +1 -0
  157. package/src/errors/token-expired.js +11 -0
  158. package/src/errors/token-expired.js.map +1 -0
  159. package/src/get-language.d.ts +2 -0
  160. package/src/get-language.d.ts.map +1 -0
  161. package/src/get-language.js +30 -0
  162. package/src/get-language.js.map +1 -0
  163. package/src/get-timezone.d.ts +3 -0
  164. package/src/get-timezone.d.ts.map +1 -0
  165. package/src/get-timezone.js +31 -0
  166. package/src/get-timezone.js.map +1 -0
  167. package/src/{index.ts → index.d.ts} +1 -1
  168. package/src/index.d.ts.map +1 -0
  169. package/src/index.js +28 -0
  170. package/src/index.js.map +1 -0
  171. package/src/interfaces/{api-error-response.ts → api-error-response.d.ts} +2 -2
  172. package/src/interfaces/api-error-response.d.ts.map +1 -0
  173. package/src/interfaces/api-error-response.js +3 -0
  174. package/src/interfaces/api-error-response.js.map +1 -0
  175. package/src/interfaces/api-express-validation-error-response.d.ts +7 -0
  176. package/src/interfaces/api-express-validation-error-response.d.ts.map +1 -0
  177. package/src/interfaces/api-express-validation-error-response.js +3 -0
  178. package/src/interfaces/api-express-validation-error-response.js.map +1 -0
  179. package/src/interfaces/api-message-response.d.ts +4 -0
  180. package/src/interfaces/api-message-response.d.ts.map +1 -0
  181. package/src/interfaces/api-message-response.js +3 -0
  182. package/src/interfaces/api-message-response.js.map +1 -0
  183. package/src/interfaces/{api-mongo-validation-error-response.ts → api-mongo-validation-error-response.d.ts} +2 -2
  184. package/src/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
  185. package/src/interfaces/api-mongo-validation-error-response.js +3 -0
  186. package/src/interfaces/api-mongo-validation-error-response.js.map +1 -0
  187. package/src/interfaces/api-responses/{backup-codes-response.ts → backup-codes-response.d.ts} +2 -2
  188. package/src/interfaces/api-responses/backup-codes-response.d.ts.map +1 -0
  189. package/src/interfaces/api-responses/backup-codes-response.js +3 -0
  190. package/src/interfaces/api-responses/backup-codes-response.js.map +1 -0
  191. package/src/interfaces/api-responses/{challenge-response.ts → challenge-response.d.ts} +3 -3
  192. package/src/interfaces/api-responses/challenge-response.d.ts.map +1 -0
  193. package/src/interfaces/api-responses/challenge-response.js +3 -0
  194. package/src/interfaces/api-responses/challenge-response.js.map +1 -0
  195. package/src/interfaces/api-responses/{code-count-response.ts → code-count-response.d.ts} +2 -2
  196. package/src/interfaces/api-responses/code-count-response.d.ts.map +1 -0
  197. package/src/interfaces/api-responses/code-count-response.js +3 -0
  198. package/src/interfaces/api-responses/code-count-response.js.map +1 -0
  199. package/src/interfaces/api-responses/{index.ts → index.d.ts} +1 -0
  200. package/src/interfaces/api-responses/index.d.ts.map +1 -0
  201. package/src/interfaces/api-responses/index.js +11 -0
  202. package/src/interfaces/api-responses/index.js.map +1 -0
  203. package/src/interfaces/api-responses/{login-response.ts → login-response.d.ts} +4 -4
  204. package/src/interfaces/api-responses/login-response.d.ts.map +1 -0
  205. package/src/interfaces/api-responses/login-response.js +3 -0
  206. package/src/interfaces/api-responses/login-response.js.map +1 -0
  207. package/src/interfaces/api-responses/{mnemonic-response.ts → mnemonic-response.d.ts} +2 -2
  208. package/src/interfaces/api-responses/mnemonic-response.d.ts.map +1 -0
  209. package/src/interfaces/api-responses/mnemonic-response.js +3 -0
  210. package/src/interfaces/api-responses/mnemonic-response.js.map +1 -0
  211. package/src/interfaces/api-responses/{registration-response.ts → registration-response.d.ts} +3 -3
  212. package/src/interfaces/api-responses/registration-response.d.ts.map +1 -0
  213. package/src/interfaces/api-responses/registration-response.js +3 -0
  214. package/src/interfaces/api-responses/registration-response.js.map +1 -0
  215. package/src/interfaces/api-responses/{request-user-response.ts → request-user-response.d.ts} +2 -2
  216. package/src/interfaces/api-responses/request-user-response.d.ts.map +1 -0
  217. package/src/interfaces/api-responses/request-user-response.js +3 -0
  218. package/src/interfaces/api-responses/request-user-response.js.map +1 -0
  219. package/src/interfaces/{application.ts → application.d.ts} +7 -7
  220. package/src/interfaces/application.d.ts.map +1 -0
  221. package/src/interfaces/application.js +3 -0
  222. package/src/interfaces/application.js.map +1 -0
  223. package/src/interfaces/backend-objects/email-token.d.ts +4 -0
  224. package/src/interfaces/backend-objects/email-token.d.ts.map +1 -0
  225. package/src/interfaces/backend-objects/email-token.js +3 -0
  226. package/src/interfaces/backend-objects/email-token.js.map +1 -0
  227. package/src/interfaces/backend-objects/{index.ts → index.d.ts} +1 -0
  228. package/src/interfaces/backend-objects/index.d.ts.map +1 -0
  229. package/src/interfaces/backend-objects/index.js +8 -0
  230. package/src/interfaces/backend-objects/index.js.map +1 -0
  231. package/src/interfaces/backend-objects/{request-user.ts → request-user.d.ts} +2 -7
  232. package/src/interfaces/backend-objects/request-user.d.ts.map +1 -0
  233. package/src/interfaces/backend-objects/request-user.js +3 -0
  234. package/src/interfaces/backend-objects/request-user.js.map +1 -0
  235. package/src/interfaces/backend-objects/{role.ts → role.d.ts} +1 -1
  236. package/src/interfaces/backend-objects/role.d.ts.map +1 -0
  237. package/src/interfaces/backend-objects/role.js +3 -0
  238. package/src/interfaces/backend-objects/role.js.map +1 -0
  239. package/src/interfaces/backend-objects/user.d.ts +4 -0
  240. package/src/interfaces/backend-objects/user.d.ts.map +1 -0
  241. package/src/interfaces/backend-objects/user.js +3 -0
  242. package/src/interfaces/backend-objects/user.js.map +1 -0
  243. package/src/interfaces/checksum-config.d.ts +5 -0
  244. package/src/interfaces/checksum-config.d.ts.map +1 -0
  245. package/src/interfaces/checksum-config.js +3 -0
  246. package/src/interfaces/checksum-config.js.map +1 -0
  247. package/src/interfaces/checksum-consts.d.ts +11 -0
  248. package/src/interfaces/checksum-consts.d.ts.map +1 -0
  249. package/src/interfaces/checksum-consts.js +3 -0
  250. package/src/interfaces/checksum-consts.js.map +1 -0
  251. package/src/interfaces/{constants.ts → constants.d.ts} +5 -5
  252. package/src/interfaces/constants.d.ts.map +1 -0
  253. package/src/interfaces/constants.js +3 -0
  254. package/src/interfaces/constants.js.map +1 -0
  255. package/src/interfaces/create-user-basics.d.ts +18 -0
  256. package/src/interfaces/create-user-basics.d.ts.map +1 -0
  257. package/src/interfaces/create-user-basics.js +3 -0
  258. package/src/interfaces/create-user-basics.js.map +1 -0
  259. package/src/interfaces/csp-config.d.ts +14 -0
  260. package/src/interfaces/csp-config.d.ts.map +1 -0
  261. package/src/interfaces/csp-config.js +3 -0
  262. package/src/interfaces/csp-config.js.map +1 -0
  263. package/src/interfaces/deep-partial.d.ts +4 -0
  264. package/src/interfaces/deep-partial.d.ts.map +1 -0
  265. package/src/interfaces/deep-partial.js +3 -0
  266. package/src/interfaces/deep-partial.js.map +1 -0
  267. package/src/interfaces/{discriminator-collections.ts → discriminator-collections.d.ts} +3 -3
  268. package/src/interfaces/discriminator-collections.d.ts.map +1 -0
  269. package/src/interfaces/discriminator-collections.js +3 -0
  270. package/src/interfaces/discriminator-collections.js.map +1 -0
  271. package/src/interfaces/email-service.d.ts +4 -0
  272. package/src/interfaces/email-service.d.ts.map +1 -0
  273. package/src/interfaces/email-service.js +3 -0
  274. package/src/interfaces/email-service.js.map +1 -0
  275. package/src/interfaces/environment-mongo.d.ts +76 -0
  276. package/src/interfaces/environment-mongo.d.ts.map +1 -0
  277. package/src/interfaces/environment-mongo.js +3 -0
  278. package/src/interfaces/environment-mongo.js.map +1 -0
  279. package/src/interfaces/environment.d.ts +181 -0
  280. package/src/interfaces/environment.d.ts.map +1 -0
  281. package/src/interfaces/environment.js +3 -0
  282. package/src/interfaces/environment.js.map +1 -0
  283. package/src/interfaces/failable-result.d.ts +7 -0
  284. package/src/interfaces/failable-result.d.ts.map +1 -0
  285. package/src/interfaces/failable-result.js +3 -0
  286. package/src/interfaces/failable-result.js.map +1 -0
  287. package/src/interfaces/fec-consts.d.ts +5 -0
  288. package/src/interfaces/fec-consts.d.ts.map +1 -0
  289. package/src/interfaces/fec-consts.js +3 -0
  290. package/src/interfaces/fec-consts.js.map +1 -0
  291. package/src/interfaces/handleable-error-options.d.ts +7 -0
  292. package/src/interfaces/handleable-error-options.d.ts.map +1 -0
  293. package/src/interfaces/handleable-error-options.js +3 -0
  294. package/src/interfaces/handleable-error-options.js.map +1 -0
  295. package/src/interfaces/{index.ts → index.d.ts} +1 -0
  296. package/src/interfaces/index.d.ts.map +1 -0
  297. package/src/interfaces/index.js +33 -0
  298. package/src/interfaces/index.js.map +1 -0
  299. package/src/interfaces/jwt-consts.d.ts +11 -0
  300. package/src/interfaces/jwt-consts.d.ts.map +1 -0
  301. package/src/interfaces/jwt-consts.js +3 -0
  302. package/src/interfaces/jwt-consts.js.map +1 -0
  303. package/src/interfaces/jwt-sign-response.d.ts +11 -0
  304. package/src/interfaces/jwt-sign-response.d.ts.map +1 -0
  305. package/src/interfaces/jwt-sign-response.js +3 -0
  306. package/src/interfaces/jwt-sign-response.js.map +1 -0
  307. package/src/interfaces/mongo-errors.d.ts +5 -0
  308. package/src/interfaces/mongo-errors.d.ts.map +1 -0
  309. package/src/interfaces/mongo-errors.js +3 -0
  310. package/src/interfaces/mongo-errors.js.map +1 -0
  311. package/src/interfaces/request-user.d.ts +42 -0
  312. package/src/interfaces/request-user.d.ts.map +1 -0
  313. package/src/interfaces/request-user.js +3 -0
  314. package/src/interfaces/request-user.js.map +1 -0
  315. package/src/interfaces/required-string-keys.d.ts +22 -0
  316. package/src/interfaces/required-string-keys.d.ts.map +1 -0
  317. package/src/interfaces/required-string-keys.js +3 -0
  318. package/src/interfaces/required-string-keys.js.map +1 -0
  319. package/src/interfaces/schema.d.ts +29 -0
  320. package/src/interfaces/schema.d.ts.map +1 -0
  321. package/src/interfaces/schema.js +3 -0
  322. package/src/interfaces/schema.js.map +1 -0
  323. package/src/interfaces/server-init-result.d.ts +35 -0
  324. package/src/interfaces/server-init-result.d.ts.map +1 -0
  325. package/src/interfaces/server-init-result.js +3 -0
  326. package/src/interfaces/server-init-result.js.map +1 -0
  327. package/src/interfaces/status-code-response.d.ts +7 -0
  328. package/src/interfaces/status-code-response.d.ts.map +1 -0
  329. package/src/interfaces/status-code-response.js +3 -0
  330. package/src/interfaces/status-code-response.js.map +1 -0
  331. package/src/interfaces/symmetric-encryption-results.d.ts +3 -3
  332. package/src/interfaces/symmetric-encryption-results.d.ts.map +1 -1
  333. package/src/interfaces/symmetric-encryption-results.js.map +1 -1
  334. package/src/interfaces/{token-response.ts → token-response.d.ts} +2 -2
  335. package/src/interfaces/token-response.d.ts.map +1 -0
  336. package/src/interfaces/token-response.js +3 -0
  337. package/src/interfaces/token-response.js.map +1 -0
  338. package/src/middlewares/authenticate-crypto.d.ts +13 -0
  339. package/src/middlewares/authenticate-crypto.d.ts.map +1 -0
  340. package/src/middlewares/authenticate-crypto.js +146 -0
  341. package/src/middlewares/authenticate-crypto.js.map +1 -0
  342. package/src/middlewares/authenticate-token.d.ts +24 -0
  343. package/src/middlewares/authenticate-token.d.ts.map +1 -0
  344. package/src/middlewares/authenticate-token.js +102 -0
  345. package/src/middlewares/authenticate-token.js.map +1 -0
  346. package/src/middlewares/cleanup-crypto.d.ts +7 -0
  347. package/src/middlewares/cleanup-crypto.d.ts.map +1 -0
  348. package/src/middlewares/cleanup-crypto.js +32 -0
  349. package/src/middlewares/cleanup-crypto.js.map +1 -0
  350. package/src/middlewares/{index.ts → index.d.ts} +1 -0
  351. package/src/middlewares/index.d.ts.map +1 -0
  352. package/src/middlewares/index.js +8 -0
  353. package/src/middlewares/index.js.map +1 -0
  354. package/src/middlewares/set-global-context-language.d.ts +3 -0
  355. package/src/middlewares/set-global-context-language.d.ts.map +1 -0
  356. package/src/middlewares/set-global-context-language.js +14 -0
  357. package/src/middlewares/set-global-context-language.js.map +1 -0
  358. package/src/middlewares.d.ts +18 -0
  359. package/src/middlewares.d.ts.map +1 -0
  360. package/src/middlewares.js +74 -0
  361. package/src/middlewares.js.map +1 -0
  362. package/src/model-registry.d.ts +23 -0
  363. package/src/model-registry.d.ts.map +1 -0
  364. package/src/model-registry.js +47 -0
  365. package/src/model-registry.js.map +1 -0
  366. package/src/models/email-token.d.ts +11 -0
  367. package/src/models/email-token.d.ts.map +1 -0
  368. package/src/models/email-token.js +11 -0
  369. package/src/models/email-token.js.map +1 -0
  370. package/src/models/{index.ts → index.d.ts} +1 -0
  371. package/src/models/index.d.ts.map +1 -0
  372. package/src/models/index.js +10 -0
  373. package/src/models/index.js.map +1 -0
  374. package/src/models/mnemonic.d.ts +11 -0
  375. package/src/models/mnemonic.d.ts.map +1 -0
  376. package/src/models/mnemonic.js +11 -0
  377. package/src/models/mnemonic.js.map +1 -0
  378. package/src/models/role.d.ts +11 -0
  379. package/src/models/role.d.ts.map +1 -0
  380. package/src/models/role.js +11 -0
  381. package/src/models/role.js.map +1 -0
  382. package/src/models/used-direct-login-token.d.ts +11 -0
  383. package/src/models/used-direct-login-token.d.ts.map +1 -0
  384. package/src/models/used-direct-login-token.js +11 -0
  385. package/src/models/used-direct-login-token.js.map +1 -0
  386. package/src/models/user-role.d.ts +6 -0
  387. package/src/models/user-role.d.ts.map +1 -0
  388. package/src/models/user-role.js +10 -0
  389. package/src/models/user-role.js.map +1 -0
  390. package/src/models/user.d.ts +7 -0
  391. package/src/models/user.d.ts.map +1 -0
  392. package/src/models/user.js +11 -0
  393. package/src/models/user.js.map +1 -0
  394. package/src/registry/email-service-registry.d.ts +9 -0
  395. package/src/registry/email-service-registry.d.ts.map +1 -0
  396. package/src/registry/email-service-registry.js +18 -0
  397. package/src/registry/email-service-registry.js.map +1 -0
  398. package/src/registry/{index.ts → index.d.ts} +1 -0
  399. package/src/registry/index.d.ts.map +1 -0
  400. package/src/registry/index.js +6 -0
  401. package/src/registry/index.js.map +1 -0
  402. package/src/routers/api.d.ts +27 -0
  403. package/src/routers/api.d.ts.map +1 -0
  404. package/src/routers/api.js +52 -0
  405. package/src/routers/api.js.map +1 -0
  406. package/src/routers/app.d.ts +28 -0
  407. package/src/routers/app.d.ts.map +1 -0
  408. package/src/routers/app.js +186 -0
  409. package/src/routers/app.js.map +1 -0
  410. package/src/routers/base.d.ts +12 -0
  411. package/src/routers/base.d.ts.map +1 -0
  412. package/src/routers/base.js +14 -0
  413. package/src/routers/base.js.map +1 -0
  414. package/src/routers/{index.ts → index.d.ts} +1 -0
  415. package/src/routers/index.d.ts.map +1 -0
  416. package/src/routers/index.js +7 -0
  417. package/src/routers/index.js.map +1 -0
  418. package/src/schemas/email-token.d.ts +38 -0
  419. package/src/schemas/email-token.d.ts.map +1 -0
  420. package/src/schemas/email-token.js +54 -0
  421. package/src/schemas/email-token.js.map +1 -0
  422. package/src/schemas/{index.ts → index.d.ts} +2 -1
  423. package/src/schemas/index.d.ts.map +1 -0
  424. package/src/schemas/index.js +11 -0
  425. package/src/schemas/index.js.map +1 -0
  426. package/src/schemas/mnemonic.d.ts +20 -0
  427. package/src/schemas/mnemonic.d.ts.map +1 -0
  428. package/src/schemas/mnemonic.js +30 -0
  429. package/src/schemas/mnemonic.js.map +1 -0
  430. package/src/schemas/role.d.ts +32 -0
  431. package/src/schemas/role.d.ts.map +1 -0
  432. package/src/schemas/role.js +86 -0
  433. package/src/schemas/role.js.map +1 -0
  434. package/src/schemas/schema.d.ts +40 -0
  435. package/src/schemas/schema.d.ts.map +1 -0
  436. package/src/schemas/schema.js +62 -0
  437. package/src/schemas/schema.js.map +1 -0
  438. package/src/schemas/used-direct-login-token.d.ts +27 -0
  439. package/src/schemas/used-direct-login-token.d.ts.map +1 -0
  440. package/src/schemas/used-direct-login-token.js +23 -0
  441. package/src/schemas/used-direct-login-token.js.map +1 -0
  442. package/src/schemas/user-role.d.ts +29 -0
  443. package/src/schemas/user-role.d.ts.map +1 -0
  444. package/src/schemas/user-role.js +54 -0
  445. package/src/schemas/user-role.js.map +1 -0
  446. package/src/schemas/user.d.ts +21 -0
  447. package/src/schemas/user.d.ts.map +1 -0
  448. package/src/schemas/user.js +176 -0
  449. package/src/schemas/user.js.map +1 -0
  450. package/src/services/backup-code.d.ts +78 -0
  451. package/src/services/backup-code.d.ts.map +1 -0
  452. package/src/services/backup-code.js +184 -0
  453. package/src/services/backup-code.js.map +1 -0
  454. package/src/services/base.d.ts +13 -0
  455. package/src/services/base.d.ts.map +1 -0
  456. package/src/services/base.js +15 -0
  457. package/src/services/base.js.map +1 -0
  458. package/src/services/checksum.d.ts +67 -0
  459. package/src/services/checksum.d.ts.map +1 -0
  460. package/src/services/checksum.js +143 -0
  461. package/src/services/checksum.js.map +1 -0
  462. package/src/services/crc.d.ts +87 -0
  463. package/src/services/crc.d.ts.map +1 -0
  464. package/src/services/crc.js +198 -0
  465. package/src/services/crc.js.map +1 -0
  466. package/src/services/database-initialization.d.ts +105 -0
  467. package/src/services/database-initialization.d.ts.map +1 -0
  468. package/src/services/database-initialization.js +782 -0
  469. package/src/services/database-initialization.js.map +1 -0
  470. package/src/services/db-init-cache.d.ts +7 -13
  471. package/src/services/db-init-cache.d.ts.map +1 -0
  472. package/src/services/db-init-cache.js +3 -0
  473. package/src/services/db-init-cache.js.map +1 -0
  474. package/src/services/direct-login-token.d.ts +9 -0
  475. package/src/services/direct-login-token.d.ts.map +1 -0
  476. package/src/services/direct-login-token.js +41 -0
  477. package/src/services/direct-login-token.js.map +1 -0
  478. package/src/services/fec-usage-example.d.ts +38 -0
  479. package/src/services/fec-usage-example.d.ts.map +1 -0
  480. package/src/services/fec-usage-example.js +75 -0
  481. package/src/services/fec-usage-example.js.map +1 -0
  482. package/src/services/fec.d.ts +46 -0
  483. package/src/services/fec.d.ts.map +1 -0
  484. package/src/services/fec.js +192 -0
  485. package/src/services/fec.js.map +1 -0
  486. package/src/services/{index.ts → index.d.ts} +1 -0
  487. package/src/services/index.d.ts.map +1 -0
  488. package/src/services/index.js +22 -0
  489. package/src/services/index.js.map +1 -0
  490. package/src/services/jwt.d.ts +33 -0
  491. package/src/services/jwt.d.ts.map +1 -0
  492. package/src/services/jwt.js +91 -0
  493. package/src/services/jwt.js.map +1 -0
  494. package/src/services/key-wrapping.d.ts +60 -0
  495. package/src/services/key-wrapping.d.ts.map +1 -0
  496. package/src/services/key-wrapping.js +311 -0
  497. package/src/services/key-wrapping.js.map +1 -0
  498. package/src/services/mnemonic.d.ts +61 -0
  499. package/src/services/mnemonic.d.ts.map +1 -0
  500. package/src/services/mnemonic.js +115 -0
  501. package/src/services/mnemonic.js.map +1 -0
  502. package/src/services/request-user.d.ts +20 -0
  503. package/src/services/request-user.d.ts.map +1 -0
  504. package/src/services/request-user.js +50 -0
  505. package/src/services/request-user.js.map +1 -0
  506. package/src/services/role.d.ts +88 -0
  507. package/src/services/role.d.ts.map +1 -0
  508. package/src/services/role.js +263 -0
  509. package/src/services/role.js.map +1 -0
  510. package/src/services/symmetric.d.ts +42 -0
  511. package/src/services/symmetric.d.ts.map +1 -0
  512. package/src/services/symmetric.js +101 -0
  513. package/src/services/symmetric.js.map +1 -0
  514. package/src/services/system-user.d.ts +17 -0
  515. package/src/services/system-user.d.ts.map +1 -0
  516. package/src/services/system-user.js +46 -0
  517. package/src/services/system-user.js.map +1 -0
  518. package/src/services/user.d.ts +320 -0
  519. package/src/services/user.d.ts.map +1 -0
  520. package/src/services/user.js +1378 -0
  521. package/src/services/user.js.map +1 -0
  522. package/src/services/xor.d.ts +24 -0
  523. package/src/services/xor.d.ts.map +1 -0
  524. package/src/services/xor.js +37 -0
  525. package/src/services/xor.js.map +1 -0
  526. package/src/types.d.ts +66 -40
  527. package/src/types.d.ts.map +1 -0
  528. package/src/types.js +14 -0
  529. package/src/types.js.map +1 -0
  530. package/src/utils.d.ts +202 -0
  531. package/src/utils.d.ts.map +1 -0
  532. package/src/utils.js +784 -0
  533. package/src/utils.js.map +1 -0
  534. package/LICENSE +0 -21
  535. package/src/application-base.ts +0 -492
  536. package/src/application.ts +0 -254
  537. package/src/backup-code.ts +0 -336
  538. package/src/constants.ts +0 -69
  539. package/src/controllers/base.ts +0 -440
  540. package/src/controllers/user.ts +0 -1451
  541. package/src/decorators/base-controller.ts +0 -61
  542. package/src/decorators/controller.ts +0 -109
  543. package/src/decorators/zod-validation.ts +0 -57
  544. package/src/defaults.ts +0 -94
  545. package/src/documents/base.ts +0 -7
  546. package/src/documents/email-token.ts +0 -14
  547. package/src/documents/used-direct-login-token.ts +0 -7
  548. package/src/enumerations/base-model-name.ts +0 -41
  549. package/src/enumerations/length-encoding-type.ts +0 -6
  550. package/src/enumerations/schema-collection.ts +0 -33
  551. package/src/enumerations/symmetric-error-type.ts +0 -4
  552. package/src/environment.ts +0 -770
  553. package/src/errors/express-validation.ts +0 -21
  554. package/src/errors/invalid-backup-code-version.ts +0 -14
  555. package/src/errors/invalid-jwt-token.ts +0 -10
  556. package/src/errors/invalid-model.ts +0 -11
  557. package/src/errors/invalid-new-password.ts +0 -18
  558. package/src/errors/invalid-password.ts +0 -13
  559. package/src/errors/missing-validated-data.ts +0 -36
  560. package/src/errors/mnemonic-or-password-required.ts +0 -12
  561. package/src/errors/model-not-registered.ts +0 -11
  562. package/src/errors/mongoose-validation.ts +0 -34
  563. package/src/errors/symmetric.ts +0 -41
  564. package/src/errors/token-expired.ts +0 -10
  565. package/src/get-language.ts +0 -53
  566. package/src/get-timezone.ts +0 -45
  567. package/src/interfaces/api-express-validation-error-response.ts +0 -8
  568. package/src/interfaces/api-message-response.ts +0 -3
  569. package/src/interfaces/backend-objects/email-token.ts +0 -11
  570. package/src/interfaces/backend-objects/user.ts +0 -9
  571. package/src/interfaces/checksum-config.ts +0 -4
  572. package/src/interfaces/checksum-consts.ts +0 -13
  573. package/src/interfaces/create-user-basics.ts +0 -17
  574. package/src/interfaces/csp-config.ts +0 -35
  575. package/src/interfaces/deep-partial.ts +0 -3
  576. package/src/interfaces/email-service.ts +0 -8
  577. package/src/interfaces/environment-mongo.ts +0 -76
  578. package/src/interfaces/environment.ts +0 -181
  579. package/src/interfaces/failable-result.ts +0 -6
  580. package/src/interfaces/fec-consts.ts +0 -4
  581. package/src/interfaces/handleable-error-options.ts +0 -6
  582. package/src/interfaces/jwt-consts.ts +0 -23
  583. package/src/interfaces/jwt-sign-response.ts +0 -19
  584. package/src/interfaces/mongo-errors.ts +0 -5
  585. package/src/interfaces/request-user.ts +0 -50
  586. package/src/interfaces/required-string-keys.ts +0 -26
  587. package/src/interfaces/schema.ts +0 -31
  588. package/src/interfaces/server-init-result.ts +0 -37
  589. package/src/interfaces/status-code-response.ts +0 -7
  590. package/src/interfaces/symmetric-encryption-results.ts +0 -4
  591. package/src/middlewares/authenticate-crypto.ts +0 -243
  592. package/src/middlewares/authenticate-token.ts +0 -152
  593. package/src/middlewares/cleanup-crypto.ts +0 -40
  594. package/src/middlewares/set-global-context-language.ts +0 -24
  595. package/src/middlewares.ts +0 -120
  596. package/src/model-registry.ts +0 -75
  597. package/src/models/email-token.ts +0 -19
  598. package/src/models/mnemonic.ts +0 -19
  599. package/src/models/role.ts +0 -19
  600. package/src/models/used-direct-login-token.ts +0 -23
  601. package/src/models/user-role.ts +0 -17
  602. package/src/models/user.ts +0 -19
  603. package/src/registry/email-service-registry.ts +0 -24
  604. package/src/routers/api.ts +0 -151
  605. package/src/routers/app.ts +0 -258
  606. package/src/routers/base.ts +0 -17
  607. package/src/schemas/email-token.ts +0 -91
  608. package/src/schemas/mnemonic.ts +0 -37
  609. package/src/schemas/role.ts +0 -127
  610. package/src/schemas/schema.ts +0 -140
  611. package/src/schemas/used-direct-login-token.ts +0 -38
  612. package/src/schemas/user-role.ts +0 -75
  613. package/src/schemas/user.ts +0 -202
  614. package/src/services/backup-code.ts +0 -316
  615. package/src/services/base.ts +0 -33
  616. package/src/services/checksum.ts +0 -161
  617. package/src/services/crc.ts +0 -213
  618. package/src/services/database-initialization.ts +0 -1479
  619. package/src/services/direct-login-token.ts +0 -62
  620. package/src/services/fec-usage-example.ts +0 -102
  621. package/src/services/fec.ts +0 -296
  622. package/src/services/jwt.ts +0 -134
  623. package/src/services/key-wrapping.ts +0 -434
  624. package/src/services/mnemonic.ts +0 -167
  625. package/src/services/request-user.ts +0 -62
  626. package/src/services/role.ts +0 -396
  627. package/src/services/symmetric.ts +0 -139
  628. package/src/services/system-user.ts +0 -82
  629. package/src/services/user.ts +0 -2137
  630. package/src/services/xor.ts +0 -34
  631. package/src/types.ts +0 -128
  632. package/src/utils.ts +0 -1022
@@ -1,770 +0,0 @@
1
- import { SecureBuffer, SecureString } from '@digitaldefiance/ecies-lib';
2
- import { Timezone } from '@digitaldefiance/i18n-lib';
3
- import {
4
- getSuiteCoreTranslation,
5
- SuiteCoreStringKey,
6
- TranslatableSuiteError,
7
- } from '@digitaldefiance/suite-core-lib';
8
- import { config } from 'dotenv';
9
- import { existsSync } from 'fs';
10
- import { ObjectId } from 'mongodb';
11
- import { Types } from 'mongoose';
12
- import { BackupCode } from './backup-code';
13
- import { Constants } from './constants';
14
- import { setGlobalActiveContextAdminLanguageFromProcessArgvOrEnv } from './get-language';
15
- import { setGlobalActiveContextAdminTimezoneFromProcessArgvOrEnv } from './get-timezone';
16
- import { IConstants } from './interfaces/constants';
17
- import { IEnvironment } from './interfaces/environment';
18
- import { IMongoEnvironment } from './interfaces/environment-mongo';
19
- import {
20
- DEBUG_TYPE,
21
- debugLog,
22
- DEFAULT_TRANSACTION_LOCK_REQUEST_TIMEOUT,
23
- DEFAULT_TRANSACTION_TIMEOUT,
24
- locatePEMRoot,
25
- parseBackupCodes,
26
- } from './utils';
27
-
28
- export class Environment implements IEnvironment {
29
- private readonly _environment: IEnvironment;
30
- private readonly _envObject: object;
31
- public static requireEnv<T>(key: string, obj: object): T {
32
- if (!Object.prototype.hasOwnProperty.call(obj, key)) {
33
- throw new TranslatableSuiteError(SuiteCoreStringKey.Error_MissingRequiredEnvironmentVariableTemplate, { key });
34
- }
35
- if (!(obj as any)[key] || (String((obj as any)[key]).trim() === '')) {
36
- throw new TranslatableSuiteError(SuiteCoreStringKey.Error_EmptyEnvironmentVariableTemplate, { key });
37
- }
38
- return ((obj as any)[key]) as T;
39
- }
40
- constructor(
41
- path?: string,
42
- initialization = false,
43
- override = true,
44
- constants: IConstants = Constants,
45
- ) {
46
- let envObj = process.env;
47
- let debug = envObj['DEBUG'] === 'true' || envObj['DEBUG'] === '1';
48
- let detailedDebug =
49
- envObj['DETAILED_DEBUG'] === 'true' || envObj['DETAILED_DEBUG'] === '1';
50
- if (path && existsSync(path)) {
51
- debugLog(
52
- debug,
53
- 'log',
54
- getSuiteCoreTranslation(
55
- SuiteCoreStringKey.Admin_LoadingEnvironmentTemplate,
56
- {
57
- PATH: path,
58
- },
59
- ),
60
- );
61
- const result = config({ path, override: override });
62
- envObj = override
63
- ? { ...envObj, ...result.parsed }
64
- : { ...result.parsed, ...envObj };
65
- // debug / detailedDebug may have changed due to the env loading
66
- debug = envObj['DEBUG'] === 'true' || envObj['DEBUG'] === '1';
67
- detailedDebug =
68
- envObj['DETAILED_DEBUG'] === 'true' || envObj['DETAILED_DEBUG'] === '1';
69
-
70
- if (result.error || !result.parsed) {
71
- throw new TranslatableSuiteError(
72
- SuiteCoreStringKey.Admin_Error_FailedToLoadEnvironment,
73
- );
74
- }
75
- } else if (path) {
76
- debugLog(
77
- debug,
78
- 'warn',
79
- getSuiteCoreTranslation(
80
- SuiteCoreStringKey.Admin_EnvFileNotFoundTemplate,
81
- {
82
- PATH: path,
83
- },
84
- ),
85
- );
86
- }
87
-
88
- const httpsDevCertRoot = process.env['HTTPS_DEV_CERT_DIR']
89
- ? locatePEMRoot(process.env['HTTPS_DEV_CERT_DIR'])
90
- : undefined;
91
- const httpsDevPort = process.env['HTTPS_DEV_PORT']
92
- ? parseInt(process.env['HTTPS_DEV_PORT'] ?? '3443')
93
- : 443;
94
-
95
- this._environment = {
96
- debug: debug,
97
- devDatabase:
98
- envObj['DEV_DATABASE'] !== undefined && envObj['DEV_DATABASE'] !== ''
99
- ? envObj['DEV_DATABASE']
100
- : undefined,
101
- detailedDebug: detailedDebug,
102
- host: envObj['HOST'] ?? '0.0.0.0',
103
- port: envObj['PORT'] ? Number(envObj['PORT']) : 3000,
104
- jwtSecret: Environment.requireEnv<string>('JWT_SECRET', envObj),
105
- emailSender: envObj['EMAIL_SENDER'] ?? 'noreply@localhost',
106
- basePath: envObj['BASE_PATH'] ?? '/',
107
- serverUrl:
108
- envObj['NODE_ENV'] === 'production'
109
- ? 'https://localhost'
110
- : httpsDevCertRoot
111
- ? `https://localhost:${httpsDevPort}`
112
- : 'http://localhost:3000',
113
- // Avoid importing Application here to prevent circular deps
114
- // Compute dist dir from process.cwd() directly
115
- apiDistDir:
116
- Environment.requireEnv<string>('API_DIST_DIR', envObj),
117
- reactDistDir:
118
- Environment.requireEnv<string>('REACT_DIST_DIR', envObj),
119
- httpsDevCertRoot: httpsDevCertRoot,
120
- httpsDevPort: httpsDevPort,
121
- disableEmailSend:
122
- envObj['DISABLE_EMAIL_SEND'] === 'true' ||
123
- envObj['DISABLE_EMAIL_SEND'] === '1',
124
- mongo: {
125
- dbName: envObj['MONGO_DB_NAME'] ?? 'db',
126
- uri:
127
- envObj['MONGO_URI'] ??
128
- `mongodb://db:27017/${envObj['MONGO_DB_NAME'] ?? 'db'}`,
129
- setParameterSupported:
130
- envObj['MONGO_SET_PARAMETER_SUPPORTED'] === 'true' ||
131
- envObj['MONGO_SET_PARAMETER_SUPPORTED'] === '1',
132
- transactionLifetimeLimitSecondsSupported:
133
- envObj['MONGO_TRANSACTION_LIFETIME_LIMIT_SECONDS_SUPPORTED'] ===
134
- 'true' ||
135
- envObj['MONGO_TRANSACTION_LIFETIME_LIMIT_SECONDS_SUPPORTED'] === '1',
136
- maxTransactionLockRequestTimeoutMillisSupported:
137
- envObj[
138
- 'MONGO_MAX_TRANSACTION_LOCK_REQUEST_TIMEOUT_MILLIS_SUPPORTED'
139
- ] === 'true' ||
140
- envObj[
141
- 'MONGO_MAX_TRANSACTION_LOCK_REQUEST_TIMEOUT_MILLIS_SUPPORTED'
142
- ] === '1',
143
- maxPoolSize: envObj['MONGO_MAX_POOL_SIZE']
144
- ? parseInt(envObj['MONGO_MAX_POOL_SIZE'])
145
- : 10,
146
- minPoolSize: envObj['MONGO_MIN_POOL_SIZE']
147
- ? parseInt(envObj['MONGO_MIN_POOL_SIZE'])
148
- : 2,
149
- maxIdleTimeMS: envObj['MONGO_MAX_IDLE_TIME_MS']
150
- ? parseInt(envObj['MONGO_MAX_IDLE_TIME_MS'])
151
- : 30000,
152
- serverSelectionTimeoutMS: envObj['MONGO_SERVER_SELECTION_TIMEOUT_MS']
153
- ? parseInt(envObj['MONGO_SERVER_SELECTION_TIMEOUT_MS'])
154
- : 5000,
155
- socketTimeoutMS: envObj['MONGO_SOCKET_TIMEOUT_MS']
156
- ? parseInt(envObj['MONGO_SOCKET_TIMEOUT_MS'])
157
- : 45000,
158
- retryWrites:
159
- envObj['MONGO_RETRY_WRITES'] === 'false' ||
160
- envObj['MONGO_RETRY_WRITES'] === '0'
161
- ? false
162
- : envObj['MONGO_RETRY_WRITES'] === 'true' ||
163
- envObj['MONGO_RETRY_WRITES'] === '1' ||
164
- true,
165
- retryReads:
166
- envObj['MONGO_RETRY_READS'] === 'false' ||
167
- envObj['MONGO_RETRY_READS'] === '0'
168
- ? false
169
- : envObj['MONGO_RETRY_READS'] === 'true' ||
170
- envObj['MONGO_RETRY_READS'] === '1' ||
171
- true,
172
- readConcern: { level: 'majority' },
173
- writeConcern: { w: 'majority', j: true },
174
- transactionTimeout: envObj['MONGO_TRANSACTION_TIMEOUT']
175
- ? parseInt(envObj['MONGO_TRANSACTION_TIMEOUT'])
176
- : DEFAULT_TRANSACTION_TIMEOUT,
177
- transactionLockRequestTimeout: envObj[
178
- 'MONGO_TRANSACTION_LOCK_REQUEST_TIMEOUT'
179
- ]
180
- ? parseInt(envObj['MONGO_TRANSACTION_LOCK_REQUEST_TIMEOUT'])
181
- : DEFAULT_TRANSACTION_LOCK_REQUEST_TIMEOUT,
182
- useTransactions:
183
- envObj['MONGO_USE_TRANSACTIONS'] === 'true' ||
184
- envObj['MONGO_USE_TRANSACTIONS'] === '1',
185
- transactionRetryBaseDelay: envObj['MONGO_TRANSACTION_RETRY_BASE_DELAY']
186
- ? parseInt(envObj['MONGO_TRANSACTION_RETRY_BASE_DELAY'])
187
- : envObj['NODE_ENV'] === 'test'
188
- ? 25
189
- : 100,
190
- },
191
- adminMnemonic: new SecureString(envObj['ADMIN_MNEMONIC'] ?? null),
192
- adminCreatedAt: envObj['ADMIN_CREATED_AT']
193
- ? new Date(envObj['ADMIN_CREATED_AT'])
194
- : new Date(),
195
- adminId: envObj['ADMIN_ID']
196
- ? new ObjectId(envObj['ADMIN_ID'])
197
- : new ObjectId(),
198
- adminPassword: envObj['ADMIN_PASSWORD']
199
- ? new SecureString(envObj['ADMIN_PASSWORD'])
200
- : undefined,
201
- adminRoleId: envObj['ADMIN_ROLE_ID']
202
- ? new ObjectId(envObj['ADMIN_ROLE_ID'])
203
- : undefined,
204
- adminUserRoleId: envObj['ADMIN_ROLE_ID']
205
- ? new ObjectId(envObj['ADMIN_ROLE_ID'])
206
- : undefined,
207
- adminBackupCodes: envObj['ADMIN_BACKUP_CODES']
208
- ? parseBackupCodes('admin', envObj)
209
- : undefined,
210
- memberMnemonic: new SecureString(envObj['MEMBER_MNEMONIC'] ?? null),
211
- memberCreatedAt: envObj['MEMBER_CREATED_AT']
212
- ? new Date(envObj['MEMBER_CREATED_AT'])
213
- : new Date(),
214
- memberId: envObj['MEMBER_ID']
215
- ? new ObjectId(envObj['MEMBER_ID'])
216
- : new ObjectId(),
217
- memberPassword: envObj['MEMBER_PASSWORD']
218
- ? new SecureString(envObj['MEMBER_PASSWORD'])
219
- : undefined,
220
- memberRoleId: envObj['MEMBER_ROLE_ID']
221
- ? new ObjectId(envObj['MEMBER_ROLE_ID'])
222
- : undefined,
223
- memberUserRoleId: envObj['MEMBER_USER_ROLE_ID']
224
- ? new ObjectId(envObj['MEMBER_USER_ROLE_ID'])
225
- : undefined,
226
- memberBackupCodes: envObj['MEMBER_BACKUP_CODES']
227
- ? parseBackupCodes('member', envObj)
228
- : undefined,
229
- systemMnemonic: new SecureString(envObj['SYSTEM_MNEMONIC'] ?? null),
230
- systemCreatedAt: envObj['SYSTEM_CREATED_AT']
231
- ? new Date(envObj['SYSTEM_CREATED_AT'])
232
- : new Date(),
233
- systemId: envObj['SYSTEM_ID']
234
- ? new ObjectId(envObj['SYSTEM_ID'])
235
- : new ObjectId(),
236
- systemPublicKeyHex: envObj['SYSTEM_PUBLIC_KEY'] ?? undefined,
237
- systemPassword: envObj['SYSTEM_PASSWORD']
238
- ? new SecureString(envObj['SYSTEM_PASSWORD'])
239
- : undefined,
240
- systemRoleId: envObj['SYSTEM_ROLE_ID']
241
- ? new ObjectId(envObj['SYSTEM_ROLE_ID'])
242
- : undefined,
243
- systemUserRoleId: envObj['SYSTEM_ROLE_ID']
244
- ? new ObjectId(envObj['SYSTEM_ROLE_ID'])
245
- : undefined,
246
- systemBackupCodes: envObj['SYSTEM_BACKUP_CODES']
247
- ? parseBackupCodes('system', envObj)
248
- : undefined,
249
- mnemonicHmacSecret: new SecureBuffer(
250
- Buffer.from(envObj['MNEMONIC_HMAC_SECRET'] ?? '', 'hex'),
251
- ),
252
- mnemonicEncryptionKey: new SecureBuffer(
253
- Buffer.from(envObj['MNEMONIC_ENCRYPTION_KEY'] ?? '', 'hex'),
254
- ),
255
- timezone: setGlobalActiveContextAdminTimezoneFromProcessArgvOrEnv(),
256
-
257
- // Set language last as it depends on process.env and argv
258
- adminLanguage: setGlobalActiveContextAdminLanguageFromProcessArgvOrEnv(),
259
- pbkdf2Iterations: parseInt(envObj['PBKDF2_ITERATIONS'] ?? '100000'),
260
- production: envObj['NODE_ENV'] === 'production',
261
- };
262
- this._envObject = envObj;
263
- // ensure all required environment variables are set
264
- if (!this._environment.host) {
265
- throw new Error(
266
- getSuiteCoreTranslation(SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
267
- NAME: 'HOST',
268
- }),
269
- );
270
- }
271
- if (!this._environment.port) {
272
- throw new Error(
273
- getSuiteCoreTranslation(SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
274
- NAME: 'PORT',
275
- }),
276
- );
277
- }
278
- if (!this._environment.serverUrl) {
279
- throw new Error(
280
- getSuiteCoreTranslation(SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
281
- NAME: 'SERVER_URL',
282
- }),
283
- );
284
- }
285
- if (!this._environment.jwtSecret) {
286
- throw new Error(
287
- getSuiteCoreTranslation(SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
288
- NAME: 'JWT_SECRET',
289
- }),
290
- );
291
- }
292
- if (!this._environment.mongo.uri) {
293
- throw new Error(
294
- getSuiteCoreTranslation(SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
295
- NAME: 'MONGO_URI',
296
- }),
297
- );
298
- }
299
- if (!this._environment.emailSender) {
300
- throw new Error(
301
- getSuiteCoreTranslation(SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
302
- NAME: 'EMAIL_SENDER',
303
- }),
304
- );
305
- }
306
- if (!initialization && !this._environment.systemPublicKeyHex) {
307
- throw new Error(
308
- getSuiteCoreTranslation(SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
309
- NAME: 'SYSTEM_PUBLIC_KEY',
310
- }),
311
- );
312
- }
313
- if (this._environment.mnemonicHmacSecret.length !== 32) {
314
- throw new Error('MNEMONIC_HMAC_SECRET must be a 64 character hex string');
315
- }
316
- if (this._environment.mnemonicEncryptionKey.length !== 32) {
317
- throw new Error(
318
- 'MNEMONIC_ENCRYPTION_KEY must be a 64 character hex string',
319
- );
320
- }
321
- if (
322
- this._environment.adminMnemonic?.value &&
323
- !constants.MnemonicRegex.test(this._environment.adminMnemonic.value ?? '')
324
- ) {
325
- throw new Error('ADMIN_MNEMONIC must be a valid mnemonic phrase');
326
- }
327
- if (
328
- this._environment.memberMnemonic?.value &&
329
- !constants.MnemonicRegex.test(
330
- this._environment.memberMnemonic.value ?? '',
331
- )
332
- ) {
333
- throw new Error('MEMBER_MNEMONIC must be a valid mnemonic phrase');
334
- }
335
- if (!this._environment.apiDistDir) {
336
- throw new Error(
337
- getSuiteCoreTranslation(SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
338
- NAME: 'API_DIST_DIR',
339
- }),
340
- );
341
- } else if (!existsSync(this._environment.apiDistDir)) {
342
- throw new Error(
343
- getSuiteCoreTranslation(
344
- SuiteCoreStringKey.Admin_EnvDirSetButMissingTemplate,
345
- {
346
- VAR: 'API_DIST_DIR',
347
- PATH: this._environment.apiDistDir,
348
- },
349
- ),
350
- );
351
- }
352
- if (!this._environment.reactDistDir) {
353
- throw new Error(
354
- getSuiteCoreTranslation(SuiteCoreStringKey.Admin_EnvNotSetTemplate, {
355
- NAME: 'REACT_DIST_DIR',
356
- }),
357
- );
358
- } else if (!existsSync(this._environment.reactDistDir)) {
359
- throw new Error(
360
- getSuiteCoreTranslation(
361
- SuiteCoreStringKey.Admin_EnvDirSetButMissingTemplate,
362
- {
363
- VAR: 'REACT_DIST_DIR',
364
- PATH: this._environment.reactDistDir,
365
- },
366
- ),
367
- );
368
- }
369
- if (this.pbkdf2Iterations < 1) {
370
- throw new Error('PBKDF2_ITERATIONS must be greater than 0');
371
- }
372
- }
373
-
374
- public has(key: string): boolean {
375
- return Object.prototype.hasOwnProperty.call(this._envObject, key);
376
- }
377
-
378
- public get(key: string): string | undefined {
379
- return this.has(key) ? String((this._envObject as any)[key]) : undefined;
380
- }
381
-
382
- public setEnvironment(key: string, value: any): void {
383
- // keys are optionally dotted strings for nested objects within the IEnvironment such as mongo.uri
384
- const keys = key.split('.');
385
- let obj: any = this._environment;
386
- for (let i = 0; i < keys.length - 1; i++) {
387
- obj = obj[keys[i]];
388
- }
389
- obj[keys[keys.length - 1]] = value;
390
- }
391
-
392
- public getObject(): object {
393
- return this._envObject;
394
- }
395
-
396
- /**
397
- * Whether to print certain console debug messages and enable certain debug features
398
- */
399
- public get debug(): boolean {
400
- return this._environment.debug;
401
- }
402
-
403
- /**
404
- * Whether to use a development database (eg with less durability and security for ease of local dev)
405
- */
406
- public get devDatabase(): string | undefined {
407
- return this._environment.devDatabase;
408
- }
409
-
410
- public get detailedDebug(): boolean {
411
- return this._environment.detailedDebug;
412
- }
413
-
414
- /**
415
- * The hostname of this server
416
- */
417
- public get host(): string {
418
- return this._environment.host;
419
- }
420
-
421
- /**
422
- * The primary port of this server
423
- */
424
- public get port(): number {
425
- return this._environment.port;
426
- }
427
-
428
- /**
429
- * The JWT secret of this server
430
- */
431
- public get jwtSecret(): string {
432
- return this._environment.jwtSecret;
433
- }
434
-
435
- /**
436
- * The email sernder for this site
437
- */
438
- public get emailSender(): string {
439
- return this._environment.emailSender;
440
- }
441
-
442
- /**
443
- * The base path of the express http server (eg /)
444
- */
445
- public get basePath(): string {
446
- return this._environment.basePath;
447
- }
448
-
449
- /**
450
- * The full URL to the server
451
- */
452
- public get serverUrl(): string {
453
- return this._environment.serverUrl;
454
- }
455
-
456
- /**
457
- * The path to the API dist directory
458
- */
459
- public get apiDistDir(): string {
460
- return this._environment.apiDistDir;
461
- }
462
-
463
- /**
464
- * The path to the react dist directory
465
- */
466
- public get reactDistDir(): string {
467
- return this._environment.reactDistDir;
468
- }
469
-
470
- /**
471
- * The directory + cert root name (eg /workspaces/myapp/locahost+2) to store HTTPS development certificates
472
- */
473
- public get httpsDevCertRoot(): string | undefined {
474
- return this._environment.httpsDevCertRoot;
475
- }
476
-
477
- /**
478
- * The port to use for development HTTPS
479
- */
480
- public get httpsDevPort(): number {
481
- return this._environment.httpsDevPort;
482
- }
483
-
484
- /**
485
- * Whether to disable email sending
486
- */
487
- public get disableEmailSend(): boolean {
488
- return this._environment.disableEmailSend;
489
- }
490
-
491
- /**
492
- * The MongoDB configuration (primarily for transactions)
493
- */
494
- public get mongo(): IMongoEnvironment {
495
- return this._environment.mongo;
496
- }
497
-
498
- /**
499
- * The admin user's mnemonic used to encrypt all files
500
- */
501
- public get adminMnemonic(): SecureString | undefined {
502
- return this._environment.adminMnemonic;
503
- }
504
-
505
- /**
506
- * The date the admin user was created
507
- */
508
- public get adminCreatedAt(): Date | undefined {
509
- return this._environment.adminCreatedAt;
510
- }
511
-
512
- /**
513
- * The ID of the admin user
514
- */
515
- public get adminId(): Types.ObjectId | undefined {
516
- return this._environment.adminId;
517
- }
518
-
519
- /**
520
- * The password of the admin user
521
- */
522
- public get adminPassword(): SecureString | undefined {
523
- return this._environment.adminPassword;
524
- }
525
-
526
- /**
527
- * The role ID of the admin user
528
- */
529
- public get adminRoleId(): Types.ObjectId | undefined {
530
- return this._environment.adminRoleId;
531
- }
532
-
533
- /**
534
- * The user role ID of the admin user
535
- */
536
- public get adminUserRoleId(): Types.ObjectId | undefined {
537
- return this._environment.adminUserRoleId;
538
- }
539
-
540
- /**
541
- * Backup codes for the admin user
542
- */
543
- public get adminBackupCodes(): BackupCode[] | undefined {
544
- return this._environment.adminBackupCodes;
545
- }
546
-
547
- /**
548
- * The test member user's mnemonic used to encrypt all files
549
- */
550
- public get memberMnemonic(): SecureString | undefined {
551
- return this._environment.memberMnemonic;
552
- }
553
-
554
- /**
555
- * The date the member user was created
556
- */
557
- public get memberCreatedAt(): Date | undefined {
558
- return this._environment.memberCreatedAt;
559
- }
560
-
561
- /**
562
- * The date the member user was created
563
- */
564
- public get memberId(): Types.ObjectId | undefined {
565
- return this._environment.memberId;
566
- }
567
-
568
- /**
569
- * The password of the member user
570
- */
571
- public get memberPassword(): SecureString | undefined {
572
- return this._environment.memberPassword;
573
- }
574
-
575
- /**
576
- * The role ID of the member user
577
- */
578
- public get memberRoleId(): Types.ObjectId | undefined {
579
- return this._environment.memberRoleId;
580
- }
581
-
582
- /**
583
- * The user role ID of the member user
584
- */
585
- public get memberUserRoleId(): Types.ObjectId | undefined {
586
- return this._environment.memberUserRoleId;
587
- }
588
-
589
- /**
590
- * Backup codes for the member user
591
- */
592
- public get memberBackupCodes(): BackupCode[] | undefined {
593
- return this._environment.memberBackupCodes;
594
- }
595
-
596
- /**
597
- * The system user's mnemonic used to encrypt all files
598
- */
599
- public get systemMnemonic(): SecureString | undefined {
600
- return this._environment.systemMnemonic;
601
- }
602
-
603
- /**
604
- * The date the system user was created
605
- */
606
- public get systemCreatedAt(): Date | undefined {
607
- return this._environment.systemCreatedAt;
608
- }
609
-
610
- /**
611
- * The ID of the system user
612
- */
613
- public get systemId(): Types.ObjectId | undefined {
614
- return this._environment.systemId;
615
- }
616
-
617
- /**
618
- * The public key of the system user
619
- */
620
- public get systemPublicKeyHex(): string | undefined {
621
- return this._environment.systemPublicKeyHex;
622
- }
623
-
624
- /**
625
- * The password of the system user
626
- */
627
- public get systemPassword(): SecureString | undefined {
628
- return this._environment.systemPassword;
629
- }
630
-
631
- /**
632
- * The role ID of the system user
633
- */
634
- public get systemRoleId(): Types.ObjectId | undefined {
635
- return this._environment.systemRoleId;
636
- }
637
-
638
- /**
639
- * The user role ID of the system user
640
- */
641
- public get systemUserRoleId(): Types.ObjectId | undefined {
642
- return this._environment.systemUserRoleId;
643
- }
644
-
645
- /**
646
- * Backup codes for the system user
647
- */
648
- public get systemBackupCodes(): BackupCode[] | undefined {
649
- return this._environment.systemBackupCodes;
650
- }
651
-
652
- /**
653
- * The system's HMAC secret for the mnemonic tracking collection
654
- */
655
- public get mnemonicHmacSecret(): SecureBuffer {
656
- return this._environment.mnemonicHmacSecret;
657
- }
658
-
659
- /**
660
- * The system's HMAC encryption key for the mnemonic tracking collection
661
- */
662
- public get mnemonicEncryptionKey(): SecureBuffer {
663
- return this._environment.mnemonicEncryptionKey;
664
- }
665
-
666
- /**
667
- * The timezone for the server
668
- */
669
- public get timezone(): Timezone {
670
- return this._environment.timezone;
671
- }
672
-
673
- public get adminLanguage(): string {
674
- return this._environment.adminLanguage;
675
- }
676
-
677
- /**
678
- * The number of pbkdf2 iterations for key wrapping
679
- */
680
- public get pbkdf2Iterations(): number {
681
- return this._environment.pbkdf2Iterations;
682
- }
683
-
684
- /**
685
- * Whether this is a production environment
686
- */
687
- public get production(): boolean {
688
- return this._environment.production;
689
- }
690
-
691
- /**
692
- * Console dump the environment variables for debugging purposes
693
- */
694
- public dumpEnvironment(logLevel: DEBUG_TYPE = 'log'): void {
695
- debugLog(
696
- true,
697
- logLevel,
698
- `Environment Variables:
699
- -------------------------
700
- DEBUG: ${this.debug}
701
- DETAILED_DEBUG: ${this.detailedDebug}
702
- HOST: ${this.host}
703
- PORT: ${this.port}
704
- JWT_SECRET: ${this.jwtSecret}
705
- EMAIL_SENDER: ${this.emailSender}
706
- BASE_PATH: ${this.basePath}
707
- SERVER_URL: ${this.serverUrl}
708
- API_DIST_DIR: ${this.apiDistDir}
709
- REACT_DIST_DIR: ${this.reactDistDir}
710
- DISABLE_EMAIL_SEND: ${this.disableEmailSend}
711
- TIMEZONE: ${this.timezone.value}
712
- Mongo:
713
- -- URI: ${this.mongo.uri}
714
- -- USE_TRANSACTIONS: ${this.mongo.useTransactions ? 'true' : 'false'}
715
- -- SET_PARAMETER_SUPPORTED: ${this.mongo.setParameterSupported}
716
- -- TRANSACTION_LIFETIME_LIMIT_SECONDS_SUPPORTED: ${
717
- this.mongo.transactionLifetimeLimitSecondsSupported
718
- }
719
- -- MAX_TRANSACTION_LOCK_REQUEST_TIMEOUT_MILLIS_SUPPORTED: ${
720
- this.mongo.maxTransactionLockRequestTimeoutMillisSupported
721
- }
722
- -- MAX_POOL_SIZE: ${this.mongo.maxPoolSize}
723
- -- MIN_POOL_SIZE: ${this.mongo.minPoolSize}
724
- -- MAX_IDLE_TIME_MS: ${this.mongo.maxIdleTimeMS}
725
- -- SERVER_SELECTION_TIMEOUT_MS: ${this.mongo.serverSelectionTimeoutMS}
726
- -- SOCKET_TIMEOUT_MS: ${this.mongo.socketTimeoutMS}
727
- -- RETRY_WRITES: ${this.mongo.retryWrites ? 'true' : 'false'}
728
- -- RETRY_READS: ${this.mongo.retryReads ? 'true' : 'false'}
729
- -- TRANSACTION_TIMEOUT: ${this.mongo.transactionTimeout}
730
- -- TRANSACTION_LOCK_REQUEST_TIMEOUT: ${this.mongo.transactionLockRequestTimeout}
731
- LANGUAGE: ${this.adminLanguage}
732
- Admin User Data:
733
- -- ADMIN_ID: ${this.adminId?.toString()}
734
- -- ADMIN_CREATED_AT: ${this.adminCreatedAt?.toISOString()}
735
- -- ADMIN_MNEMONIC: ${this.adminMnemonic?.value}
736
- -- ADMIN_PASSWORD: ${this.adminPassword?.value}
737
- -- ADMIN_ROLE_ID: ${this.adminRoleId?.toString()}
738
- -- ADMIN_ROLE_ID: ${this.adminUserRoleId?.toString()}
739
- -- ADMIN_BACKUP_CODES: ${this.adminBackupCodes
740
- ?.map((code: SecureString) => code.value)
741
- .join(', ')}
742
- Member User Data:
743
- -- MEMBER_ID: ${this.memberId?.toString()}
744
- -- MEMBER_CREATED_AT: ${this.memberCreatedAt?.toISOString()}
745
- -- MEMBER_MNEMONIC: ${this.adminMnemonic?.value}
746
- -- MEMBER_PASSWORD: ${this.memberPassword?.value}
747
- -- MEMBER_ROLE_ID: ${this.memberRoleId?.toString()}
748
- -- MEMBER_USER_ROLE_ID: ${this.memberUserRoleId?.toString()}
749
- -- MEMBER_BACKUP_CODES: ${this.memberBackupCodes
750
- ?.map((code: SecureString) => code.value)
751
- .join(', ')}
752
- System User Data:
753
- -- SYSTEM_ID: ${this.systemId?.toString()}
754
- -- SYSTEM_CREATED_AT: ${this.systemCreatedAt?.toISOString()}
755
- -- SYSTEM_MNEMONIC: ${this.systemMnemonic?.value}
756
- -- SYSTEM_PUBLIC_KEY: ${this.systemPublicKeyHex}
757
- -- SYSTEM_PASSWORD: ${this.systemPassword?.value}
758
- -- SYSTEM_ROLE_ID: ${this.systemRoleId?.toString()}
759
- -- SYSTEM_ROLE_ID: ${this.systemUserRoleId?.toString()}
760
- -- SYSTEM_BACKUP_CODES: ${this.systemBackupCodes
761
- ?.map((code: SecureString) => code.value)
762
- .join(', ')}
763
- Mnemonic Service Configuration:
764
- -- MNEMONIC_HMAC_SECRET: ${this.mnemonicHmacSecret.valueAsHexString}
765
- -- MNEMONIC_ENCRYPTION_KEY: ${this.mnemonicEncryptionKey.valueAsHexString}
766
- PBKDF2 Iterations: ${this.pbkdf2Iterations}
767
- -------------------------`,
768
- );
769
- }
770
- }