@digitaldefiance/node-express-suite 3.7.4 → 3.7.5

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