@seidor-cloud-produtos/orbit-backend-lib 2.0.138 → 2.1.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 (242) hide show
  1. package/dist/clean-arch/application/cache/cache.d.ts +32 -0
  2. package/dist/clean-arch/application/cache/cache.js +24 -0
  3. package/dist/clean-arch/application/cache/cache.spec.d.ts +1 -0
  4. package/dist/clean-arch/application/cache/cache.spec.js +178 -0
  5. package/dist/clean-arch/application/cache/client.d.ts +23 -0
  6. package/dist/clean-arch/application/cache/client.js +11 -0
  7. package/dist/clean-arch/application/consistency-event-dispatcher/consistency-event-dispatcher.d.ts +9 -0
  8. package/dist/clean-arch/application/consistency-event-dispatcher/consistency-event-dispatcher.js +26 -0
  9. package/dist/clean-arch/application/logger/base-audit-logger.d.ts +10 -0
  10. package/dist/clean-arch/application/logger/base-audit-logger.js +28 -0
  11. package/dist/clean-arch/application/logger/index.d.ts +94 -6
  12. package/dist/clean-arch/application/logger/index.js +69 -7
  13. package/dist/clean-arch/application/logger/logger.spec.d.ts +1 -0
  14. package/dist/clean-arch/application/logger/logger.spec.js +204 -0
  15. package/dist/clean-arch/application/queue/handler.d.ts +28 -0
  16. package/dist/clean-arch/application/queue/handler.js +23 -0
  17. package/dist/clean-arch/application/queue/messages-in-memory.d.ts +6 -0
  18. package/dist/clean-arch/application/queue/queue-connection.d.ts +22 -0
  19. package/dist/clean-arch/application/queue/queue.d.ts +39 -0
  20. package/dist/clean-arch/domain/entities/entity.d.ts +3 -0
  21. package/dist/clean-arch/domain/entities/entity.js +35 -0
  22. package/dist/clean-arch/domain/entities/entity.spec.d.ts +1 -0
  23. package/dist/clean-arch/domain/entities/entity.spec.js +130 -0
  24. package/dist/clean-arch/domain/entities/watched-list.d.ts +1 -0
  25. package/dist/clean-arch/domain/entities/watched-list.js +9 -0
  26. package/dist/clean-arch/domain/events/consistency-event/consistency-event.d.ts +15 -0
  27. package/dist/clean-arch/domain/events/consistency-event/consistency-event.js +15 -0
  28. package/dist/clean-arch/domain/events/consistency-event/consistency-event.spec.d.ts +1 -0
  29. package/dist/clean-arch/domain/events/consistency-event/consistency-event.spec.js +99 -0
  30. package/dist/clean-arch/domain/events/consistency-event/events-enum.d.ts +98 -0
  31. package/dist/clean-arch/domain/events/consistency-event/events-enum.js +151 -0
  32. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-created.d.ts +9 -0
  33. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-created.js +2 -0
  34. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-entity-event.d.ts +30 -0
  35. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-entity-event.js +2 -0
  36. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-upserted.d.ts +9 -0
  37. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-upserted.js +2 -0
  38. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-associated.d.ts +9 -0
  39. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-associated.js +2 -0
  40. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-created.d.ts +9 -0
  41. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-created.js +2 -0
  42. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-entity-event.d.ts +38 -0
  43. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-entity-event.js +2 -0
  44. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-upserted.d.ts +9 -0
  45. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-upserted.js +2 -0
  46. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-created.d.ts +9 -0
  47. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-created.js +2 -0
  48. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-entity-event.d.ts +26 -0
  49. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-entity-event.js +2 -0
  50. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-upserted.d.ts +9 -0
  51. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-upserted.js +2 -0
  52. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-created.d.ts +9 -0
  53. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-created.js +2 -0
  54. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-entity-event.d.ts +10 -0
  55. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-entity-event.js +2 -0
  56. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-upserted.d.ts +9 -0
  57. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-upserted.js +2 -0
  58. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-created.d.ts +9 -0
  59. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-created.js +2 -0
  60. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-entity-event.d.ts +37 -0
  61. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-entity-event.js +2 -0
  62. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-updated.d.ts +9 -0
  63. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-updated.js +2 -0
  64. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-upserted.d.ts +9 -0
  65. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-upserted.js +2 -0
  66. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-associated.d.ts +9 -0
  67. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-associated.js +2 -0
  68. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-entity-event.d.ts +13 -0
  69. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-entity-event.js +2 -0
  70. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-upserted.d.ts +9 -0
  71. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-upserted.js +2 -0
  72. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-created.d.ts +9 -0
  73. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-created.js +2 -0
  74. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-entity-event.d.ts +5 -0
  75. package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-entity-event.js +2 -0
  76. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-created.d.ts +9 -0
  77. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-created.js +2 -0
  78. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-entity-event.d.ts +11 -0
  79. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-entity-event.js +2 -0
  80. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-updated.d.ts +9 -0
  81. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-updated.js +2 -0
  82. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-created.d.ts +9 -0
  83. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-created.js +2 -0
  84. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-entity-event.d.ts +14 -0
  85. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-entity-event.js +2 -0
  86. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-created.d.ts +9 -0
  87. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-created.js +2 -0
  88. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-entity-event.d.ts +13 -0
  89. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-entity-event.js +2 -0
  90. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-updated.d.ts +9 -0
  91. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-updated.js +2 -0
  92. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-created.d.ts +9 -0
  93. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-created.js +2 -0
  94. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-entity-event.d.ts +50 -0
  95. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-entity-event.js +2 -0
  96. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-updated.d.ts +9 -0
  97. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-updated.js +2 -0
  98. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-entity-event.d.ts +8 -0
  99. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-entity-event.js +2 -0
  100. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-updated.d.ts +9 -0
  101. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-updated.js +2 -0
  102. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-entity-event.d.ts +10 -0
  103. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-entity-event.js +2 -0
  104. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-updated.d.ts +9 -0
  105. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-updated.js +2 -0
  106. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-entity-event.d.ts +10 -0
  107. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-entity-event.js +2 -0
  108. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-forgot-password.d.ts +9 -0
  109. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-forgot-password.js +2 -0
  110. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-temporary-password-generated.d.ts +9 -0
  111. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-temporary-password-generated.js +2 -0
  112. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-role-entity-event.d.ts +9 -0
  113. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-role-entity-event.js +2 -0
  114. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-created.d.ts +9 -0
  115. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-created.js +2 -0
  116. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-updated.d.ts +9 -0
  117. package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-updated.js +2 -0
  118. package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-created.d.ts +9 -0
  119. package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-created.js +2 -0
  120. package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-entity-event.d.ts +9 -0
  121. package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-entity-event.js +2 -0
  122. package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-upserted.d.ts +9 -0
  123. package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-upserted.js +2 -0
  124. package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-created.d.ts +9 -0
  125. package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-created.js +2 -0
  126. package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-deleted.d.ts +9 -0
  127. package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-deleted.js +2 -0
  128. package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-entity-event.d.ts +10 -0
  129. package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-entity-event.js +2 -0
  130. package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-updated.d.ts +9 -0
  131. package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-updated.js +2 -0
  132. package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-created.d.ts +9 -0
  133. package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-created.js +2 -0
  134. package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-deleted.d.ts +9 -0
  135. package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-deleted.js +2 -0
  136. package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-entity-event.d.ts +38 -0
  137. package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-entity-event.js +8 -0
  138. package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-updated.d.ts +9 -0
  139. package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-updated.js +2 -0
  140. package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-created.d.ts +9 -0
  141. package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-created.js +2 -0
  142. package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-event.d.ts +21 -0
  143. package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-event.js +2 -0
  144. package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-updated.d.ts +9 -0
  145. package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-updated.js +2 -0
  146. package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-upserted.d.ts +9 -0
  147. package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-upserted.js +2 -0
  148. package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-created.d.ts +9 -0
  149. package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-created.js +2 -0
  150. package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-deleted.d.ts +9 -0
  151. package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-deleted.js +2 -0
  152. package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-entity-event.d.ts +27 -0
  153. package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-entity-event.js +8 -0
  154. package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-updated.d.ts +9 -0
  155. package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-updated.js +2 -0
  156. package/dist/clean-arch/domain/events/domain-event.d.ts +5 -0
  157. package/dist/clean-arch/domain/interfaces/country.d.ts +1 -0
  158. package/dist/clean-arch/domain/value-objects/password.spec.d.ts +1 -0
  159. package/dist/clean-arch/domain/value-objects/password.spec.js +90 -0
  160. package/dist/clean-arch/infra/adapters/http-adapters.spec.d.ts +1 -0
  161. package/dist/clean-arch/infra/adapters/http-adapters.spec.js +318 -0
  162. package/dist/clean-arch/infra/authorizations/authorizer.spec.js +43 -0
  163. package/dist/clean-arch/infra/cache/cache-clients.spec.d.ts +1 -0
  164. package/dist/clean-arch/infra/cache/cache-clients.spec.js +161 -0
  165. package/dist/clean-arch/infra/cache/cache-in-memory.d.ts +5 -0
  166. package/dist/clean-arch/infra/cache/cache-in-memory.js +6 -0
  167. package/dist/clean-arch/infra/cache/clients/node-cache.d.ts +17 -0
  168. package/dist/clean-arch/infra/cache/clients/node-cache.js +20 -2
  169. package/dist/clean-arch/infra/cache/clients/redis.d.ts +15 -0
  170. package/dist/clean-arch/infra/cache/clients/redis.js +11 -0
  171. package/dist/clean-arch/infra/consistency-event-dispatcher/amqp-consistency-event-dispatcher.d.ts +8 -0
  172. package/dist/clean-arch/infra/consistency-event-dispatcher/amqp-consistency-event-dispatcher.js +18 -0
  173. package/dist/clean-arch/infra/consistency-event-dispatcher/exchanges-enum.d.ts +50 -0
  174. package/dist/clean-arch/infra/consistency-event-dispatcher/exchanges-enum.js +58 -0
  175. package/dist/clean-arch/infra/consistency-event-dispatcher/in-memory-consistency-event-dispatcher.d.ts +7 -0
  176. package/dist/clean-arch/infra/consistency-event-dispatcher/in-memory-consistency-event-dispatcher.js +15 -0
  177. package/dist/clean-arch/infra/http/controller.spec.js +170 -51
  178. package/dist/clean-arch/infra/http/handle-authorizer-headers.d.ts +25 -0
  179. package/dist/clean-arch/infra/http/handle-authorizer-headers.js +29 -0
  180. package/dist/clean-arch/infra/http/handle-user-headers.d.ts +5 -0
  181. package/dist/clean-arch/infra/http/handle-user-headers.js +2 -0
  182. package/dist/clean-arch/infra/http/helpers.spec.d.ts +1 -0
  183. package/dist/clean-arch/infra/http/helpers.spec.js +136 -0
  184. package/dist/clean-arch/infra/http/net.spec.d.ts +1 -0
  185. package/dist/clean-arch/infra/http/net.spec.js +46 -0
  186. package/dist/clean-arch/infra/logger/logger-in-memory.d.ts +31 -2
  187. package/dist/clean-arch/infra/logger/logger-in-memory.js +21 -2
  188. package/dist/clean-arch/infra/logger/logger-orbit.d.ts +81 -5
  189. package/dist/clean-arch/infra/logger/logger-orbit.js +63 -6
  190. package/dist/clean-arch/infra/logger/logger-orbit.spec.d.ts +1 -0
  191. package/dist/clean-arch/infra/logger/logger-orbit.spec.js +122 -0
  192. package/dist/clean-arch/infra/orbit-http-client/orbit-axios-client/orbit-axios-client.spec.d.ts +1 -0
  193. package/dist/clean-arch/infra/orbit-http-client/orbit-axios-client/orbit-axios-client.spec.js +143 -0
  194. package/dist/clean-arch/infra/orbit-notification-client/discord-client.spec.d.ts +1 -0
  195. package/dist/clean-arch/infra/orbit-notification-client/discord-client.spec.js +58 -0
  196. package/dist/clean-arch/infra/queue/create-consumers.d.ts +18 -0
  197. package/dist/clean-arch/infra/queue/create-consumers.js +15 -0
  198. package/dist/clean-arch/infra/queue/create-queues.d.ts +11 -0
  199. package/dist/clean-arch/infra/queue/create-queues.js +19 -0
  200. package/dist/clean-arch/infra/queue/in-memory/in-memory-queue.d.ts +16 -0
  201. package/dist/clean-arch/infra/queue/in-memory/in-memory-queue.js +19 -0
  202. package/dist/clean-arch/infra/queue/queue-controller.d.ts +14 -0
  203. package/dist/clean-arch/infra/queue/queue-controller.js +8 -0
  204. package/dist/clean-arch/infra/queue/queue-utils.spec.d.ts +1 -0
  205. package/dist/clean-arch/infra/queue/queue-utils.spec.js +170 -0
  206. package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.d.ts +5 -1
  207. package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.js +23 -12
  208. package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.spec.js +504 -89
  209. package/dist/clean-arch/infra/queue/rabbitmq/create-queues.d.ts +10 -0
  210. package/dist/clean-arch/infra/queue/rabbitmq/create-queues.js +7 -0
  211. package/dist/clean-arch/infra/queue/rabbitmq/types.d.ts +7 -1
  212. package/dist/clean-arch/infra/queue/worker.d.ts +9 -0
  213. package/dist/clean-arch/infra/queue/worker.js +9 -0
  214. package/dist/clean-arch/infra/scaledjob/amqp/runner.d.ts +35 -2
  215. package/dist/clean-arch/infra/scaledjob/amqp/runner.js +38 -3
  216. package/dist/clean-arch/infra/scaledjob/amqp/runner.spec.js +74 -84
  217. package/dist/clean-arch/infra/scaledjob/amqp/types.d.ts +19 -0
  218. package/dist/clean-arch/infra/scaledjob/sqs/runner.d.ts +23 -0
  219. package/dist/clean-arch/infra/scaledjob/sqs/runner.js +26 -2
  220. package/dist/clean-arch/infra/scaledjob/sqs/runner.spec.d.ts +1 -0
  221. package/dist/clean-arch/infra/scaledjob/sqs/runner.spec.js +150 -0
  222. package/dist/clean-arch/infra/scaledjob/sqs/types.d.ts +18 -0
  223. package/dist/clean-arch/infra/scaledjob/types/index.d.ts +5 -0
  224. package/dist/clean-arch/infra/tracing/start-tracing.d.ts +10 -0
  225. package/dist/clean-arch/infra/tracing/start-tracing.js +78 -0
  226. package/dist/clean-arch/infra/validations/zod/schemas/common-validation.d.ts +159 -0
  227. package/dist/clean-arch/infra/validations/zod/schemas/common-validation.js +53 -2
  228. package/dist/clean-arch/infra/validations/zod/validation-zod.d.ts +1 -1
  229. package/dist/clean-arch/infra/validations/zod/validation-zod.spec.js +23 -0
  230. package/dist/clean-arch/shared/pagination/get-take-and-skip.spec.d.ts +1 -0
  231. package/dist/clean-arch/shared/pagination/get-take-and-skip.spec.js +16 -0
  232. package/dist/clean-arch/shared/timeout.d.ts +8 -0
  233. package/dist/clean-arch/shared/timeout.js +8 -0
  234. package/dist/frameworks/express/api-gateway/mapping-model.spec.js +58 -0
  235. package/dist/frameworks/express/authorizations/authorization-express.spec.js +9 -0
  236. package/dist/frameworks/express/middleware-express.spec.d.ts +1 -0
  237. package/dist/frameworks/express/middleware-express.spec.js +51 -0
  238. package/dist/frameworks/nest/nest.spec.d.ts +1 -0
  239. package/dist/frameworks/nest/nest.spec.js +122 -0
  240. package/dist/infra/http/api-gateway/mapping-model.spec.js +42 -0
  241. package/dist/static/countries.js +241 -0
  242. package/package.json +5 -1
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const vitest_1 = require("vitest");
5
+ const httpClient = {
6
+ get: vitest_1.vi.fn(),
7
+ post: vitest_1.vi.fn(),
8
+ };
9
+ vitest_1.vi.mock('axios', () => ({
10
+ default: {
11
+ create: vitest_1.vi.fn(() => httpClient),
12
+ },
13
+ }));
14
+ const axios_1 = tslib_1.__importDefault(require("axios"));
15
+ const http_error_1 = tslib_1.__importDefault(require("../../../domain/errors/http-error"));
16
+ const orbit_axios_client_1 = require("./orbit-axios-client");
17
+ class TestOrbitAxiosClient extends orbit_axios_client_1.OrbitAxiosClient {
18
+ getTarget() {
19
+ return 'target-service';
20
+ }
21
+ getBaseUrl() {
22
+ return 'https://example.com';
23
+ }
24
+ async sendPost() {
25
+ return await this.post({
26
+ endpoint: '/partners',
27
+ body: { id: '1' },
28
+ config: {
29
+ headers: {
30
+ authorization: 'token',
31
+ },
32
+ },
33
+ });
34
+ }
35
+ async sendGet() {
36
+ return await this.get({
37
+ endpoint: '/partners',
38
+ config: {
39
+ headers: {
40
+ authorization: 'token',
41
+ },
42
+ query: {
43
+ page: '1',
44
+ },
45
+ },
46
+ });
47
+ }
48
+ }
49
+ describe('OrbitAxiosClient', () => {
50
+ afterEach(() => {
51
+ vitest_1.vi.clearAllMocks();
52
+ });
53
+ it('should create the axios instance with the target header', () => {
54
+ new TestOrbitAxiosClient();
55
+ expect(axios_1.default.create).toHaveBeenCalledWith({
56
+ baseURL: 'https://example.com',
57
+ headers: {
58
+ target: 'target-service',
59
+ },
60
+ });
61
+ });
62
+ it('should map successful POST and GET responses', async () => {
63
+ const client = new TestOrbitAxiosClient();
64
+ httpClient.post.mockResolvedValue({
65
+ data: { id: '1' },
66
+ status: 201,
67
+ headers: {
68
+ 'content-type': 'application/json',
69
+ },
70
+ });
71
+ httpClient.get.mockResolvedValue({
72
+ data: [{ id: '1' }],
73
+ status: 200,
74
+ headers: {
75
+ 'content-type': 'application/json',
76
+ },
77
+ });
78
+ await expect(client.sendPost()).resolves.toEqual({
79
+ body: { id: '1' },
80
+ code: 201,
81
+ headers: {
82
+ 'content-type': 'application/json',
83
+ },
84
+ });
85
+ await expect(client.sendGet()).resolves.toEqual({
86
+ body: [{ id: '1' }],
87
+ code: 200,
88
+ headers: {
89
+ 'content-type': 'application/json',
90
+ },
91
+ });
92
+ expect(httpClient.post).toHaveBeenCalledWith('/partners', { id: '1' }, {
93
+ headers: {
94
+ authorization: 'token',
95
+ },
96
+ });
97
+ expect(httpClient.get).toHaveBeenCalledWith('/partners', {
98
+ headers: {
99
+ authorization: 'token',
100
+ },
101
+ params: {
102
+ page: '1',
103
+ },
104
+ });
105
+ });
106
+ it('should convert axios errors into HttpError', async () => {
107
+ const client = new TestOrbitAxiosClient();
108
+ httpClient.post.mockRejectedValue({
109
+ response: {
110
+ data: {
111
+ message: 'Integration failed',
112
+ },
113
+ headers: {
114
+ 'x-request-id': 'request-id',
115
+ },
116
+ status: 502,
117
+ },
118
+ });
119
+ await expect(client.sendPost()).rejects.toBeInstanceOf(http_error_1.default);
120
+ await expect(client.sendPost()).rejects.toEqual(expect.objectContaining({
121
+ message: 'Integration failed',
122
+ code: 502,
123
+ response: {
124
+ body: {
125
+ message: 'Integration failed',
126
+ },
127
+ headers: {
128
+ 'x-request-id': 'request-id',
129
+ },
130
+ code: 502,
131
+ },
132
+ }));
133
+ });
134
+ it('should use the default HttpError message and code when axios error is incomplete', async () => {
135
+ const client = new TestOrbitAxiosClient();
136
+ httpClient.get.mockRejectedValue({});
137
+ await expect(client.sendGet()).rejects.toBeInstanceOf(http_error_1.default);
138
+ await expect(client.sendGet()).rejects.toEqual(expect.objectContaining({
139
+ message: 'Integration error',
140
+ code: 400,
141
+ }));
142
+ });
143
+ });
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const sendMock = vitest_1.vi.fn().mockResolvedValue(undefined);
5
+ const destroyMock = vitest_1.vi.fn();
6
+ const setAuthorMock = vitest_1.vi.fn().mockReturnThis();
7
+ const setColorMock = vitest_1.vi.fn().mockReturnThis();
8
+ const setTitleMock = vitest_1.vi.fn().mockReturnThis();
9
+ const setDescriptionMock = vitest_1.vi.fn().mockReturnThis();
10
+ vitest_1.vi.mock('discord.js', () => ({
11
+ EmbedBuilder: vitest_1.vi.fn().mockImplementation(() => ({
12
+ setAuthor: setAuthorMock,
13
+ setColor: setColorMock,
14
+ setTitle: setTitleMock,
15
+ setDescription: setDescriptionMock,
16
+ })),
17
+ WebhookClient: vitest_1.vi.fn().mockImplementation(() => ({
18
+ send: sendMock,
19
+ destroy: destroyMock,
20
+ })),
21
+ }));
22
+ const discord_js_1 = require("discord.js");
23
+ const discord_client_1 = require("./discord-client");
24
+ class TestDiscordClient extends discord_client_1.OrbitDiscordNotificationClient {
25
+ getId() {
26
+ return 'discord-id';
27
+ }
28
+ getToken() {
29
+ return 'discord-token';
30
+ }
31
+ }
32
+ describe('OrbitDiscordNotificationClient', () => {
33
+ afterEach(() => {
34
+ vitest_1.vi.clearAllMocks();
35
+ });
36
+ it('should send error notifications through the webhook client', async () => {
37
+ const client = new TestDiscordClient();
38
+ await client.sendErrorNotification('API', 'Failure', 'Stacktrace');
39
+ expect(discord_js_1.WebhookClient).toHaveBeenCalledWith({
40
+ id: 'discord-id',
41
+ token: 'discord-token',
42
+ });
43
+ expect(discord_js_1.EmbedBuilder).toHaveBeenCalledTimes(1);
44
+ expect(setAuthorMock).toHaveBeenCalledWith({ name: 'API' });
45
+ expect(setTitleMock).toHaveBeenCalledWith('Failure');
46
+ expect(setDescriptionMock).toHaveBeenCalledWith('```Stacktrace```');
47
+ expect(sendMock).toHaveBeenCalledWith({
48
+ embeds: [expect.any(Object)],
49
+ });
50
+ expect(destroyMock).toHaveBeenCalledTimes(1);
51
+ });
52
+ it('should swallow webhook errors', async () => {
53
+ const client = new TestDiscordClient();
54
+ sendMock.mockRejectedValueOnce(new Error('failed'));
55
+ await expect(client.sendErrorNotification('API', 'Failure', 'Stacktrace')).resolves.toBeUndefined();
56
+ expect(destroyMock).not.toHaveBeenCalled();
57
+ });
58
+ });
@@ -1,11 +1,29 @@
1
1
  import QueueConnection from '../../application/queue/queue-connection';
2
+ /**
3
+ * Descreve uma topologia mínima a ser declarada para um consumidor.
4
+ */
2
5
  export interface IConsumer {
3
6
  queueName: string;
4
7
  configs: any;
5
8
  }
9
+ /**
10
+ * Helper para declarar várias filas/topologias de uma vez.
11
+ *
12
+ * A classe espera que a implementação concreta de `queue` ofereça
13
+ * o método opcional `createConsumers`.
14
+ *
15
+ * @deprecated Use CreateQueues instead.
16
+ *
17
+ */
6
18
  export default abstract class CreateConsumers {
7
19
  readonly queue: QueueConnection;
8
20
  protected abstract consumers: IConsumer[];
9
21
  constructor(queue: QueueConnection);
22
+ /**
23
+ * Itera a lista de consumidores e declara a topologia de cada um.
24
+ *
25
+ * Se a implementação da fila não suportar `createConsumers`, o método
26
+ * simplesmente não faz nada.
27
+ */
10
28
  createConsumers(): Promise<void>;
11
29
  }
@@ -1,10 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Helper para declarar várias filas/topologias de uma vez.
5
+ *
6
+ * A classe espera que a implementação concreta de `queue` ofereça
7
+ * o método opcional `createConsumers`.
8
+ *
9
+ * @deprecated Use CreateQueues instead.
10
+ *
11
+ */
3
12
  class CreateConsumers {
4
13
  queue;
5
14
  constructor(queue) {
6
15
  this.queue = queue;
7
16
  }
17
+ /**
18
+ * Itera a lista de consumidores e declara a topologia de cada um.
19
+ *
20
+ * Se a implementação da fila não suportar `createConsumers`, o método
21
+ * simplesmente não faz nada.
22
+ */
8
23
  async createConsumers() {
9
24
  if (!this.queue.createConsumers) {
10
25
  return;
@@ -0,0 +1,11 @@
1
+ import QueueConnection from '../../application/queue/queue-connection';
2
+ export interface IQueueProps {
3
+ name: string;
4
+ configs: any;
5
+ }
6
+ export default abstract class CreateQueues {
7
+ readonly queue: QueueConnection;
8
+ protected queues: IQueueProps[];
9
+ constructor(queue: QueueConnection, queues: IQueueProps[]);
10
+ createQueues(): Promise<void>;
11
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class CreateQueues {
4
+ queue;
5
+ queues;
6
+ constructor(queue, queues) {
7
+ this.queue = queue;
8
+ this.queues = queues;
9
+ }
10
+ async createQueues() {
11
+ if (!this.queue.createQueues) {
12
+ return;
13
+ }
14
+ for (const queue of this.queues) {
15
+ await this.queue.createQueues(queue.name, queue.configs);
16
+ }
17
+ }
18
+ }
19
+ exports.default = CreateQueues;
@@ -1,11 +1,27 @@
1
1
  import Handler from '../../../application/queue/handler';
2
2
  import Queue from '../../../application/queue/queue';
3
3
  import DomainEvent from '../../../domain/events/domain-event';
4
+ /**
5
+ * Implementação simples de fila em memória.
6
+ *
7
+ * Útil para testes ou cenários locais onde não há broker AMQP.
8
+ */
4
9
  export default class QueueInMemory implements Queue {
5
10
  queues: PropsQueue[];
6
11
  constructor();
12
+ /**
13
+ * Percorre os eventos armazenados e executa o handler para os que
14
+ * combinam com o `queueName`.
15
+ */
7
16
  on(queueName: string, callback: Handler): Promise<void>;
17
+ /**
18
+ * Armazena o evento na lista interna.
19
+ */
8
20
  publish(exchangeName: string, domainEvent: DomainEvent): Promise<void>;
21
+ /**
22
+ * Armazena o evento na lista interna e retorna sucesso.
23
+ */
24
+ publishWaitForConfirms(exchangeName: string, domainEvent: DomainEvent): Promise<boolean>;
9
25
  }
10
26
  type PropsQueue = {
11
27
  exchangeName: string;
@@ -1,10 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Implementação simples de fila em memória.
5
+ *
6
+ * Útil para testes ou cenários locais onde não há broker AMQP.
7
+ */
3
8
  class QueueInMemory {
4
9
  queues;
5
10
  constructor() {
6
11
  this.queues = [];
7
12
  }
13
+ /**
14
+ * Percorre os eventos armazenados e executa o handler para os que
15
+ * combinam com o `queueName`.
16
+ */
8
17
  async on(queueName, callback) {
9
18
  for (const queue of this.queues) {
10
19
  if (queue.domainEvent.name === queueName) {
@@ -12,8 +21,18 @@ class QueueInMemory {
12
21
  }
13
22
  }
14
23
  }
24
+ /**
25
+ * Armazena o evento na lista interna.
26
+ */
15
27
  async publish(exchangeName, domainEvent) {
16
28
  this.queues.push({ exchangeName, domainEvent });
17
29
  }
30
+ /**
31
+ * Armazena o evento na lista interna e retorna sucesso.
32
+ */
33
+ async publishWaitForConfirms(exchangeName, domainEvent) {
34
+ this.queues.push({ exchangeName, domainEvent });
35
+ return true;
36
+ }
18
37
  }
19
38
  exports.default = QueueInMemory;
@@ -1,12 +1,26 @@
1
1
  import Handler from '../../application/queue/handler';
2
2
  import QueueConnection from '../../application/queue/queue-connection';
3
+ /**
4
+ * Um handler assíncrono que será registrado em uma fila.
5
+ *
6
+ * O uso de `Promise<Handler>` permite construir handlers de forma lazy
7
+ * (ex.: via factories que dependem de DI/infra).
8
+ */
3
9
  export interface IEventHandler {
4
10
  queueName: string;
5
11
  callback: Promise<Handler>;
6
12
  }
13
+ /**
14
+ * Helper para subir vários consumidores de forma organizada.
15
+ *
16
+ * A implementação concreta deve preencher `eventHandlers`.
17
+ */
7
18
  export default abstract class QueueController {
8
19
  readonly queue: QueueConnection;
9
20
  protected abstract eventHandlers: IEventHandler[];
10
21
  constructor(queue: QueueConnection);
22
+ /**
23
+ * Registra todos os handlers configurados através de `queue.on(...)`.
24
+ */
11
25
  runConsumers(): Promise<void>;
12
26
  }
@@ -1,10 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Helper para subir vários consumidores de forma organizada.
5
+ *
6
+ * A implementação concreta deve preencher `eventHandlers`.
7
+ */
3
8
  class QueueController {
4
9
  queue;
5
10
  constructor(queue) {
6
11
  this.queue = queue;
7
12
  }
13
+ /**
14
+ * Registra todos os handlers configurados através de `queue.on(...)`.
15
+ */
8
16
  async runConsumers() {
9
17
  for (const handler of this.eventHandlers) {
10
18
  this.queue.on(handler.queueName, await handler.callback);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const vitest_1 = require("vitest");
5
+ vitest_1.vi.mock('child_process', () => ({
6
+ fork: vitest_1.vi.fn(),
7
+ }));
8
+ const child_process_1 = require("child_process");
9
+ const handler_1 = tslib_1.__importDefault(require("../../application/queue/handler"));
10
+ const create_consumers_1 = tslib_1.__importDefault(require("./create-consumers"));
11
+ const create_queues_1 = tslib_1.__importDefault(require("./create-queues"));
12
+ const in_memory_queue_1 = tslib_1.__importDefault(require("./in-memory/in-memory-queue"));
13
+ const queue_controller_1 = tslib_1.__importDefault(require("./queue-controller"));
14
+ const worker_1 = tslib_1.__importDefault(require("./worker"));
15
+ class TestHandler extends handler_1.default {
16
+ handleMock = vitest_1.vi.fn().mockResolvedValue(undefined);
17
+ constructor(simultaneity = 1, timeoutPerMessageSeconds) {
18
+ super();
19
+ this.simultaneity = simultaneity;
20
+ this.timeoutPerMessageSeconds = timeoutPerMessageSeconds;
21
+ }
22
+ async handle(message) {
23
+ await this.handleMock(message);
24
+ }
25
+ }
26
+ class TestQueueController extends queue_controller_1.default {
27
+ eventHandlers = [
28
+ {
29
+ queueName: 'queue-1',
30
+ callback: Promise.resolve(new TestHandler()),
31
+ },
32
+ {
33
+ queueName: 'queue-2',
34
+ callback: Promise.resolve(new TestHandler()),
35
+ },
36
+ ];
37
+ }
38
+ class TestCreateConsumers extends create_consumers_1.default {
39
+ consumers = [
40
+ {
41
+ queueName: 'queue-1',
42
+ configs: { durable: true },
43
+ },
44
+ {
45
+ queueName: 'queue-2',
46
+ configs: { durable: false },
47
+ },
48
+ ];
49
+ }
50
+ class TestCreateQueues extends create_queues_1.default {
51
+ }
52
+ (0, vitest_1.describe)('Queue helpers', () => {
53
+ (0, vitest_1.beforeEach)(() => {
54
+ vitest_1.vi.useFakeTimers();
55
+ });
56
+ (0, vitest_1.afterEach)(() => {
57
+ vitest_1.vi.useRealTimers();
58
+ vitest_1.vi.restoreAllMocks();
59
+ });
60
+ (0, vitest_1.it)('should expose simultaneity and timeout from handlers', () => {
61
+ const handler = new TestHandler(3, 10);
62
+ (0, vitest_1.expect)(handler.getSimultaneity()).toBe(3);
63
+ (0, vitest_1.expect)(handler.getTimeoutPerMessageSeconds()).toBe(10);
64
+ });
65
+ (0, vitest_1.it)('should publish and consume matching in-memory queue messages', async () => {
66
+ const queue = new in_memory_queue_1.default();
67
+ const event = {
68
+ name: 'queue-1',
69
+ eventDate: new Date(),
70
+ };
71
+ const otherEvent = {
72
+ name: 'queue-2',
73
+ eventDate: new Date(),
74
+ };
75
+ const handler = new TestHandler();
76
+ await queue.publish('exchange', event);
77
+ await queue.publish('exchange', otherEvent);
78
+ await queue.on('queue-1', handler);
79
+ (0, vitest_1.expect)(handler.handleMock).toHaveBeenCalledTimes(1);
80
+ (0, vitest_1.expect)(handler.handleMock).toHaveBeenCalledWith({
81
+ exchangeName: 'exchange',
82
+ domainEvent: event,
83
+ });
84
+ });
85
+ (0, vitest_1.it)('should register all queue consumers', async () => {
86
+ const queue = {
87
+ on: vitest_1.vi.fn().mockResolvedValue(undefined),
88
+ };
89
+ const controller = new TestQueueController(queue);
90
+ await controller.runConsumers();
91
+ (0, vitest_1.expect)(queue.on).toHaveBeenCalledTimes(2);
92
+ (0, vitest_1.expect)(queue.on).toHaveBeenNthCalledWith(1, 'queue-1', vitest_1.expect.any(TestHandler));
93
+ (0, vitest_1.expect)(queue.on).toHaveBeenNthCalledWith(2, 'queue-2', vitest_1.expect.any(TestHandler));
94
+ });
95
+ (0, vitest_1.it)('should create consumer topology when supported', async () => {
96
+ const queue = {
97
+ createConsumers: vitest_1.vi.fn().mockResolvedValue(undefined),
98
+ };
99
+ const controller = new TestCreateConsumers(queue);
100
+ await controller.createConsumers();
101
+ (0, vitest_1.expect)(queue.createConsumers).toHaveBeenCalledTimes(2);
102
+ (0, vitest_1.expect)(queue.createConsumers).toHaveBeenNthCalledWith(1, 'queue-1', {
103
+ durable: true,
104
+ });
105
+ (0, vitest_1.expect)(queue.createConsumers).toHaveBeenNthCalledWith(2, 'queue-2', {
106
+ durable: false,
107
+ });
108
+ });
109
+ (0, vitest_1.it)('should skip consumer topology when not supported', async () => {
110
+ const queue = {};
111
+ const controller = new TestCreateConsumers(queue);
112
+ await (0, vitest_1.expect)(controller.createConsumers()).resolves.toBeUndefined();
113
+ });
114
+ (0, vitest_1.it)('should create queues when supported', async () => {
115
+ const queue = {
116
+ createQueues: vitest_1.vi.fn().mockResolvedValue(undefined),
117
+ };
118
+ const controller = new TestCreateQueues(queue, [
119
+ { name: 'queue-1', configs: { durable: true } },
120
+ { name: 'queue-2', configs: { durable: false } },
121
+ ]);
122
+ await controller.createQueues();
123
+ (0, vitest_1.expect)(queue.createQueues).toHaveBeenCalledTimes(2);
124
+ (0, vitest_1.expect)(queue.createQueues).toHaveBeenNthCalledWith(1, 'queue-1', {
125
+ durable: true,
126
+ });
127
+ (0, vitest_1.expect)(queue.createQueues).toHaveBeenNthCalledWith(2, 'queue-2', {
128
+ durable: false,
129
+ });
130
+ });
131
+ (0, vitest_1.it)('should skip queue creation when not supported', async () => {
132
+ const queue = {};
133
+ const controller = new TestCreateQueues(queue, [
134
+ { name: 'queue-1', configs: { durable: true } },
135
+ ]);
136
+ await (0, vitest_1.expect)(controller.createQueues()).resolves.toBeUndefined();
137
+ });
138
+ (0, vitest_1.it)('should restart forked workers until the retry limit', async () => {
139
+ const on = vitest_1.vi.fn();
140
+ const child = {
141
+ on,
142
+ pid: 321,
143
+ };
144
+ const consoleLog = vitest_1.vi
145
+ .spyOn(console, 'log')
146
+ .mockImplementation(() => undefined);
147
+ const consoleError = vitest_1.vi
148
+ .spyOn(console, 'error')
149
+ .mockImplementation(() => undefined);
150
+ vitest_1.vi.mocked(child_process_1.fork).mockReturnValue(child);
151
+ const worker = new worker_1.default('/tmp/worker.js');
152
+ worker.fWorker();
153
+ (0, vitest_1.expect)(child_process_1.fork).toHaveBeenCalledWith('/tmp/worker.js');
154
+ const onError = on.mock.calls.find(([event]) => event === 'error')?.[1];
155
+ const onExit = on.mock.calls.find(([event]) => event === 'exit')?.[1];
156
+ onError?.(new Error('boom'));
157
+ (0, vitest_1.expect)(consoleError).toHaveBeenCalledWith('⛔ Child process 321 error :', vitest_1.expect.any(Error));
158
+ onExit?.(1);
159
+ await vitest_1.vi.runOnlyPendingTimersAsync();
160
+ (0, vitest_1.expect)(child_process_1.fork).toHaveBeenCalledTimes(2);
161
+ for (let attempt = 2; attempt <= 6; attempt++) {
162
+ const currentChild = vitest_1.vi.mocked(child_process_1.fork).mock.results[attempt - 2]?.value || child;
163
+ const exitHandler = currentChild.on.mock.calls.find(([event]) => event === 'exit')?.[1];
164
+ exitHandler?.(1);
165
+ await vitest_1.vi.runOnlyPendingTimersAsync();
166
+ }
167
+ (0, vitest_1.expect)(consoleLog).toHaveBeenCalledWith('🔄 Restarting worker process... Attempt 1 of 5');
168
+ (0, vitest_1.expect)(consoleError).toHaveBeenCalledWith('⛔ Max restart attempts reached. Not restarting worker process 321. Container restart required!');
169
+ });
170
+ });
@@ -134,6 +134,10 @@ type CreateConsumers = {
134
134
  exchangeName: string;
135
135
  exchangeType: 'direct' | 'fanout';
136
136
  queueType?: 'classic' | 'quorum' | 'stream';
137
- dlqTTLms?: number | null;
137
+ TTLms?: number | null;
138
+ dlq?: {
139
+ TTLms?: number | null;
140
+ exchangeName?: string;
141
+ };
138
142
  };
139
143
  export {};
@@ -281,29 +281,34 @@ class AmqpQueue {
281
281
  await channel.assertExchange(configs.exchangeName, configs.exchangeType, {
282
282
  durable: true,
283
283
  });
284
- await channel.assertQueue(queueName, {
284
+ const buildedConfigs = {
285
285
  arguments: {
286
- 'x-dead-letter-exchange': `${configs.exchangeName}.DLX`,
286
+ 'x-dead-letter-exchange': `${configs.dlq?.exchangeName || configs.exchangeName}.DLX`,
287
287
  'x-dead-letter-routing-key': `${queueName || ''}.DLK`,
288
288
  'x-queue-type': configs.queueType || 'classic',
289
289
  },
290
290
  durable: true,
291
- deadLetterExchange: `${configs.exchangeName}.DLX`,
291
+ deadLetterExchange: `${configs.dlq?.exchangeName || configs.exchangeName}.DLX`,
292
292
  deadLetterRoutingKey: `${queueName || ''}.DLK`,
293
- });
293
+ };
294
+ if (configs.TTLms) {
295
+ buildedConfigs.arguments['x-message-ttl'] = configs.TTLms;
296
+ }
297
+ await channel.assertQueue(queueName, buildedConfigs);
294
298
  await channel.bindQueue(queueName, configs.exchangeName, queueName || '');
295
- await channel.assertExchange(`${configs.exchangeName}.DLX`, configs.exchangeType || 'direct', {
299
+ await channel.assertExchange(`${configs.dlq?.exchangeName || configs.exchangeName}.DLX`, configs.exchangeType || 'direct', {
296
300
  durable: true,
297
301
  });
298
- const oneDayMs = 86400000;
299
302
  await channel.assertQueue(`${queueName}.DLQ`, {
300
303
  durable: true,
301
304
  arguments: {
302
- ...(configs.dlqTTLms ? { 'x-message-ttl': configs.dlqTTLms } : {}),
303
- 'x-queue-type': configs.queueType || 'classic',
305
+ ...(configs.dlq?.TTLms
306
+ ? { 'x-message-ttl': configs.dlq?.TTLms }
307
+ : {}),
308
+ 'x-queue-type': 'classic',
304
309
  },
305
310
  });
306
- await channel.bindQueue(`${queueName}.DLQ`, `${configs.exchangeName}.DLX`, `${queueName || ''}.DLK`);
311
+ await channel.bindQueue(`${queueName}.DLQ`, `${configs.dlq?.exchangeName || configs.exchangeName}.DLX`, `${queueName || ''}.DLK`);
307
312
  await channel.close();
308
313
  }
309
314
  catch (err) {
@@ -314,12 +319,18 @@ class AmqpQueue {
314
319
  }
315
320
  }
316
321
  async createQueues(queueName, configs) {
322
+ const oneWeekInMS = 604800000;
317
323
  const buildedConfigs = {
318
324
  ...configs,
319
325
  };
320
- if (buildedConfigs.dlqTTLms === undefined) {
321
- const sevenDaysInMs = 604800000;
322
- buildedConfigs.dlqTTLms = sevenDaysInMs;
326
+ if (buildedConfigs.TTLms === undefined) {
327
+ buildedConfigs.TTLms = oneWeekInMS * 2; // 14 days as default TTL for main queue when DLQ is configured, otherwise uses the provided TTL or 14 days if not provided
328
+ }
329
+ if (buildedConfigs.dlq?.TTLms === undefined) {
330
+ buildedConfigs.dlq = {
331
+ ...(buildedConfigs.dlq || {}),
332
+ TTLms: oneWeekInMS,
333
+ };
323
334
  }
324
335
  return await this.createConsumers(queueName, buildedConfigs);
325
336
  }