@venizia/ignis 0.2.0-8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/LICENSE.md +0 -1
  2. package/README.md +118 -158
  3. package/dist/base/applications/base.d.ts +19 -13
  4. package/dist/base/applications/base.d.ts.map +1 -1
  5. package/dist/base/applications/base.js +95 -74
  6. package/dist/base/applications/base.js.map +1 -1
  7. package/dist/base/applications/boot-steps.d.ts +13 -0
  8. package/dist/base/applications/boot-steps.d.ts.map +1 -0
  9. package/dist/base/applications/boot-steps.js +23 -0
  10. package/dist/base/applications/boot-steps.js.map +1 -0
  11. package/dist/base/applications/common/index.d.ts +2 -0
  12. package/dist/base/applications/common/index.d.ts.map +1 -0
  13. package/dist/base/applications/common/index.js +18 -0
  14. package/dist/base/applications/common/index.js.map +1 -0
  15. package/dist/base/applications/{types.d.ts → common/types.d.ts} +11 -0
  16. package/dist/base/applications/common/types.d.ts.map +1 -0
  17. package/dist/base/applications/common/types.js.map +1 -0
  18. package/dist/base/applications/index.d.ts +2 -1
  19. package/dist/base/applications/index.d.ts.map +1 -1
  20. package/dist/base/applications/index.js +2 -1
  21. package/dist/base/applications/index.js.map +1 -1
  22. package/dist/base/applications/server.d.ts +6 -2
  23. package/dist/base/applications/server.d.ts.map +1 -1
  24. package/dist/base/applications/server.js +34 -2
  25. package/dist/base/applications/server.js.map +1 -1
  26. package/dist/base/controllers/grpc/adapter.js +2 -2
  27. package/dist/base/controllers/grpc/adapter.js.map +1 -1
  28. package/dist/base/middlewares/app-error/app-error.middleware.d.ts +3 -2
  29. package/dist/base/middlewares/app-error/app-error.middleware.d.ts.map +1 -1
  30. package/dist/base/middlewares/app-error/app-error.middleware.js +4 -3
  31. package/dist/base/middlewares/app-error/app-error.middleware.js.map +1 -1
  32. package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts +1 -1
  33. package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts.map +1 -1
  34. package/dist/base/middlewares/request-spy/request-spy.middleware.js +13 -4
  35. package/dist/base/middlewares/request-spy/request-spy.middleware.js.map +1 -1
  36. package/dist/common/constants.d.ts.map +1 -1
  37. package/dist/common/constants.js +2 -1
  38. package/dist/common/constants.js.map +1 -1
  39. package/dist/common/environments.d.ts +31 -10
  40. package/dist/common/environments.d.ts.map +1 -1
  41. package/dist/common/environments.js +33 -10
  42. package/dist/common/environments.js.map +1 -1
  43. package/dist/components/api-reference/component.d.ts.map +1 -1
  44. package/dist/components/api-reference/component.js +4 -3
  45. package/dist/components/api-reference/component.js.map +1 -1
  46. package/dist/components/api-reference/index.d.ts +1 -1
  47. package/dist/components/api-reference/index.d.ts.map +1 -1
  48. package/dist/components/api-reference/index.js +1 -1
  49. package/dist/components/api-reference/index.js.map +1 -1
  50. package/dist/components/api-reference/ui/factory.d.ts +14 -0
  51. package/dist/components/api-reference/ui/factory.d.ts.map +1 -0
  52. package/dist/components/api-reference/ui/factory.js +54 -0
  53. package/dist/components/api-reference/ui/factory.js.map +1 -0
  54. package/dist/components/api-reference/ui/index.d.ts +4 -0
  55. package/dist/components/api-reference/ui/index.d.ts.map +1 -0
  56. package/dist/components/api-reference/ui/index.js +20 -0
  57. package/dist/components/api-reference/ui/index.js.map +1 -0
  58. package/dist/components/api-reference/ui/scalar.d.ts +8 -0
  59. package/dist/components/api-reference/ui/scalar.d.ts.map +1 -0
  60. package/dist/components/api-reference/ui/scalar.js +28 -0
  61. package/dist/components/api-reference/ui/scalar.js.map +1 -0
  62. package/dist/components/api-reference/ui/swagger.d.ts +8 -0
  63. package/dist/components/api-reference/ui/swagger.d.ts.map +1 -0
  64. package/dist/components/api-reference/ui/swagger.js +28 -0
  65. package/dist/components/api-reference/ui/swagger.js.map +1 -0
  66. package/dist/components/auth/authenticate/component.d.ts +5 -0
  67. package/dist/components/auth/authenticate/component.d.ts.map +1 -1
  68. package/dist/components/auth/authenticate/component.js +23 -0
  69. package/dist/components/auth/authenticate/component.js.map +1 -1
  70. package/dist/components/auth/authenticate/controllers/factory.d.ts +35 -3
  71. package/dist/components/auth/authenticate/controllers/factory.d.ts.map +1 -1
  72. package/dist/components/auth/authenticate/controllers/jwks/definitions.d.ts +40 -20
  73. package/dist/components/auth/authenticate/controllers/jwks/definitions.d.ts.map +1 -1
  74. package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts +40 -20
  75. package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts.map +1 -1
  76. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts +2 -2
  77. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts.map +1 -1
  78. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js +12 -8
  79. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js.map +1 -1
  80. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts +1 -1
  81. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts.map +1 -1
  82. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js +5 -3
  83. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js.map +1 -1
  84. package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts +1 -2
  85. package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts.map +1 -1
  86. package/dist/components/auth/authenticate/services/bearer/jws.service.js +5 -3
  87. package/dist/components/auth/authenticate/services/bearer/jws.service.js.map +1 -1
  88. package/dist/components/auth/authenticate/services/jose-loader.d.ts +16 -0
  89. package/dist/components/auth/authenticate/services/jose-loader.d.ts.map +1 -0
  90. package/dist/components/auth/authenticate/services/jose-loader.js +25 -0
  91. package/dist/components/auth/authenticate/services/jose-loader.js.map +1 -0
  92. package/dist/components/auth/authenticate/services/service/signer.service.d.ts.map +1 -1
  93. package/dist/components/auth/authenticate/services/service/signer.service.js +8 -5
  94. package/dist/components/auth/authenticate/services/service/signer.service.js.map +1 -1
  95. package/dist/components/auth/authenticate/services/service/verifier.service.d.ts.map +1 -1
  96. package/dist/components/auth/authenticate/services/service/verifier.service.js +10 -9
  97. package/dist/components/auth/authenticate/services/service/verifier.service.js.map +1 -1
  98. package/dist/components/auth/authenticate/strategies/index.d.ts +1 -1
  99. package/dist/components/auth/authenticate/strategies/index.d.ts.map +1 -1
  100. package/dist/components/auth/authenticate/strategies/index.js +1 -1
  101. package/dist/components/auth/authenticate/strategies/index.js.map +1 -1
  102. package/dist/components/auth/authenticate/strategies/jwks/index.d.ts +3 -0
  103. package/dist/components/auth/authenticate/strategies/jwks/index.d.ts.map +1 -0
  104. package/dist/components/auth/authenticate/strategies/jwks/index.js +19 -0
  105. package/dist/components/auth/authenticate/strategies/jwks/index.js.map +1 -0
  106. package/dist/components/auth/authenticate/strategies/jwks/issuer.d.ts +13 -0
  107. package/dist/components/auth/authenticate/strategies/jwks/issuer.d.ts.map +1 -0
  108. package/dist/components/auth/authenticate/strategies/{jwks.strategy.js → jwks/issuer.js} +4 -27
  109. package/dist/components/auth/authenticate/strategies/jwks/issuer.js.map +1 -0
  110. package/dist/components/auth/authenticate/strategies/{jwks.strategy.d.ts → jwks/verifier.d.ts} +2 -10
  111. package/dist/components/auth/authenticate/strategies/jwks/verifier.d.ts.map +1 -0
  112. package/dist/components/auth/authenticate/strategies/jwks/verifier.js +45 -0
  113. package/dist/components/auth/authenticate/strategies/jwks/verifier.js.map +1 -0
  114. package/dist/components/auth/authorize/adapters/base-filtered.d.ts +1 -1
  115. package/dist/components/auth/authorize/adapters/base-filtered.d.ts.map +1 -1
  116. package/dist/components/auth/authorize/adapters/common/index.d.ts +2 -0
  117. package/dist/components/auth/authorize/adapters/common/index.d.ts.map +1 -0
  118. package/dist/components/auth/authorize/adapters/common/index.js +18 -0
  119. package/dist/components/auth/authorize/adapters/common/index.js.map +1 -0
  120. package/dist/components/auth/authorize/adapters/{types.d.ts → common/types.d.ts} +1 -1
  121. package/dist/components/auth/authorize/adapters/common/types.d.ts.map +1 -0
  122. package/dist/components/auth/authorize/adapters/common/types.js.map +1 -0
  123. package/dist/components/auth/authorize/adapters/connector.d.ts +1 -1
  124. package/dist/components/auth/authorize/adapters/connector.d.ts.map +1 -1
  125. package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts +1 -1
  126. package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts.map +1 -1
  127. package/dist/components/auth/authorize/adapters/index.d.ts +2 -2
  128. package/dist/components/auth/authorize/adapters/index.d.ts.map +1 -1
  129. package/dist/components/auth/authorize/adapters/index.js +2 -2
  130. package/dist/components/auth/authorize/adapters/index.js.map +1 -1
  131. package/dist/components/auth/authorize/adapters/{scoped-casbin.adapter.d.ts → scoped-casbin/adapter.d.ts} +11 -55
  132. package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.d.ts.map +1 -0
  133. package/dist/components/auth/authorize/adapters/{scoped-casbin.adapter.js → scoped-casbin/adapter.js} +27 -22
  134. package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.js.map +1 -0
  135. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.d.ts +2 -0
  136. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.d.ts.map +1 -0
  137. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.js +5 -0
  138. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.js.map +1 -0
  139. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.d.ts +3 -0
  140. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.d.ts.map +1 -0
  141. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.js +19 -0
  142. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.js.map +1 -0
  143. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.d.ts +50 -0
  144. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.d.ts.map +1 -0
  145. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.js +3 -0
  146. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.js.map +1 -0
  147. package/dist/components/auth/authorize/adapters/scoped-casbin/index.d.ts +4 -0
  148. package/dist/components/auth/authorize/adapters/scoped-casbin/index.d.ts.map +1 -0
  149. package/dist/components/auth/authorize/adapters/scoped-casbin/index.js +19 -0
  150. package/dist/components/auth/authorize/adapters/scoped-casbin/index.js.map +1 -0
  151. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.d.ts +17 -0
  152. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.d.ts.map +1 -0
  153. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.js +11 -0
  154. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.js.map +1 -0
  155. package/dist/components/auth/authorize/enforcers/policy-line-codec.d.ts.map +1 -1
  156. package/dist/components/auth/authorize/enforcers/policy-line-codec.js +4 -2
  157. package/dist/components/auth/authorize/enforcers/policy-line-codec.js.map +1 -1
  158. package/dist/components/auth/authorize/role-managers/base.d.ts.map +1 -1
  159. package/dist/components/auth/authorize/role-managers/base.js +2 -1
  160. package/dist/components/auth/authorize/role-managers/base.js.map +1 -1
  161. package/dist/components/auth/models/entities/policy-definition.model.d.ts +30 -9
  162. package/dist/components/auth/models/entities/policy-definition.model.d.ts.map +1 -1
  163. package/dist/components/auth/models/entities/policy-definition.model.js +36 -10
  164. package/dist/components/auth/models/entities/policy-definition.model.js.map +1 -1
  165. package/dist/components/auth/models/entities/user.model.d.ts +2 -2
  166. package/dist/components/controller/grpc/grpc.component.d.ts.map +1 -1
  167. package/dist/components/controller/grpc/grpc.component.js +1 -5
  168. package/dist/components/controller/grpc/grpc.component.js.map +1 -1
  169. package/dist/components/health-check/common/constants.d.ts +5 -0
  170. package/dist/components/health-check/common/constants.d.ts.map +1 -0
  171. package/dist/components/health-check/common/constants.js +9 -0
  172. package/dist/components/health-check/common/constants.js.map +1 -0
  173. package/dist/components/health-check/common/index.d.ts +1 -0
  174. package/dist/components/health-check/common/index.d.ts.map +1 -1
  175. package/dist/components/health-check/common/index.js +1 -0
  176. package/dist/components/health-check/common/index.js.map +1 -1
  177. package/dist/components/health-check/common/keys.d.ts +2 -0
  178. package/dist/components/health-check/common/keys.d.ts.map +1 -1
  179. package/dist/components/health-check/common/keys.js +2 -0
  180. package/dist/components/health-check/common/keys.js.map +1 -1
  181. package/dist/components/health-check/common/rest-paths.d.ts +1 -0
  182. package/dist/components/health-check/common/rest-paths.d.ts.map +1 -1
  183. package/dist/components/health-check/common/rest-paths.js +1 -0
  184. package/dist/components/health-check/common/rest-paths.js.map +1 -1
  185. package/dist/components/health-check/common/types.d.ts +22 -0
  186. package/dist/components/health-check/common/types.d.ts.map +1 -1
  187. package/dist/components/health-check/component.d.ts +9 -3
  188. package/dist/components/health-check/component.d.ts.map +1 -1
  189. package/dist/components/health-check/component.js +38 -1
  190. package/dist/components/health-check/component.js.map +1 -1
  191. package/dist/components/health-check/controller.d.ts +10 -2
  192. package/dist/components/health-check/controller.d.ts.map +1 -1
  193. package/dist/components/health-check/controller.js +79 -13
  194. package/dist/components/health-check/controller.js.map +1 -1
  195. package/dist/components/health-check/index.d.ts +1 -0
  196. package/dist/components/health-check/index.d.ts.map +1 -1
  197. package/dist/components/health-check/index.js +1 -0
  198. package/dist/components/health-check/index.js.map +1 -1
  199. package/dist/components/health-check/reporter.d.ts +98 -0
  200. package/dist/components/health-check/reporter.d.ts.map +1 -0
  201. package/dist/components/health-check/reporter.js +138 -0
  202. package/dist/components/health-check/reporter.js.map +1 -0
  203. package/dist/components/mail/common/constants.d.ts +8 -0
  204. package/dist/components/mail/common/constants.d.ts.map +1 -1
  205. package/dist/components/mail/common/constants.js +9 -1
  206. package/dist/components/mail/common/constants.js.map +1 -1
  207. package/dist/components/mail/common/types/index.d.ts +6 -0
  208. package/dist/components/mail/common/types/index.d.ts.map +1 -0
  209. package/dist/components/mail/common/types/index.js +22 -0
  210. package/dist/components/mail/common/types/index.js.map +1 -0
  211. package/dist/components/mail/common/types/message.d.ts +49 -0
  212. package/dist/components/mail/common/types/message.d.ts.map +1 -0
  213. package/dist/components/mail/common/types/message.js +3 -0
  214. package/dist/components/mail/common/types/message.js.map +1 -0
  215. package/dist/components/mail/common/types/options.d.ts +65 -0
  216. package/dist/components/mail/common/types/options.d.ts.map +1 -0
  217. package/dist/components/mail/common/types/options.js +3 -0
  218. package/dist/components/mail/common/types/options.js.map +1 -0
  219. package/dist/components/mail/common/types/queue.d.ts +56 -0
  220. package/dist/components/mail/common/types/queue.d.ts.map +1 -0
  221. package/dist/components/mail/common/types/queue.js +3 -0
  222. package/dist/components/mail/common/types/queue.js.map +1 -0
  223. package/dist/components/mail/common/types/template.d.ts +33 -0
  224. package/dist/components/mail/common/types/template.d.ts.map +1 -0
  225. package/dist/components/mail/common/types/template.js +3 -0
  226. package/dist/components/mail/common/types/template.js.map +1 -0
  227. package/dist/components/mail/common/types/verification.d.ts +26 -0
  228. package/dist/components/mail/common/types/verification.d.ts.map +1 -0
  229. package/dist/components/mail/common/types/verification.js +3 -0
  230. package/dist/components/mail/common/types/verification.js.map +1 -0
  231. package/dist/components/mail/component.d.ts +4 -1
  232. package/dist/components/mail/component.d.ts.map +1 -1
  233. package/dist/components/mail/component.js +12 -0
  234. package/dist/components/mail/component.js.map +1 -1
  235. package/dist/components/mail/helpers/executors/bull-mq-executor.helper.d.ts +1 -0
  236. package/dist/components/mail/helpers/executors/bull-mq-executor.helper.d.ts.map +1 -1
  237. package/dist/components/mail/helpers/executors/bull-mq-executor.helper.js +3 -0
  238. package/dist/components/mail/helpers/executors/bull-mq-executor.helper.js.map +1 -1
  239. package/dist/components/mail/helpers/executors/internal-queue-executor.helper.d.ts.map +1 -1
  240. package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js +2 -1
  241. package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js.map +1 -1
  242. package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.d.ts +19 -0
  243. package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.d.ts.map +1 -0
  244. package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.js +112 -0
  245. package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.js.map +1 -0
  246. package/dist/components/mail/helpers/transporters/index.d.ts +2 -1
  247. package/dist/components/mail/helpers/transporters/index.d.ts.map +1 -1
  248. package/dist/components/mail/helpers/transporters/index.js +2 -1
  249. package/dist/components/mail/helpers/transporters/index.js.map +1 -1
  250. package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.d.ts.map +1 -1
  251. package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js +4 -3
  252. package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js.map +1 -1
  253. package/dist/components/mail/providers/mail-transporter.provider.d.ts +2 -0
  254. package/dist/components/mail/providers/mail-transporter.provider.d.ts.map +1 -1
  255. package/dist/components/mail/providers/mail-transporter.provider.js +35 -17
  256. package/dist/components/mail/providers/mail-transporter.provider.js.map +1 -1
  257. package/dist/components/mail/services/generators/index.d.ts +4 -0
  258. package/dist/components/mail/services/generators/index.d.ts.map +1 -0
  259. package/dist/components/mail/services/generators/index.js +20 -0
  260. package/dist/components/mail/services/generators/index.js.map +1 -0
  261. package/dist/components/mail/services/generators/numeric-code.d.ts +7 -0
  262. package/dist/components/mail/services/generators/numeric-code.d.ts.map +1 -0
  263. package/dist/components/mail/services/generators/numeric-code.js +20 -0
  264. package/dist/components/mail/services/generators/numeric-code.js.map +1 -0
  265. package/dist/components/mail/services/generators/random-token.d.ts +7 -0
  266. package/dist/components/mail/services/generators/random-token.d.ts.map +1 -0
  267. package/dist/components/mail/services/generators/random-token.js +18 -0
  268. package/dist/components/mail/services/generators/random-token.js.map +1 -0
  269. package/dist/components/mail/services/{generator.service.d.ts → generators/verification-data.d.ts} +2 -10
  270. package/dist/components/mail/services/generators/verification-data.d.ts.map +1 -0
  271. package/dist/components/mail/services/{generator.service.js → generators/verification-data.js} +5 -29
  272. package/dist/components/mail/services/generators/verification-data.js.map +1 -0
  273. package/dist/components/mail/services/index.d.ts +1 -1
  274. package/dist/components/mail/services/index.d.ts.map +1 -1
  275. package/dist/components/mail/services/index.js +1 -1
  276. package/dist/components/mail/services/index.js.map +1 -1
  277. package/dist/components/mail/services/mail.service.d.ts.map +1 -1
  278. package/dist/components/mail/services/mail.service.js +18 -17
  279. package/dist/components/mail/services/mail.service.js.map +1 -1
  280. package/dist/components/mail/utilities/address.utility.d.ts +9 -0
  281. package/dist/components/mail/utilities/address.utility.d.ts.map +1 -0
  282. package/dist/components/mail/utilities/address.utility.js +36 -0
  283. package/dist/components/mail/utilities/address.utility.js.map +1 -0
  284. package/dist/components/mail/utilities/index.d.ts +2 -0
  285. package/dist/components/mail/utilities/index.d.ts.map +1 -1
  286. package/dist/components/mail/utilities/index.js +2 -0
  287. package/dist/components/mail/utilities/index.js.map +1 -1
  288. package/dist/components/mail/utilities/mime.utility.d.ts +19 -0
  289. package/dist/components/mail/utilities/mime.utility.d.ts.map +1 -0
  290. package/dist/components/mail/utilities/mime.utility.js +414 -0
  291. package/dist/components/mail/utilities/mime.utility.js.map +1 -0
  292. package/dist/components/static-asset/common/commit-token.d.ts +23 -0
  293. package/dist/components/static-asset/common/commit-token.d.ts.map +1 -0
  294. package/dist/components/static-asset/common/commit-token.js +40 -0
  295. package/dist/components/static-asset/common/commit-token.js.map +1 -0
  296. package/dist/components/static-asset/common/constants.d.ts +13 -1
  297. package/dist/components/static-asset/common/constants.d.ts.map +1 -1
  298. package/dist/components/static-asset/common/constants.js +29 -2
  299. package/dist/components/static-asset/common/constants.js.map +1 -1
  300. package/dist/components/static-asset/common/errors.d.ts +43 -0
  301. package/dist/components/static-asset/common/errors.d.ts.map +1 -1
  302. package/dist/components/static-asset/common/errors.js +37 -0
  303. package/dist/components/static-asset/common/errors.js.map +1 -1
  304. package/dist/components/static-asset/common/index.d.ts +1 -0
  305. package/dist/components/static-asset/common/index.d.ts.map +1 -1
  306. package/dist/components/static-asset/common/index.js +1 -0
  307. package/dist/components/static-asset/common/index.js.map +1 -1
  308. package/dist/components/static-asset/common/keys.d.ts +1 -0
  309. package/dist/components/static-asset/common/keys.d.ts.map +1 -1
  310. package/dist/components/static-asset/common/keys.js +1 -0
  311. package/dist/components/static-asset/common/keys.js.map +1 -1
  312. package/dist/components/static-asset/common/types.d.ts +87 -30
  313. package/dist/components/static-asset/common/types.d.ts.map +1 -1
  314. package/dist/components/static-asset/component.d.ts +4 -1
  315. package/dist/components/static-asset/component.d.ts.map +1 -1
  316. package/dist/components/static-asset/component.js +21 -10
  317. package/dist/components/static-asset/component.js.map +1 -1
  318. package/dist/components/static-asset/controller/base.definition.d.ts +27 -554
  319. package/dist/components/static-asset/controller/base.definition.d.ts.map +1 -1
  320. package/dist/components/static-asset/controller/base.definition.js +250 -286
  321. package/dist/components/static-asset/controller/base.definition.js.map +1 -1
  322. package/dist/components/static-asset/controller/factory.d.ts +76 -7
  323. package/dist/components/static-asset/controller/factory.d.ts.map +1 -1
  324. package/dist/components/static-asset/controller/factory.js +565 -138
  325. package/dist/components/static-asset/controller/factory.js.map +1 -1
  326. package/dist/components/static-asset/index.d.ts +1 -0
  327. package/dist/components/static-asset/index.d.ts.map +1 -1
  328. package/dist/components/static-asset/index.js +1 -0
  329. package/dist/components/static-asset/index.js.map +1 -1
  330. package/dist/components/static-asset/ingest.d.ts +58 -0
  331. package/dist/components/static-asset/ingest.d.ts.map +1 -0
  332. package/dist/components/static-asset/ingest.js +82 -0
  333. package/dist/components/static-asset/ingest.js.map +1 -0
  334. package/dist/components/static-asset/models/base.model.d.ts +44 -6
  335. package/dist/components/static-asset/models/base.model.d.ts.map +1 -1
  336. package/dist/components/static-asset/models/base.model.js +7 -1
  337. package/dist/components/static-asset/models/base.model.js.map +1 -1
  338. package/dist/components/websocket/handlers/bun.handler.d.ts.map +1 -1
  339. package/dist/components/websocket/handlers/bun.handler.js +2 -1
  340. package/dist/components/websocket/handlers/bun.handler.js.map +1 -1
  341. package/dist/connectors/postgres/drivers/postgres-js.d.mts +3 -0
  342. package/dist/connectors/postgres/drivers/postgres-js.d.mts.map +1 -0
  343. package/dist/connectors/postgres/drivers/postgres-js.mjs +3 -0
  344. package/dist/connectors/postgres/drivers/postgres-js.mjs.map +1 -0
  345. package/dist/helpers/index.d.ts.map +1 -1
  346. package/dist/helpers/index.js.map +1 -1
  347. package/dist/index.d.ts +1 -1
  348. package/dist/index.d.ts.map +1 -1
  349. package/package.json +29 -26
  350. package/dist/base/applications/types.d.ts.map +0 -1
  351. package/dist/base/applications/types.js.map +0 -1
  352. package/dist/components/api-reference/ui-factory.d.ts +0 -24
  353. package/dist/components/api-reference/ui-factory.d.ts.map +0 -1
  354. package/dist/components/api-reference/ui-factory.js +0 -97
  355. package/dist/components/api-reference/ui-factory.js.map +0 -1
  356. package/dist/components/auth/authenticate/strategies/jwks.strategy.d.ts.map +0 -1
  357. package/dist/components/auth/authenticate/strategies/jwks.strategy.js.map +0 -1
  358. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts.map +0 -1
  359. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js.map +0 -1
  360. package/dist/components/auth/authorize/adapters/types.d.ts.map +0 -1
  361. package/dist/components/auth/authorize/adapters/types.js.map +0 -1
  362. package/dist/components/mail/common/types.d.ts +0 -201
  363. package/dist/components/mail/common/types.d.ts.map +0 -1
  364. package/dist/components/mail/common/types.js +0 -10
  365. package/dist/components/mail/common/types.js.map +0 -1
  366. package/dist/components/mail/services/generator.service.d.ts.map +0 -1
  367. package/dist/components/mail/services/generator.service.js.map +0 -1
  368. /package/dist/base/applications/{types.js → common/types.js} +0 -0
  369. /package/dist/components/auth/authorize/adapters/{types.js → common/types.js} +0 -0
@@ -0,0 +1,98 @@
1
+ import { type TBuildInfoRecord } from '@venizia/ignis-helpers/core';
2
+ import type { IApplicationInfo } from '@venizia/ignis-kernel';
3
+ import type { IHealthCheckOptions } from './common';
4
+ /**
5
+ * Assembles what `GET /health` and `GET /health/stats` answer.
6
+ *
7
+ * Never reads the filesystem and never spawns `git`: the build stamp is PUSHED in at the
8
+ * entrypoint through {@link BuildInfoRegistry} (or the component's own options), so a
9
+ * `bun build --compile` binary and a Distroless image - neither of which has `node_modules`,
10
+ * `.git` or a readable `package.json` - report exactly what a dev machine does.
11
+ */
12
+ export declare class HealthCheckReporter {
13
+ private static readonly BYTES_PER_MB;
14
+ /** Public liveness answer: liveness and the server clock, nothing a probe cannot already see. */
15
+ static buildSummary(): {
16
+ status: string;
17
+ timestamp: string;
18
+ };
19
+ /**
20
+ * Fail-closed, copying `AppErrorMiddleware.isProduction`: the default is MEMBERSHIP in
21
+ * `DEVELOPMENT_ENVS`, never inequality against `production`. `staging`, `uat`, `alpha` and a
22
+ * typo all keep this route shut, because the runtime and release it names are what picks an
23
+ * exploit. `ambient`, not `current`: an unset `NODE_ENV` is a host that cannot prove it is a dev
24
+ * machine, and `current` would mask it as `development`.
25
+ *
26
+ * `enable` is compared to `true`/`false` rather than read through `??`: this binding is
27
+ * env/config driven, and a JSON-derived `"false"` is truthy - an operator who wrote false would
28
+ * otherwise get the route mounted.
29
+ */
30
+ static isStatsEnabled(opts: {
31
+ options: IHealthCheckOptions;
32
+ /** Reads the ambient environment; injected by tests so nothing has to write `process.env`. */
33
+ environment?: () => string | undefined;
34
+ }): boolean;
35
+ /**
36
+ * No `secretKey` configured leaves the route open to whatever can reach the port - stated, not
37
+ * implied. Anything that is not a non-blank string fails CLOSED: a blank or config-derived
38
+ * non-string key is a pipeline that lost the variable, and reading it as "no key" would publish
39
+ * the route the operator meant to lock.
40
+ *
41
+ * The comparison is a plain `===`: a remote timing attack on a header compare is not practical
42
+ * through an HTTP stack, and a constant-time digest compare would buy nothing here.
43
+ */
44
+ /**
45
+ * Whether the stats route is mounted, unauthenticated, and on a host that cannot be shown to be a
46
+ * development one. That combination stays LEGAL - on a cluster-internal port it is often the right
47
+ * call - so this reports rather than refuses, and the component turns it into one warning at boot.
48
+ *
49
+ * It exists because `enable: true` bypasses the environment gate entirely: an operator who sets it
50
+ * for a local run and ships the same code publishes the runtime version, the release and the
51
+ * memory profile to whatever can reach the port. A blank `secretKey` is NOT unguarded - that fails
52
+ * closed in {@link isStatsAuthorized}.
53
+ */
54
+ static isStatsUnguarded(opts: {
55
+ options: IHealthCheckOptions;
56
+ environment?: () => string | undefined;
57
+ }): boolean;
58
+ static isStatsAuthorized(opts: {
59
+ options: IHealthCheckOptions;
60
+ header?: string;
61
+ }): boolean;
62
+ /** The slot is a process-wide `globalThis` entry any dependency can write, and `IBuildInfo` types it without checking - so a non-string never reaches the response schema, which declares `z.string()`. */
63
+ private static extractText;
64
+ /**
65
+ * Explicit options win over the registry, and the application's own `getAppInfo()` fills what
66
+ * neither carries - so a host that ran no generator still reports its real name and version.
67
+ */
68
+ static resolveBuildInfo(opts: {
69
+ options: IHealthCheckOptions;
70
+ appInfo?: IApplicationInfo;
71
+ }): TBuildInfoRecord;
72
+ /** `3661` -> `1h 1m 1s`: an operator reads a restart out of this faster than out of a float. */
73
+ static toHumanUptime(opts: {
74
+ seconds: number;
75
+ }): string;
76
+ private static toMegabytes;
77
+ static buildStats(opts: {
78
+ options: IHealthCheckOptions;
79
+ appInfo?: IApplicationInfo;
80
+ }): {
81
+ build: Required<import("@venizia/ignis-helpers").IBuildInfo>;
82
+ process: {
83
+ pid: number;
84
+ uptime: number;
85
+ uptimeHuman: string;
86
+ runtime: string;
87
+ environment: string;
88
+ };
89
+ memory: {
90
+ rss: string;
91
+ heapUsed: string;
92
+ heapTotal: string;
93
+ };
94
+ status: string;
95
+ timestamp: string;
96
+ };
97
+ }
98
+ //# sourceMappingURL=reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../src/components/health-check/reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAe;IAEnD,iGAAiG;IACjG,MAAM,CAAC,YAAY,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAI5D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAC1B,OAAO,EAAE,mBAAmB,CAAC;QAC7B,8FAA8F;QAC9F,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;KACxC,GAAG,OAAO;IAcX;;;;;;;;OAQG;IACH;;;;;;;;;OASG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAC5B,OAAO,EAAE,mBAAmB,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;KACxC,GAAG,OAAO;IAiBX,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAa1F,2MAA2M;IAC3M,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAC5B,OAAO,EAAE,mBAAmB,CAAC;QAC7B,OAAO,CAAC,EAAE,gBAAgB,CAAC;KAC5B,GAAG,gBAAgB;IAepB,gGAAgG;IAChG,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IASvD,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;KAAE;;;;;;;;;;;;;;gBA9HnD,MAAM;mBAAa,MAAM;;CAqJ3D"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HealthCheckReporter = void 0;
4
+ const ignis_helpers_1 = require("@venizia/ignis-helpers");
5
+ const core_1 = require("@venizia/ignis-helpers/core");
6
+ /**
7
+ * Assembles what `GET /health` and `GET /health/stats` answer.
8
+ *
9
+ * Never reads the filesystem and never spawns `git`: the build stamp is PUSHED in at the
10
+ * entrypoint through {@link BuildInfoRegistry} (or the component's own options), so a
11
+ * `bun build --compile` binary and a Distroless image - neither of which has `node_modules`,
12
+ * `.git` or a readable `package.json` - report exactly what a dev machine does.
13
+ */
14
+ class HealthCheckReporter {
15
+ static { this.BYTES_PER_MB = 1024 * 1024; }
16
+ /** Public liveness answer: liveness and the server clock, nothing a probe cannot already see. */
17
+ static buildSummary() {
18
+ return { status: 'ok', timestamp: new Date().toISOString() };
19
+ }
20
+ /**
21
+ * Fail-closed, copying `AppErrorMiddleware.isProduction`: the default is MEMBERSHIP in
22
+ * `DEVELOPMENT_ENVS`, never inequality against `production`. `staging`, `uat`, `alpha` and a
23
+ * typo all keep this route shut, because the runtime and release it names are what picks an
24
+ * exploit. `ambient`, not `current`: an unset `NODE_ENV` is a host that cannot prove it is a dev
25
+ * machine, and `current` would mask it as `development`.
26
+ *
27
+ * `enable` is compared to `true`/`false` rather than read through `??`: this binding is
28
+ * env/config driven, and a JSON-derived `"false"` is truthy - an operator who wrote false would
29
+ * otherwise get the route mounted.
30
+ */
31
+ static isStatsEnabled(opts) {
32
+ const { enable } = opts.options.stats ?? {};
33
+ if (typeof enable === 'boolean') {
34
+ return enable;
35
+ }
36
+ const ambient = opts.environment ? opts.environment() : ignis_helpers_1.Environment.ambient;
37
+ if (ambient === undefined) {
38
+ return false;
39
+ }
40
+ return ignis_helpers_1.Environment.DEVELOPMENT_ENVS.has(ambient.toLowerCase());
41
+ }
42
+ /**
43
+ * No `secretKey` configured leaves the route open to whatever can reach the port - stated, not
44
+ * implied. Anything that is not a non-blank string fails CLOSED: a blank or config-derived
45
+ * non-string key is a pipeline that lost the variable, and reading it as "no key" would publish
46
+ * the route the operator meant to lock.
47
+ *
48
+ * The comparison is a plain `===`: a remote timing attack on a header compare is not practical
49
+ * through an HTTP stack, and a constant-time digest compare would buy nothing here.
50
+ */
51
+ /**
52
+ * Whether the stats route is mounted, unauthenticated, and on a host that cannot be shown to be a
53
+ * development one. That combination stays LEGAL - on a cluster-internal port it is often the right
54
+ * call - so this reports rather than refuses, and the component turns it into one warning at boot.
55
+ *
56
+ * It exists because `enable: true` bypasses the environment gate entirely: an operator who sets it
57
+ * for a local run and ships the same code publishes the runtime version, the release and the
58
+ * memory profile to whatever can reach the port. A blank `secretKey` is NOT unguarded - that fails
59
+ * closed in {@link isStatsAuthorized}.
60
+ */
61
+ static isStatsUnguarded(opts) {
62
+ if (!HealthCheckReporter.isStatsEnabled(opts)) {
63
+ return false;
64
+ }
65
+ if (opts.options.stats?.secretKey !== undefined) {
66
+ return false;
67
+ }
68
+ const ambient = opts.environment ? opts.environment() : ignis_helpers_1.Environment.ambient;
69
+ if (ambient === undefined) {
70
+ return true;
71
+ }
72
+ return !ignis_helpers_1.Environment.DEVELOPMENT_ENVS.has(ambient.toLowerCase());
73
+ }
74
+ static isStatsAuthorized(opts) {
75
+ const secretKey = opts.options.stats?.secretKey;
76
+ if (secretKey === undefined) {
77
+ return true;
78
+ }
79
+ if (typeof secretKey !== 'string' || secretKey.trim().length === 0) {
80
+ return false;
81
+ }
82
+ return opts.header === secretKey;
83
+ }
84
+ /** The slot is a process-wide `globalThis` entry any dependency can write, and `IBuildInfo` types it without checking - so a non-string never reaches the response schema, which declares `z.string()`. */
85
+ static extractText(opts) {
86
+ return typeof opts.value === 'string' && opts.value.length > 0 ? opts.value : undefined;
87
+ }
88
+ /**
89
+ * Explicit options win over the registry, and the application's own `getAppInfo()` fills what
90
+ * neither carries - so a host that ran no generator still reports its real name and version.
91
+ */
92
+ static resolveBuildInfo(opts) {
93
+ const stamp = opts.options.stats?.buildInfo ?? core_1.BuildInfoRegistry.get() ?? {};
94
+ const extract = HealthCheckReporter.extractText;
95
+ return {
96
+ service: extract({ value: stamp.service }) ?? opts.appInfo?.name ?? core_1.BuildInfoRegistry.UNSPECIFIED,
97
+ version: extract({ value: stamp.version }) ?? opts.appInfo?.version ?? core_1.BuildInfoRegistry.UNSPECIFIED,
98
+ commit: extract({ value: stamp.commit }) ?? core_1.BuildInfoRegistry.UNSPECIFIED,
99
+ branch: extract({ value: stamp.branch }) ?? core_1.BuildInfoRegistry.UNSPECIFIED,
100
+ builtAt: extract({ value: stamp.builtAt }) ?? core_1.BuildInfoRegistry.UNSPECIFIED,
101
+ };
102
+ }
103
+ /** `3661` -> `1h 1m 1s`: an operator reads a restart out of this faster than out of a float. */
104
+ static toHumanUptime(opts) {
105
+ const total = Math.floor(opts.seconds);
106
+ const hours = Math.floor(total / 3600);
107
+ const minutes = Math.floor((total % 3600) / 60);
108
+ const seconds = total % 60;
109
+ return `${hours}h ${minutes}m ${seconds}s`;
110
+ }
111
+ static toMegabytes(opts) {
112
+ return `${(opts.bytes / HealthCheckReporter.BYTES_PER_MB).toFixed(1)} MB`;
113
+ }
114
+ static buildStats(opts) {
115
+ const memory = process.memoryUsage();
116
+ const uptime = process.uptime();
117
+ return {
118
+ ...HealthCheckReporter.buildSummary(),
119
+ build: HealthCheckReporter.resolveBuildInfo(opts),
120
+ process: {
121
+ pid: process.pid,
122
+ uptime,
123
+ uptimeHuman: HealthCheckReporter.toHumanUptime({ seconds: uptime }),
124
+ // `versions.node` carries no `v` prefix, so both runtimes read `<name> <semver>`.
125
+ runtime: ignis_helpers_1.RuntimeModules.isBun() ? `bun ${Bun.version}` : `node ${process.versions.node}`,
126
+ // `ambient`, not `current`: an unset `NODE_ENV` is reported as such, never dressed up as `development`.
127
+ environment: ignis_helpers_1.Environment.ambient ?? core_1.BuildInfoRegistry.UNSPECIFIED,
128
+ },
129
+ memory: {
130
+ rss: HealthCheckReporter.toMegabytes({ bytes: memory.rss }),
131
+ heapUsed: HealthCheckReporter.toMegabytes({ bytes: memory.heapUsed }),
132
+ heapTotal: HealthCheckReporter.toMegabytes({ bytes: memory.heapTotal }),
133
+ },
134
+ };
135
+ }
136
+ }
137
+ exports.HealthCheckReporter = HealthCheckReporter;
138
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/components/health-check/reporter.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { TConstValue } from '@venizia/ignis-helpers/common';
1
2
  export declare class MailDefaults {
2
3
  static readonly BATCH_CONCURRENCY = 5;
3
4
  static readonly FALLBACK_FROM = "noreply@example.com";
@@ -28,4 +29,11 @@ export declare class BullMQExecutorModes {
28
29
  static readonly MODE_SET: Set<string>;
29
30
  static isValid(value: string): boolean;
30
31
  }
32
+ export declare class MailProviders {
33
+ static readonly NODEMAILER = "nodemailer";
34
+ static readonly MAILGUN = "mailgun";
35
+ static readonly CUSTOM = "custom";
36
+ static readonly AMAZON_SES = "amazon-ses";
37
+ }
38
+ export type TMailProvider = TConstValue<typeof MailProviders>;
31
39
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/mail/common/constants.ts"],"names":[],"mappings":"AAEA,qBAAa,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAK;IACtC,MAAM,CAAC,QAAQ,CAAC,aAAa,yBAAyB;CACvD;AAED,yKAAyK;AACzK,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,qBAAqB,SAElC;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,SAAiE;IAC5F,MAAM,CAAC,QAAQ,CAAC,mBAAmB,SAEhC;IACH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,SAE9B;IACH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,SAE9B;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,SAE/B;CACJ;AAED,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,QAAQ,CAAC,iBAAiB,mDAAmD;CACrF;AAED,qBAAa,sBAAsB;IACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,cAAc,oBAAoB;IAClD,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAElC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoE;IAC9F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAmE;IAC3F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/mail/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,qBAAa,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAK;IACtC,MAAM,CAAC,QAAQ,CAAC,aAAa,yBAAyB;CACvD;AAED,yKAAyK;AACzK,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,qBAAqB,SAElC;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,SAAiE;IAC5F,MAAM,CAAC,QAAQ,CAAC,mBAAmB,SAEhC;IACH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,SAE9B;IACH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,SAE9B;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,SAE/B;CACJ;AAED,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,QAAQ,CAAC,iBAAiB,mDAAmD;CACrF;AAED,qBAAa,sBAAsB;IACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,cAAc,oBAAoB;IAClD,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAElC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoE;IAC9F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAmE;IAC3F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAElC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;CAC3C;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BullMQExecutorModes = exports.MailQueueExecutorTypes = exports.MailExecutorErrors = exports.MailErrorCodes = exports.MailDefaults = void 0;
3
+ exports.MailProviders = exports.BullMQExecutorModes = exports.MailQueueExecutorTypes = exports.MailExecutorErrors = exports.MailErrorCodes = exports.MailDefaults = void 0;
4
4
  const core_1 = require("@venizia/ignis-helpers/core");
5
5
  class MailDefaults {
6
6
  static { this.BATCH_CONCURRENCY = 5; }
@@ -51,4 +51,12 @@ class BullMQExecutorModes {
51
51
  }
52
52
  }
53
53
  exports.BullMQExecutorModes = BullMQExecutorModes;
54
+ class MailProviders {
55
+ static { this.NODEMAILER = 'nodemailer'; }
56
+ static { this.MAILGUN = 'mailgun'; }
57
+ static { this.CUSTOM = 'custom'; }
58
+ // Amazon SES supports both SMTP and HTTPS - this provider is the HTTPS API path; SMTP goes through NODEMAILER instead.
59
+ static { this.AMAZON_SES = 'amazon-ses'; }
60
+ }
61
+ exports.MailProviders = MailProviders;
54
62
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/components/mail/common/constants.ts"],"names":[],"mappings":";;;AAAA,sDAA0D;AAE1D,MAAa,YAAY;aACP,sBAAiB,GAAG,CAAC,CAAC;aACtB,kBAAa,GAAG,qBAAqB,CAAC;;AAFxD,oCAGC;AAED,yKAAyK;AACzK,MAAa,cAAc;aACT,0BAAqB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACxD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,uBAAuB,CAAC;KACjD,CAAC,CAAC;aACa,gBAAW,GAAG,kBAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;aAC5E,wBAAmB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACtD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,qBAAqB,CAAC;KAC/C,CAAC,CAAC;aACa,sBAAiB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACpD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC;KAC7C,CAAC,CAAC;aACa,sBAAiB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACpD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC;KAC7C,CAAC,CAAC;aACa,uBAAkB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACrD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,oBAAoB,CAAC;KAC9C,CAAC,CAAC;;AAhBL,wCAiBC;AAED,MAAa,kBAAkB;aACb,sBAAiB,GAAG,+CAA+C,CAAC;;AADtF,gDAEC;AAED,MAAa,sBAAsB;aACjB,WAAM,GAAG,QAAQ,CAAC;aAClB,mBAAc,GAAG,gBAAgB,CAAC;aAClC,WAAM,GAAG,QAAQ,CAAC;aAElB,eAAU,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AARH,wDASC;AAED,MAAa,mBAAmB;aACd,eAAU,GAAG,YAAY,CAAC;aAC1B,gBAAW,GAAG,aAAa,CAAC;aAC5B,SAAI,GAAG,MAAM,CAAC;aAEd,aAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;;AARH,kDASC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/components/mail/common/constants.ts"],"names":[],"mappings":";;;AACA,sDAA0D;AAE1D,MAAa,YAAY;aACP,sBAAiB,GAAG,CAAC,CAAC;aACtB,kBAAa,GAAG,qBAAqB,CAAC;;AAFxD,oCAGC;AAED,yKAAyK;AACzK,MAAa,cAAc;aACT,0BAAqB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACxD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,uBAAuB,CAAC;KACjD,CAAC,CAAC;aACa,gBAAW,GAAG,kBAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;aAC5E,wBAAmB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACtD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,qBAAqB,CAAC;KAC/C,CAAC,CAAC;aACa,sBAAiB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACpD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC;KAC7C,CAAC,CAAC;aACa,sBAAiB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACpD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC;KAC7C,CAAC,CAAC;aACa,uBAAkB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACrD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,oBAAoB,CAAC;KAC9C,CAAC,CAAC;;AAhBL,wCAiBC;AAED,MAAa,kBAAkB;aACb,sBAAiB,GAAG,+CAA+C,CAAC;;AADtF,gDAEC;AAED,MAAa,sBAAsB;aACjB,WAAM,GAAG,QAAQ,CAAC;aAClB,mBAAc,GAAG,gBAAgB,CAAC;aAClC,WAAM,GAAG,QAAQ,CAAC;aAElB,eAAU,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AARH,wDASC;AAED,MAAa,mBAAmB;aACd,eAAU,GAAG,YAAY,CAAC;aAC1B,gBAAW,GAAG,aAAa,CAAC;aAC5B,SAAI,GAAG,MAAM,CAAC;aAEd,aAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;;AARH,kDASC;AAED,MAAa,aAAa;aACR,eAAU,GAAG,YAAY,CAAC;aAC1B,YAAO,GAAG,SAAS,CAAC;aACpB,WAAM,GAAG,QAAQ,CAAC;IAClC,uHAAuH;aACvG,eAAU,GAAG,YAAY,CAAC;;AAL5C,sCAMC"}
@@ -0,0 +1,6 @@
1
+ export * from './message';
2
+ export * from './options';
3
+ export * from './queue';
4
+ export * from './template';
5
+ export * from './verification';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./message"), exports);
18
+ __exportStar(require("./options"), exports);
19
+ __exportStar(require("./queue"), exports);
20
+ __exportStar(require("./template"), exports);
21
+ __exportStar(require("./verification"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,4CAA0B;AAC1B,0CAAwB;AACxB,6CAA2B;AAC3B,iDAA+B"}
@@ -0,0 +1,49 @@
1
+ import type { Readable } from 'node:stream';
2
+ export interface IMailAttachment {
3
+ filename?: string;
4
+ contentType?: string;
5
+ path?: string;
6
+ content?: string | Buffer | Readable;
7
+ encoding?: BufferEncoding;
8
+ cid?: string;
9
+ [key: string]: any;
10
+ }
11
+ export interface IMailMessage {
12
+ from?: string;
13
+ to: string | string[];
14
+ cc?: string | string[];
15
+ bcc?: string | string[];
16
+ replyTo?: string;
17
+ subject: string;
18
+ text?: string;
19
+ html?: string;
20
+ attachments?: IMailAttachment[];
21
+ headers?: Record<string, string>;
22
+ requireValidate?: boolean;
23
+ [key: string]: any;
24
+ }
25
+ export interface IMailSendResult {
26
+ success: boolean;
27
+ messageId?: string;
28
+ response?: any;
29
+ error?: string;
30
+ }
31
+ export interface IMailTransport {
32
+ send(message: IMailMessage): Promise<IMailSendResult>;
33
+ verify(): Promise<boolean>;
34
+ close?(): Promise<void>;
35
+ }
36
+ export interface IMailService {
37
+ send(message: IMailMessage): Promise<IMailSendResult>;
38
+ sendBatch(messages: IMailMessage[], options?: {
39
+ concurrency?: number;
40
+ }): Promise<IMailSendResult[]>;
41
+ sendTemplate(opts: {
42
+ templateName: string;
43
+ data: Record<string, any>;
44
+ recipients: string | string[];
45
+ options?: Partial<IMailMessage>;
46
+ }): Promise<IMailSendResult>;
47
+ verify(): Promise<boolean>;
48
+ }
49
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtD,SAAS,CACP,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GACA,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9B,YAAY,CAAC,IAAI,EAAE;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;KACjC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/message.ts"],"names":[],"mappings":""}
@@ -0,0 +1,65 @@
1
+ import type { AnyType } from '@venizia/ignis-helpers/common';
2
+ import type SMTPTransport from 'nodemailer/lib/smtp-transport';
3
+ import type { IMailTransport } from './message';
4
+ export interface IBaseMailOptions {
5
+ from?: string;
6
+ fromName?: string;
7
+ }
8
+ export interface INodemailerMailOptions extends IBaseMailOptions {
9
+ provider: 'nodemailer';
10
+ config: TNodemailerConfig;
11
+ module?: TNodemailerModule;
12
+ }
13
+ export interface IMailgunMailOptions extends IBaseMailOptions {
14
+ provider: 'mailgun';
15
+ config: TMailgunConfig;
16
+ module?: TMailgunModule;
17
+ }
18
+ export interface IAmazonSesMailOptions extends IBaseMailOptions {
19
+ provider: 'amazon-ses';
20
+ config: TAmazonSesConfig;
21
+ module?: TAmazonSesModule;
22
+ }
23
+ export interface ICustomMailOptions extends IBaseMailOptions {
24
+ provider: 'custom';
25
+ config: IMailTransport;
26
+ }
27
+ export interface IGenericMailOptions extends IBaseMailOptions {
28
+ provider: string;
29
+ config: Record<string, AnyType>;
30
+ }
31
+ export type TMailOptions = INodemailerMailOptions | IAmazonSesMailOptions | IMailgunMailOptions | ICustomMailOptions | IGenericMailOptions;
32
+ export type TNodemailerConfig = SMTPTransport | SMTPTransport.Options | string;
33
+ export type TMailgunConfig = AnyType & {
34
+ domain: string;
35
+ };
36
+ /**
37
+ * The peer module itself, handed over by an application that already holds it. A `bun build
38
+ * --compile` binary carries no `node_modules`, so the runtime lookup these transports fall back to
39
+ * has nothing to resolve against - passing the module through the options is what a compiled
40
+ * application does instead. Typed as the shape each transport actually uses, so a wrong module is
41
+ * a compile error rather than a boot crash.
42
+ */
43
+ export type TNodemailerModule = {
44
+ createTransport: (config: AnyType, defaults?: AnyType) => AnyType;
45
+ };
46
+ export type TMailgunModule = new (formData: AnyType) => AnyType;
47
+ export type TAmazonSesConfig = {
48
+ region: string;
49
+ credentials?: {
50
+ accessKeyId: string;
51
+ secretAccessKey: string;
52
+ sessionToken?: string;
53
+ };
54
+ endpoint?: string;
55
+ };
56
+ /** Same story as {@link TNodemailerModule} - a compiled binary hands this over explicitly since there is no `node_modules` to resolve `@aws-sdk/client-sesv2` against. */
57
+ export type TAmazonSesModule<TConfig extends AnyType = AnyType, TClient extends AnyType = AnyType> = {
58
+ SESv2Client: new (config: TConfig) => TClient;
59
+ SendEmailCommand: new (input: AnyType) => AnyType;
60
+ GetAccountCommand: new (input?: AnyType) => AnyType;
61
+ };
62
+ export type TAmazonSesClient = Pick<TAmazonSesModule, 'SendEmailCommand' | 'GetAccountCommand'> & {
63
+ client: AnyType;
64
+ };
65
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,aAAa,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,YAAY,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC;AAG/E,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;AAEhE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,0KAA0K;AAC1K,MAAM,MAAM,gBAAgB,CAC1B,OAAO,SAAS,OAAO,GAAG,OAAO,EACjC,OAAO,SAAS,OAAO,GAAG,OAAO,IAC/B;IACF,WAAW,EAAE,KAAK,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAC9C,gBAAgB,EAAE,KAAK,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAClD,iBAAiB,EAAE,KAAK,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,GAAG;IAChG,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ import type { TConstValue } from '@venizia/ignis-helpers/common';
2
+ import type { IRedisSingleHelperOptions } from '@venizia/ignis-helpers';
3
+ import type { BullMQExecutorModes, MailQueueExecutorTypes } from '../constants';
4
+ export interface IMailQueueOptions {
5
+ priority?: number;
6
+ delay?: number;
7
+ attempts?: number;
8
+ backoff?: {
9
+ type: 'fixed' | 'exponential';
10
+ delay: number;
11
+ };
12
+ }
13
+ export interface IMailProcessorResult {
14
+ success: boolean;
15
+ message: string;
16
+ expiresInMinutes: number;
17
+ nextResendAt?: string;
18
+ }
19
+ export interface IMailQueueResult {
20
+ jobId?: string;
21
+ queued: boolean;
22
+ message: string;
23
+ result?: IMailProcessorResult;
24
+ }
25
+ export interface IMailQueueExecutor {
26
+ enqueueVerificationEmail(email: string, options?: IMailQueueOptions): Promise<IMailQueueResult>;
27
+ setProcessor(processor: (email: string) => Promise<IMailProcessorResult>): void;
28
+ }
29
+ /** Envelope every queue-backed executor stores for one pending verification email. */
30
+ export interface IQueueJobPayload {
31
+ id: string;
32
+ email: string;
33
+ options?: IMailQueueOptions;
34
+ attempts: number;
35
+ scheduledAt: number;
36
+ }
37
+ export interface IInternalQueueMailExecutorOpts {
38
+ identifier: string;
39
+ }
40
+ export interface IBullMQMailExecutorOpts {
41
+ /** `redis.module` passes `ioredis` itself - see `module` below for why. */
42
+ redis: IRedisSingleHelperOptions;
43
+ queue: {
44
+ identifier: string;
45
+ name: string;
46
+ };
47
+ mode: TConstValue<typeof BullMQExecutorModes>;
48
+ /** `bullmq` itself, for a `bun build --compile` binary that has no `node_modules` to load it from. */
49
+ module?: typeof import('bullmq');
50
+ }
51
+ export interface IMailQueueExecutorConfig {
52
+ type: TConstValue<typeof MailQueueExecutorTypes>;
53
+ internalQueue?: IInternalQueueMailExecutorOpts;
54
+ bullmq?: IBullMQMailExecutorOpts;
55
+ }
56
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEhF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,OAAO,GAAG,aAAa,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChG,YAAY,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;CACjF;AAED,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,2EAA2E;IAC3E,KAAK,EAAE,yBAAyB,CAAC;IACjC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,IAAI,EAAE,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;IAC9C,sGAAsG;IACtG,MAAM,CAAC,EAAE,cAAc,QAAQ,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACjD,aAAa,CAAC,EAAE,8BAA8B,CAAC;IAC/C,MAAM,CAAC,EAAE,uBAAuB,CAAC;CAClC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/queue.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import type { AnyType } from '@venizia/ignis-helpers/common';
2
+ export interface ITemplate {
3
+ name: string;
4
+ content?: string;
5
+ render?: (data: Record<string, AnyType>) => string;
6
+ subject?: string;
7
+ description?: string;
8
+ }
9
+ export interface IMailTemplateEngine {
10
+ render(opts: {
11
+ templateData?: string;
12
+ templateName?: string;
13
+ data: Record<string, any>;
14
+ requireValidate?: boolean;
15
+ }): string;
16
+ registerTemplate(opts: {
17
+ name: string;
18
+ content: string;
19
+ }): void;
20
+ validateTemplateData(opts: {
21
+ template: string;
22
+ data: Record<string, any>;
23
+ }): {
24
+ isValid: boolean;
25
+ missingKeys: string[];
26
+ allKeys: string[];
27
+ };
28
+ getTemplate(name: string): ITemplate | undefined;
29
+ listTemplates(): ITemplate[];
30
+ hasTemplate(name: string): boolean;
31
+ removeTemplate(name: string): boolean;
32
+ }
33
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,IAAI,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,MAAM,CAAC;IACX,gBAAgB,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChE,oBAAoB,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,GAAG;QAC3E,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACjD,aAAa,IAAI,SAAS,EAAE,CAAC;IAC7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACvC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/template.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ export interface IVerificationGenerationOptions {
2
+ codeLength: number;
3
+ tokenBytes: number;
4
+ codeExpiryMinutes: number;
5
+ tokenExpiryHours: number;
6
+ }
7
+ export interface IVerificationData {
8
+ verificationCode: string;
9
+ codeGeneratedAt: string;
10
+ codeExpiresAt: string;
11
+ codeAttempts: number;
12
+ verificationToken: string;
13
+ tokenGeneratedAt: string;
14
+ tokenExpiresAt: string;
15
+ lastCodeSentAt: string;
16
+ }
17
+ export interface IVerificationCodeGenerator {
18
+ generateCode(length: number): string;
19
+ }
20
+ export interface IVerificationTokenGenerator {
21
+ generateToken(bytes: number): string;
22
+ }
23
+ export interface IVerificationDataGenerator {
24
+ generateVerificationData(options: IVerificationGenerationOptions): IVerificationData;
25
+ }
26
+ //# sourceMappingURL=verification.d.ts.map