@seidor-cloud-produtos/orbit-backend-lib 2.0.136 → 2.0.138
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.
- package/dist/clean-arch/application/cache/cache.d.ts +0 -32
- package/dist/clean-arch/application/cache/cache.js +0 -24
- package/dist/clean-arch/application/cache/client.d.ts +0 -23
- package/dist/clean-arch/application/cache/client.js +0 -11
- package/dist/clean-arch/application/logger/index.d.ts +6 -94
- package/dist/clean-arch/application/logger/index.js +7 -69
- package/dist/clean-arch/application/queue/handler.d.ts +0 -28
- package/dist/clean-arch/application/queue/handler.js +0 -23
- package/dist/clean-arch/application/queue/messages-in-memory.d.ts +0 -6
- package/dist/clean-arch/application/queue/queue-connection.d.ts +0 -22
- package/dist/clean-arch/application/queue/queue.d.ts +0 -39
- package/dist/clean-arch/domain/entities/entity.d.ts +0 -3
- package/dist/clean-arch/domain/entities/entity.js +0 -35
- package/dist/clean-arch/domain/entities/watched-list.d.ts +0 -1
- package/dist/clean-arch/domain/entities/watched-list.js +0 -9
- package/dist/clean-arch/domain/events/domain-event.d.ts +0 -5
- package/dist/clean-arch/domain/interfaces/country.d.ts +0 -1
- package/dist/clean-arch/infra/authorizations/authorizer.spec.js +0 -43
- package/dist/clean-arch/infra/cache/cache-in-memory.d.ts +0 -5
- package/dist/clean-arch/infra/cache/cache-in-memory.js +0 -6
- package/dist/clean-arch/infra/cache/clients/node-cache.d.ts +0 -17
- package/dist/clean-arch/infra/cache/clients/node-cache.js +2 -20
- package/dist/clean-arch/infra/cache/clients/redis.d.ts +0 -15
- package/dist/clean-arch/infra/cache/clients/redis.js +0 -11
- package/dist/clean-arch/infra/http/controller.spec.js +51 -170
- package/dist/clean-arch/infra/http/handle-user-headers.d.ts +0 -5
- package/dist/clean-arch/infra/http/handle-user-headers.js +0 -2
- package/dist/clean-arch/infra/logger/logger-in-memory.d.ts +2 -31
- package/dist/clean-arch/infra/logger/logger-in-memory.js +2 -21
- package/dist/clean-arch/infra/logger/logger-orbit.d.ts +5 -81
- package/dist/clean-arch/infra/logger/logger-orbit.js +6 -63
- package/dist/clean-arch/infra/queue/create-consumers.d.ts +0 -18
- package/dist/clean-arch/infra/queue/create-consumers.js +0 -15
- package/dist/clean-arch/infra/queue/in-memory/in-memory-queue.d.ts +0 -16
- package/dist/clean-arch/infra/queue/in-memory/in-memory-queue.js +0 -19
- package/dist/clean-arch/infra/queue/queue-controller.d.ts +0 -14
- package/dist/clean-arch/infra/queue/queue-controller.js +0 -8
- package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.d.ts +1 -5
- package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.js +12 -23
- package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.spec.js +89 -504
- package/dist/clean-arch/infra/queue/rabbitmq/types.d.ts +1 -7
- package/dist/clean-arch/infra/queue/worker.d.ts +0 -9
- package/dist/clean-arch/infra/queue/worker.js +0 -9
- package/dist/clean-arch/infra/scaledjob/amqp/runner.d.ts +2 -35
- package/dist/clean-arch/infra/scaledjob/amqp/runner.js +3 -38
- package/dist/clean-arch/infra/scaledjob/amqp/runner.spec.js +84 -74
- package/dist/clean-arch/infra/scaledjob/amqp/types.d.ts +0 -19
- package/dist/clean-arch/infra/scaledjob/sqs/runner.d.ts +0 -23
- package/dist/clean-arch/infra/scaledjob/sqs/runner.js +2 -26
- package/dist/clean-arch/infra/scaledjob/sqs/types.d.ts +0 -18
- package/dist/clean-arch/infra/scaledjob/types/index.d.ts +0 -5
- package/dist/clean-arch/infra/validations/zod/schemas/common-validation.d.ts +0 -159
- package/dist/clean-arch/infra/validations/zod/schemas/common-validation.js +2 -53
- package/dist/clean-arch/infra/validations/zod/validation-zod.d.ts +1 -1
- package/dist/clean-arch/infra/validations/zod/validation-zod.spec.js +0 -23
- package/dist/clean-arch/shared/timeout.d.ts +0 -8
- package/dist/clean-arch/shared/timeout.js +0 -8
- package/dist/frameworks/express/api-gateway/mapping-model.spec.js +0 -58
- package/dist/frameworks/express/authorizations/authorization-express.spec.js +0 -9
- package/dist/infra/http/api-gateway/mapping-model.spec.js +0 -42
- package/dist/static/countries.js +0 -241
- package/package.json +1 -5
- package/dist/clean-arch/application/cache/cache.spec.d.ts +0 -1
- package/dist/clean-arch/application/cache/cache.spec.js +0 -178
- package/dist/clean-arch/application/consistency-event-dispatcher/consistency-event-dispatcher.d.ts +0 -9
- package/dist/clean-arch/application/consistency-event-dispatcher/consistency-event-dispatcher.js +0 -26
- package/dist/clean-arch/application/logger/base-audit-logger.d.ts +0 -10
- package/dist/clean-arch/application/logger/base-audit-logger.js +0 -28
- package/dist/clean-arch/application/logger/logger.spec.d.ts +0 -1
- package/dist/clean-arch/application/logger/logger.spec.js +0 -204
- package/dist/clean-arch/domain/entities/entity.spec.d.ts +0 -1
- package/dist/clean-arch/domain/entities/entity.spec.js +0 -130
- package/dist/clean-arch/domain/events/consistency-event/consistency-event.d.ts +0 -15
- package/dist/clean-arch/domain/events/consistency-event/consistency-event.js +0 -15
- package/dist/clean-arch/domain/events/consistency-event/consistency-event.spec.d.ts +0 -1
- package/dist/clean-arch/domain/events/consistency-event/consistency-event.spec.js +0 -99
- package/dist/clean-arch/domain/events/consistency-event/events-enum.d.ts +0 -94
- package/dist/clean-arch/domain/events/consistency-event/events-enum.js +0 -145
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-entity-event.d.ts +0 -30
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-upserted.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-upserted.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-associated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-associated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-entity-event.d.ts +0 -38
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-upserted.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-upserted.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-entity-event.d.ts +0 -26
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-upserted.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-upserted.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-entity-event.d.ts +0 -10
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-upserted.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-upserted.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-entity-event.d.ts +0 -37
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-updated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-upserted.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-upserted.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-associated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-associated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-entity-event.d.ts +0 -13
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-upserted.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-upserted.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-entity-event.d.ts +0 -5
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-entity-event.d.ts +0 -11
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-updated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-entity-event.d.ts +0 -14
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-entity-event.d.ts +0 -13
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-updated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-entity-event.d.ts +0 -50
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-updated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-entity-event.d.ts +0 -8
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-updated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-entity-event.d.ts +0 -10
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-updated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-entity-event.d.ts +0 -10
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-forgot-password.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-forgot-password.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-temporary-password-generated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-temporary-password-generated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-role-entity-event.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-role-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-updated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-entity-event.d.ts +0 -8
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-upserted.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-upserted.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-deleted.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-deleted.js +0 -2
- 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 +0 -11
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/brazilian-federal-revenue-api-credential/brazilian-federal-revenue-api-credential-updated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-deleted.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-deleted.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-entity-event.d.ts +0 -37
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-entity-event.js +0 -8
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-updated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-event.d.ts +0 -21
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-event.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-updated.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-created.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-created.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-deleted.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-deleted.js +0 -2
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-entity-event.d.ts +0 -27
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-entity-event.js +0 -8
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-updated.d.ts +0 -9
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-updated.js +0 -2
- package/dist/clean-arch/domain/value-objects/password.spec.d.ts +0 -1
- package/dist/clean-arch/domain/value-objects/password.spec.js +0 -90
- package/dist/clean-arch/infra/adapters/http-adapters.spec.d.ts +0 -1
- package/dist/clean-arch/infra/adapters/http-adapters.spec.js +0 -318
- package/dist/clean-arch/infra/cache/cache-clients.spec.d.ts +0 -1
- package/dist/clean-arch/infra/cache/cache-clients.spec.js +0 -161
- package/dist/clean-arch/infra/consistency-event-dispatcher/amqp-consistency-event-dispatcher.d.ts +0 -8
- package/dist/clean-arch/infra/consistency-event-dispatcher/amqp-consistency-event-dispatcher.js +0 -18
- package/dist/clean-arch/infra/consistency-event-dispatcher/exchanges-enum.d.ts +0 -48
- package/dist/clean-arch/infra/consistency-event-dispatcher/exchanges-enum.js +0 -56
- package/dist/clean-arch/infra/consistency-event-dispatcher/in-memory-consistency-event-dispatcher.d.ts +0 -7
- package/dist/clean-arch/infra/consistency-event-dispatcher/in-memory-consistency-event-dispatcher.js +0 -15
- package/dist/clean-arch/infra/http/handle-authorizer-headers.d.ts +0 -25
- package/dist/clean-arch/infra/http/handle-authorizer-headers.js +0 -29
- package/dist/clean-arch/infra/http/helpers.spec.d.ts +0 -1
- package/dist/clean-arch/infra/http/helpers.spec.js +0 -136
- package/dist/clean-arch/infra/http/net.spec.d.ts +0 -1
- package/dist/clean-arch/infra/http/net.spec.js +0 -46
- package/dist/clean-arch/infra/logger/logger-orbit.spec.d.ts +0 -1
- package/dist/clean-arch/infra/logger/logger-orbit.spec.js +0 -122
- package/dist/clean-arch/infra/orbit-http-client/orbit-axios-client/orbit-axios-client.spec.d.ts +0 -1
- package/dist/clean-arch/infra/orbit-http-client/orbit-axios-client/orbit-axios-client.spec.js +0 -143
- package/dist/clean-arch/infra/orbit-notification-client/discord-client.spec.d.ts +0 -1
- package/dist/clean-arch/infra/orbit-notification-client/discord-client.spec.js +0 -58
- package/dist/clean-arch/infra/queue/create-queues.d.ts +0 -11
- package/dist/clean-arch/infra/queue/create-queues.js +0 -19
- package/dist/clean-arch/infra/queue/queue-utils.spec.d.ts +0 -1
- package/dist/clean-arch/infra/queue/queue-utils.spec.js +0 -170
- package/dist/clean-arch/infra/queue/rabbitmq/create-queues.d.ts +0 -10
- package/dist/clean-arch/infra/queue/rabbitmq/create-queues.js +0 -7
- package/dist/clean-arch/infra/scaledjob/sqs/runner.spec.d.ts +0 -1
- package/dist/clean-arch/infra/scaledjob/sqs/runner.spec.js +0 -150
- package/dist/clean-arch/infra/tracing/start-tracing.d.ts +0 -10
- package/dist/clean-arch/infra/tracing/start-tracing.js +0 -78
- package/dist/clean-arch/shared/pagination/get-take-and-skip.spec.d.ts +0 -1
- package/dist/clean-arch/shared/pagination/get-take-and-skip.spec.js +0 -16
- package/dist/frameworks/express/middleware-express.spec.d.ts +0 -1
- package/dist/frameworks/express/middleware-express.spec.js +0 -51
- package/dist/frameworks/nest/nest.spec.d.ts +0 -1
- package/dist/frameworks/nest/nest.spec.js +0 -122
|
@@ -1,520 +1,105 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
const vitest_1 = require("vitest");
|
|
5
|
-
vitest_1.vi.mock('amqplib', () => ({
|
|
6
|
-
default: {
|
|
7
|
-
connect: vitest_1.vi.fn(),
|
|
8
|
-
},
|
|
9
|
-
}));
|
|
10
|
-
const amqplib_1 = tslib_1.__importDefault(require("amqplib"));
|
|
11
|
-
const infra_error_1 = tslib_1.__importDefault(require("../../errors/infra-error"));
|
|
12
4
|
const amqp_lib_1 = tslib_1.__importDefault(require("./amqp-lib"));
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
prefetch: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
25
|
-
publish: vitest_1.vi.fn(),
|
|
26
|
-
reject: vitest_1.vi.fn(),
|
|
27
|
-
waitForConfirms: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
28
|
-
});
|
|
29
|
-
const createConnection = (channel = createChannel()) => ({
|
|
30
|
-
close: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
31
|
-
createChannel: vitest_1.vi.fn().mockResolvedValue(channel),
|
|
32
|
-
createConfirmChannel: vitest_1.vi.fn().mockResolvedValue(channel),
|
|
33
|
-
on: vitest_1.vi.fn(),
|
|
34
|
-
removeAllListeners: vitest_1.vi.fn(),
|
|
35
|
-
});
|
|
36
|
-
const createLogger = () => ({
|
|
37
|
-
debug: vitest_1.vi.fn(),
|
|
38
|
-
error: vitest_1.vi.fn(),
|
|
39
|
-
info: vitest_1.vi.fn(),
|
|
40
|
-
warn: vitest_1.vi.fn(),
|
|
41
|
-
});
|
|
42
|
-
(0, vitest_1.describe)('AmqpQueue', () => {
|
|
43
|
-
const connectMock = vitest_1.vi.mocked(amqplib_1.default.connect);
|
|
44
|
-
const originalNodeEnv = process.env.NODE_ENV;
|
|
45
|
-
(0, vitest_1.beforeEach)(() => {
|
|
46
|
-
vitest_1.vi.clearAllMocks();
|
|
47
|
-
amqp_lib_1.default.instance = undefined;
|
|
48
|
-
process.env.NODE_ENV = 'test';
|
|
49
|
-
});
|
|
50
|
-
(0, vitest_1.afterEach)(() => {
|
|
51
|
-
vitest_1.vi.useRealTimers();
|
|
52
|
-
process.env.NODE_ENV = originalNodeEnv;
|
|
53
|
-
});
|
|
54
|
-
(0, vitest_1.it)('should reconnect listeners and log on successful connect', async () => {
|
|
55
|
-
const logger = createLogger();
|
|
56
|
-
const connection = createConnection();
|
|
57
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', logger);
|
|
58
|
-
const reconnectSpy = vitest_1.vi
|
|
59
|
-
.spyOn(queue, 'treatReconnection')
|
|
60
|
-
.mockResolvedValue(undefined);
|
|
61
|
-
connectMock.mockResolvedValue(connection);
|
|
62
|
-
process.env.NODE_ENV = 'development';
|
|
63
|
-
await (0, vitest_1.expect)(queue.connect('jobs')).resolves.toBe(queue);
|
|
64
|
-
(0, vitest_1.expect)(connectMock).toHaveBeenCalledWith('amqp://broker/jobs', {
|
|
65
|
-
maxStoredMessagesOnError: 500,
|
|
66
|
-
});
|
|
67
|
-
(0, vitest_1.expect)(connection.on).toHaveBeenCalledWith('error', vitest_1.expect.any(Function));
|
|
68
|
-
(0, vitest_1.expect)(connection.on).toHaveBeenCalledWith('close', vitest_1.expect.any(Function));
|
|
69
|
-
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith('⚙️ PROCESS jobs PID: ', process.pid);
|
|
70
|
-
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith('🐝 Queue connected on vHost: jobs');
|
|
71
|
-
const onError = connection.on.mock.calls.find(([event]) => event === 'error')?.[1];
|
|
72
|
-
const onClose = connection.on.mock.calls.find(([event]) => event === 'close')?.[1];
|
|
73
|
-
await onError?.(new Error('fail'));
|
|
74
|
-
await onClose?.();
|
|
75
|
-
(0, vitest_1.expect)(reconnectSpy).toHaveBeenCalledTimes(2);
|
|
76
|
-
(0, vitest_1.expect)(reconnectSpy).toHaveBeenNthCalledWith(1, 'jobs');
|
|
77
|
-
(0, vitest_1.expect)(reconnectSpy).toHaveBeenNthCalledWith(2, 'jobs');
|
|
78
|
-
});
|
|
79
|
-
(0, vitest_1.it)('should retry the connection before succeeding', async () => {
|
|
80
|
-
vitest_1.vi.useFakeTimers();
|
|
81
|
-
const logger = createLogger();
|
|
82
|
-
const connection = createConnection();
|
|
83
|
-
const queue = new amqp_lib_1.default({ retry: { maxCount: 1, intervalMs: 10 } }, 'amqp://broker', logger);
|
|
84
|
-
connectMock
|
|
85
|
-
.mockRejectedValueOnce(new Error('fail'))
|
|
86
|
-
.mockResolvedValueOnce(connection);
|
|
87
|
-
const promise = queue.connect('jobs');
|
|
88
|
-
await vitest_1.vi.advanceTimersByTimeAsync(10);
|
|
89
|
-
await (0, vitest_1.expect)(promise).resolves.toBe(queue);
|
|
90
|
-
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith('Retrying connection in... 10ms');
|
|
91
|
-
(0, vitest_1.expect)(connectMock).toHaveBeenCalledTimes(2);
|
|
92
|
-
});
|
|
93
|
-
(0, vitest_1.it)('should throw when the retry limit is reached', async () => {
|
|
94
|
-
const queue = new amqp_lib_1.default({ retry: { maxCount: 1, intervalMs: 10 } }, 'amqp://broker', createLogger());
|
|
95
|
-
connectMock.mockRejectedValue(new Error('fail'));
|
|
96
|
-
await (0, vitest_1.expect)(queue.connect('jobs', 1)).rejects.toThrow('fail');
|
|
97
|
-
});
|
|
98
|
-
(0, vitest_1.it)('should close connection and remove listeners', async () => {
|
|
99
|
-
const logger = createLogger();
|
|
100
|
-
const connection = createConnection();
|
|
101
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', logger);
|
|
102
|
-
process.env.NODE_ENV = 'development';
|
|
103
|
-
queue['connection'] = connection;
|
|
104
|
-
queue['vHost'] = 'jobs';
|
|
105
|
-
await queue.close();
|
|
106
|
-
(0, vitest_1.expect)(connection.removeAllListeners).toHaveBeenCalledWith('close');
|
|
107
|
-
(0, vitest_1.expect)(connection.close).toHaveBeenCalledTimes(1);
|
|
108
|
-
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith('⛔ Queue closed on vHost jobs');
|
|
109
|
-
});
|
|
110
|
-
(0, vitest_1.it)('should resubscribe channels and republish buffered messages on reconnection', async () => {
|
|
111
|
-
const logger = createLogger();
|
|
112
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', logger);
|
|
113
|
-
const handler = { handle: vitest_1.vi.fn() };
|
|
114
|
-
queue['channels'].set('queueName', handler);
|
|
115
|
-
queue['messagesInMemory'] = [
|
|
5
|
+
describe('AmqpQueue', () => {
|
|
6
|
+
it('should not publish if empty memory', async () => {
|
|
7
|
+
const mq = new amqp_lib_1.default();
|
|
8
|
+
mq['messagesInMemory'] = [];
|
|
9
|
+
const mockPublish = (mq['publish'] = vi.fn());
|
|
10
|
+
await mq['publishMessagesOfMemory']();
|
|
11
|
+
expect(mockPublish.mock.calls.length).toBe(0);
|
|
12
|
+
});
|
|
13
|
+
it('should publish if has messages with correct params', async () => {
|
|
14
|
+
const mq = new amqp_lib_1.default();
|
|
15
|
+
mq['messagesInMemory'] = [
|
|
116
16
|
{
|
|
117
|
-
exchangeName: '
|
|
118
|
-
domainEvent:
|
|
119
|
-
configs:
|
|
17
|
+
exchangeName: 'exchangeName_1',
|
|
18
|
+
domainEvent: 'domainEvent_1',
|
|
19
|
+
configs: 'my_cfg_1',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
exchangeName: 'exchangeName_2',
|
|
23
|
+
domainEvent: 'domainEvent_2',
|
|
24
|
+
configs: 'my_cfg_2',
|
|
120
25
|
},
|
|
121
26
|
];
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
queue['messagesInMemory'] = [];
|
|
138
|
-
queue['publish'] = vitest_1.vi.fn();
|
|
139
|
-
await queue['publishMessagesOfMemory']();
|
|
140
|
-
(0, vitest_1.expect)(queue['publish']).not.toHaveBeenCalled();
|
|
141
|
-
});
|
|
142
|
-
(0, vitest_1.describe)('get', () => {
|
|
143
|
-
(0, vitest_1.it)('should return null if no message is found', async () => {
|
|
144
|
-
const channel = createChannel();
|
|
145
|
-
const queue = new amqp_lib_1.default();
|
|
146
|
-
queue['connection'] = {
|
|
147
|
-
createChannel: vitest_1.vi.fn().mockResolvedValue(channel),
|
|
27
|
+
const mockPublish = (mq['publish'] = vi.fn());
|
|
28
|
+
await mq['publishMessagesOfMemory']();
|
|
29
|
+
expect(mockPublish.mock.calls).toEqual([
|
|
30
|
+
['exchangeName_1', 'domainEvent_1', 'my_cfg_1'],
|
|
31
|
+
['exchangeName_2', 'domainEvent_2', 'my_cfg_2'],
|
|
32
|
+
]);
|
|
33
|
+
});
|
|
34
|
+
describe('get', () => {
|
|
35
|
+
it('should return null if no message is found', async () => {
|
|
36
|
+
const mq = new amqp_lib_1.default();
|
|
37
|
+
mq['connection'] = {
|
|
38
|
+
createChannel: vi.fn().mockResolvedValue({
|
|
39
|
+
get: vi.fn().mockResolvedValue(null),
|
|
40
|
+
close: vi.fn(),
|
|
41
|
+
}),
|
|
148
42
|
};
|
|
149
|
-
const result = await
|
|
150
|
-
|
|
151
|
-
(0, vitest_1.expect)(channel.close).toHaveBeenCalledTimes(1);
|
|
43
|
+
const result = await mq.get('queueName');
|
|
44
|
+
expect(result).toBeNull();
|
|
152
45
|
});
|
|
153
|
-
|
|
46
|
+
it('should return rawMessage and channel if message is found', async () => {
|
|
154
47
|
const fakeMsg = { content: Buffer.from('msg') };
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
queue['connection'] = {
|
|
159
|
-
createChannel: vitest_1.vi.fn().mockResolvedValue(channel),
|
|
48
|
+
const fakeChannel = {
|
|
49
|
+
get: vi.fn().mockResolvedValue(fakeMsg),
|
|
50
|
+
close: vi.fn(),
|
|
160
51
|
};
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
});
|
|
165
|
-
(0, vitest_1.it)('should handle errors and return null', async () => {
|
|
166
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
167
|
-
queue['connection'] = {
|
|
168
|
-
createChannel: vitest_1.vi.fn().mockRejectedValue(new Error('fail')),
|
|
52
|
+
const mq = new amqp_lib_1.default();
|
|
53
|
+
mq['connection'] = {
|
|
54
|
+
createChannel: vi.fn().mockResolvedValue(fakeChannel),
|
|
169
55
|
};
|
|
170
|
-
await
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
(0, vitest_1.expect)(channel.ack).toHaveBeenCalledWith('msg');
|
|
179
|
-
(0, vitest_1.expect)(channel.close).toHaveBeenCalledTimes(1);
|
|
180
|
-
});
|
|
181
|
-
(0, vitest_1.it)('should handle errors gracefully', async () => {
|
|
182
|
-
const channel = createChannel();
|
|
183
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
184
|
-
channel.ack.mockImplementation(() => {
|
|
185
|
-
throw new Error('fail');
|
|
186
|
-
});
|
|
187
|
-
await (0, vitest_1.expect)(queue.ack(channel, 'msg')).resolves.toBeUndefined();
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
(0, vitest_1.describe)('nack', () => {
|
|
191
|
-
(0, vitest_1.it)('should call channel.nack and close', async () => {
|
|
192
|
-
const channel = createChannel();
|
|
193
|
-
const queue = new amqp_lib_1.default();
|
|
194
|
-
await queue.nack(channel, 'msg', true);
|
|
195
|
-
(0, vitest_1.expect)(channel.nack).toHaveBeenCalledWith('msg', false, true);
|
|
196
|
-
(0, vitest_1.expect)(channel.close).toHaveBeenCalledTimes(1);
|
|
197
|
-
});
|
|
198
|
-
(0, vitest_1.it)('should handle errors gracefully', async () => {
|
|
199
|
-
const channel = createChannel();
|
|
200
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
201
|
-
channel.nack.mockImplementation(() => {
|
|
202
|
-
throw new Error('fail');
|
|
203
|
-
});
|
|
204
|
-
await (0, vitest_1.expect)(queue.nack(channel, 'msg')).resolves.toBeUndefined();
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
(0, vitest_1.describe)('on', () => {
|
|
208
|
-
(0, vitest_1.it)('should consume messages, ack them and keep the callback registered', async () => {
|
|
209
|
-
const logger = createLogger();
|
|
210
|
-
const channel = createChannel();
|
|
211
|
-
const connection = createConnection(channel);
|
|
212
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', logger);
|
|
213
|
-
const message = { content: Buffer.from(JSON.stringify({ id: '1' })) };
|
|
214
|
-
const handler = {
|
|
215
|
-
getSimultaneity: vitest_1.vi.fn().mockReturnValue(2),
|
|
216
|
-
handle: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
217
|
-
};
|
|
218
|
-
channel.consume.mockImplementation(async (_queueName, callback) => {
|
|
219
|
-
await callback(message);
|
|
220
|
-
});
|
|
221
|
-
queue['connection'] = connection;
|
|
222
|
-
queue['vHost'] = 'jobs';
|
|
223
|
-
process.env.NODE_ENV = 'development';
|
|
224
|
-
await queue.on('queueName', handler);
|
|
225
|
-
(0, vitest_1.expect)(channel.prefetch).toHaveBeenCalledWith(2);
|
|
226
|
-
(0, vitest_1.expect)(handler.handle).toHaveBeenCalledWith({ id: '1' });
|
|
227
|
-
(0, vitest_1.expect)(channel.ack).toHaveBeenCalledWith(message);
|
|
228
|
-
(0, vitest_1.expect)(queue['channels'].get('queueName')).toBe(handler);
|
|
229
|
-
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith('🍯 Consume on queue: [queueName] on vHost jobs');
|
|
230
|
-
});
|
|
231
|
-
(0, vitest_1.it)('should reject messages when the consumer fails outside tests', async () => {
|
|
232
|
-
const channel = createChannel();
|
|
233
|
-
const connection = createConnection(channel);
|
|
234
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
235
|
-
const message = { content: Buffer.from(JSON.stringify({ id: '1' })) };
|
|
236
|
-
const handler = {
|
|
237
|
-
getSimultaneity: vitest_1.vi.fn().mockReturnValue(1),
|
|
238
|
-
handle: vitest_1.vi.fn().mockRejectedValue(new Error('fail')),
|
|
239
|
-
};
|
|
240
|
-
channel.consume.mockImplementation(async (_queueName, callback) => {
|
|
241
|
-
await callback(message);
|
|
242
|
-
});
|
|
243
|
-
queue['connection'] = connection;
|
|
244
|
-
process.env.NODE_ENV = 'development';
|
|
245
|
-
await queue.on('queueName', handler);
|
|
246
|
-
(0, vitest_1.expect)(channel.reject).toHaveBeenCalledWith(message, false);
|
|
247
|
-
});
|
|
248
|
-
(0, vitest_1.it)('should not reject messages when the consumer fails in tests', async () => {
|
|
249
|
-
const channel = createChannel();
|
|
250
|
-
const connection = createConnection(channel);
|
|
251
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
252
|
-
const message = { content: Buffer.from(JSON.stringify({ id: '1' })) };
|
|
253
|
-
const handler = {
|
|
254
|
-
getSimultaneity: vitest_1.vi.fn().mockReturnValue(1),
|
|
255
|
-
handle: vitest_1.vi.fn().mockRejectedValue(new Error('fail')),
|
|
56
|
+
const result = await mq.get('queueName');
|
|
57
|
+
expect(result).toEqual({ rawMessage: fakeMsg, channel: fakeChannel });
|
|
58
|
+
expect(fakeChannel.get).toHaveBeenCalledWith('queueName', undefined);
|
|
59
|
+
});
|
|
60
|
+
it('should handle errors and return null', async () => {
|
|
61
|
+
const mq = new amqp_lib_1.default();
|
|
62
|
+
mq['connection'] = {
|
|
63
|
+
createChannel: vi.fn().mockRejectedValue(new Error('fail')),
|
|
256
64
|
};
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
65
|
+
const result = await mq.get('queueName');
|
|
66
|
+
expect(result).toBeNull();
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('ack', () => {
|
|
70
|
+
it('should call channel.ack and close', async () => {
|
|
71
|
+
const ack = vi.fn();
|
|
72
|
+
const close = vi.fn();
|
|
73
|
+
const channel = { ack, close };
|
|
74
|
+
const mq = new amqp_lib_1.default();
|
|
75
|
+
await mq.ack(channel, 'msg');
|
|
76
|
+
expect(ack).toHaveBeenCalledWith('msg');
|
|
77
|
+
expect(close).toHaveBeenCalled();
|
|
78
|
+
});
|
|
79
|
+
it('should handle errors gracefully', async () => {
|
|
80
|
+
const ack = vi.fn(() => { throw new Error('fail'); });
|
|
81
|
+
const close = vi.fn();
|
|
82
|
+
const channel = { ack, close };
|
|
83
|
+
const mq = new amqp_lib_1.default();
|
|
84
|
+
await expect(mq.ack(channel, 'msg')).resolves.toBeUndefined();
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe('nack', () => {
|
|
88
|
+
it('should call channel.nack and close', async () => {
|
|
89
|
+
const nack = vi.fn();
|
|
90
|
+
const close = vi.fn();
|
|
91
|
+
const channel = { nack, close };
|
|
92
|
+
const mq = new amqp_lib_1.default();
|
|
93
|
+
await mq.nack(channel, 'msg', true);
|
|
94
|
+
expect(nack).toHaveBeenCalledWith('msg', false, true);
|
|
95
|
+
expect(close).toHaveBeenCalled();
|
|
96
|
+
});
|
|
97
|
+
it('should handle errors gracefully', async () => {
|
|
98
|
+
const nack = vi.fn(() => { throw new Error('fail'); });
|
|
99
|
+
const close = vi.fn();
|
|
100
|
+
const channel = { nack, close };
|
|
101
|
+
const mq = new amqp_lib_1.default();
|
|
102
|
+
await expect(mq.nack(channel, 'msg')).resolves.toBeUndefined();
|
|
263
103
|
});
|
|
264
|
-
(0, vitest_1.it)('should log consumption errors', async () => {
|
|
265
|
-
const logger = createLogger();
|
|
266
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', logger);
|
|
267
|
-
queue['connection'] = {
|
|
268
|
-
createChannel: vitest_1.vi.fn().mockRejectedValue(new Error('fail')),
|
|
269
|
-
};
|
|
270
|
-
await queue.on('queueName', {
|
|
271
|
-
getSimultaneity: vitest_1.vi.fn().mockReturnValue(1),
|
|
272
|
-
handle: vitest_1.vi.fn(),
|
|
273
|
-
});
|
|
274
|
-
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith({
|
|
275
|
-
message: '⛔ Error to consume messages: [queueName] on vHost undefined',
|
|
276
|
-
error: vitest_1.expect.any(Error),
|
|
277
|
-
});
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
(0, vitest_1.describe)('publish', () => {
|
|
281
|
-
(0, vitest_1.it)('should publish with default expiration when it is invalid', async () => {
|
|
282
|
-
const channel = createChannel();
|
|
283
|
-
const connection = createConnection(channel);
|
|
284
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
285
|
-
const event = { name: 'domain.event', payload: { id: '1' } };
|
|
286
|
-
queue['connection'] = connection;
|
|
287
|
-
await queue.publish('exchange', event, {
|
|
288
|
-
expiration: 'invalid',
|
|
289
|
-
headers: { source: 'spec' },
|
|
290
|
-
});
|
|
291
|
-
(0, vitest_1.expect)(channel.publish).toHaveBeenCalledWith('exchange', 'domain.event', Buffer.from(JSON.stringify(event)), {
|
|
292
|
-
persistent: true,
|
|
293
|
-
expiration: FOURTEEN_DAYS_IN_MS,
|
|
294
|
-
headers: { source: 'spec' },
|
|
295
|
-
});
|
|
296
|
-
(0, vitest_1.expect)(channel.close).toHaveBeenCalledTimes(1);
|
|
297
|
-
});
|
|
298
|
-
(0, vitest_1.it)('should keep null expiration when it is explicitly valid', async () => {
|
|
299
|
-
const channel = createChannel();
|
|
300
|
-
const connection = createConnection(channel);
|
|
301
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
302
|
-
const event = { name: 'domain.event' };
|
|
303
|
-
queue['connection'] = connection;
|
|
304
|
-
await queue.publish('exchange', event, {
|
|
305
|
-
expiration: null,
|
|
306
|
-
});
|
|
307
|
-
(0, vitest_1.expect)(channel.publish.mock.calls[0][3]).toEqual({
|
|
308
|
-
persistent: true,
|
|
309
|
-
expiration: null,
|
|
310
|
-
});
|
|
311
|
-
});
|
|
312
|
-
(0, vitest_1.it)('should store messages in memory when publish times out', async () => {
|
|
313
|
-
vitest_1.vi.useFakeTimers();
|
|
314
|
-
const logger = createLogger();
|
|
315
|
-
const queue = new amqp_lib_1.default({ timeoutSeconds: 1 }, 'amqp://broker', logger);
|
|
316
|
-
const event = { name: 'domain.event' };
|
|
317
|
-
queue['publishToServer'] = vitest_1.vi.fn(() => new Promise(resolve => resolve(undefined)));
|
|
318
|
-
queue['publishToServer'].mockImplementation(() => new Promise(() => undefined));
|
|
319
|
-
const publishPromise = queue.publish('exchange', event);
|
|
320
|
-
await vitest_1.vi.advanceTimersByTimeAsync(1000);
|
|
321
|
-
await publishPromise;
|
|
322
|
-
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith({
|
|
323
|
-
message: '⛔ Error to publish messages to: domain.event.',
|
|
324
|
-
error: vitest_1.expect.any(infra_error_1.default),
|
|
325
|
-
});
|
|
326
|
-
(0, vitest_1.expect)(queue['messagesInMemory']).toEqual([
|
|
327
|
-
{
|
|
328
|
-
exchangeName: 'exchange',
|
|
329
|
-
domainEvent: event,
|
|
330
|
-
configs: {
|
|
331
|
-
expiration: FOURTEEN_DAYS_IN_MS,
|
|
332
|
-
},
|
|
333
|
-
},
|
|
334
|
-
]);
|
|
335
|
-
});
|
|
336
|
-
(0, vitest_1.it)('should not store messages when storeMessageOnError is false', async () => {
|
|
337
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
338
|
-
queue['publishToServer'] = vitest_1.vi.fn().mockRejectedValue(new Error('fail'));
|
|
339
|
-
await queue.publish('exchange', { name: 'domain.event' }, {
|
|
340
|
-
storeMessageOnError: false,
|
|
341
|
-
});
|
|
342
|
-
(0, vitest_1.expect)(queue['messagesInMemory']).toHaveLength(0);
|
|
343
|
-
});
|
|
344
|
-
(0, vitest_1.it)('should not exceed the configured in-memory error buffer', async () => {
|
|
345
|
-
const queue = new amqp_lib_1.default({ maxStoredMessagesOnError: 1 }, 'amqp://broker', createLogger());
|
|
346
|
-
queue['messagesInMemory'] = [
|
|
347
|
-
{
|
|
348
|
-
exchangeName: 'existing',
|
|
349
|
-
domainEvent: { name: 'existing.event' },
|
|
350
|
-
configs: {},
|
|
351
|
-
},
|
|
352
|
-
];
|
|
353
|
-
queue['publishToServer'] = vitest_1.vi.fn().mockRejectedValue(new Error('fail'));
|
|
354
|
-
await queue.publish('exchange', { name: 'domain.event' });
|
|
355
|
-
(0, vitest_1.expect)(queue['messagesInMemory']).toHaveLength(1);
|
|
356
|
-
});
|
|
357
|
-
});
|
|
358
|
-
(0, vitest_1.describe)('publishWaitForConfirms', () => {
|
|
359
|
-
(0, vitest_1.it)('should publish, wait for confirms and return true on success', async () => {
|
|
360
|
-
const channel = createChannel();
|
|
361
|
-
const connection = createConnection(channel);
|
|
362
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
363
|
-
const event = { name: 'domain.event', payload: { id: '1' } };
|
|
364
|
-
queue['connection'] = connection;
|
|
365
|
-
const result = await queue.publishWaitForConfirms('exchange', event, {
|
|
366
|
-
expiration: 'invalid',
|
|
367
|
-
headers: { source: 'spec' },
|
|
368
|
-
});
|
|
369
|
-
(0, vitest_1.expect)(channel.publish).toHaveBeenCalledWith('exchange', 'domain.event', Buffer.from(JSON.stringify(event)), {
|
|
370
|
-
persistent: true,
|
|
371
|
-
expiration: FOURTEEN_DAYS_IN_MS,
|
|
372
|
-
headers: { source: 'spec' },
|
|
373
|
-
});
|
|
374
|
-
(0, vitest_1.expect)(channel.waitForConfirms).toHaveBeenCalledTimes(1);
|
|
375
|
-
(0, vitest_1.expect)(channel.close).toHaveBeenCalledTimes(1);
|
|
376
|
-
(0, vitest_1.expect)(result).toBe(true);
|
|
377
|
-
});
|
|
378
|
-
(0, vitest_1.it)('should catch error, log it and return false if publishToServerWaitForConfirms fails', async () => {
|
|
379
|
-
const logger = createLogger();
|
|
380
|
-
const channel = createChannel();
|
|
381
|
-
const connection = createConnection(channel);
|
|
382
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', logger);
|
|
383
|
-
const event = { name: 'domain.event' };
|
|
384
|
-
channel.waitForConfirms.mockRejectedValue(new Error('Broker nacked or channel closed'));
|
|
385
|
-
queue['connection'] = connection;
|
|
386
|
-
const result = await queue.publishWaitForConfirms('exchange', event);
|
|
387
|
-
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith({
|
|
388
|
-
message: '⛔ Error to publish messages to: domain.event.',
|
|
389
|
-
error: vitest_1.expect.any(Error),
|
|
390
|
-
});
|
|
391
|
-
(0, vitest_1.expect)(result).toBe(false);
|
|
392
|
-
});
|
|
393
|
-
});
|
|
394
|
-
(0, vitest_1.describe)('createConsumers', () => {
|
|
395
|
-
(0, vitest_1.it)('should create exchanges, queues and bindings', async () => {
|
|
396
|
-
const channel = createChannel();
|
|
397
|
-
const connection = createConnection(channel);
|
|
398
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
399
|
-
queue['connection'] = connection;
|
|
400
|
-
queue['vHost'] = 'jobs';
|
|
401
|
-
await queue.createConsumers('queueName', {
|
|
402
|
-
exchangeName: 'exchange',
|
|
403
|
-
exchangeType: 'direct',
|
|
404
|
-
queueType: 'quorum',
|
|
405
|
-
dlq: {
|
|
406
|
-
TTLms: 5000,
|
|
407
|
-
exchangeName: 'exchange.dlq',
|
|
408
|
-
},
|
|
409
|
-
});
|
|
410
|
-
(0, vitest_1.expect)(channel.assertExchange).toHaveBeenNthCalledWith(1, 'exchange', 'direct', { durable: true });
|
|
411
|
-
(0, vitest_1.expect)(channel.assertQueue).toHaveBeenNthCalledWith(1, 'queueName', {
|
|
412
|
-
arguments: {
|
|
413
|
-
'x-dead-letter-exchange': 'exchange.dlq.DLX',
|
|
414
|
-
'x-dead-letter-routing-key': 'queueName.DLK',
|
|
415
|
-
'x-queue-type': 'quorum',
|
|
416
|
-
},
|
|
417
|
-
durable: true,
|
|
418
|
-
deadLetterExchange: 'exchange.dlq.DLX',
|
|
419
|
-
deadLetterRoutingKey: 'queueName.DLK',
|
|
420
|
-
});
|
|
421
|
-
(0, vitest_1.expect)(channel.bindQueue).toHaveBeenNthCalledWith(1, 'queueName', 'exchange', 'queueName');
|
|
422
|
-
(0, vitest_1.expect)(channel.assertExchange).toHaveBeenNthCalledWith(2, 'exchange.dlq.DLX', 'direct', { durable: true });
|
|
423
|
-
(0, vitest_1.expect)(channel.assertQueue).toHaveBeenNthCalledWith(2, 'queueName.DLQ', {
|
|
424
|
-
durable: true,
|
|
425
|
-
arguments: {
|
|
426
|
-
'x-message-ttl': 5000,
|
|
427
|
-
'x-queue-type': 'classic',
|
|
428
|
-
},
|
|
429
|
-
});
|
|
430
|
-
(0, vitest_1.expect)(channel.bindQueue).toHaveBeenNthCalledWith(2, 'queueName.DLQ', 'exchange.dlq.DLX', 'queueName.DLK');
|
|
431
|
-
(0, vitest_1.expect)(channel.close).toHaveBeenCalledTimes(1);
|
|
432
|
-
});
|
|
433
|
-
(0, vitest_1.it)('should log errors when queue creation fails', async () => {
|
|
434
|
-
const logger = createLogger();
|
|
435
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', logger);
|
|
436
|
-
queue['connection'] = {
|
|
437
|
-
createChannel: vitest_1.vi.fn().mockRejectedValue(new Error('fail')),
|
|
438
|
-
};
|
|
439
|
-
queue['vHost'] = 'jobs';
|
|
440
|
-
await queue.createConsumers('queueName', {
|
|
441
|
-
exchangeName: 'exchange',
|
|
442
|
-
exchangeType: 'direct',
|
|
443
|
-
});
|
|
444
|
-
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith({
|
|
445
|
-
message: '⛔ Error to create queue: queueName on vHost jobs',
|
|
446
|
-
error: vitest_1.expect.any(Error),
|
|
447
|
-
});
|
|
448
|
-
});
|
|
449
|
-
(0, vitest_1.it)('should apply default DLQ exchange, type and omit TTL when it is absent', async () => {
|
|
450
|
-
const channel = createChannel();
|
|
451
|
-
const connection = createConnection(channel);
|
|
452
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
453
|
-
queue['connection'] = connection;
|
|
454
|
-
await queue.createConsumers('queueName', {
|
|
455
|
-
exchangeName: 'exchange',
|
|
456
|
-
exchangeType: '',
|
|
457
|
-
});
|
|
458
|
-
(0, vitest_1.expect)(channel.assertExchange).toHaveBeenNthCalledWith(2, 'exchange.DLX', 'direct', { durable: true });
|
|
459
|
-
(0, vitest_1.expect)(channel.assertQueue).toHaveBeenNthCalledWith(2, 'queueName.DLQ', {
|
|
460
|
-
durable: true,
|
|
461
|
-
arguments: {
|
|
462
|
-
'x-queue-type': 'classic',
|
|
463
|
-
},
|
|
464
|
-
});
|
|
465
|
-
(0, vitest_1.expect)(channel.bindQueue).toHaveBeenNthCalledWith(2, 'queueName.DLQ', 'exchange.DLX', 'queueName.DLK');
|
|
466
|
-
});
|
|
467
|
-
});
|
|
468
|
-
(0, vitest_1.it)('should add default TTL when creating queues', async () => {
|
|
469
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
470
|
-
const createConsumersSpy = vitest_1.vi
|
|
471
|
-
.spyOn(queue, 'createConsumers')
|
|
472
|
-
.mockResolvedValue(undefined);
|
|
473
|
-
await queue.createQueues('queueName', {
|
|
474
|
-
exchangeName: 'exchange',
|
|
475
|
-
exchangeType: 'direct',
|
|
476
|
-
});
|
|
477
|
-
(0, vitest_1.expect)(createConsumersSpy).toHaveBeenCalledWith('queueName', {
|
|
478
|
-
exchangeName: 'exchange',
|
|
479
|
-
exchangeType: 'direct',
|
|
480
|
-
dlq: {
|
|
481
|
-
TTLms: SEVEN_DAYS_IN_MS,
|
|
482
|
-
},
|
|
483
|
-
});
|
|
484
|
-
});
|
|
485
|
-
(0, vitest_1.it)('should preserve provided DLQ TTL when creating queues', async () => {
|
|
486
|
-
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
487
|
-
const createConsumersSpy = vitest_1.vi
|
|
488
|
-
.spyOn(queue, 'createConsumers')
|
|
489
|
-
.mockResolvedValue(undefined);
|
|
490
|
-
await queue.createQueues('queueName', {
|
|
491
|
-
exchangeName: 'exchange',
|
|
492
|
-
exchangeType: 'fanout',
|
|
493
|
-
dlq: {
|
|
494
|
-
TTLms: 5000,
|
|
495
|
-
exchangeName: 'exchange.dlx',
|
|
496
|
-
},
|
|
497
|
-
});
|
|
498
|
-
(0, vitest_1.expect)(createConsumersSpy).toHaveBeenCalledWith('queueName', {
|
|
499
|
-
exchangeName: 'exchange',
|
|
500
|
-
exchangeType: 'fanout',
|
|
501
|
-
dlq: {
|
|
502
|
-
TTLms: 5000,
|
|
503
|
-
exchangeName: 'exchange.dlx',
|
|
504
|
-
},
|
|
505
|
-
});
|
|
506
|
-
});
|
|
507
|
-
(0, vitest_1.it)('should reuse the singleton for the same vhost and recreate it for another one', async () => {
|
|
508
|
-
const sameVhostInstance = new amqp_lib_1.default();
|
|
509
|
-
sameVhostInstance['vHost'] = 'jobs';
|
|
510
|
-
amqp_lib_1.default.instance = sameVhostInstance;
|
|
511
|
-
await (0, vitest_1.expect)(amqp_lib_1.default.getInstance('jobs')).resolves.toBe(sameVhostInstance);
|
|
512
|
-
const nextInstance = new amqp_lib_1.default();
|
|
513
|
-
const connectSpy = vitest_1.vi
|
|
514
|
-
.spyOn(amqp_lib_1.default.prototype, 'connect')
|
|
515
|
-
.mockResolvedValue(nextInstance);
|
|
516
|
-
amqp_lib_1.default.instance = sameVhostInstance;
|
|
517
|
-
await (0, vitest_1.expect)(amqp_lib_1.default.getInstance('other')).resolves.toBe(nextInstance);
|
|
518
|
-
(0, vitest_1.expect)(connectSpy).toHaveBeenCalledWith('other');
|
|
519
104
|
});
|
|
520
105
|
});
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import amqp from
|
|
2
|
-
/**
|
|
3
|
-
* Resultado do polling via `channel.get(...)`.
|
|
4
|
-
*
|
|
5
|
-
* O channel é retornado junto da mensagem para que o chamador consiga
|
|
6
|
-
* aplicar `ack`/`nack` e depois fechá-lo.
|
|
7
|
-
*/
|
|
1
|
+
import amqp from "amqplib";
|
|
8
2
|
export type AmqpQueueGetResult = {
|
|
9
3
|
rawMessage: any;
|
|
10
4
|
channel: amqp.Channel;
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Executor simples de worker em processo separado com auto-restart.
|
|
3
|
-
*
|
|
4
|
-
* Útil para subir consumidores/filas em um script dedicado, mantendo
|
|
5
|
-
* o processo principal mais estável.
|
|
6
|
-
*/
|
|
7
1
|
export default class ForkWorker {
|
|
8
2
|
private attemptCount;
|
|
9
3
|
private maxAttempts;
|
|
10
4
|
private retryDelay;
|
|
11
5
|
private workerPath;
|
|
12
6
|
constructor(workerPath: string);
|
|
13
|
-
/**
|
|
14
|
-
* Inicia o worker e aplica a política de reinício em caso de erro/exit.
|
|
15
|
-
*/
|
|
16
7
|
fWorker(): void;
|
|
17
8
|
}
|