@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.
- package/dist/clean-arch/application/cache/cache.d.ts +32 -0
- package/dist/clean-arch/application/cache/cache.js +24 -0
- package/dist/clean-arch/application/cache/cache.spec.d.ts +1 -0
- package/dist/clean-arch/application/cache/cache.spec.js +178 -0
- package/dist/clean-arch/application/cache/client.d.ts +23 -0
- package/dist/clean-arch/application/cache/client.js +11 -0
- package/dist/clean-arch/application/consistency-event-dispatcher/consistency-event-dispatcher.d.ts +9 -0
- package/dist/clean-arch/application/consistency-event-dispatcher/consistency-event-dispatcher.js +26 -0
- package/dist/clean-arch/application/logger/base-audit-logger.d.ts +10 -0
- package/dist/clean-arch/application/logger/base-audit-logger.js +28 -0
- package/dist/clean-arch/application/logger/index.d.ts +94 -6
- package/dist/clean-arch/application/logger/index.js +69 -7
- package/dist/clean-arch/application/logger/logger.spec.d.ts +1 -0
- package/dist/clean-arch/application/logger/logger.spec.js +204 -0
- package/dist/clean-arch/application/queue/handler.d.ts +28 -0
- package/dist/clean-arch/application/queue/handler.js +23 -0
- package/dist/clean-arch/application/queue/messages-in-memory.d.ts +6 -0
- package/dist/clean-arch/application/queue/queue-connection.d.ts +22 -0
- package/dist/clean-arch/application/queue/queue.d.ts +39 -0
- package/dist/clean-arch/domain/entities/entity.d.ts +3 -0
- package/dist/clean-arch/domain/entities/entity.js +35 -0
- package/dist/clean-arch/domain/entities/entity.spec.d.ts +1 -0
- package/dist/clean-arch/domain/entities/entity.spec.js +130 -0
- package/dist/clean-arch/domain/entities/watched-list.d.ts +1 -0
- package/dist/clean-arch/domain/entities/watched-list.js +9 -0
- package/dist/clean-arch/domain/events/consistency-event/consistency-event.d.ts +15 -0
- package/dist/clean-arch/domain/events/consistency-event/consistency-event.js +15 -0
- package/dist/clean-arch/domain/events/consistency-event/consistency-event.spec.d.ts +1 -0
- package/dist/clean-arch/domain/events/consistency-event/consistency-event.spec.js +99 -0
- package/dist/clean-arch/domain/events/consistency-event/events-enum.d.ts +98 -0
- package/dist/clean-arch/domain/events/consistency-event/events-enum.js +151 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-entity-event.d.ts +30 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-upserted.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/address/address-upserted.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-associated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-associated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-entity-event.d.ts +38 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-upserted.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/branch/branch-upserted.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-entity-event.d.ts +26 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-upserted.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/contact/contact-upserted.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-entity-event.d.ts +10 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-upserted.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/customer/customer-upserted.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-entity-event.d.ts +37 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-updated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-updated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-upserted.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/partner/partner-upserted.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-associated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-associated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-entity-event.d.ts +13 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-upserted.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-upserted.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-entity-event.d.ts +5 -0
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/supplier/supplier-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-entity-event.d.ts +11 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-updated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/authorization/authorization-updated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-entity-event.d.ts +14 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/external-provider/external-provider-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-entity-event.d.ts +13 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-updated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/role/role-updated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-entity-event.d.ts +50 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-updated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant/tenant-updated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-entity-event.d.ts +8 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-updated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-role/tenant-role-updated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-entity-event.d.ts +10 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-updated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/tenant-user/tenant-user-updated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-entity-event.d.ts +10 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-forgot-password.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-forgot-password.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-temporary-password-generated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user/user-temporary-password-generated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-role-entity-event.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-role-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-updated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/portal-admin/user-tenant-role/user-tenant-roles-updated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-entity-event.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-upserted.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/branch/branch-upserted.js +2 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-deleted.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-deleted.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-entity-event.d.ts +38 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-entity-event.js +8 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-updated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/certificate/certificate-updated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-event.d.ts +21 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-event.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-updated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-updated.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-upserted.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/entity/entity-upserted.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-created.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-created.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-deleted.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-deleted.js +2 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-entity-event.d.ts +27 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-entity-event.js +8 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-updated.d.ts +9 -0
- package/dist/clean-arch/domain/events/consistency-event/types/security-service/external-provider/external-provider-updated.js +2 -0
- package/dist/clean-arch/domain/events/domain-event.d.ts +5 -0
- package/dist/clean-arch/domain/interfaces/country.d.ts +1 -0
- package/dist/clean-arch/domain/value-objects/password.spec.d.ts +1 -0
- package/dist/clean-arch/domain/value-objects/password.spec.js +90 -0
- package/dist/clean-arch/infra/adapters/http-adapters.spec.d.ts +1 -0
- package/dist/clean-arch/infra/adapters/http-adapters.spec.js +318 -0
- package/dist/clean-arch/infra/authorizations/authorizer.spec.js +43 -0
- package/dist/clean-arch/infra/cache/cache-clients.spec.d.ts +1 -0
- package/dist/clean-arch/infra/cache/cache-clients.spec.js +161 -0
- package/dist/clean-arch/infra/cache/cache-in-memory.d.ts +5 -0
- package/dist/clean-arch/infra/cache/cache-in-memory.js +6 -0
- package/dist/clean-arch/infra/cache/clients/node-cache.d.ts +17 -0
- package/dist/clean-arch/infra/cache/clients/node-cache.js +20 -2
- package/dist/clean-arch/infra/cache/clients/redis.d.ts +15 -0
- package/dist/clean-arch/infra/cache/clients/redis.js +11 -0
- package/dist/clean-arch/infra/consistency-event-dispatcher/amqp-consistency-event-dispatcher.d.ts +8 -0
- package/dist/clean-arch/infra/consistency-event-dispatcher/amqp-consistency-event-dispatcher.js +18 -0
- package/dist/clean-arch/infra/consistency-event-dispatcher/exchanges-enum.d.ts +50 -0
- package/dist/clean-arch/infra/consistency-event-dispatcher/exchanges-enum.js +58 -0
- package/dist/clean-arch/infra/consistency-event-dispatcher/in-memory-consistency-event-dispatcher.d.ts +7 -0
- package/dist/clean-arch/infra/consistency-event-dispatcher/in-memory-consistency-event-dispatcher.js +15 -0
- package/dist/clean-arch/infra/http/controller.spec.js +170 -51
- package/dist/clean-arch/infra/http/handle-authorizer-headers.d.ts +25 -0
- package/dist/clean-arch/infra/http/handle-authorizer-headers.js +29 -0
- package/dist/clean-arch/infra/http/handle-user-headers.d.ts +5 -0
- package/dist/clean-arch/infra/http/handle-user-headers.js +2 -0
- package/dist/clean-arch/infra/http/helpers.spec.d.ts +1 -0
- package/dist/clean-arch/infra/http/helpers.spec.js +136 -0
- package/dist/clean-arch/infra/http/net.spec.d.ts +1 -0
- package/dist/clean-arch/infra/http/net.spec.js +46 -0
- package/dist/clean-arch/infra/logger/logger-in-memory.d.ts +31 -2
- package/dist/clean-arch/infra/logger/logger-in-memory.js +21 -2
- package/dist/clean-arch/infra/logger/logger-orbit.d.ts +81 -5
- package/dist/clean-arch/infra/logger/logger-orbit.js +63 -6
- package/dist/clean-arch/infra/logger/logger-orbit.spec.d.ts +1 -0
- package/dist/clean-arch/infra/logger/logger-orbit.spec.js +122 -0
- package/dist/clean-arch/infra/orbit-http-client/orbit-axios-client/orbit-axios-client.spec.d.ts +1 -0
- package/dist/clean-arch/infra/orbit-http-client/orbit-axios-client/orbit-axios-client.spec.js +143 -0
- package/dist/clean-arch/infra/orbit-notification-client/discord-client.spec.d.ts +1 -0
- package/dist/clean-arch/infra/orbit-notification-client/discord-client.spec.js +58 -0
- package/dist/clean-arch/infra/queue/create-consumers.d.ts +18 -0
- package/dist/clean-arch/infra/queue/create-consumers.js +15 -0
- package/dist/clean-arch/infra/queue/create-queues.d.ts +11 -0
- package/dist/clean-arch/infra/queue/create-queues.js +19 -0
- package/dist/clean-arch/infra/queue/in-memory/in-memory-queue.d.ts +16 -0
- package/dist/clean-arch/infra/queue/in-memory/in-memory-queue.js +19 -0
- package/dist/clean-arch/infra/queue/queue-controller.d.ts +14 -0
- package/dist/clean-arch/infra/queue/queue-controller.js +8 -0
- package/dist/clean-arch/infra/queue/queue-utils.spec.d.ts +1 -0
- package/dist/clean-arch/infra/queue/queue-utils.spec.js +170 -0
- package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.d.ts +5 -1
- package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.js +23 -12
- package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.spec.js +504 -89
- package/dist/clean-arch/infra/queue/rabbitmq/create-queues.d.ts +10 -0
- package/dist/clean-arch/infra/queue/rabbitmq/create-queues.js +7 -0
- package/dist/clean-arch/infra/queue/rabbitmq/types.d.ts +7 -1
- package/dist/clean-arch/infra/queue/worker.d.ts +9 -0
- package/dist/clean-arch/infra/queue/worker.js +9 -0
- package/dist/clean-arch/infra/scaledjob/amqp/runner.d.ts +35 -2
- package/dist/clean-arch/infra/scaledjob/amqp/runner.js +38 -3
- package/dist/clean-arch/infra/scaledjob/amqp/runner.spec.js +74 -84
- package/dist/clean-arch/infra/scaledjob/amqp/types.d.ts +19 -0
- package/dist/clean-arch/infra/scaledjob/sqs/runner.d.ts +23 -0
- package/dist/clean-arch/infra/scaledjob/sqs/runner.js +26 -2
- package/dist/clean-arch/infra/scaledjob/sqs/runner.spec.d.ts +1 -0
- package/dist/clean-arch/infra/scaledjob/sqs/runner.spec.js +150 -0
- package/dist/clean-arch/infra/scaledjob/sqs/types.d.ts +18 -0
- package/dist/clean-arch/infra/scaledjob/types/index.d.ts +5 -0
- package/dist/clean-arch/infra/tracing/start-tracing.d.ts +10 -0
- package/dist/clean-arch/infra/tracing/start-tracing.js +78 -0
- package/dist/clean-arch/infra/validations/zod/schemas/common-validation.d.ts +159 -0
- package/dist/clean-arch/infra/validations/zod/schemas/common-validation.js +53 -2
- package/dist/clean-arch/infra/validations/zod/validation-zod.d.ts +1 -1
- package/dist/clean-arch/infra/validations/zod/validation-zod.spec.js +23 -0
- package/dist/clean-arch/shared/pagination/get-take-and-skip.spec.d.ts +1 -0
- package/dist/clean-arch/shared/pagination/get-take-and-skip.spec.js +16 -0
- package/dist/clean-arch/shared/timeout.d.ts +8 -0
- package/dist/clean-arch/shared/timeout.js +8 -0
- package/dist/frameworks/express/api-gateway/mapping-model.spec.js +58 -0
- package/dist/frameworks/express/authorizations/authorization-express.spec.js +9 -0
- package/dist/frameworks/express/middleware-express.spec.d.ts +1 -0
- package/dist/frameworks/express/middleware-express.spec.js +51 -0
- package/dist/frameworks/nest/nest.spec.d.ts +1 -0
- package/dist/frameworks/nest/nest.spec.js +122 -0
- package/dist/infra/http/api-gateway/mapping-model.spec.js +42 -0
- package/dist/static/countries.js +241 -0
- package/package.json +5 -1
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const health_connections_1 = tslib_1.__importDefault(require("./health-connections"));
|
|
5
|
+
const handle_authorizer_headers_1 = require("./handle-authorizer-headers");
|
|
6
|
+
const handle_bool_filter_1 = tslib_1.__importDefault(require("./handle-bool-filter"));
|
|
7
|
+
const handle_is_active_query_1 = tslib_1.__importDefault(require("./handle-is-active-query"));
|
|
8
|
+
const handle_sort_param_query_1 = require("./handle-sort-param-query");
|
|
9
|
+
const handle_user_headers_1 = require("./handle-user-headers");
|
|
10
|
+
const filter_1 = require("../../../infra/http/compression/filter");
|
|
11
|
+
describe('HTTP helpers', () => {
|
|
12
|
+
it('should convert boolean filters', () => {
|
|
13
|
+
expect((0, handle_bool_filter_1.default)()).toBeUndefined();
|
|
14
|
+
expect((0, handle_bool_filter_1.default)('true')).toBe(true);
|
|
15
|
+
expect((0, handle_bool_filter_1.default)('false')).toBe(false);
|
|
16
|
+
expect((0, handle_is_active_query_1.default)()).toBeUndefined();
|
|
17
|
+
expect((0, handle_is_active_query_1.default)('true')).toBe(true);
|
|
18
|
+
expect((0, handle_is_active_query_1.default)('false')).toBe(false);
|
|
19
|
+
});
|
|
20
|
+
it('should map sort params to entity props', () => {
|
|
21
|
+
expect((0, handle_sort_param_query_1.handleSortParamQuery)('created_at')).toBe('createdAt');
|
|
22
|
+
expect((0, handle_sort_param_query_1.handleSortParamQuery)('updated_at')).toBe('updatedAt');
|
|
23
|
+
expect((0, handle_sort_param_query_1.handleSortParamQuery)('is_main')).toBe('isMain');
|
|
24
|
+
expect((0, handle_sort_param_query_1.handleSortParamQuery)('other')).toBe('createdAt');
|
|
25
|
+
});
|
|
26
|
+
it('should normalize authorizer headers and legacy headers', () => {
|
|
27
|
+
expect((0, handle_authorizer_headers_1.handleAuthorizerHeaders)({
|
|
28
|
+
username: 'John',
|
|
29
|
+
useremail: 'john@example.com',
|
|
30
|
+
userid: 'user-id',
|
|
31
|
+
['app-id']: 'app-id',
|
|
32
|
+
['app-name']: 'Portal',
|
|
33
|
+
tenantid: 'tenant-id',
|
|
34
|
+
['x-trace-id']: 'trace-id',
|
|
35
|
+
})).toEqual({
|
|
36
|
+
userName: 'John',
|
|
37
|
+
userEmail: 'john@example.com',
|
|
38
|
+
appName: 'Portal',
|
|
39
|
+
entityId: 'user-id',
|
|
40
|
+
tenantId: 'tenant-id',
|
|
41
|
+
traceId: 'trace-id',
|
|
42
|
+
});
|
|
43
|
+
expect((0, handle_authorizer_headers_1.handleAuthorizerHeaders)({
|
|
44
|
+
username: 'John',
|
|
45
|
+
useremail: 'john@example.com',
|
|
46
|
+
['app-id']: 'app-id',
|
|
47
|
+
tenantid: 'tenant-id',
|
|
48
|
+
['x-trace-id']: 'trace-id',
|
|
49
|
+
})).toEqual({
|
|
50
|
+
userName: 'John',
|
|
51
|
+
userEmail: 'john@example.com',
|
|
52
|
+
appName: undefined,
|
|
53
|
+
entityId: 'app-id',
|
|
54
|
+
tenantId: 'tenant-id',
|
|
55
|
+
traceId: 'trace-id',
|
|
56
|
+
});
|
|
57
|
+
expect((0, handle_authorizer_headers_1.handleAuthorizerHeaders)({
|
|
58
|
+
username: 'John',
|
|
59
|
+
useremail: 'john@example.com',
|
|
60
|
+
tenantid: 'tenant-id',
|
|
61
|
+
['x-trace-id']: 'trace-id',
|
|
62
|
+
})).toEqual({
|
|
63
|
+
userName: 'John',
|
|
64
|
+
userEmail: 'john@example.com',
|
|
65
|
+
appName: undefined,
|
|
66
|
+
entityId: 'john@example.com',
|
|
67
|
+
tenantId: 'tenant-id',
|
|
68
|
+
traceId: 'trace-id',
|
|
69
|
+
});
|
|
70
|
+
expect((0, handle_authorizer_headers_1.authorizerToLegacyDefaultHeaders)({
|
|
71
|
+
userName: 'John',
|
|
72
|
+
userEmail: 'john@example.com',
|
|
73
|
+
appName: 'Portal',
|
|
74
|
+
tenantId: 'tenant-id',
|
|
75
|
+
entityId: 'user-id',
|
|
76
|
+
traceId: 'trace-id',
|
|
77
|
+
})).toEqual({
|
|
78
|
+
createdByEmail: 'john@example.com',
|
|
79
|
+
createdByName: 'Portal',
|
|
80
|
+
updatedByEmail: 'john@example.com',
|
|
81
|
+
updatedByName: 'Portal',
|
|
82
|
+
});
|
|
83
|
+
expect((0, handle_authorizer_headers_1.authorizerToLegacyDefaultHeaders)({
|
|
84
|
+
userName: 'John',
|
|
85
|
+
userEmail: 'john@example.com',
|
|
86
|
+
tenantId: 'tenant-id',
|
|
87
|
+
entityId: 'user-id',
|
|
88
|
+
})).toEqual({
|
|
89
|
+
createdByEmail: 'john@example.com',
|
|
90
|
+
createdByName: 'John',
|
|
91
|
+
updatedByEmail: 'john@example.com',
|
|
92
|
+
updatedByName: 'John',
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
it('should normalize user headers', () => {
|
|
96
|
+
expect((0, handle_user_headers_1.handleUserHeaders)({
|
|
97
|
+
username: 'John',
|
|
98
|
+
useremail: 'john@example.com',
|
|
99
|
+
userid: 'user-id',
|
|
100
|
+
['app-id']: 'app-id',
|
|
101
|
+
tenantid: 'tenant-id',
|
|
102
|
+
})).toEqual({
|
|
103
|
+
createdByName: 'John',
|
|
104
|
+
createdByEmail: 'john@example.com',
|
|
105
|
+
updatedByEmail: 'john@example.com',
|
|
106
|
+
updatedByName: 'John',
|
|
107
|
+
entityId: 'user-id',
|
|
108
|
+
tenantId: 'tenant-id',
|
|
109
|
+
});
|
|
110
|
+
expect((0, handle_user_headers_1.handleUserHeaders)({
|
|
111
|
+
username: 'John',
|
|
112
|
+
useremail: 'john@example.com',
|
|
113
|
+
['app-id']: 'app-id',
|
|
114
|
+
tenantid: 'tenant-id',
|
|
115
|
+
})).toEqual({
|
|
116
|
+
createdByName: 'John',
|
|
117
|
+
createdByEmail: 'john@example.com',
|
|
118
|
+
updatedByEmail: 'john@example.com',
|
|
119
|
+
updatedByName: 'John',
|
|
120
|
+
entityId: 'app-id',
|
|
121
|
+
tenantId: 'tenant-id',
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
it('should delegate the health check to the database dependency', async () => {
|
|
125
|
+
const checkDB = {
|
|
126
|
+
dbIsOnline: vi.fn().mockResolvedValue(true),
|
|
127
|
+
};
|
|
128
|
+
const health = new health_connections_1.default(checkDB);
|
|
129
|
+
await expect(health.check()).resolves.toEqual({ dbIsOnline: true });
|
|
130
|
+
expect(checkDB.dbIsOnline).toHaveBeenCalledTimes(1);
|
|
131
|
+
});
|
|
132
|
+
it('should define if the payload must be compressed', () => {
|
|
133
|
+
expect((0, filter_1.isToCompress)({ 'accept-encoding': 'identity' })).toBe(true);
|
|
134
|
+
expect((0, filter_1.isToCompress)({ 'accept-encoding': 'gzip' })).toBe(false);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
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('axios', () => ({
|
|
6
|
+
default: {
|
|
7
|
+
get: vitest_1.vi.fn(),
|
|
8
|
+
},
|
|
9
|
+
}));
|
|
10
|
+
const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
11
|
+
const net_1 = require("./net");
|
|
12
|
+
describe('Net', () => {
|
|
13
|
+
it('should return the current IP when the request succeeds', async () => {
|
|
14
|
+
vitest_1.vi.mocked(axios_1.default.get).mockResolvedValue({
|
|
15
|
+
data: '127.0.0.1\n',
|
|
16
|
+
});
|
|
17
|
+
const net = new net_1.Net();
|
|
18
|
+
await expect(net.getCurrentIP()).resolves.toBe('127.0.0.1');
|
|
19
|
+
expect(axios_1.default.get).toHaveBeenCalledWith('https://checkip.amazonaws.com/', {
|
|
20
|
+
timeout: 1000,
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
it('should return invalid when the request fails', async () => {
|
|
24
|
+
const consoleLog = vitest_1.vi
|
|
25
|
+
.spyOn(console, 'log')
|
|
26
|
+
.mockImplementation(() => undefined);
|
|
27
|
+
vitest_1.vi.mocked(axios_1.default.get).mockRejectedValue(new Error('fail'));
|
|
28
|
+
const net = new net_1.Net();
|
|
29
|
+
await expect(net.getCurrentIP()).resolves.toBe('invalid');
|
|
30
|
+
expect(consoleLog).toHaveBeenCalledWith(expect.any(Error));
|
|
31
|
+
});
|
|
32
|
+
it('should validate if the current IP is in the whitelist', async () => {
|
|
33
|
+
const net = new net_1.Net();
|
|
34
|
+
vitest_1.vi.spyOn(net, 'getCurrentIP').mockResolvedValue('127.0.0.1');
|
|
35
|
+
await expect(net.isCurrentIPInIPWhiteList(['127.0.0.1', '10.0.0.1'])).resolves.toBe(true);
|
|
36
|
+
await expect(net.isCurrentIPInIPWhiteList(['10.0.0.1', '10.0.0.2'])).resolves.toBe(false);
|
|
37
|
+
});
|
|
38
|
+
it('should ignore invalid IPs when configured', async () => {
|
|
39
|
+
const net = new net_1.Net();
|
|
40
|
+
vitest_1.vi.spyOn(net, 'getCurrentIP').mockResolvedValue('invalid');
|
|
41
|
+
await expect(net.isCurrentIPInIPWhiteList(['10.0.0.1'], true)).resolves.toBe(true);
|
|
42
|
+
await expect(net.isCurrentIPInIPWhiteList(['10.0.0.1'], false)).resolves.toBe(false);
|
|
43
|
+
expect(net.isIP('127.0.0.1')).toBe(4);
|
|
44
|
+
expect(net.isIP('invalid')).toBe(0);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
@@ -1,11 +1,40 @@
|
|
|
1
|
-
import LoggerGateway, { LogOptions, LogParams, LogPropertiesInput } from '../../application/logger';
|
|
2
1
|
import { Cache } from '../../../clean-arch/application/cache/cache';
|
|
2
|
+
import LoggerGateway, { LogOptions, LogPropertiesInput } from '../../application/logger';
|
|
3
|
+
import { LogOrbitParamsInput } from './logger-orbit';
|
|
3
4
|
export interface LoggerInMemoryOptions extends LogOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Quando `true`, inclui as propriedades do log na saída do console.
|
|
7
|
+
* Útil para depuração local.
|
|
8
|
+
*/
|
|
4
9
|
showProps?: boolean;
|
|
5
10
|
}
|
|
11
|
+
export type LoggerInMemoryProps = {
|
|
12
|
+
cache?: Cache;
|
|
13
|
+
options?: LoggerInMemoryOptions;
|
|
14
|
+
params?: LogOrbitParamsInput;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Logger simples que escreve no console.
|
|
18
|
+
*
|
|
19
|
+
* Observação: esta implementação NÃO persiste logs em memória.
|
|
20
|
+
* O nome "InMemory" refere-se ao uso local/leve, sem dependências externas.
|
|
21
|
+
*/
|
|
6
22
|
export declare class LoggerInMemory extends LoggerGateway {
|
|
7
23
|
protected options: LoggerInMemoryOptions;
|
|
8
|
-
|
|
24
|
+
/**
|
|
25
|
+
* @param cache Cache opcional para filtro de nível (pode ser em memória ou Redis).
|
|
26
|
+
* @param options Opções de comportamento do logger.
|
|
27
|
+
* @param params Parâmetros padrão de log (actor/type).
|
|
28
|
+
*/
|
|
29
|
+
constructor(props?: LoggerInMemoryProps);
|
|
30
|
+
/**
|
|
31
|
+
* Delegado para o fluxo comum de LoggerGateway.
|
|
32
|
+
* Mantido como atalho para compatibilidade com outros loggers.
|
|
33
|
+
*/
|
|
9
34
|
log(props: LogPropertiesInput, dataToLog: any): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Escreve no console usando o nível de log.
|
|
37
|
+
* Quando `showProps` é true, adiciona as props como último argumento.
|
|
38
|
+
*/
|
|
10
39
|
protected register(props: LogPropertiesInput, dataToLog: any): void;
|
|
11
40
|
}
|
|
@@ -4,13 +4,32 @@ exports.LoggerInMemory = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const logger_1 = tslib_1.__importDefault(require("../../application/logger"));
|
|
6
6
|
const types_1 = require("../environment/types");
|
|
7
|
+
/**
|
|
8
|
+
* Logger simples que escreve no console.
|
|
9
|
+
*
|
|
10
|
+
* Observação: esta implementação NÃO persiste logs em memória.
|
|
11
|
+
* O nome "InMemory" refere-se ao uso local/leve, sem dependências externas.
|
|
12
|
+
*/
|
|
7
13
|
class LoggerInMemory extends logger_1.default {
|
|
8
|
-
|
|
9
|
-
|
|
14
|
+
/**
|
|
15
|
+
* @param cache Cache opcional para filtro de nível (pode ser em memória ou Redis).
|
|
16
|
+
* @param options Opções de comportamento do logger.
|
|
17
|
+
* @param params Parâmetros padrão de log (actor/type).
|
|
18
|
+
*/
|
|
19
|
+
constructor(props) {
|
|
20
|
+
super(props);
|
|
10
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Delegado para o fluxo comum de LoggerGateway.
|
|
24
|
+
* Mantido como atalho para compatibilidade com outros loggers.
|
|
25
|
+
*/
|
|
11
26
|
async log(props, dataToLog) {
|
|
12
27
|
return await super.log(props, dataToLog);
|
|
13
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Escreve no console usando o nível de log.
|
|
31
|
+
* Quando `showProps` é true, adiciona as props como último argumento.
|
|
32
|
+
*/
|
|
14
33
|
register(props, dataToLog) {
|
|
15
34
|
const args = dataToLog instanceof Array ? [...dataToLog] : [dataToLog];
|
|
16
35
|
if (this.options?.showProps) {
|
|
@@ -1,21 +1,38 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Cache } from '../../../clean-arch/application/cache/cache';
|
|
2
2
|
import LoggerGateway, { ActorEnum, CategoryEnum, LogOptions, LogParams, LogProperties, LogPropertiesInput } from '../../application/logger';
|
|
3
|
+
import Queue from '../../application/queue/queue';
|
|
3
4
|
import DomainEvent from '../../domain/events/domain-event';
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Opções adicionais do LoggerOrbit.
|
|
7
|
+
*/
|
|
5
8
|
export interface LoggerOrbitOptions extends LogOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Quando `true`, falhas ao publicar o log geram exceção (`LogError`).
|
|
11
|
+
*/
|
|
6
12
|
throwOnError?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Estratégia de retry executada quando a publicação falha.
|
|
15
|
+
*/
|
|
7
16
|
retryStrategy?: (data: any, props?: LogOrbitPropertiesInput, options?: LoggerOrbitOptions) => Promise<void>;
|
|
8
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Propriedades de log aceitas pelo LoggerOrbit (entrada).
|
|
20
|
+
*/
|
|
9
21
|
export interface LogOrbitPropertiesInput extends LogPropertiesInput {
|
|
10
22
|
id?: string;
|
|
11
23
|
tenantId?: string;
|
|
12
24
|
dateTime?: Date;
|
|
25
|
+
actorType?: ActorEnum;
|
|
26
|
+
category?: CategoryEnum;
|
|
13
27
|
expirationHours?: number;
|
|
14
28
|
trace?: {
|
|
15
29
|
mainId?: string;
|
|
16
30
|
ids: string[];
|
|
17
31
|
};
|
|
18
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Propriedades finais de log geradas pelo LoggerOrbit.
|
|
35
|
+
*/
|
|
19
36
|
export interface LogOrbitProperties extends LogProperties {
|
|
20
37
|
id?: string;
|
|
21
38
|
tenantId?: string;
|
|
@@ -27,29 +44,88 @@ export interface LogOrbitProperties extends LogProperties {
|
|
|
27
44
|
ids: string[];
|
|
28
45
|
};
|
|
29
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Parâmetros padrão suportados pelo LoggerOrbit.
|
|
49
|
+
*/
|
|
30
50
|
export interface LogOrbitParams extends LogParams {
|
|
31
51
|
actorType: ActorEnum;
|
|
32
52
|
category: CategoryEnum;
|
|
33
53
|
expirationHours: number;
|
|
34
54
|
}
|
|
55
|
+
export type LogOrbitParamsInput = Partial<LogOrbitParams>;
|
|
56
|
+
/**
|
|
57
|
+
* Payload enviado para o serviço de logs.
|
|
58
|
+
*
|
|
59
|
+
* `expirationDate` é calculada a partir de `expirationHours`.
|
|
60
|
+
*/
|
|
35
61
|
export type LogPayload = Omit<LogProperties, 'expirationHours'> & {
|
|
36
62
|
expirationDate: Date;
|
|
37
63
|
details: any;
|
|
38
64
|
};
|
|
65
|
+
export type LoggerOrbitProps = {
|
|
66
|
+
cache?: Cache;
|
|
67
|
+
options?: LoggerOrbitOptions;
|
|
68
|
+
params?: LogOrbitParamsInput;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Evento de domínio enviado para o serviço de logs.
|
|
72
|
+
*/
|
|
39
73
|
export default class LogEvent implements DomainEvent {
|
|
40
74
|
readonly input: LogPayload;
|
|
41
75
|
readonly name = "log-service.log.created";
|
|
42
76
|
readonly eventDate: Date;
|
|
43
77
|
constructor(input: LogPayload);
|
|
44
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Implementação de logger que publica logs em fila (AMQP).
|
|
81
|
+
*
|
|
82
|
+
* - Publica em exchange `log-service.direct`.
|
|
83
|
+
* - Força logging para categoria BUSINESS.
|
|
84
|
+
* - Permite retry e opção de falhar com exceção.
|
|
85
|
+
*/
|
|
45
86
|
export declare class LoggerOrbit extends LoggerGateway {
|
|
46
87
|
private queue;
|
|
47
88
|
protected options: LoggerOrbitOptions;
|
|
48
|
-
protected params?:
|
|
49
|
-
constructor(queue: Queue,
|
|
89
|
+
protected params?: LogOrbitParamsInput;
|
|
90
|
+
constructor(queue: Queue, props?: LoggerOrbitProps);
|
|
91
|
+
/**
|
|
92
|
+
* Loga um evento (atalho para `super.log`).
|
|
93
|
+
*/
|
|
50
94
|
log(props: LogOrbitPropertiesInput, dataToLog: any): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Determina se deve logar.
|
|
97
|
+
*
|
|
98
|
+
* - Usa o filtro padrão do LoggerGateway.
|
|
99
|
+
* - Força logging se a categoria for BUSINESS.
|
|
100
|
+
*/
|
|
51
101
|
protected isToLog(props: LogOrbitProperties, dataToLog: any): Promise<boolean>;
|
|
102
|
+
/**
|
|
103
|
+
* Registra o log publicando na fila.
|
|
104
|
+
*
|
|
105
|
+
* Em caso de falha:
|
|
106
|
+
* - Executa `retryStrategy` se existir.
|
|
107
|
+
* - Lança `LogError` se `throwOnError` estiver habilitado.
|
|
108
|
+
*/
|
|
52
109
|
register(props: LogOrbitProperties, data: any): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Monta o payload final para publicação.
|
|
112
|
+
*
|
|
113
|
+
* Converte `expirationHours` em `expirationDate` e coloca o conteúdo
|
|
114
|
+
* original em `details`.
|
|
115
|
+
*/
|
|
53
116
|
private buildPayload;
|
|
54
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Propriedades padrão do LoggerOrbit.
|
|
119
|
+
*
|
|
120
|
+
* - category: TECHNICAL
|
|
121
|
+
* - actorType: SYSTEM
|
|
122
|
+
* - expirationHours: 4 * 7 dias
|
|
123
|
+
*/
|
|
124
|
+
protected buildDefaultProps(params?: LogOrbitParamsInput): LogOrbitProperties;
|
|
125
|
+
}
|
|
126
|
+
export declare class AuditOrbitLoggerGateway {
|
|
127
|
+
private static instance;
|
|
128
|
+
protected constructor();
|
|
129
|
+
static getInstance(queue: Queue, props?: LoggerOrbitProps): LoggerOrbit;
|
|
130
|
+
private static buildProps;
|
|
55
131
|
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LoggerOrbit = void 0;
|
|
3
|
+
exports.AuditOrbitLoggerGateway = exports.LoggerOrbit = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const logger_1 = tslib_1.__importStar(require("../../application/logger"));
|
|
6
6
|
const log_error_1 = tslib_1.__importDefault(require("../../domain/errors/log-error"));
|
|
7
|
+
/**
|
|
8
|
+
* Evento de domínio enviado para o serviço de logs.
|
|
9
|
+
*/
|
|
7
10
|
class LogEvent {
|
|
8
11
|
input;
|
|
9
12
|
name = 'log-service.log.created';
|
|
@@ -13,23 +16,46 @@ class LogEvent {
|
|
|
13
16
|
}
|
|
14
17
|
}
|
|
15
18
|
exports.default = LogEvent;
|
|
19
|
+
/**
|
|
20
|
+
* Implementação de logger que publica logs em fila (AMQP).
|
|
21
|
+
*
|
|
22
|
+
* - Publica em exchange `log-service.direct`.
|
|
23
|
+
* - Força logging para categoria BUSINESS.
|
|
24
|
+
* - Permite retry e opção de falhar com exceção.
|
|
25
|
+
*/
|
|
16
26
|
class LoggerOrbit extends logger_1.default {
|
|
17
27
|
queue;
|
|
18
|
-
constructor(queue,
|
|
19
|
-
super(
|
|
28
|
+
constructor(queue, props) {
|
|
29
|
+
super(props);
|
|
20
30
|
this.queue = queue;
|
|
21
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Loga um evento (atalho para `super.log`).
|
|
34
|
+
*/
|
|
22
35
|
async log(props, dataToLog) {
|
|
23
36
|
return await super.log(props, dataToLog);
|
|
24
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Determina se deve logar.
|
|
40
|
+
*
|
|
41
|
+
* - Usa o filtro padrão do LoggerGateway.
|
|
42
|
+
* - Força logging se a categoria for BUSINESS.
|
|
43
|
+
*/
|
|
25
44
|
async isToLog(props, dataToLog) {
|
|
26
45
|
return ((await super.isToLog(props, dataToLog)) ||
|
|
27
46
|
props.category === logger_1.CategoryEnum.BUSINESS);
|
|
28
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Registra o log publicando na fila.
|
|
50
|
+
*
|
|
51
|
+
* Em caso de falha:
|
|
52
|
+
* - Executa `retryStrategy` se existir.
|
|
53
|
+
* - Lança `LogError` se `throwOnError` estiver habilitado.
|
|
54
|
+
*/
|
|
29
55
|
async register(props, data) {
|
|
30
56
|
try {
|
|
31
57
|
const payload = this.buildPayload(props, data);
|
|
32
|
-
await this.queue.publish('
|
|
58
|
+
await this.queue.publish('log-service.direct', new LogEvent(payload));
|
|
33
59
|
}
|
|
34
60
|
catch (error) {
|
|
35
61
|
if (this.options?.retryStrategy) {
|
|
@@ -40,6 +66,12 @@ class LoggerOrbit extends logger_1.default {
|
|
|
40
66
|
}
|
|
41
67
|
}
|
|
42
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Monta o payload final para publicação.
|
|
71
|
+
*
|
|
72
|
+
* Converte `expirationHours` em `expirationDate` e coloca o conteúdo
|
|
73
|
+
* original em `details`.
|
|
74
|
+
*/
|
|
43
75
|
buildPayload(props, dataToLog) {
|
|
44
76
|
const { expirationHours, ...buildedProperties } = props;
|
|
45
77
|
const now = new Date();
|
|
@@ -50,14 +82,39 @@ class LoggerOrbit extends logger_1.default {
|
|
|
50
82
|
details: dataToLog,
|
|
51
83
|
};
|
|
52
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Propriedades padrão do LoggerOrbit.
|
|
87
|
+
*
|
|
88
|
+
* - category: TECHNICAL
|
|
89
|
+
* - actorType: SYSTEM
|
|
90
|
+
* - expirationHours: 4 * 7 dias
|
|
91
|
+
*/
|
|
53
92
|
buildDefaultProps(params) {
|
|
54
93
|
const sevenDaysInHours = 168;
|
|
55
94
|
return {
|
|
56
|
-
|
|
57
|
-
category: params?.category || logger_1.CategoryEnum.TECHNICAL,
|
|
95
|
+
category: logger_1.CategoryEnum.TECHNICAL,
|
|
58
96
|
actorType: logger_1.ActorEnum.SYSTEM,
|
|
59
97
|
expirationHours: sevenDaysInHours * 4,
|
|
98
|
+
...super.buildDefaultProps(params),
|
|
60
99
|
};
|
|
61
100
|
}
|
|
62
101
|
}
|
|
63
102
|
exports.LoggerOrbit = LoggerOrbit;
|
|
103
|
+
class AuditOrbitLoggerGateway {
|
|
104
|
+
static instance;
|
|
105
|
+
constructor() { }
|
|
106
|
+
static getInstance(queue, props) {
|
|
107
|
+
if (!this.instance) {
|
|
108
|
+
this.instance = new LoggerOrbit(queue, this.buildProps(props));
|
|
109
|
+
}
|
|
110
|
+
return this.instance;
|
|
111
|
+
}
|
|
112
|
+
static buildProps(props = {}) {
|
|
113
|
+
props.options = props.options || {
|
|
114
|
+
throwOnError: false,
|
|
115
|
+
lastArgIsParams: true,
|
|
116
|
+
};
|
|
117
|
+
return props;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.AuditOrbitLoggerGateway = AuditOrbitLoggerGateway;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const logger_1 = require("../../application/logger");
|
|
6
|
+
const log_error_1 = tslib_1.__importDefault(require("../../domain/errors/log-error"));
|
|
7
|
+
const types_1 = require("../environment/types");
|
|
8
|
+
const logger_orbit_1 = tslib_1.__importStar(require("./logger-orbit"));
|
|
9
|
+
const createQueue = () => ({
|
|
10
|
+
on: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
11
|
+
publish: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
12
|
+
});
|
|
13
|
+
(0, vitest_1.describe)('LoggerOrbit', () => {
|
|
14
|
+
(0, vitest_1.afterEach)(() => {
|
|
15
|
+
vitest_1.vi.useRealTimers();
|
|
16
|
+
vitest_1.vi.restoreAllMocks();
|
|
17
|
+
logger_orbit_1.AuditOrbitLoggerGateway.instance = undefined;
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('should publish business logs even when the cached level would block them', async () => {
|
|
20
|
+
const queue = createQueue();
|
|
21
|
+
const cache = {
|
|
22
|
+
get: vitest_1.vi.fn().mockResolvedValue(types_1.LOG_LEVEL.error),
|
|
23
|
+
getKeys: vitest_1.vi.fn().mockResolvedValue(['LOG_LEVEL:*:*']),
|
|
24
|
+
set: vitest_1.vi.fn(),
|
|
25
|
+
};
|
|
26
|
+
const logger = new logger_orbit_1.LoggerOrbit(queue, {
|
|
27
|
+
cache: cache,
|
|
28
|
+
params: {
|
|
29
|
+
actor: 'system',
|
|
30
|
+
type: 'log',
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
await logger.log({
|
|
34
|
+
level: types_1.LOG_LEVEL.info,
|
|
35
|
+
category: logger_1.CategoryEnum.BUSINESS,
|
|
36
|
+
actorType: logger_1.ActorEnum.SYSTEM,
|
|
37
|
+
expirationHours: 1,
|
|
38
|
+
}, { id: 'business-log' });
|
|
39
|
+
await logger.log({
|
|
40
|
+
level: types_1.LOG_LEVEL.info,
|
|
41
|
+
category: logger_1.CategoryEnum.TECHNICAL,
|
|
42
|
+
actorType: logger_1.ActorEnum.SYSTEM,
|
|
43
|
+
expirationHours: 1,
|
|
44
|
+
}, { id: 'technical-log' });
|
|
45
|
+
(0, vitest_1.expect)(queue.publish).toHaveBeenCalledTimes(1);
|
|
46
|
+
(0, vitest_1.expect)(queue.publish).toHaveBeenCalledWith('log-service.direct', vitest_1.expect.any(logger_orbit_1.default));
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.it)('should build default props and publish payloads with expiration dates', async () => {
|
|
49
|
+
vitest_1.vi.useFakeTimers();
|
|
50
|
+
vitest_1.vi.setSystemTime(new Date('2024-01-01T00:00:00.000Z'));
|
|
51
|
+
const queue = createQueue();
|
|
52
|
+
const logger = new logger_orbit_1.LoggerOrbit(queue, {
|
|
53
|
+
params: {
|
|
54
|
+
actor: 'system',
|
|
55
|
+
type: 'log',
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
const props = logger['buildDefaultProps']({
|
|
59
|
+
actor: 'system',
|
|
60
|
+
type: 'log',
|
|
61
|
+
});
|
|
62
|
+
await logger.register(props, { id: '1' });
|
|
63
|
+
const publishedEvent = queue.publish.mock.calls[0][1];
|
|
64
|
+
(0, vitest_1.expect)(props).toEqual(vitest_1.expect.objectContaining({
|
|
65
|
+
actor: 'system',
|
|
66
|
+
type: 'log',
|
|
67
|
+
level: types_1.LOG_LEVEL.info,
|
|
68
|
+
actorType: logger_1.ActorEnum.SYSTEM,
|
|
69
|
+
category: logger_1.CategoryEnum.TECHNICAL,
|
|
70
|
+
expirationHours: 672,
|
|
71
|
+
}));
|
|
72
|
+
(0, vitest_1.expect)(publishedEvent.name).toBe('log-service.log.created');
|
|
73
|
+
(0, vitest_1.expect)(publishedEvent.eventDate).toEqual(new Date('2024-01-01T00:00:00.000Z'));
|
|
74
|
+
(0, vitest_1.expect)(publishedEvent.input).toEqual(vitest_1.expect.objectContaining({
|
|
75
|
+
actor: 'system',
|
|
76
|
+
type: 'log',
|
|
77
|
+
level: types_1.LOG_LEVEL.info,
|
|
78
|
+
actorType: logger_1.ActorEnum.SYSTEM,
|
|
79
|
+
category: logger_1.CategoryEnum.TECHNICAL,
|
|
80
|
+
details: { id: '1' },
|
|
81
|
+
expirationDate: new Date('2024-01-29T00:00:00.000Z'),
|
|
82
|
+
}));
|
|
83
|
+
});
|
|
84
|
+
(0, vitest_1.it)('should execute retry strategies and throw LogError when configured', async () => {
|
|
85
|
+
const queue = createQueue();
|
|
86
|
+
const retryStrategy = vitest_1.vi.fn().mockResolvedValue(undefined);
|
|
87
|
+
const logger = new logger_orbit_1.LoggerOrbit(queue, {
|
|
88
|
+
options: {
|
|
89
|
+
retryStrategy,
|
|
90
|
+
},
|
|
91
|
+
params: {
|
|
92
|
+
actor: 'system',
|
|
93
|
+
type: 'log',
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
queue.publish.mockRejectedValueOnce(new Error('publish failed'));
|
|
97
|
+
await logger.register(logger['buildDefaultProps']({
|
|
98
|
+
actor: 'system',
|
|
99
|
+
type: 'log',
|
|
100
|
+
}), { id: '2' });
|
|
101
|
+
(0, vitest_1.expect)(retryStrategy).toHaveBeenCalledWith({ id: '2' }, vitest_1.expect.any(Object));
|
|
102
|
+
const failingLogger = new logger_orbit_1.LoggerOrbit(queue, {
|
|
103
|
+
options: {
|
|
104
|
+
throwOnError: true,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
queue.publish.mockRejectedValueOnce(new Error('publish failed'));
|
|
108
|
+
await (0, vitest_1.expect)(failingLogger.register(failingLogger['buildDefaultProps'](), {
|
|
109
|
+
id: '3',
|
|
110
|
+
})).rejects.toThrow(log_error_1.default);
|
|
111
|
+
});
|
|
112
|
+
(0, vitest_1.it)('should reuse the singleton and apply default Orbit logger options', () => {
|
|
113
|
+
const queue = createQueue();
|
|
114
|
+
const first = logger_orbit_1.AuditOrbitLoggerGateway.getInstance(queue);
|
|
115
|
+
const second = logger_orbit_1.AuditOrbitLoggerGateway.getInstance(queue);
|
|
116
|
+
(0, vitest_1.expect)(first).toBe(second);
|
|
117
|
+
(0, vitest_1.expect)(first.options).toEqual({
|
|
118
|
+
throwOnError: false,
|
|
119
|
+
lastArgIsParams: true,
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
});
|
package/dist/clean-arch/infra/orbit-http-client/orbit-axios-client/orbit-axios-client.spec.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|