@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,395 @@
1
+ /**
2
+ * @fileoverview Application router for serving React frontend and API routes.
3
+ * Handles static file serving, EJS template rendering, and catch-all routing.
4
+ * @module routers/app
5
+ */
6
+
7
+ import {
8
+ CoreI18nComponentId,
9
+ TranslatableGenericError,
10
+ } from '@digitaldefiance/i18n-lib';
11
+ import {
12
+ getSuiteCoreTranslation,
13
+ SuiteCoreStringKey,
14
+ TranslatableSuiteError,
15
+ } from '@digitaldefiance/suite-core-lib';
16
+ import ejs from 'ejs';
17
+ import {
18
+ Application,
19
+ static as expressStatic,
20
+ NextFunction,
21
+ Request,
22
+ Response,
23
+ } from 'express';
24
+ import { existsSync, readdirSync } from 'fs';
25
+ import { resolve, sep } from 'path';
26
+ import { IApplication } from '../interfaces/application';
27
+ import { debugLog, handleError, sendApiMessageResponse } from '../utils';
28
+ import { BaseRouter } from './base';
29
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
30
+
31
+ /**
32
+ * Dummy function to ensure EJS is included in the bundle.
33
+ * @private
34
+ */
35
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
36
+ function keepEJS() {
37
+ ejs.compile(''); // Compile an empty string, doesn't generate anything meaningful
38
+ }
39
+
40
+ /**
41
+ * Application router for serving React frontend and API routes.
42
+ * Sets up static file serving, EJS template rendering, and catch-all routing for SPA.
43
+ * @template TID Platform-specific ID type
44
+ * @template TApplication Application instance type
45
+ */
46
+ export class AppRouter<
47
+ TID extends PlatformID = Buffer,
48
+ TApplication extends IApplication<TID> = IApplication<TID>,
49
+ > {
50
+ /** Path to EJS views directory */
51
+ protected readonly viewsPath: string;
52
+ /** Path to index.html file */
53
+ protected readonly indexPath: string;
54
+ /** Path to assets directory */
55
+ protected readonly assetsDir: string;
56
+ /** Path to React distribution directory */
57
+ protected readonly reactDistDir: string;
58
+
59
+ /** API router instance */
60
+ protected readonly apiRouter: BaseRouter<TID, TApplication>;
61
+ /** Application instance */
62
+ protected readonly application: TApplication;
63
+
64
+ /**
65
+ * Creates a new application router instance.
66
+ * Validates and resolves all paths to prevent directory traversal attacks.
67
+ * @param apiRouter API router instance to mount under /api
68
+ * @throws {TranslatableSuiteError} If paths contain invalid traversal sequences
69
+ */
70
+ constructor(apiRouter: BaseRouter<TID, TApplication>) {
71
+ this.application = apiRouter.application;
72
+ this.apiRouter = apiRouter;
73
+
74
+ // Validate paths don't contain traversal sequences
75
+ if (
76
+ this.application.environment.apiDistDir.includes('..') ||
77
+ this.application.environment.reactDistDir.includes('..')
78
+ ) {
79
+ throw new TranslatableSuiteError(
80
+ SuiteCoreStringKey.Error_InvalidPathContainsParentDirectoryReference,
81
+ );
82
+ }
83
+
84
+ const normalizedApiDistDir = resolve(
85
+ this.application.environment.apiDistDir,
86
+ );
87
+ const viewsPath = resolve(normalizedApiDistDir, 'views');
88
+ if (
89
+ !viewsPath.startsWith(normalizedApiDistDir + sep) &&
90
+ viewsPath !== normalizedApiDistDir
91
+ ) {
92
+ throw new TranslatableSuiteError(
93
+ SuiteCoreStringKey.Error_InvalidViewsPathEscapesBaseDirectory,
94
+ );
95
+ }
96
+ this.viewsPath = viewsPath;
97
+
98
+ const normalizedReactDistDir = resolve(
99
+ this.application.environment.reactDistDir,
100
+ );
101
+ this.reactDistDir = normalizedReactDistDir;
102
+
103
+ const indexPath = resolve(normalizedReactDistDir, 'index.html');
104
+ if (
105
+ !indexPath.startsWith(normalizedReactDistDir + sep) &&
106
+ indexPath !== normalizedReactDistDir
107
+ ) {
108
+ throw new TranslatableSuiteError(
109
+ SuiteCoreStringKey.Error_InvalidIndexPathEscapesBaseDirectory,
110
+ );
111
+ }
112
+ this.indexPath = indexPath;
113
+
114
+ const assetsPath = resolve(normalizedReactDistDir, 'assets');
115
+ if (
116
+ !assetsPath.startsWith(normalizedReactDistDir + sep) &&
117
+ assetsPath !== normalizedReactDistDir
118
+ ) {
119
+ throw new TranslatableSuiteError(
120
+ SuiteCoreStringKey.Error_InvalidAssetsPathEscapesBaseDirectory,
121
+ );
122
+ }
123
+ this.assetsDir = assetsPath;
124
+ }
125
+
126
+ /**
127
+ * Gets the filename of an asset matching a pattern.
128
+ * @param assetDir Directory to search in
129
+ * @param pattern Regular expression pattern to match
130
+ * @returns Filename if found, undefined otherwise
131
+ */
132
+ public getAssetFilename(
133
+ assetDir: string,
134
+ pattern: RegExp,
135
+ ): string | undefined {
136
+ try {
137
+ // Prevent path traversal by validating assetDir is within expected directory
138
+ // amazonq-ignore-next-line already addressed
139
+ if (
140
+ // amazonq-ignore-next-line
141
+ assetDir.includes('..') ||
142
+ !assetDir.startsWith(this.reactDistDir)
143
+ ) {
144
+ return undefined;
145
+ }
146
+ const files = readdirSync(assetDir, 'utf8');
147
+ return files.find((f) => pattern.test(f));
148
+ } catch {
149
+ return undefined;
150
+ }
151
+ }
152
+
153
+ /**
154
+ * Gets base view locals for EJS template rendering.
155
+ * Subclasses can override to add additional locals.
156
+ * @param req Express request
157
+ * @param res Express response
158
+ * @returns Object containing base template variables
159
+ */
160
+ protected getBaseViewLocals(
161
+ req: Request,
162
+ res: Response,
163
+ ): Record<string, unknown> {
164
+ const SiteName = this.application.constants.Site;
165
+ const SiteTagline = this.application.constants.SiteTagline;
166
+ const SiteDescription = this.application.constants.SiteDescription;
167
+ const hostname = req.hostname;
168
+ const server =
169
+ (req.socket.localPort === 443 && req.protocol === 'https') ||
170
+ (req.socket.localPort === 80 && req.protocol === 'http')
171
+ ? `${req.protocol}://${hostname}`
172
+ : `${req.protocol}://${hostname}:${req.socket.localPort}`;
173
+
174
+ return {
175
+ cspNonce: res.locals['cspNonce'],
176
+ title: SiteName,
177
+ tagline: SiteTagline,
178
+ description: SiteDescription,
179
+ server,
180
+ siteUrl: this.apiRouter.application.environment.serverUrl,
181
+ baseHref: this.apiRouter.application.environment.basePath,
182
+ hostname,
183
+ siteTitle: SiteName,
184
+ };
185
+ }
186
+
187
+ /**
188
+ * Renders an EJS template with the provided locals.
189
+ * @param req Express request
190
+ * @param res Express response
191
+ * @param next Express next function
192
+ * @param template Template name to render
193
+ * @param locals Template variables
194
+ */
195
+ protected renderTemplate(
196
+ req: Request,
197
+ res: Response,
198
+ next: NextFunction,
199
+ template: string,
200
+ locals: Record<string, unknown>,
201
+ ): void {
202
+ if (!/^[\w/-]+$/.test(template)) {
203
+ next(new Error('Invalid template name requested'));
204
+ return;
205
+ }
206
+
207
+ const sanitizedUrl = (req.url || '').replace(/[\r\n]/g, ' ');
208
+ debugLog(
209
+ this.apiRouter.application.environment.debug,
210
+ 'log',
211
+ `Rendering view "${template}" for ${sanitizedUrl}`,
212
+ );
213
+
214
+ res.render(template, locals, (err, html) => {
215
+ if (err) {
216
+ const errMsg =
217
+ err && typeof err === 'object' && 'message' in err
218
+ ? String(err.message).replace(/[\r\n]/g, ' ')
219
+ : 'Unknown error';
220
+ console.error('Error rendering: ' + errMsg);
221
+ const normalizedError = err instanceof Error ? err : new Error(errMsg);
222
+ if (!res.headersSent) {
223
+ res.status(500).send('An error occurred');
224
+ }
225
+ next(normalizedError);
226
+ return;
227
+ }
228
+
229
+ if (!html) {
230
+ next(new Error(`Rendered template "${template}" returned empty HTML`));
231
+ return;
232
+ }
233
+
234
+ debugLog(
235
+ this.apiRouter.application.environment.debug,
236
+ 'log',
237
+ `Rendered view "${template}" for ${sanitizedUrl}`,
238
+ );
239
+
240
+ res.send(html);
241
+ });
242
+ }
243
+
244
+ /**
245
+ * Creates a view renderer function for a specific template.
246
+ * @param template Template name to render
247
+ * @param localsFactory Optional function to generate additional locals
248
+ * @returns Express middleware function
249
+ */
250
+ protected createViewRenderer(
251
+ template: string,
252
+ localsFactory?: (req: Request, res: Response) => Record<string, unknown>,
253
+ ): (req: Request, res: Response, next: NextFunction) => void {
254
+ return (req, res, next) => {
255
+ const baseLocals = this.getBaseViewLocals(req, res);
256
+ const extraLocals = localsFactory ? localsFactory(req, res) : {};
257
+ this.renderTemplate(req, res, next, template, {
258
+ ...baseLocals,
259
+ ...extraLocals,
260
+ });
261
+ };
262
+ }
263
+
264
+ /**
265
+ * Override to register additional routes (e.g. other EJS pages) before the index catch-all.
266
+ * @param app Express application
267
+ */
268
+ protected registerAdditionalRenderHooks(app: Application): void {
269
+ void app;
270
+ }
271
+
272
+ /**
273
+ * Renders the index.html page with injected asset paths.
274
+ * @param req Express request
275
+ * @param res Express response
276
+ * @param next Express next function
277
+ */
278
+ public renderIndex(req: Request, res: Response, next: NextFunction): void {
279
+ if (req.url.endsWith('.js')) {
280
+ res.type('application/javascript');
281
+ }
282
+
283
+ const jsFile = this.getAssetFilename(this.assetsDir, /^index-.*\.js$/);
284
+ const cssFile = this.getAssetFilename(this.assetsDir, /^index-.*\.css$/);
285
+ const locals = {
286
+ ...this.getBaseViewLocals(req, res),
287
+ jsFile: jsFile ? `assets/${jsFile}` : undefined,
288
+ cssFile: cssFile ? `assets/${cssFile}` : undefined,
289
+ };
290
+
291
+ this.renderTemplate(req, res, next, 'index', locals);
292
+ }
293
+
294
+ /**
295
+ * Initializes the application router with all routes and middleware.
296
+ * Sets up API routes, static file serving, and catch-all routing.
297
+ * @param app Express application
298
+ * @throws {TranslatableGenericError} If index file not found or invalid paths
299
+ */
300
+ public init(app: Application) {
301
+ const reactDistHasDistSegment = this.reactDistDir
302
+ .split(sep)
303
+ .filter((segment) => segment.length > 0)
304
+ .some((segment) => segment.toLowerCase() === 'dist');
305
+ if (!reactDistHasDistSegment) {
306
+ throw new TranslatableGenericError<SuiteCoreStringKey>(
307
+ CoreI18nComponentId,
308
+ SuiteCoreStringKey.Error_AppDoesNotAppearToBeRunningWithinDistTemplate,
309
+ { dir: this.apiRouter.application.environment.reactDistDir },
310
+ );
311
+ }
312
+ if (!existsSync(this.indexPath)) {
313
+ throw new TranslatableGenericError<SuiteCoreStringKey>(
314
+ CoreI18nComponentId,
315
+ SuiteCoreStringKey.Error_IndexFileNotFoundTemplate,
316
+ { path: this.indexPath },
317
+ );
318
+ }
319
+
320
+ if (this.apiRouter.application.environment.debug) {
321
+ app.use((req, res, next) => {
322
+ const port =
323
+ (req.socket.localPort === 443 && req.protocol === 'https') ||
324
+ (req.socket.localPort === 80 && req.protocol === 'http')
325
+ ? ''
326
+ : `:${req.socket.localPort}`;
327
+ // amazonq-ignore-next-line
328
+ console.log(
329
+ getSuiteCoreTranslation(SuiteCoreStringKey.Admin_ServingRoute) +
330
+ ': method=' +
331
+ req.method +
332
+ ' url=' +
333
+ req.protocol +
334
+ '://' +
335
+ req.hostname +
336
+ port +
337
+ (req.url || '').replace(/[\r\n]/g, ' '),
338
+ );
339
+ next();
340
+ });
341
+ }
342
+
343
+ app.use('/api', this.apiRouter.router);
344
+
345
+ app.set('views', this.viewsPath);
346
+ app.set('view engine', 'ejs');
347
+
348
+ // Serve static files from the React app build directory (validated in constructor)
349
+ app.use('/assets', expressStatic(this.assetsDir));
350
+ const serveStaticWithLogging = expressStatic(this.reactDistDir);
351
+ app.use('/static/js', expressStatic(this.reactDistDir));
352
+ app.use((req, res, next) => {
353
+ if (req.url === '/') {
354
+ next();
355
+ return;
356
+ }
357
+ debugLog(
358
+ this.apiRouter.application.environment.debug,
359
+ 'log',
360
+ `Trying to serve static for ${(req.url || '').replace(/[\r\n]/g, ' ')}`,
361
+ );
362
+ if (req.url.endsWith('.js')) {
363
+ res.type('application/javascript');
364
+ }
365
+ serveStaticWithLogging(req, res, (err) => {
366
+ if (err) {
367
+ const sanitizedErr =
368
+ err instanceof Error
369
+ ? err.message.replace(/[\r\n]/g, ' ')
370
+ : String(err).replace(/[\r\n]/g, ' ');
371
+ debugLog(
372
+ this.apiRouter.application.environment.debug,
373
+ 'error',
374
+ 'Error serving static file:',
375
+ sanitizedErr,
376
+ );
377
+ handleError(err, res, sendApiMessageResponse, next);
378
+ return;
379
+ }
380
+ next();
381
+ });
382
+ });
383
+
384
+ // The "catchall" handler: for any request that doesn't
385
+ // match one above, send back React's index.html file.
386
+ // app.get('*', (req, res) => {
387
+ // res.sendFile(path.join(__dirname,'..', '..', '..', 'myapp-react', 'index.html'));
388
+ // });
389
+ this.registerAdditionalRenderHooks(app);
390
+
391
+ app.use((req: Request, res: Response, next: NextFunction) => {
392
+ this.renderIndex(req, res, next);
393
+ });
394
+ }
395
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @fileoverview Base router class providing common router functionality.
3
+ * All routers extend this class to access application context and Express router.
4
+ * @module routers/base
5
+ */
6
+
7
+ import { Router } from 'express';
8
+ import { IApplication } from '../interfaces/application';
9
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
10
+
11
+ /**
12
+ * Abstract base class for all routers in the application.
13
+ * Provides access to the Express router and application instance.
14
+ * @template TID Platform-specific ID type (Buffer, ObjectId, etc.)
15
+ * @template TApplication Application instance type
16
+ */
17
+ export abstract class BaseRouter<
18
+ TID extends PlatformID = Buffer,
19
+ TApplication extends IApplication<TID> = IApplication<TID>,
20
+ > {
21
+ /** Express router instance for registering routes */
22
+ public readonly router: Router;
23
+ /** Application instance providing access to services and configuration */
24
+ public readonly application: TApplication;
25
+
26
+ /**
27
+ * Creates a new base router instance.
28
+ * @param application Application instance
29
+ */
30
+ protected constructor(application: TApplication) {
31
+ this.application = application;
32
+ this.router = Router();
33
+ }
34
+ }
@@ -1,4 +1,3 @@
1
1
  export * from './api';
2
2
  export * from './app';
3
3
  export * from './base';
4
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @fileoverview Router configuration interface and defaults.
3
+ * Defines configuration options for router setup including static paths, view engine, and middleware.
4
+ * @module routers/router-config
5
+ */
6
+
7
+ import { RequestHandler } from 'express';
8
+
9
+ /**
10
+ * Configuration interface for router setup.
11
+ */
12
+ export interface RouterConfig {
13
+ /** Array of static path configurations with prefix and directory */
14
+ staticPaths?: Array<{ prefix: string; directory: string }>;
15
+ /** View engine configuration with name and views path */
16
+ viewEngine?: { name: string; viewsPath: string };
17
+ /** Array of middleware functions to apply */
18
+ middleware?: RequestHandler[];
19
+ /** CORS configuration options */
20
+ cors?: {
21
+ /** Allowed origin(s) for CORS */
22
+ origin?: string | string[];
23
+ /** Whether to allow credentials */
24
+ credentials?: boolean;
25
+ };
26
+ }
27
+
28
+ /**
29
+ * Default router configuration with empty arrays.
30
+ */
31
+ export const DefaultRouterConfig: RouterConfig = {
32
+ staticPaths: [],
33
+ middleware: [],
34
+ };
@@ -0,0 +1 @@
1
+ export * from './route-builder';
@@ -0,0 +1,214 @@
1
+ /**
2
+ * @fileoverview Route builder for fluent route configuration.
3
+ * Provides builder pattern for defining Express routes.
4
+ * @module routing/route-builder
5
+ */
6
+
7
+ import { RequestHandler } from 'express';
8
+ import { ValidationChain } from 'express-validator';
9
+ import { z } from 'zod';
10
+
11
+ /**
12
+ * Builder for constructing route configurations with fluent API.
13
+ * @template TLanguage - Language code type (defaults to string)
14
+ */
15
+ export class RouteBuilder<TLanguage extends string = string> {
16
+ private config: {
17
+ method?: 'get' | 'post' | 'put' | 'delete' | 'patch';
18
+ path?: string;
19
+ handler?: RequestHandler;
20
+ auth?: boolean;
21
+ cryptoAuth?: boolean;
22
+ validation?: ValidationChain[] | ((lang: TLanguage) => ValidationChain[]);
23
+ schema?: z.ZodSchema;
24
+ middleware?: RequestHandler[];
25
+ transaction?: boolean;
26
+ transactionTimeout?: number;
27
+ rawJson?: boolean;
28
+ } = {};
29
+
30
+ /**
31
+ * Creates a new RouteBuilder instance.
32
+ * @template T - Language code type
33
+ * @returns {RouteBuilder<T>} New builder instance
34
+ */
35
+ static create<T extends string = string>(): RouteBuilder<T> {
36
+ return new RouteBuilder<T>();
37
+ }
38
+
39
+ /**
40
+ * Sets GET method and path.
41
+ * @param {string} path - Route path
42
+ * @returns {this} This builder for chaining
43
+ */
44
+ get(path: string): this {
45
+ this.config.method = 'get';
46
+ this.config.path = path;
47
+ return this;
48
+ }
49
+
50
+ /**
51
+ * Sets POST method and path.
52
+ * @param {string} path - Route path
53
+ * @returns {this} This builder for chaining
54
+ */
55
+ post(path: string): this {
56
+ this.config.method = 'post';
57
+ this.config.path = path;
58
+ return this;
59
+ }
60
+
61
+ /**
62
+ * Sets PUT method and path.
63
+ * @param {string} path - Route path
64
+ * @returns {this} This builder for chaining
65
+ */
66
+ put(path: string): this {
67
+ this.config.method = 'put';
68
+ this.config.path = path;
69
+ return this;
70
+ }
71
+
72
+ /**
73
+ * Sets DELETE method and path.
74
+ * @param {string} path - Route path
75
+ * @returns {this} This builder for chaining
76
+ */
77
+ delete(path: string): this {
78
+ this.config.method = 'delete';
79
+ this.config.path = path;
80
+ return this;
81
+ }
82
+
83
+ /**
84
+ * Sets PATCH method and path.
85
+ * @param {string} path - Route path
86
+ * @returns {this} This builder for chaining
87
+ */
88
+ patch(path: string): this {
89
+ this.config.method = 'patch';
90
+ this.config.path = path;
91
+ return this;
92
+ }
93
+
94
+ /**
95
+ * Enables authentication.
96
+ * @param {boolean} [enabled=true] - Whether to enable authentication
97
+ * @returns {this} This builder for chaining
98
+ */
99
+ auth(enabled = true): this {
100
+ this.config.auth = enabled;
101
+ return this;
102
+ }
103
+
104
+ /**
105
+ * Enables crypto authentication.
106
+ * @param {boolean} [enabled=true] - Whether to enable crypto authentication
107
+ * @returns {this} This builder for chaining
108
+ */
109
+ cryptoAuth(enabled = true): this {
110
+ this.config.cryptoAuth = enabled;
111
+ return this;
112
+ }
113
+
114
+ /**
115
+ * Sets validation chains.
116
+ * @param {ValidationChain[] | Function} validation - Validation chains or factory function
117
+ * @returns {this} This builder for chaining
118
+ */
119
+ validate(
120
+ validation: ValidationChain[] | ((lang: TLanguage) => ValidationChain[]),
121
+ ): this {
122
+ this.config.validation = validation;
123
+ return this;
124
+ }
125
+
126
+ /**
127
+ * Sets Zod schema for validation.
128
+ * @param {z.ZodSchema} schema - Zod schema
129
+ * @returns {this} This builder for chaining
130
+ */
131
+ schema(schema: z.ZodSchema): this {
132
+ this.config.schema = schema;
133
+ return this;
134
+ }
135
+
136
+ /**
137
+ * Adds middleware to the route.
138
+ * @param {...RequestHandler[]} middleware - Middleware functions
139
+ * @returns {this} This builder for chaining
140
+ */
141
+ use(...middleware: RequestHandler[]): this {
142
+ this.config.middleware = [...(this.config.middleware || []), ...middleware];
143
+ return this;
144
+ }
145
+
146
+ /**
147
+ * Enables transaction support.
148
+ * @param {boolean} [enabled=true] - Whether to enable transactions
149
+ * @param {number} [timeout] - Transaction timeout in milliseconds
150
+ * @returns {this} This builder for chaining
151
+ */
152
+ transaction(enabled = true, timeout?: number): this {
153
+ this.config.transaction = enabled;
154
+ if (timeout) this.config.transactionTimeout = timeout;
155
+ return this;
156
+ }
157
+
158
+ /**
159
+ * Enables raw JSON handling.
160
+ * @param {boolean} [enabled=true] - Whether to enable raw JSON
161
+ * @returns {this} This builder for chaining
162
+ */
163
+ rawJson(enabled = true): this {
164
+ this.config.rawJson = enabled;
165
+ return this;
166
+ }
167
+
168
+ /**
169
+ * Builds the route configuration with handler.
170
+ * @param {RequestHandler} handler - Route handler function
171
+ * @returns {RouteConfig<TLanguage>} Complete route configuration
172
+ * @throws {Error} If method or path not set
173
+ */
174
+ handle(handler: RequestHandler): RouteConfig<TLanguage> {
175
+ if (!this.config.method || !this.config.path) {
176
+ throw new Error('Method and path must be set before calling handle()');
177
+ }
178
+ return {
179
+ method: this.config.method,
180
+ path: this.config.path,
181
+ handler,
182
+ options: {
183
+ auth: this.config.auth,
184
+ cryptoAuth: this.config.cryptoAuth,
185
+ validation: this.config.validation,
186
+ schema: this.config.schema,
187
+ middleware: this.config.middleware,
188
+ transaction: this.config.transaction,
189
+ transactionTimeout: this.config.transactionTimeout,
190
+ rawJson: this.config.rawJson,
191
+ },
192
+ };
193
+ }
194
+ }
195
+
196
+ /**
197
+ * Route configuration interface.
198
+ * @template TLanguage - Language code type (defaults to string)
199
+ */
200
+ export interface RouteConfig<TLanguage extends string = string> {
201
+ method: 'get' | 'post' | 'put' | 'delete' | 'patch';
202
+ path: string;
203
+ handler: RequestHandler;
204
+ options: {
205
+ auth?: boolean;
206
+ cryptoAuth?: boolean;
207
+ validation?: ValidationChain[] | ((lang: TLanguage) => ValidationChain[]);
208
+ schema?: z.ZodSchema;
209
+ middleware?: RequestHandler[];
210
+ transaction?: boolean;
211
+ transactionTimeout?: number;
212
+ rawJson?: boolean;
213
+ };
214
+ }