@seidor-cloud-produtos/orbit-backend-lib 2.0.111 → 2.0.114
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/queue/queue.d.ts +8 -0
- package/dist/clean-arch/domain/events/consistency-event/events-enum.d.ts +27 -1
- package/dist/clean-arch/domain/events/consistency-event/events-enum.js +27 -1
- 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-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 +8 -8
- 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-entity-event.d.ts +24 -50
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-associated.d.ts +1 -1
- package/dist/clean-arch/domain/events/consistency-event/types/partner-service/role/role-entity-event.d.ts +9 -1
- 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 +14 -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-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-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/interfaces/country.d.ts +1 -0
- package/dist/clean-arch/infra/consistency-event-dispatcher/exchanges-enum.d.ts +27 -1
- package/dist/clean-arch/infra/consistency-event-dispatcher/exchanges-enum.js +28 -0
- package/dist/clean-arch/infra/queue/in-memory/in-memory-queue.d.ts +4 -0
- package/dist/clean-arch/infra/queue/in-memory/in-memory-queue.js +7 -0
- package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.d.ts +10 -0
- package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.js +45 -0
- package/dist/clean-arch/infra/queue/rabbitmq/amqp-lib.spec.js +38 -0
- package/dist/static/countries.js +241 -0
- package/package.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AuthorizerHeaders } from '../../../../../../infra/http/handle-authorizer-headers';
|
|
2
|
+
import { ConsistencyEventMessage } from '../../../consistency-event';
|
|
3
|
+
import { EventsName } from '../../../events-enum';
|
|
4
|
+
import { TenantEntityPayload } from './tenant-entity-event';
|
|
5
|
+
export interface TenantUpdatedMessage extends ConsistencyEventMessage {
|
|
6
|
+
eventName: EventsName.TENANT_UPDATED;
|
|
7
|
+
origin: AuthorizerHeaders;
|
|
8
|
+
payload: TenantEntityPayload[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AuthorizerHeaders } from '../../../../../../infra/http/handle-authorizer-headers';
|
|
2
|
+
import { ConsistencyEventMessage } from '../../../consistency-event';
|
|
3
|
+
import { EventsName } from '../../../events-enum';
|
|
4
|
+
import { TenantRoleEntityPayload } from './tenant-role-entity-event';
|
|
5
|
+
export interface TenantRoleUpdatedMessage extends ConsistencyEventMessage {
|
|
6
|
+
eventName: EventsName.TENANT_ROLE_UPDATED;
|
|
7
|
+
origin: AuthorizerHeaders;
|
|
8
|
+
payload: TenantRoleEntityPayload[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AuthorizerHeaders } from '../../../../../../infra/http/handle-authorizer-headers';
|
|
2
|
+
import { ConsistencyEventMessage } from '../../../consistency-event';
|
|
3
|
+
import { EventsName } from '../../../events-enum';
|
|
4
|
+
import { TenantUserEntityPayload } from './tenant-user-entity-event';
|
|
5
|
+
export interface TenantUserUpdatedMessage extends ConsistencyEventMessage {
|
|
6
|
+
eventName: EventsName.TENANT_USER_UPDATED;
|
|
7
|
+
origin: AuthorizerHeaders;
|
|
8
|
+
payload: TenantUserEntityPayload[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AuthorizerHeaders } from '../../../../../../infra/http/handle-authorizer-headers';
|
|
2
|
+
import { ConsistencyEventMessage } from '../../../consistency-event';
|
|
3
|
+
import { EventsName } from '../../../events-enum';
|
|
4
|
+
import { UserEntityPayload } from './user-entity-event';
|
|
5
|
+
export interface UserForgotPasswordMessage extends ConsistencyEventMessage {
|
|
6
|
+
eventName: EventsName.USER_FORGOT_PASSWORD;
|
|
7
|
+
origin: AuthorizerHeaders;
|
|
8
|
+
payload: UserEntityPayload[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AuthorizerHeaders } from '../../../../../../infra/http/handle-authorizer-headers';
|
|
2
|
+
import { ConsistencyEventMessage } from '../../../consistency-event';
|
|
3
|
+
import { EventsName } from '../../../events-enum';
|
|
4
|
+
import { UserTenantRoleEntityPayload } from './user-tenant-role-entity-event';
|
|
5
|
+
export interface UserTenantRolesCreatedMessage extends ConsistencyEventMessage {
|
|
6
|
+
eventName: EventsName.USER_TENANT_ROLES_CREATED;
|
|
7
|
+
origin: AuthorizerHeaders;
|
|
8
|
+
payload: UserTenantRoleEntityPayload[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AuthorizerHeaders } from '../../../../../../infra/http/handle-authorizer-headers';
|
|
2
|
+
import { ConsistencyEventMessage } from '../../../consistency-event';
|
|
3
|
+
import { EventsName } from '../../../events-enum';
|
|
4
|
+
import { UserTenantRoleEntityPayload } from './user-tenant-role-entity-event';
|
|
5
|
+
export interface UserTenantRolesUpdatedMessage extends ConsistencyEventMessage {
|
|
6
|
+
eventName: EventsName.USER_TENANT_ROLES_UPDATED;
|
|
7
|
+
origin: AuthorizerHeaders;
|
|
8
|
+
payload: UserTenantRoleEntityPayload[];
|
|
9
|
+
}
|
|
@@ -1,10 +1,36 @@
|
|
|
1
1
|
export declare const PREFIX = "consistency";
|
|
2
2
|
export declare const TYPE = "fanout";
|
|
3
3
|
export declare enum ExchangesEnum {
|
|
4
|
+
CONSISTENCY_ROLE_UPDATED = "consistency.portal-admin.role-updated.fanout",
|
|
5
|
+
CONSISTENCY_ROLE_CREATED = "consistency.portal-admin.role-created.fanout",
|
|
4
6
|
CONSISTENCY_USER_TEMPORARY_PASSWORD_GENERATED = "consistency.user-temporary-password-generated.fanout",
|
|
7
|
+
CONSISTENCY_USER_CREATED = "consistency.portal-admin.user-created.fanout",
|
|
8
|
+
CONSISTENCY_USER_ROLES_ASSOCIATED = "consistency.portal-admin.user-roles-associated.fanout",
|
|
9
|
+
CONSISTENCY_USER_ROLES_DISSOCIATED = "consistency.portal-admin.user-roles-dissociated.fanout",
|
|
10
|
+
CONSISTENCY_USER_UPDATED = "consistency.portal-admin.user-updated.fanout",
|
|
11
|
+
CONSISTENCY_USER_TENANT_ROLES_UPDATED = "consistency.portal-admin.user-tenant-roles-updated.fanout",
|
|
12
|
+
CONSISTENCY_USER_TENANT_ROLES_CREATED = "consistency.portal-admin.user-tenant-roles-created.fanout",
|
|
13
|
+
CONSISTENCY_USER_FORGOT_PASSWORD = "consistency.portal-admin.user-forgot-password.fanout",
|
|
14
|
+
CONSISTENCY_TENANT_CREATED = "consistency.portal-admin.tenant-created.fanout",
|
|
15
|
+
CONSISTENCY_TENANT_UPDATED = "consistency.portal-admin.tenant-updated.fanout",
|
|
16
|
+
CONSISTENCY_TENANT_ROLE_UPDATED = "consistency.portal-admin.tenant-role-updated.fanout",
|
|
17
|
+
CONSISTENCY_TENANT_USER_UPDATED = "consistency.portal-admin.tenant-user-updated.fanout",
|
|
18
|
+
CONSISTENCY_AUTHORIZATION_CREATED = "consistency.portal-admin.authorization-created.fanout",
|
|
19
|
+
CONSISTENCY_AUTHORIZATION_UPDATED = "consistency.portal-admin.authorization-updated.fanout",
|
|
20
|
+
CONSISTENCY_EXTERNAL_PROVIDER_CREATED = "consistency.portal-admin.external-provider-created.fanout",
|
|
21
|
+
CONSISTENCY_ADDRESS_CREATED = "consistency.partner-service.address-created.fanout",
|
|
22
|
+
CONSISTENCY_ADDRESS_UPSERTED = "consistency.partner-service.address-upserted.fanout",
|
|
23
|
+
CONSISTENCY_BRANCH_CREATED = "consistency.partner-service.branch-created.fanout",
|
|
24
|
+
CONSISTENCY_BRANCH_UPSERTED = "consistency.partner-service.branch-upserted.fanout",
|
|
5
25
|
CONSISTENCY_BRANCH_UPDATED = "consistency.partner-service.branch-updated.fanout",
|
|
26
|
+
CONSISTENCY_CONTACT_CREATED = "consistency.partner-service.contact-created.fanout",
|
|
27
|
+
CONSISTENCY_CONTACT_UPSERTED = "consistency.partner-service.contact-upserted.fanout",
|
|
28
|
+
CONSISTENCY_CUSTOMER_CREATED = "consistency.partner-service.customer-created.fanout",
|
|
29
|
+
CONSISTENCY_CUSTOMER_UPSERTED = "consistency.partner-service.customer-upserted.fanout",
|
|
6
30
|
CONSISTENCY_PARTNER_UPDATED = "consistency.partner-service.partner-updated.fanout",
|
|
7
31
|
CONSISTENCY_PARTNER_CREATED = "consistency.partner-service.partner-created.fanout",
|
|
8
32
|
CONSISTENCY_PARTNER_UPSERTED = "consistency.partner-service.partner-upserted.fanout",
|
|
9
|
-
CONSISTENCY_ROLE_ASSOCIATED = "consistency.partner-service.role-associated-to-partner.fanout"
|
|
33
|
+
CONSISTENCY_ROLE_ASSOCIATED = "consistency.partner-service.role-associated-to-partner.fanout",
|
|
34
|
+
CONSISTENCY_SUPPLIER_CREATED = "consistency.partner-service.supplier-created.fanout",
|
|
35
|
+
CONSISTENCY_ROLE_UPSERTED = "consistency.partner-service.role-upserted.fanout"
|
|
10
36
|
}
|
|
@@ -6,10 +6,38 @@ exports.PREFIX = 'consistency';
|
|
|
6
6
|
exports.TYPE = 'fanout';
|
|
7
7
|
var ExchangesEnum;
|
|
8
8
|
(function (ExchangesEnum) {
|
|
9
|
+
// portal-admin
|
|
10
|
+
ExchangesEnum["CONSISTENCY_ROLE_UPDATED"] = "consistency.portal-admin.role-updated.fanout";
|
|
11
|
+
ExchangesEnum["CONSISTENCY_ROLE_CREATED"] = "consistency.portal-admin.role-created.fanout";
|
|
9
12
|
ExchangesEnum["CONSISTENCY_USER_TEMPORARY_PASSWORD_GENERATED"] = "consistency.user-temporary-password-generated.fanout";
|
|
13
|
+
ExchangesEnum["CONSISTENCY_USER_CREATED"] = "consistency.portal-admin.user-created.fanout";
|
|
14
|
+
ExchangesEnum["CONSISTENCY_USER_ROLES_ASSOCIATED"] = "consistency.portal-admin.user-roles-associated.fanout";
|
|
15
|
+
ExchangesEnum["CONSISTENCY_USER_ROLES_DISSOCIATED"] = "consistency.portal-admin.user-roles-dissociated.fanout";
|
|
16
|
+
ExchangesEnum["CONSISTENCY_USER_UPDATED"] = "consistency.portal-admin.user-updated.fanout";
|
|
17
|
+
ExchangesEnum["CONSISTENCY_USER_TENANT_ROLES_UPDATED"] = "consistency.portal-admin.user-tenant-roles-updated.fanout";
|
|
18
|
+
ExchangesEnum["CONSISTENCY_USER_TENANT_ROLES_CREATED"] = "consistency.portal-admin.user-tenant-roles-created.fanout";
|
|
19
|
+
ExchangesEnum["CONSISTENCY_USER_FORGOT_PASSWORD"] = "consistency.portal-admin.user-forgot-password.fanout";
|
|
20
|
+
ExchangesEnum["CONSISTENCY_TENANT_CREATED"] = "consistency.portal-admin.tenant-created.fanout";
|
|
21
|
+
ExchangesEnum["CONSISTENCY_TENANT_UPDATED"] = "consistency.portal-admin.tenant-updated.fanout";
|
|
22
|
+
ExchangesEnum["CONSISTENCY_TENANT_ROLE_UPDATED"] = "consistency.portal-admin.tenant-role-updated.fanout";
|
|
23
|
+
ExchangesEnum["CONSISTENCY_TENANT_USER_UPDATED"] = "consistency.portal-admin.tenant-user-updated.fanout";
|
|
24
|
+
ExchangesEnum["CONSISTENCY_AUTHORIZATION_CREATED"] = "consistency.portal-admin.authorization-created.fanout";
|
|
25
|
+
ExchangesEnum["CONSISTENCY_AUTHORIZATION_UPDATED"] = "consistency.portal-admin.authorization-updated.fanout";
|
|
26
|
+
ExchangesEnum["CONSISTENCY_EXTERNAL_PROVIDER_CREATED"] = "consistency.portal-admin.external-provider-created.fanout";
|
|
27
|
+
// partner-service
|
|
28
|
+
ExchangesEnum["CONSISTENCY_ADDRESS_CREATED"] = "consistency.partner-service.address-created.fanout";
|
|
29
|
+
ExchangesEnum["CONSISTENCY_ADDRESS_UPSERTED"] = "consistency.partner-service.address-upserted.fanout";
|
|
30
|
+
ExchangesEnum["CONSISTENCY_BRANCH_CREATED"] = "consistency.partner-service.branch-created.fanout";
|
|
31
|
+
ExchangesEnum["CONSISTENCY_BRANCH_UPSERTED"] = "consistency.partner-service.branch-upserted.fanout";
|
|
10
32
|
ExchangesEnum["CONSISTENCY_BRANCH_UPDATED"] = "consistency.partner-service.branch-updated.fanout";
|
|
33
|
+
ExchangesEnum["CONSISTENCY_CONTACT_CREATED"] = "consistency.partner-service.contact-created.fanout";
|
|
34
|
+
ExchangesEnum["CONSISTENCY_CONTACT_UPSERTED"] = "consistency.partner-service.contact-upserted.fanout";
|
|
35
|
+
ExchangesEnum["CONSISTENCY_CUSTOMER_CREATED"] = "consistency.partner-service.customer-created.fanout";
|
|
36
|
+
ExchangesEnum["CONSISTENCY_CUSTOMER_UPSERTED"] = "consistency.partner-service.customer-upserted.fanout";
|
|
11
37
|
ExchangesEnum["CONSISTENCY_PARTNER_UPDATED"] = "consistency.partner-service.partner-updated.fanout";
|
|
12
38
|
ExchangesEnum["CONSISTENCY_PARTNER_CREATED"] = "consistency.partner-service.partner-created.fanout";
|
|
13
39
|
ExchangesEnum["CONSISTENCY_PARTNER_UPSERTED"] = "consistency.partner-service.partner-upserted.fanout";
|
|
14
40
|
ExchangesEnum["CONSISTENCY_ROLE_ASSOCIATED"] = "consistency.partner-service.role-associated-to-partner.fanout";
|
|
41
|
+
ExchangesEnum["CONSISTENCY_SUPPLIER_CREATED"] = "consistency.partner-service.supplier-created.fanout";
|
|
42
|
+
ExchangesEnum["CONSISTENCY_ROLE_UPSERTED"] = "consistency.partner-service.role-upserted.fanout";
|
|
15
43
|
})(ExchangesEnum || (exports.ExchangesEnum = ExchangesEnum = {}));
|
|
@@ -18,6 +18,10 @@ export default class QueueInMemory implements Queue {
|
|
|
18
18
|
* Armazena o evento na lista interna.
|
|
19
19
|
*/
|
|
20
20
|
publish(exchangeName: string, domainEvent: DomainEvent): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Armazena o evento na lista interna e retorna sucesso.
|
|
23
|
+
*/
|
|
24
|
+
publishWaitForConfirms(exchangeName: string, domainEvent: DomainEvent): Promise<boolean>;
|
|
21
25
|
}
|
|
22
26
|
type PropsQueue = {
|
|
23
27
|
exchangeName: string;
|
|
@@ -27,5 +27,12 @@ class QueueInMemory {
|
|
|
27
27
|
async publish(exchangeName, domainEvent) {
|
|
28
28
|
this.queues.push({ exchangeName, domainEvent });
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Armazena o evento na lista interna e retorna sucesso.
|
|
32
|
+
*/
|
|
33
|
+
async publishWaitForConfirms(exchangeName, domainEvent) {
|
|
34
|
+
this.queues.push({ exchangeName, domainEvent });
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
30
37
|
}
|
|
31
38
|
exports.default = QueueInMemory;
|
|
@@ -87,6 +87,16 @@ export default class AmqpQueue implements QueueConnection {
|
|
|
87
87
|
* tentar reenvio após reconexão.
|
|
88
88
|
*/
|
|
89
89
|
publish(exchangeName: string, domainEvent: DomainEvent, configs?: Record<string, any>): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Convenções aplicadas:
|
|
92
|
+
* - Routing key = `domainEvent.name`.
|
|
93
|
+
* - `persistent: true`.
|
|
94
|
+
* - TTL padrão de 14 dias quando `configs.expiration` é inválido.
|
|
95
|
+
*
|
|
96
|
+
* Se a publicação falhar retorna false. Não armazena mensagens em memória.
|
|
97
|
+
*/
|
|
98
|
+
publishWaitForConfirms(exchangeName: string, domainEvent: DomainEvent, configs?: Record<string, any>): Promise<boolean>;
|
|
99
|
+
private publishToServerWaitForConfirms;
|
|
90
100
|
private publishToServer;
|
|
91
101
|
private static delayOperation;
|
|
92
102
|
/**
|
|
@@ -213,6 +213,51 @@ class AmqpQueue {
|
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* Convenções aplicadas:
|
|
218
|
+
* - Routing key = `domainEvent.name`.
|
|
219
|
+
* - `persistent: true`.
|
|
220
|
+
* - TTL padrão de 14 dias quando `configs.expiration` é inválido.
|
|
221
|
+
*
|
|
222
|
+
* Se a publicação falhar retorna false. Não armazena mensagens em memória.
|
|
223
|
+
*/
|
|
224
|
+
async publishWaitForConfirms(exchangeName, domainEvent, configs) {
|
|
225
|
+
const buildedConfigs = configs || {};
|
|
226
|
+
const isValidExpiration = configs?.expiration === null || typeof configs?.expiration === 'number';
|
|
227
|
+
if (!isValidExpiration) {
|
|
228
|
+
const fourTeenDaysExpiration = 14 * 24 * 60 * 60 * 1000;
|
|
229
|
+
buildedConfigs.expiration = fourTeenDaysExpiration;
|
|
230
|
+
}
|
|
231
|
+
try {
|
|
232
|
+
const promises = [
|
|
233
|
+
this.publishToServerWaitForConfirms(exchangeName, domainEvent, buildedConfigs)
|
|
234
|
+
];
|
|
235
|
+
if (this.socketOptions?.timeoutSeconds) {
|
|
236
|
+
promises.push(AmqpQueue.delayOperation(this.socketOptions.timeoutSeconds));
|
|
237
|
+
}
|
|
238
|
+
const result = await Promise.race(promises);
|
|
239
|
+
if (result instanceof Error) {
|
|
240
|
+
throw result;
|
|
241
|
+
}
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
catch (err) {
|
|
245
|
+
this.logger.info({
|
|
246
|
+
message: `⛔ Error to publish messages to: ${domainEvent.name}.`,
|
|
247
|
+
error: err,
|
|
248
|
+
});
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
async publishToServerWaitForConfirms(exchangeName, domainEvent, buildedConfigs) {
|
|
253
|
+
const channel = await this.connection.createConfirmChannel();
|
|
254
|
+
channel.publish(exchangeName, domainEvent.name || '', Buffer.from(JSON.stringify(domainEvent)), {
|
|
255
|
+
persistent: true,
|
|
256
|
+
...buildedConfigs,
|
|
257
|
+
});
|
|
258
|
+
await channel.waitForConfirms();
|
|
259
|
+
await channel.close();
|
|
260
|
+
}
|
|
216
261
|
async publishToServer(exchangeName, domainEvent, buildedConfigs) {
|
|
217
262
|
const channel = await this.connection.createChannel();
|
|
218
263
|
channel.publish(exchangeName, domainEvent.name || '', Buffer.from(JSON.stringify(domainEvent)), {
|
|
@@ -24,10 +24,12 @@ const createChannel = () => ({
|
|
|
24
24
|
prefetch: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
25
25
|
publish: vitest_1.vi.fn(),
|
|
26
26
|
reject: vitest_1.vi.fn(),
|
|
27
|
+
waitForConfirms: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
27
28
|
});
|
|
28
29
|
const createConnection = (channel = createChannel()) => ({
|
|
29
30
|
close: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
30
31
|
createChannel: vitest_1.vi.fn().mockResolvedValue(channel),
|
|
32
|
+
createConfirmChannel: vitest_1.vi.fn().mockResolvedValue(channel),
|
|
31
33
|
on: vitest_1.vi.fn(),
|
|
32
34
|
removeAllListeners: vitest_1.vi.fn(),
|
|
33
35
|
});
|
|
@@ -353,6 +355,42 @@ const createLogger = () => ({
|
|
|
353
355
|
(0, vitest_1.expect)(queue['messagesInMemory']).toHaveLength(1);
|
|
354
356
|
});
|
|
355
357
|
});
|
|
358
|
+
(0, vitest_1.describe)('publishWaitForConfirms', () => {
|
|
359
|
+
(0, vitest_1.it)('should publish, wait for confirms and return true on success', async () => {
|
|
360
|
+
const channel = createChannel();
|
|
361
|
+
const connection = createConnection(channel);
|
|
362
|
+
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', createLogger());
|
|
363
|
+
const event = { name: 'domain.event', payload: { id: '1' } };
|
|
364
|
+
queue['connection'] = connection;
|
|
365
|
+
const result = await queue.publishWaitForConfirms('exchange', event, {
|
|
366
|
+
expiration: 'invalid',
|
|
367
|
+
headers: { source: 'spec' },
|
|
368
|
+
});
|
|
369
|
+
(0, vitest_1.expect)(channel.publish).toHaveBeenCalledWith('exchange', 'domain.event', Buffer.from(JSON.stringify(event)), {
|
|
370
|
+
persistent: true,
|
|
371
|
+
expiration: FOURTEEN_DAYS_IN_MS,
|
|
372
|
+
headers: { source: 'spec' },
|
|
373
|
+
});
|
|
374
|
+
(0, vitest_1.expect)(channel.waitForConfirms).toHaveBeenCalledTimes(1);
|
|
375
|
+
(0, vitest_1.expect)(channel.close).toHaveBeenCalledTimes(1);
|
|
376
|
+
(0, vitest_1.expect)(result).toBe(true);
|
|
377
|
+
});
|
|
378
|
+
(0, vitest_1.it)('should catch error, log it and return false if publishToServerWaitForConfirms fails', async () => {
|
|
379
|
+
const logger = createLogger();
|
|
380
|
+
const channel = createChannel();
|
|
381
|
+
const connection = createConnection(channel);
|
|
382
|
+
const queue = new amqp_lib_1.default(undefined, 'amqp://broker', logger);
|
|
383
|
+
const event = { name: 'domain.event' };
|
|
384
|
+
channel.waitForConfirms.mockRejectedValue(new Error('Broker nacked or channel closed'));
|
|
385
|
+
queue['connection'] = connection;
|
|
386
|
+
const result = await queue.publishWaitForConfirms('exchange', event);
|
|
387
|
+
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith({
|
|
388
|
+
message: '⛔ Error to publish messages to: domain.event.',
|
|
389
|
+
error: vitest_1.expect.any(Error),
|
|
390
|
+
});
|
|
391
|
+
(0, vitest_1.expect)(result).toBe(false);
|
|
392
|
+
});
|
|
393
|
+
});
|
|
356
394
|
(0, vitest_1.describe)('createConsumers', () => {
|
|
357
395
|
(0, vitest_1.it)('should create exchanges, queues and bindings', async () => {
|
|
358
396
|
const channel = createChannel();
|