@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
|
@@ -1,31 +1,63 @@
|
|
|
1
1
|
import { Logger } from '../logger';
|
|
2
2
|
import { CacheClient } from './client';
|
|
3
|
+
/**
|
|
4
|
+
* Opcoes por metodo (sobrescrevem CacheOptions).
|
|
5
|
+
*/
|
|
3
6
|
export type MethodOptions = {
|
|
4
7
|
throwOnError?: boolean;
|
|
5
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* Opcoes globais do cache.
|
|
11
|
+
* - throwOnError: quando true, propaga erros.
|
|
12
|
+
* - contingencyClients: lista de clientes alternativos para fallback.
|
|
13
|
+
*/
|
|
6
14
|
export type CacheOptions = {
|
|
7
15
|
throwOnError?: boolean;
|
|
8
16
|
contingencyClients?: CacheClient[];
|
|
9
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Camada de cache padrao da lib.
|
|
20
|
+
* Responsavel por:
|
|
21
|
+
* - controlar TTL padrao
|
|
22
|
+
* - serializacao JSON
|
|
23
|
+
* - fallback entre clientes
|
|
24
|
+
*/
|
|
10
25
|
export declare abstract class Cache {
|
|
11
26
|
protected logger: Logger;
|
|
12
27
|
protected abstract client: CacheClient;
|
|
13
28
|
protected elegibleClients: CacheClient[];
|
|
29
|
+
/** TTL padrao (segundos). */
|
|
14
30
|
protected DEFAULT_EXPIRATION_SECONDS: number;
|
|
15
31
|
private options?;
|
|
16
32
|
constructor(options?: CacheOptions, logger?: Logger);
|
|
17
33
|
private setElegibleClients;
|
|
18
34
|
private setOptions;
|
|
19
35
|
private setRunningClient;
|
|
36
|
+
/** Inicia o cliente de cache. */
|
|
20
37
|
start(options?: MethodOptions): Promise<void>;
|
|
38
|
+
/** Busca um valor do cache. */
|
|
21
39
|
get(keyCache: string, options?: MethodOptions): Promise<any>;
|
|
40
|
+
/** Grava um valor no cache com TTL (segundos). */
|
|
22
41
|
set(keyCache: string, data: any, expiration?: number, options?: MethodOptions): Promise<void>;
|
|
42
|
+
/** Remove uma chave do cache. */
|
|
23
43
|
del(keyCache: string, options?: MethodOptions): Promise<void>;
|
|
44
|
+
/** Lista chaves; o pattern varia por cliente. */
|
|
24
45
|
getKeys(pattern?: string, options?: MethodOptions): Promise<string[] | null>;
|
|
46
|
+
/** Remove varias chaves de uma vez. */
|
|
25
47
|
delBatch(patterns: string[], options?: MethodOptions): Promise<void>;
|
|
48
|
+
/** Limpa o banco/instancia de cache. */
|
|
26
49
|
flush(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Health-check do cache.
|
|
52
|
+
* - se falhar, tenta alternar para um cliente elegivel
|
|
53
|
+
*/
|
|
27
54
|
isRunning(options?: MethodOptions, isContingency?: boolean): Promise<boolean>;
|
|
55
|
+
/** Encerra o cliente de cache. */
|
|
28
56
|
close(options?: MethodOptions): Promise<void>;
|
|
57
|
+
/** Padroniza o log/propagacao de erros. */
|
|
29
58
|
protected handleException(e: Error): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Busca do cache e, se nao existir, executa a promise e grava o resultado.
|
|
61
|
+
*/
|
|
30
62
|
getOrFetchAndCache<T>(keyCache: string, expiration: number | undefined, promise: () => Promise<T>, options?: MethodOptions): Promise<T | undefined>;
|
|
31
63
|
}
|
|
@@ -2,9 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Cache = void 0;
|
|
4
4
|
const env_1 = require("../../infra/environment/env");
|
|
5
|
+
/**
|
|
6
|
+
* Camada de cache padrao da lib.
|
|
7
|
+
* Responsavel por:
|
|
8
|
+
* - controlar TTL padrao
|
|
9
|
+
* - serializacao JSON
|
|
10
|
+
* - fallback entre clientes
|
|
11
|
+
*/
|
|
5
12
|
class Cache {
|
|
6
13
|
logger;
|
|
7
14
|
elegibleClients;
|
|
15
|
+
/** TTL padrao (segundos). */
|
|
8
16
|
DEFAULT_EXPIRATION_SECONDS = env_1.env?.DEFAULT_CACHE_EXPIRATION || 360;
|
|
9
17
|
options;
|
|
10
18
|
constructor(options, logger = console) {
|
|
@@ -51,6 +59,7 @@ class Cache {
|
|
|
51
59
|
this.logger.warn(`Changed cache client to ${this.client.constructor.name}`);
|
|
52
60
|
return this;
|
|
53
61
|
}
|
|
62
|
+
/** Inicia o cliente de cache. */
|
|
54
63
|
async start(options) {
|
|
55
64
|
try {
|
|
56
65
|
await this.client.start();
|
|
@@ -66,6 +75,7 @@ class Cache {
|
|
|
66
75
|
}
|
|
67
76
|
this.logger.info('💾 Cache Connected');
|
|
68
77
|
}
|
|
78
|
+
/** Busca um valor do cache. */
|
|
69
79
|
async get(keyCache, options) {
|
|
70
80
|
try {
|
|
71
81
|
const dataFromCache = await this.client.get(keyCache);
|
|
@@ -78,6 +88,7 @@ class Cache {
|
|
|
78
88
|
return null;
|
|
79
89
|
}
|
|
80
90
|
}
|
|
91
|
+
/** Grava um valor no cache com TTL (segundos). */
|
|
81
92
|
async set(keyCache, data, expiration = this.DEFAULT_EXPIRATION_SECONDS, options) {
|
|
82
93
|
try {
|
|
83
94
|
return await this.client.set(keyCache, JSON.stringify(data), expiration);
|
|
@@ -89,6 +100,7 @@ class Cache {
|
|
|
89
100
|
return;
|
|
90
101
|
}
|
|
91
102
|
}
|
|
103
|
+
/** Remove uma chave do cache. */
|
|
92
104
|
async del(keyCache, options) {
|
|
93
105
|
try {
|
|
94
106
|
return await this.client.del(keyCache);
|
|
@@ -100,6 +112,7 @@ class Cache {
|
|
|
100
112
|
return;
|
|
101
113
|
}
|
|
102
114
|
}
|
|
115
|
+
/** Lista chaves; o pattern varia por cliente. */
|
|
103
116
|
async getKeys(pattern, options) {
|
|
104
117
|
try {
|
|
105
118
|
return await this.client.getKeys(pattern);
|
|
@@ -111,6 +124,7 @@ class Cache {
|
|
|
111
124
|
return null;
|
|
112
125
|
}
|
|
113
126
|
}
|
|
127
|
+
/** Remove varias chaves de uma vez. */
|
|
114
128
|
async delBatch(patterns, options) {
|
|
115
129
|
try {
|
|
116
130
|
return await this.client.delBatch(patterns);
|
|
@@ -122,6 +136,7 @@ class Cache {
|
|
|
122
136
|
return;
|
|
123
137
|
}
|
|
124
138
|
}
|
|
139
|
+
/** Limpa o banco/instancia de cache. */
|
|
125
140
|
async flush() {
|
|
126
141
|
try {
|
|
127
142
|
return await this.client.flush();
|
|
@@ -130,6 +145,10 @@ class Cache {
|
|
|
130
145
|
await this.handleException(e);
|
|
131
146
|
}
|
|
132
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Health-check do cache.
|
|
150
|
+
* - se falhar, tenta alternar para um cliente elegivel
|
|
151
|
+
*/
|
|
133
152
|
async isRunning(options, isContingency = false) {
|
|
134
153
|
let isRunning = false;
|
|
135
154
|
try {
|
|
@@ -146,6 +165,7 @@ class Cache {
|
|
|
146
165
|
}
|
|
147
166
|
return isRunning;
|
|
148
167
|
}
|
|
168
|
+
/** Encerra o cliente de cache. */
|
|
149
169
|
async close(options) {
|
|
150
170
|
this.logger.info('💾 Cache closed');
|
|
151
171
|
try {
|
|
@@ -158,10 +178,14 @@ class Cache {
|
|
|
158
178
|
return;
|
|
159
179
|
}
|
|
160
180
|
}
|
|
181
|
+
/** Padroniza o log/propagacao de erros. */
|
|
161
182
|
async handleException(e) {
|
|
162
183
|
this.logger.error(JSON.stringify(e));
|
|
163
184
|
throw e;
|
|
164
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Busca do cache e, se nao existir, executa a promise e grava o resultado.
|
|
188
|
+
*/
|
|
165
189
|
async getOrFetchAndCache(keyCache, expiration = this.DEFAULT_EXPIRATION_SECONDS, promise, options) {
|
|
166
190
|
let data = await this.get(keyCache, options);
|
|
167
191
|
if (!data) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cache_1 = require("./cache");
|
|
4
|
+
const client_1 = require("./client");
|
|
5
|
+
class MemoryCacheClient extends client_1.CacheClient {
|
|
6
|
+
startMock = vi.fn().mockResolvedValue(undefined);
|
|
7
|
+
closeMock = vi.fn().mockResolvedValue(undefined);
|
|
8
|
+
getMock = vi.fn();
|
|
9
|
+
setMock = vi.fn().mockResolvedValue(undefined);
|
|
10
|
+
delMock = vi.fn().mockResolvedValue(undefined);
|
|
11
|
+
delBatchMock = vi.fn().mockResolvedValue(undefined);
|
|
12
|
+
getKeysMock = vi.fn().mockResolvedValue([]);
|
|
13
|
+
flushMock = vi.fn().mockResolvedValue(undefined);
|
|
14
|
+
async start() {
|
|
15
|
+
await this.startMock();
|
|
16
|
+
}
|
|
17
|
+
async close() {
|
|
18
|
+
await this.closeMock();
|
|
19
|
+
}
|
|
20
|
+
async get(keyCache) {
|
|
21
|
+
return await this.getMock(keyCache);
|
|
22
|
+
}
|
|
23
|
+
async set(keyCache, data, expiration) {
|
|
24
|
+
await this.setMock(keyCache, data, expiration);
|
|
25
|
+
}
|
|
26
|
+
async del(keyCache) {
|
|
27
|
+
await this.delMock(keyCache);
|
|
28
|
+
}
|
|
29
|
+
async delBatch(keyCache) {
|
|
30
|
+
await this.delBatchMock(keyCache);
|
|
31
|
+
}
|
|
32
|
+
async getKeys(pattern) {
|
|
33
|
+
return await this.getKeysMock(pattern);
|
|
34
|
+
}
|
|
35
|
+
async flush() {
|
|
36
|
+
await this.flushMock();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
class TestCache extends cache_1.Cache {
|
|
40
|
+
client = new MemoryCacheClient();
|
|
41
|
+
get currentClient() {
|
|
42
|
+
return this.client;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const createLogger = () => ({
|
|
46
|
+
info: vi.fn(),
|
|
47
|
+
warn: vi.fn(),
|
|
48
|
+
error: vi.fn(),
|
|
49
|
+
debug: vi.fn(),
|
|
50
|
+
});
|
|
51
|
+
describe('Cache base', () => {
|
|
52
|
+
it('should perform the happy path operations', async () => {
|
|
53
|
+
const logger = createLogger();
|
|
54
|
+
const cache = new TestCache(undefined, logger);
|
|
55
|
+
cache.currentClient.getMock.mockResolvedValueOnce({ id: '1' });
|
|
56
|
+
cache.currentClient.getKeysMock.mockResolvedValueOnce(['cache:key']);
|
|
57
|
+
await cache.start();
|
|
58
|
+
await expect(cache.get('cache:key')).resolves.toEqual({ id: '1' });
|
|
59
|
+
await expect(cache.set('cache:key', { id: '1' }, 10)).resolves.toBeUndefined();
|
|
60
|
+
await expect(cache.del('cache:key')).resolves.toBeUndefined();
|
|
61
|
+
await expect(cache.getKeys('cache:*')).resolves.toEqual(['cache:key']);
|
|
62
|
+
await expect(cache.delBatch(['cache:key'])).resolves.toBeUndefined();
|
|
63
|
+
await expect(cache.flush()).resolves.toBeUndefined();
|
|
64
|
+
cache.currentClient.getMock.mockResolvedValueOnce({ ping: true });
|
|
65
|
+
await expect(cache.isRunning()).resolves.toBe(true);
|
|
66
|
+
await cache.close();
|
|
67
|
+
expect(cache.currentClient.startMock).toHaveBeenCalledTimes(1);
|
|
68
|
+
expect(cache.currentClient.setMock).toHaveBeenNthCalledWith(1, 'cache:key', JSON.stringify({ id: '1' }), 10);
|
|
69
|
+
expect(cache.currentClient.delMock).toHaveBeenCalledWith('cache:key');
|
|
70
|
+
expect(cache.currentClient.delBatchMock).toHaveBeenCalledWith([
|
|
71
|
+
'cache:key',
|
|
72
|
+
]);
|
|
73
|
+
expect(cache.currentClient.flushMock).toHaveBeenCalledTimes(1);
|
|
74
|
+
expect(cache.currentClient.closeMock).toHaveBeenCalledTimes(1);
|
|
75
|
+
expect(logger.info).toHaveBeenCalledWith('💾 Cache Connected');
|
|
76
|
+
expect(logger.info).toHaveBeenCalledWith('💾 Cache closed');
|
|
77
|
+
});
|
|
78
|
+
it('should fetch, cache and reuse values', async () => {
|
|
79
|
+
const cache = new TestCache();
|
|
80
|
+
const promise = vi.fn().mockResolvedValue({ id: '1' });
|
|
81
|
+
cache.currentClient.getMock
|
|
82
|
+
.mockResolvedValueOnce(null)
|
|
83
|
+
.mockResolvedValueOnce({ id: '1' });
|
|
84
|
+
await expect(cache.getOrFetchAndCache('cache:key', 15, promise)).resolves.toEqual({ id: '1' });
|
|
85
|
+
await expect(cache.getOrFetchAndCache('cache:key', 15, promise)).resolves.toEqual({ id: '1' });
|
|
86
|
+
expect(promise).toHaveBeenCalledTimes(1);
|
|
87
|
+
expect(cache.currentClient.setMock).toHaveBeenCalledWith('cache:key', JSON.stringify({ id: '1' }), 15);
|
|
88
|
+
});
|
|
89
|
+
it('should return safe fallbacks when operations fail without throwOnError', async () => {
|
|
90
|
+
const cache = new TestCache();
|
|
91
|
+
cache.currentClient.getMock.mockRejectedValue(new Error('get failed'));
|
|
92
|
+
cache.currentClient.setMock.mockRejectedValue(new Error('set failed'));
|
|
93
|
+
cache.currentClient.delMock.mockRejectedValue(new Error('del failed'));
|
|
94
|
+
cache.currentClient.getKeysMock.mockRejectedValue(new Error('keys failed'));
|
|
95
|
+
cache.currentClient.delBatchMock.mockRejectedValue(new Error('batch failed'));
|
|
96
|
+
cache.currentClient.closeMock.mockRejectedValue(new Error('close failed'));
|
|
97
|
+
cache.currentClient.getMock.mockResolvedValueOnce(false);
|
|
98
|
+
await expect(cache.get('cache:key')).resolves.toBeNull();
|
|
99
|
+
await expect(cache.set('cache:key', { id: '1' })).resolves.toBeUndefined();
|
|
100
|
+
await expect(cache.del('cache:key')).resolves.toBeUndefined();
|
|
101
|
+
await expect(cache.getKeys('cache:*')).resolves.toBeNull();
|
|
102
|
+
await expect(cache.delBatch(['cache:key'])).resolves.toBeUndefined();
|
|
103
|
+
await expect(cache.close()).resolves.toBeUndefined();
|
|
104
|
+
});
|
|
105
|
+
it('should throw when throwOnError is enabled', async () => {
|
|
106
|
+
const logger = createLogger();
|
|
107
|
+
const cache = new TestCache(undefined, logger);
|
|
108
|
+
cache.currentClient.getMock.mockRejectedValue(new Error('get failed'));
|
|
109
|
+
await expect(cache.get('cache:key', { throwOnError: true })).rejects.toThrow('get failed');
|
|
110
|
+
expect(logger.error).toHaveBeenCalledWith(JSON.stringify(new Error('get failed')));
|
|
111
|
+
});
|
|
112
|
+
it('should switch to a running contingency client', async () => {
|
|
113
|
+
const logger = createLogger();
|
|
114
|
+
const cache = new TestCache(undefined, logger);
|
|
115
|
+
const primary = cache.currentClient;
|
|
116
|
+
const contingency = new MemoryCacheClient();
|
|
117
|
+
primary.getMock.mockResolvedValue(false);
|
|
118
|
+
contingency.getMock.mockResolvedValue({ ping: true });
|
|
119
|
+
cache.elegibleClients = [contingency, primary];
|
|
120
|
+
await expect(cache.isRunning()).resolves.toBe(true);
|
|
121
|
+
expect(primary.closeMock).toHaveBeenCalledTimes(1);
|
|
122
|
+
expect(logger.warn).toHaveBeenCalledWith('Changed cache client to MemoryCacheClient');
|
|
123
|
+
expect(cache.client).toBe(contingency);
|
|
124
|
+
});
|
|
125
|
+
it('should tolerate failed start with a single eligible client', async () => {
|
|
126
|
+
const logger = createLogger();
|
|
127
|
+
const cache = new TestCache(undefined, logger);
|
|
128
|
+
cache.options = { throwOnError: false };
|
|
129
|
+
cache.elegibleClients = [cache.currentClient];
|
|
130
|
+
cache.currentClient.startMock.mockRejectedValueOnce(new Error('start failed'));
|
|
131
|
+
await expect(cache.start()).resolves.toBeUndefined();
|
|
132
|
+
expect(logger.warn).not.toHaveBeenCalled();
|
|
133
|
+
});
|
|
134
|
+
it('should ignore contingency discovery errors while switching cache clients', async () => {
|
|
135
|
+
const logger = createLogger();
|
|
136
|
+
const cache = new TestCache(undefined, logger);
|
|
137
|
+
const primary = cache.currentClient;
|
|
138
|
+
const brokenContingency = new MemoryCacheClient();
|
|
139
|
+
const healthyContingency = new MemoryCacheClient();
|
|
140
|
+
cache.options = { throwOnError: false };
|
|
141
|
+
cache.elegibleClients = [
|
|
142
|
+
brokenContingency,
|
|
143
|
+
healthyContingency,
|
|
144
|
+
primary,
|
|
145
|
+
];
|
|
146
|
+
primary.startMock.mockRejectedValueOnce(new Error('primary start failed'));
|
|
147
|
+
primary.closeMock.mockRejectedValueOnce(new Error('primary close failed'));
|
|
148
|
+
brokenContingency.startMock.mockRejectedValueOnce(new Error('contingency start failed'));
|
|
149
|
+
healthyContingency.getMock.mockResolvedValue({ ping: true });
|
|
150
|
+
await expect(cache.start()).resolves.toBeUndefined();
|
|
151
|
+
expect(cache.client).toBe(healthyContingency);
|
|
152
|
+
expect(brokenContingency.startMock).toHaveBeenCalledTimes(1);
|
|
153
|
+
expect(brokenContingency.closeMock).toHaveBeenCalledTimes(1);
|
|
154
|
+
expect(primary.closeMock).toHaveBeenCalledTimes(1);
|
|
155
|
+
expect(logger.warn).toHaveBeenCalledWith('Changed cache client to MemoryCacheClient');
|
|
156
|
+
});
|
|
157
|
+
it('should return false when health checks fail without throwOnError', async () => {
|
|
158
|
+
const logger = createLogger();
|
|
159
|
+
const cache = new TestCache(undefined, logger);
|
|
160
|
+
cache.options = { throwOnError: false };
|
|
161
|
+
cache.elegibleClients = [cache.currentClient];
|
|
162
|
+
cache.currentClient.setMock.mockRejectedValue(new Error('ping failed'));
|
|
163
|
+
await expect(cache.isRunning()).resolves.toBe(false);
|
|
164
|
+
});
|
|
165
|
+
it('should throw when close fails and throwOnError is enabled', async () => {
|
|
166
|
+
const logger = createLogger();
|
|
167
|
+
const cache = new TestCache(undefined, logger);
|
|
168
|
+
cache.currentClient.closeMock.mockRejectedValue(new Error('close failed'));
|
|
169
|
+
await expect(cache.close({ throwOnError: true })).rejects.toThrowError('close failed');
|
|
170
|
+
expect(logger.error).toHaveBeenCalledWith(JSON.stringify(new Error('close failed')));
|
|
171
|
+
});
|
|
172
|
+
it('should verify if a cache client is running with a ping key', async () => {
|
|
173
|
+
const client = new MemoryCacheClient({ timeout: 5 });
|
|
174
|
+
client.getMock.mockResolvedValue({ ping: true });
|
|
175
|
+
await expect(client.isRunning()).resolves.toBe(true);
|
|
176
|
+
expect(client.setMock).toHaveBeenCalledWith(expect.any(String), JSON.stringify({ ping: true }), 5);
|
|
177
|
+
});
|
|
178
|
+
});
|
|
@@ -1,16 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opcoes basicas para clientes de cache.
|
|
3
|
+
* - timeout: segundos usados como timeout de operacoes e ping.
|
|
4
|
+
*/
|
|
1
5
|
export interface CacheClientOptions {
|
|
2
6
|
timeout?: number;
|
|
3
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* Contrato minimo de um cliente de cache.
|
|
10
|
+
* Cada implementacao deve cuidar de:
|
|
11
|
+
* - conexao (start/close)
|
|
12
|
+
* - operacoes basicas (get/set/del/getKeys/flush)
|
|
13
|
+
*/
|
|
4
14
|
export declare abstract class CacheClient {
|
|
5
15
|
protected connection?: CacheClientOptions | undefined;
|
|
6
16
|
constructor(connection?: CacheClientOptions | undefined);
|
|
17
|
+
/** Inicializa o cliente/conexao. */
|
|
7
18
|
abstract start(): Promise<void>;
|
|
19
|
+
/** Encerra o cliente/conexao. */
|
|
8
20
|
abstract close(): Promise<void>;
|
|
21
|
+
/** Recupera um valor pelo nome da chave. */
|
|
9
22
|
abstract get(keyCache: string): Promise<any>;
|
|
23
|
+
/** Grava um valor com TTL opcional (segundos). */
|
|
10
24
|
abstract set(keyCache: string, data: any, expiration?: number): Promise<void>;
|
|
25
|
+
/** Remove uma chave. */
|
|
11
26
|
abstract del(keyCache: string): Promise<void>;
|
|
27
|
+
/** Remove varias chaves. */
|
|
12
28
|
abstract delBatch(keyCache: string[]): Promise<void>;
|
|
29
|
+
/** Lista chaves; o pattern depende do cliente. */
|
|
13
30
|
abstract getKeys(pattern?: string): Promise<string[] | null>;
|
|
31
|
+
/** Limpa o banco/instancia. */
|
|
14
32
|
abstract flush(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Health-check simples:
|
|
35
|
+
* - grava um ping
|
|
36
|
+
* - le de volta e valida
|
|
37
|
+
*/
|
|
15
38
|
isRunning(): Promise<any>;
|
|
16
39
|
}
|
|
@@ -2,11 +2,22 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CacheClient = void 0;
|
|
4
4
|
const unique_entity_id_1 = require("../../domain/entities/unique-entity-id");
|
|
5
|
+
/**
|
|
6
|
+
* Contrato minimo de um cliente de cache.
|
|
7
|
+
* Cada implementacao deve cuidar de:
|
|
8
|
+
* - conexao (start/close)
|
|
9
|
+
* - operacoes basicas (get/set/del/getKeys/flush)
|
|
10
|
+
*/
|
|
5
11
|
class CacheClient {
|
|
6
12
|
connection;
|
|
7
13
|
constructor(connection) {
|
|
8
14
|
this.connection = connection;
|
|
9
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Health-check simples:
|
|
18
|
+
* - grava um ping
|
|
19
|
+
* - le de volta e valida
|
|
20
|
+
*/
|
|
10
21
|
async isRunning() {
|
|
11
22
|
const key = new unique_entity_id_1.UniqueEntityId().toValue();
|
|
12
23
|
await this.set(key, JSON.stringify({ ping: true }), this.connection?.timeout || 60);
|
package/dist/clean-arch/application/consistency-event-dispatcher/consistency-event-dispatcher.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Entity } from '../../domain/entities/entity';
|
|
2
|
+
import ConsistencyEvent from '../../domain/events/consistency-event/consistency-event';
|
|
3
|
+
import { EventsName } from '../../domain/events/consistency-event/events-enum';
|
|
4
|
+
import { AuthorizerHeaders } from '../../infra/http/handle-authorizer-headers';
|
|
5
|
+
export declare abstract class ConsistencyEventDispatcher {
|
|
6
|
+
dispatch(entity: Entity<any>, authorizerHeaders: AuthorizerHeaders, eventName: EventsName): Promise<void>;
|
|
7
|
+
dispatchBatch(entities: Entity<any>[], authorizerHeaders: AuthorizerHeaders, eventName: EventsName): Promise<void>;
|
|
8
|
+
abstract publish(event: ConsistencyEvent): Promise<void>;
|
|
9
|
+
}
|
package/dist/clean-arch/application/consistency-event-dispatcher/consistency-event-dispatcher.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConsistencyEventDispatcher = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const consistency_event_1 = tslib_1.__importDefault(require("../../domain/events/consistency-event/consistency-event"));
|
|
6
|
+
class ConsistencyEventDispatcher {
|
|
7
|
+
async dispatch(entity, authorizerHeaders, eventName) {
|
|
8
|
+
try {
|
|
9
|
+
const event = new consistency_event_1.default([entity], authorizerHeaders, eventName);
|
|
10
|
+
await this.publish(event);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
console.error(`Failed to dispatch consistency event: ${error}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
async dispatchBatch(entities, authorizerHeaders, eventName) {
|
|
17
|
+
try {
|
|
18
|
+
const event = new consistency_event_1.default(entities, authorizerHeaders, eventName);
|
|
19
|
+
await this.publish(event);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.error(`Failed to dispatch batch consistency events: ${error}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.ConsistencyEventDispatcher = ConsistencyEventDispatcher;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthorizerHeaders } from '../../infra/http/handle-authorizer-headers';
|
|
2
|
+
import LoggerGateway, { Trace } from '.';
|
|
3
|
+
import { LogOrbitParams } from '../../infra/logger/logger-orbit';
|
|
4
|
+
export declare abstract class BaseAuditLogger {
|
|
5
|
+
protected readonly gateway: LoggerGateway;
|
|
6
|
+
protected defaultExpirationHours: number;
|
|
7
|
+
constructor(gateway: LoggerGateway);
|
|
8
|
+
protected buildParams(type: string, authorizerHeaders: AuthorizerHeaders, trace: Trace): LogOrbitParams;
|
|
9
|
+
protected info(payload: any, params: LogOrbitParams): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseAuditLogger = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const FIVE_YEARS_IN_HOURS = 24 * 365 * 5;
|
|
6
|
+
class BaseAuditLogger {
|
|
7
|
+
gateway;
|
|
8
|
+
defaultExpirationHours = FIVE_YEARS_IN_HOURS;
|
|
9
|
+
constructor(gateway) {
|
|
10
|
+
this.gateway = gateway;
|
|
11
|
+
}
|
|
12
|
+
buildParams(type, authorizerHeaders, trace) {
|
|
13
|
+
trace.ids.push(authorizerHeaders.traceId);
|
|
14
|
+
return {
|
|
15
|
+
type,
|
|
16
|
+
trace,
|
|
17
|
+
actor: authorizerHeaders.entityId,
|
|
18
|
+
tenantId: authorizerHeaders.tenantId,
|
|
19
|
+
actorType: _1.ActorEnum.USER,
|
|
20
|
+
category: _1.CategoryEnum.BUSINESS,
|
|
21
|
+
expirationHours: this.defaultExpirationHours,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
async info(payload, params) {
|
|
25
|
+
return await this.gateway.info({ payload }, params);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.BaseAuditLogger = BaseAuditLogger;
|
|
@@ -1,51 +1,139 @@
|
|
|
1
1
|
import { LOG_LEVEL } from '../../infra/environment/types';
|
|
2
2
|
import { Cache } from '../cache/cache';
|
|
3
|
+
export interface Trace {
|
|
4
|
+
mainId?: string;
|
|
5
|
+
ids: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Identifica o tipo de ator que originou o log.
|
|
9
|
+
*/
|
|
3
10
|
export declare enum ActorEnum {
|
|
4
11
|
SYSTEM = "system",
|
|
5
12
|
USER = "user"
|
|
6
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Categoriza o log em negócio ou técnico.
|
|
16
|
+
*/
|
|
7
17
|
export declare enum CategoryEnum {
|
|
8
18
|
BUSINESS = "business",
|
|
9
19
|
TECHNICAL = "technical"
|
|
10
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Propriedades obrigatórias após a construção do log.
|
|
23
|
+
*/
|
|
11
24
|
export interface LogProperties {
|
|
12
25
|
level: LOG_LEVEL;
|
|
13
26
|
actor: string;
|
|
14
27
|
type: string;
|
|
15
28
|
dateTime: Date;
|
|
16
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Propriedades mínimas de entrada para logar.
|
|
32
|
+
*/
|
|
17
33
|
export interface LogPropertiesInput {
|
|
18
34
|
level: LOG_LEVEL;
|
|
19
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Parâmetros padrão usados para construir propriedades de log.
|
|
38
|
+
*/
|
|
20
39
|
export interface LogParams {
|
|
21
40
|
actor: string;
|
|
22
41
|
type: string;
|
|
23
42
|
}
|
|
43
|
+
export type LogParamsInput = Partial<LogParams>;
|
|
44
|
+
/**
|
|
45
|
+
* Opções de comportamento do logger.
|
|
46
|
+
*/
|
|
24
47
|
export interface LogOptions {
|
|
48
|
+
/**
|
|
49
|
+
* Quando `true`, assume que o último argumento do log é `params` adicionais.
|
|
50
|
+
*/
|
|
25
51
|
lastArgIsParams?: boolean;
|
|
26
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Interface mínima de um logger.
|
|
55
|
+
*/
|
|
27
56
|
export interface Logger {
|
|
28
57
|
info: (...input: any[]) => Promise<void> | void;
|
|
29
58
|
warn: (...input: any[]) => Promise<void> | void;
|
|
30
59
|
error: (...input: any[]) => Promise<void> | void;
|
|
31
60
|
debug: (...input: any[]) => Promise<void> | void;
|
|
32
61
|
}
|
|
62
|
+
export type LoggerGatewayProps = {
|
|
63
|
+
cache?: Cache;
|
|
64
|
+
options?: LogOptions;
|
|
65
|
+
params?: LogParamsInput;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Classe base para loggers.
|
|
69
|
+
*
|
|
70
|
+
* Responsável por:
|
|
71
|
+
* - Montar propriedades padrão (`actor`, `type`, `level`, `dateTime`).
|
|
72
|
+
* - Aplicar filtros por nível com apoio opcional de cache.
|
|
73
|
+
* - Delegar o envio para a implementação concreta (`register`).
|
|
74
|
+
*/
|
|
33
75
|
export default abstract class LoggerGateway implements Logger {
|
|
34
|
-
protected cache?: Cache
|
|
35
|
-
protected options?: LogOptions
|
|
36
|
-
protected params?:
|
|
37
|
-
constructor(
|
|
76
|
+
protected cache?: Cache;
|
|
77
|
+
protected options?: LogOptions;
|
|
78
|
+
protected params?: LogParamsInput;
|
|
79
|
+
constructor(props?: LoggerGatewayProps);
|
|
38
80
|
private static cacheKey;
|
|
81
|
+
/**
|
|
82
|
+
* Loga com nível `info`.
|
|
83
|
+
*/
|
|
39
84
|
info(...input: any[]): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Loga com nível `warn`.
|
|
87
|
+
*/
|
|
40
88
|
warn(...input: any[]): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Loga com nível `error`.
|
|
91
|
+
*/
|
|
41
92
|
error(...input: any[]): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Loga com nível `debug`.
|
|
95
|
+
*/
|
|
42
96
|
debug(...input: any[]): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Fluxo principal de logging.
|
|
99
|
+
*
|
|
100
|
+
* - Extrai params extras quando `lastArgIsParams` estiver habilitado.
|
|
101
|
+
* - Monta propriedades finais.
|
|
102
|
+
* - Checa se deve logar (nível/cache).
|
|
103
|
+
* - Delegada envio para `register`.
|
|
104
|
+
*/
|
|
43
105
|
log(props: LogPropertiesInput, dataToLog: any): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Implementação concreta deve persistir/enviar o log.
|
|
108
|
+
*/
|
|
44
109
|
protected abstract register(props: LogProperties, dataToLog: any, params?: LogParams): Promise<void> | void;
|
|
110
|
+
/**
|
|
111
|
+
* Constrói a lista de níveis aceitos com base no nível configurado.
|
|
112
|
+
*/
|
|
45
113
|
private static buildAcceptLogLevelValues;
|
|
114
|
+
/**
|
|
115
|
+
* Decide se o log deve ser emitido.
|
|
116
|
+
*
|
|
117
|
+
* - `error` sempre é emitido.
|
|
118
|
+
* - Sem cache, sempre emite.
|
|
119
|
+
* - Com cache, consulta o nível permitido por tipo/actor.
|
|
120
|
+
*/
|
|
46
121
|
protected isToLog(props: LogProperties, dataToLog: any): Promise<boolean>;
|
|
47
|
-
|
|
48
|
-
|
|
122
|
+
/**
|
|
123
|
+
* Monta as propriedades finais do log.
|
|
124
|
+
*/
|
|
125
|
+
protected buildProps(props?: LogPropertiesInput, params?: LogParamsInput): LogProperties;
|
|
126
|
+
/**
|
|
127
|
+
* Monta propriedades padrão.
|
|
128
|
+
*/
|
|
129
|
+
protected buildDefaultProps(params?: LogParamsInput): LogProperties;
|
|
130
|
+
/**
|
|
131
|
+
* Define o nível de log no cache para um filtro (type/actor).
|
|
132
|
+
*
|
|
133
|
+
* @param level Nível mínimo a ser aceito.
|
|
134
|
+
* @param filter Filtro de log por tipo e ator.
|
|
135
|
+
* @param ttl Tempo em segundos (default 4 dias).
|
|
136
|
+
*/
|
|
49
137
|
setLevel(level: LOG_LEVEL, filter: {
|
|
50
138
|
logType: string;
|
|
51
139
|
logActor: string;
|