@open-rlb/nestjs-amqp 2.0.4 β 2.0.6
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/README.md +4 -2
- package/amqp-lib/config/rabbitmq.config.d.ts +6 -0
- package/modules/acl/const.d.ts +0 -1
- package/modules/acl/const.js +0 -1
- package/modules/acl/const.js.map +1 -1
- package/modules/acl/models.d.ts +5 -7
- package/modules/acl/repository/acl-action.repository.d.ts +1 -5
- package/modules/acl/repository/acl-action.repository.js.map +1 -1
- package/modules/acl/repository/acl-role.repository.d.ts +1 -5
- package/modules/acl/repository/acl-role.repository.js.map +1 -1
- package/modules/acl/services/acl-management.service.d.ts +2 -2
- package/modules/acl/services/acl-management.service.js +17 -20
- package/modules/acl/services/acl-management.service.js.map +1 -1
- package/modules/acl/services/acl.service.d.ts +1 -2
- package/modules/acl/services/acl.service.js +5 -21
- package/modules/acl/services/acl.service.js.map +1 -1
- package/modules/broker/broker.module.d.ts +2 -4
- package/modules/broker/broker.module.js +23 -5
- package/modules/broker/broker.module.js.map +1 -1
- package/modules/broker/config/decorator-paths.d.ts +1 -0
- package/modules/broker/config/decorator-paths.js +34 -4
- package/modules/broker/config/decorator-paths.js.map +1 -1
- package/modules/broker/config/route-discovery.config.d.ts +2 -0
- package/modules/broker/const.d.ts +1 -0
- package/modules/broker/const.js +2 -1
- package/modules/broker/const.js.map +1 -1
- package/modules/broker/decorators/broker-action.decorator.d.ts +2 -1
- package/modules/broker/decorators/broker-action.decorator.js +2 -2
- package/modules/broker/decorators/broker-action.decorator.js.map +1 -1
- package/modules/broker/services/broker.service.js +1 -1
- package/modules/broker/services/broker.service.js.map +1 -1
- package/modules/broker/services/metadata-scanner.service.js +11 -2
- package/modules/broker/services/metadata-scanner.service.js.map +1 -1
- package/modules/broker/services/route-discovery-publisher.service.js +7 -5
- package/modules/broker/services/route-discovery-publisher.service.js.map +1 -1
- package/modules/gateway-admin/config/gateway-admin.config.d.ts +4 -0
- package/modules/gateway-admin/const.d.ts +1 -1
- package/modules/gateway-admin/const.js +1 -1
- package/modules/gateway-admin/const.js.map +1 -1
- package/modules/gateway-admin/gateway-admin.module.d.ts +7 -1
- package/modules/gateway-admin/gateway-admin.module.js +13 -0
- package/modules/gateway-admin/gateway-admin.module.js.map +1 -1
- package/modules/gateway-admin/repository/auth-provider.repository.d.ts +3 -4
- package/modules/gateway-admin/repository/auth-provider.repository.js.map +1 -1
- package/modules/gateway-admin/services/gateway-auth.service.d.ts +3 -4
- package/modules/gateway-admin/services/gateway-auth.service.js +15 -23
- package/modules/gateway-admin/services/gateway-auth.service.js.map +1 -1
- package/modules/gateway-admin/services/gateway-metrics.service.d.ts +3 -0
- package/modules/gateway-admin/services/gateway-metrics.service.js +9 -0
- package/modules/gateway-admin/services/gateway-metrics.service.js.map +1 -1
- package/modules/gateway-admin/services/route-sync.service.d.ts +3 -1
- package/modules/gateway-admin/services/route-sync.service.js +14 -8
- package/modules/gateway-admin/services/route-sync.service.js.map +1 -1
- package/modules/proxy/services/http-handler.service.d.ts +3 -0
- package/modules/proxy/services/http-handler.service.js +27 -3
- package/modules/proxy/services/http-handler.service.js.map +1 -1
- package/package.json +5 -1
- package/schematics/nest-add/files/acl/src/cache/in-memory-acl-store.ts +54 -0
- package/schematics/nest-add/files/acl/src/modules/database/repository/acl.repository.ts +74 -0
- package/schematics/nest-add/files/db-core/src/modules/database/repository/in-memory-collection.ts +122 -0
- package/schematics/nest-add/files/gateway-admin/src/modules/database/repository/gateway.repository.ts +151 -0
- package/schematics/nest-add/files/gateway-admin/src/modules/database/repository/route-sync.repository.ts +15 -0
- package/schematics/nest-add/files/skills/rlb-amqp/SKILL.md +33 -5
- package/schematics/nest-add/files/skills/rlb-amqp/references/config-schema.md +182 -93
- package/schematics/nest-add/files/skills/rlb-amqp/references/gotchas.md +129 -79
- package/schematics/nest-add/files/skills/rlb-amqp-acl/SKILL.md +185 -0
- package/schematics/nest-add/files/skills/rlb-amqp-add-action/SKILL.md +87 -2
- package/schematics/nest-add/files/skills/rlb-amqp-add-route/SKILL.md +82 -19
- package/schematics/nest-add/files/skills/rlb-amqp-add-ws-event/SKILL.md +40 -18
- package/schematics/nest-add/files/skills/rlb-amqp-gateway-admin/SKILL.md +244 -0
- package/schematics/nest-add/files/skills/rlb-amqp-scaffold/SKILL.md +177 -42
- package/schematics/nest-add/index.js +612 -142
- package/schematics/nest-add/index.js.map +1 -1
- package/schematics/nest-add/index.ts +673 -241
- package/schematics/nest-add/init.schema.d.ts +10 -1
- package/schematics/nest-add/init.schema.ts +29 -3
- package/schematics/nest-add/schema.json +37 -8
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# @open-rlb/nestjs-amqp
|
|
2
2
|
|
|
3
|
+
> π **Full English documentation:** [`docs/`](./docs/README.md) β paginated guides for the Broker, Gateway, ACL and Gateway-admin modules, plus Getting Started and Troubleshooting. (This README is the older Italian overview.)
|
|
4
|
+
|
|
3
5
|
Libreria **NestJS** che fornisce un'astrazione di alto livello su **RabbitMQ/AMQP**, piΓΉ un **API Gateway HTTP/WebSocket** che traduce le richieste esterne in messaggi sul broker.
|
|
4
6
|
|
|
5
7
|
Γ il cuore di un'architettura a microservizi event-driven: i servizi comunicano tra loro via RabbitMQ con semplici decoratori, e un gateway espone tutto al mondo esterno via HTTP/WS, il tutto guidato dalla configurazione YAML.
|
|
@@ -531,7 +533,7 @@ ws.send(JSON.stringify({ action: 'unsubscribe', topic: 'orders' }));
|
|
|
531
533
|
|
|
532
534
|
## Moduli opzionali `AclModule` e `GatewayAdminModule` (persistenza fornita dal consumer)
|
|
533
535
|
|
|
534
|
-
Due moduli **opzionali** per gestire ACL e configurazione gateway a database. **La lib non dipende da Mongo/Redis**: definisce i servizi/cache + i **contratti repository (classi astratte)** e l'interfaccia `AclCacheStore`; **il consumer fornisce le implementazioni** (es. Mongo + Redis). Esempio completo e funzionante: **[`
|
|
536
|
+
Due moduli **opzionali** per gestire ACL e configurazione gateway a database. **La lib non dipende da Mongo/Redis**: definisce i servizi/cache + i **contratti repository (classi astratte)** e l'interfaccia `AclCacheStore`; **il consumer fornisce le implementazioni** (es. Mongo + Redis). Esempio completo e funzionante: **[`sample/config-sample/gateway-in-memory`](sample/config-sample/gateway-in-memory)** β per restare autonomo usa **repository in-RAM** (`InMemory*Repository`) e una **cache L2 in-RAM** (`InMemoryAclStore`), cosΓ¬ gira solo con RabbitMQ; in produzione si rimpiazzano con implementazioni Mongo/Redis senza toccare la lib.
|
|
535
537
|
|
|
536
538
|
### `AclModule` β ACL DB-backed con cache 2-livelli
|
|
537
539
|
|
|
@@ -575,7 +577,7 @@ export class AppModule {}
|
|
|
575
577
|
- `canUserDoGtw(roles, userId)` β **filtro primario del gateway** (role-based, OR): vero se l'utente ha almeno uno dei ruoli, resource-agnostico. Γ quello usato da `checkRoles` su `path.roles`. RPC `acl-can-user-do-gtw`.
|
|
576
578
|
- `canUserDo(roles, userId, resourceId)` β **lato microservizio**: vero se un grant **globale** (senza `resourceId`) **oppure** legato a quella risorsa dΓ all'utente il ruolo (`roles` accetta `string | string[]`). La risorsa Γ¨ nota solo al ms, che chiama l'RPC `acl-can-user-do` con payload `{ userId, resource, roles }`.
|
|
577
579
|
- **Invalidazione**: ogni mutazione (grant/role/action) svuota L1 e L2 β la prossima verifica pesca dal DB. Senza L2, la coerenza multi-istanza Γ¨ limitata dal `ramTtlMs`.
|
|
578
|
-
- **Cache L2 pluggable**: il consumer fornisce `{ provide: RLB_ACL_CACHE_STORE, useClass/useExisting }` che implementa `AclCacheStore` (`get/set/del/keys`). In `gateway-
|
|
580
|
+
- **Cache L2 pluggable**: il consumer fornisce `{ provide: RLB_ACL_CACHE_STORE, useClass/useExisting }` che implementa `AclCacheStore` (`get/set/del/keys`). In `gateway-in-memory` Γ¨ `InMemoryAclStore` (mock in RAM, nessuna dipendenza esterna); in produzione plugga uno store condiviso (es. Redis).
|
|
579
581
|
|
|
580
582
|
### `GatewayAdminModule` β CRUD rotte/auth + liste + metriche
|
|
581
583
|
|
|
@@ -39,6 +39,12 @@ export interface RabbitMQConfig {
|
|
|
39
39
|
replyQueues?: {
|
|
40
40
|
[key: string]: string;
|
|
41
41
|
};
|
|
42
|
+
routeDiscovery?: {
|
|
43
|
+
serviceName?: string;
|
|
44
|
+
publishOnBoot?: boolean;
|
|
45
|
+
exchange?: string;
|
|
46
|
+
queue?: string;
|
|
47
|
+
};
|
|
42
48
|
}
|
|
43
49
|
export interface ConnectionInitOptions {
|
|
44
50
|
wait?: boolean;
|
package/modules/acl/const.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ export declare const ACL_ACTIONS: {
|
|
|
5
5
|
readonly canUserDo: "acl-can-user-do";
|
|
6
6
|
readonly canUserDoGtw: "acl-can-user-do-gtw";
|
|
7
7
|
readonly listResourcesByUser: "acl-list-resources-by-user";
|
|
8
|
-
readonly listByUser: "acl-list-by-user";
|
|
9
8
|
readonly grant: "acl-grant";
|
|
10
9
|
readonly revoke: "acl-revoke";
|
|
11
10
|
readonly invalidate: "acl-invalidate";
|
package/modules/acl/const.js
CHANGED
package/modules/acl/const.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/acl/const.ts"],"names":[],"mappings":";;;AAGa,QAAA,SAAS,GAAG,SAAS,CAAC;AAEtB,QAAA,eAAe,GAAG,iBAAiB,CAAC;AAEpC,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAG5C,QAAA,WAAW,GAAG;IAEzB,SAAS,EAAE,iBAAiB;IAE5B,YAAY,EAAE,qBAAqB;IAEnC,mBAAmB,EAAE,4BAA4B;
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/acl/const.ts"],"names":[],"mappings":";;;AAGa,QAAA,SAAS,GAAG,SAAS,CAAC;AAEtB,QAAA,eAAe,GAAG,iBAAiB,CAAC;AAEpC,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAG5C,QAAA,WAAW,GAAG;IAEzB,SAAS,EAAE,iBAAiB;IAE5B,YAAY,EAAE,qBAAqB;IAEnC,mBAAmB,EAAE,4BAA4B;IACjD,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IACpB,UAAU,EAAE,gBAAgB;IAE5B,YAAY,EAAE,mBAAmB;IACjC,YAAY,EAAE,mBAAmB;IACjC,UAAU,EAAE,iBAAiB;IAC7B,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EAAE,iBAAiB;IAC7B,UAAU,EAAE,iBAAiB;IAC7B,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,cAAc;CACf,CAAC"}
|
package/modules/acl/models.d.ts
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
export interface AclAction
|
|
2
|
-
_id?: Id;
|
|
1
|
+
export interface AclAction {
|
|
3
2
|
name: string;
|
|
4
3
|
description?: string;
|
|
5
4
|
}
|
|
6
|
-
export interface AclRole
|
|
7
|
-
_id?: Id;
|
|
5
|
+
export interface AclRole {
|
|
8
6
|
name: string;
|
|
9
7
|
description?: string;
|
|
10
8
|
actions: string[];
|
|
11
9
|
}
|
|
12
10
|
export interface AclGrant<Id = string> {
|
|
13
11
|
_id?: Id;
|
|
14
|
-
resourceBusinessId?: string;
|
|
15
|
-
friendlyName?: string;
|
|
16
12
|
userId: string;
|
|
17
13
|
resourceId?: string;
|
|
14
|
+
companyId?: string;
|
|
15
|
+
friendlyName?: string;
|
|
18
16
|
roles: string[];
|
|
19
17
|
}
|
|
20
18
|
export interface AclResource {
|
|
@@ -23,6 +21,6 @@ export interface AclResource {
|
|
|
23
21
|
friendlyName?: string;
|
|
24
22
|
}
|
|
25
23
|
export interface AclResourceGroup {
|
|
26
|
-
|
|
24
|
+
companyId?: string;
|
|
27
25
|
resources: AclResource[];
|
|
28
26
|
}
|
|
@@ -3,15 +3,11 @@ import { AclAction } from '../models';
|
|
|
3
3
|
export declare abstract class AclActionRepository {
|
|
4
4
|
abstract insert(model: AclAction): Promise<AclAction>;
|
|
5
5
|
abstract insertMany(models: AclAction[]): Promise<AclAction[]>;
|
|
6
|
-
abstract
|
|
6
|
+
abstract findByName(name: string): Promise<AclAction>;
|
|
7
7
|
abstract findOne(filter: Record<string, any>): Promise<AclAction>;
|
|
8
|
-
abstract upsertById(id: string, model: Partial<AclAction>): Promise<AclAction>;
|
|
9
8
|
abstract upsertOne(filter: Record<string, any>, model: Partial<AclAction>): Promise<AclAction>;
|
|
10
|
-
abstract updateById(id: string, model: Partial<AclAction>): Promise<AclAction>;
|
|
11
9
|
abstract updateOne(filter: Record<string, any>, model: Partial<AclAction>): Promise<AclAction>;
|
|
12
|
-
abstract mergeById(id: string, model: Partial<AclAction>): Promise<AclAction>;
|
|
13
10
|
abstract mergeOne(filter: Record<string, any>, model: Partial<AclAction>): Promise<AclAction>;
|
|
14
|
-
abstract removeById(id: string): Promise<AclAction>;
|
|
15
11
|
abstract removeOne(filter: Record<string, any>): Promise<AclAction>;
|
|
16
12
|
abstract removeMany(filter: Record<string, any>): Promise<number>;
|
|
17
13
|
abstract filter(filter: Record<string, any>): Promise<AclAction[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl-action.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/acl/repository/acl-action.repository.ts"],"names":[],"mappings":";;;AAQA,MAAsB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"acl-action.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/acl/repository/acl-action.repository.ts"],"names":[],"mappings":";;;AAQA,MAAsB,mBAAmB;CAgBxC;AAhBD,kDAgBC"}
|
|
@@ -3,14 +3,10 @@ import { AclRole } from '../models';
|
|
|
3
3
|
export declare abstract class AclRoleRepository {
|
|
4
4
|
abstract insert(model: AclRole): Promise<AclRole>;
|
|
5
5
|
abstract insertMany(models: AclRole[]): Promise<AclRole[]>;
|
|
6
|
-
abstract
|
|
6
|
+
abstract findByName(name: string): Promise<AclRole>;
|
|
7
7
|
abstract findOne(filter: Record<string, any>): Promise<AclRole>;
|
|
8
|
-
abstract upsertById(id: string, model: Partial<AclRole>): Promise<AclRole>;
|
|
9
8
|
abstract upsertOne(filter: Record<string, any>, model: Partial<AclRole>): Promise<AclRole>;
|
|
10
|
-
abstract updateById(id: string, model: Partial<AclRole>): Promise<AclRole>;
|
|
11
9
|
abstract updateOne(filter: Record<string, any>, model: Partial<AclRole>): Promise<AclRole>;
|
|
12
|
-
abstract mergeById(id: string, model: Partial<AclRole>): Promise<AclRole>;
|
|
13
|
-
abstract removeById(id: string): Promise<AclRole>;
|
|
14
10
|
abstract removeOne(filter: Record<string, any>): Promise<AclRole>;
|
|
15
11
|
abstract filter(filter: Record<string, any>): Promise<AclRole[]>;
|
|
16
12
|
abstract filterPaginated(filter: Record<string, any>, page?: number, limit?: number): Promise<PaginationModel<AclRole>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl-role.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/acl/repository/acl-role.repository.ts"],"names":[],"mappings":";;;AAQA,MAAsB,iBAAiB;
|
|
1
|
+
{"version":3,"file":"acl-role.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/acl/repository/acl-role.repository.ts"],"names":[],"mappings":";;;AAQA,MAAsB,iBAAiB;CAetC;AAfD,8CAeC"}
|
|
@@ -11,8 +11,8 @@ export declare class AclManagementService {
|
|
|
11
11
|
private readonly cache;
|
|
12
12
|
private readonly logger;
|
|
13
13
|
constructor(actions: AclActionRepository, roles: AclRoleRepository, grants: AclGrantRepository, cache: AclCacheService);
|
|
14
|
-
grant(userId: string, roles: string[], resourceId?: string,
|
|
15
|
-
revoke(userId: string, resourceId?: string,
|
|
14
|
+
grant(userId: string, roles: string[], resourceId?: string, companyId?: string, friendlyName?: string): Promise<AclGrant>;
|
|
15
|
+
revoke(userId: string, roles: string[], resourceId?: string, companyId?: string): Promise<AclGrant | null>;
|
|
16
16
|
private findGrant;
|
|
17
17
|
upsertAction(name: string, description?: string): Promise<AclAction>;
|
|
18
18
|
deleteAction(name: string): Promise<AclAction>;
|
|
@@ -30,7 +30,7 @@ let AclManagementService = AclManagementService_1 = class AclManagementService {
|
|
|
30
30
|
this.cache = cache;
|
|
31
31
|
this.logger = new common_1.Logger(AclManagementService_1.name);
|
|
32
32
|
}
|
|
33
|
-
async grant(userId, roles, resourceId,
|
|
33
|
+
async grant(userId, roles, resourceId, companyId, friendlyName) {
|
|
34
34
|
if (!userId)
|
|
35
35
|
throw new common_2.BadRequestError('userId is required');
|
|
36
36
|
if (!roles?.length)
|
|
@@ -42,32 +42,28 @@ let AclManagementService = AclManagementService_1 = class AclManagementService {
|
|
|
42
42
|
const merged = Array.from(new Set([...(existing.roles || []), ...roles]));
|
|
43
43
|
result = await this.grants.updateById(existing._id, {
|
|
44
44
|
roles: merged,
|
|
45
|
-
|
|
45
|
+
companyId: companyId ?? existing.companyId,
|
|
46
46
|
friendlyName: friendlyName ?? existing.friendlyName,
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
|
-
result = await this.grants.insert({ userId, roles: Array.from(new Set(roles)), resourceId,
|
|
50
|
+
result = await this.grants.insert({ userId, roles: Array.from(new Set(roles)), resourceId, companyId, friendlyName });
|
|
51
51
|
}
|
|
52
52
|
await this.cache.invalidate(userId);
|
|
53
53
|
return result;
|
|
54
54
|
}
|
|
55
|
-
async revoke(userId, resourceId,
|
|
55
|
+
async revoke(userId, roles, resourceId, companyId) {
|
|
56
56
|
if (!userId)
|
|
57
57
|
throw new common_2.BadRequestError('userId is required');
|
|
58
|
+
if (!roles?.length)
|
|
59
|
+
throw new common_2.BadRequestError('roles are required');
|
|
58
60
|
const existing = await this.findGrant(userId, resourceId);
|
|
59
61
|
if (!existing)
|
|
60
62
|
return null;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
? await this.grants.updateById(existing._id, { roles: remaining })
|
|
66
|
-
: await this.grants.removeById(existing._id);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
result = await this.grants.removeById(existing._id);
|
|
70
|
-
}
|
|
63
|
+
const remaining = (existing.roles || []).filter((r) => !roles.includes(r));
|
|
64
|
+
const result = remaining.length
|
|
65
|
+
? await this.grants.updateById(existing._id, { roles: remaining })
|
|
66
|
+
: await this.grants.removeById(existing._id);
|
|
71
67
|
await this.cache.invalidate(userId);
|
|
72
68
|
return result;
|
|
73
69
|
}
|
|
@@ -96,7 +92,7 @@ let AclManagementService = AclManagementService_1 = class AclManagementService {
|
|
|
96
92
|
async getAction(name) {
|
|
97
93
|
if (!name)
|
|
98
94
|
throw new common_2.BadRequestError('name is required');
|
|
99
|
-
return this.actions.
|
|
95
|
+
return this.actions.findByName(name);
|
|
100
96
|
}
|
|
101
97
|
async upsertRole(name, actions, description) {
|
|
102
98
|
if (!name)
|
|
@@ -122,7 +118,7 @@ let AclManagementService = AclManagementService_1 = class AclManagementService {
|
|
|
122
118
|
async getRole(name) {
|
|
123
119
|
if (!name)
|
|
124
120
|
throw new common_2.BadRequestError('name is required');
|
|
125
|
-
return this.roles.
|
|
121
|
+
return this.roles.findByName(name);
|
|
126
122
|
}
|
|
127
123
|
async getActionsByNames(names) {
|
|
128
124
|
return this.roles.getActionsByNames(names);
|
|
@@ -146,7 +142,7 @@ __decorate([
|
|
|
146
142
|
__param(0, (0, broker_1.BrokerParam)('body', 'userId')),
|
|
147
143
|
__param(1, (0, broker_1.BrokerParam)('body', 'roles')),
|
|
148
144
|
__param(2, (0, broker_1.BrokerParam)('body', 'resourceId')),
|
|
149
|
-
__param(3, (0, broker_1.BrokerParam)('body', '
|
|
145
|
+
__param(3, (0, broker_1.BrokerParam)('body', 'companyId')),
|
|
150
146
|
__param(4, (0, broker_1.BrokerParam)('body', 'friendlyName')),
|
|
151
147
|
__metadata("design:type", Function),
|
|
152
148
|
__metadata("design:paramtypes", [String, Array, String, String, String]),
|
|
@@ -155,10 +151,11 @@ __decorate([
|
|
|
155
151
|
__decorate([
|
|
156
152
|
(0, broker_1.BrokerAction)(const_1.ACL_TOPIC, const_1.ACL_ACTIONS.revoke, 'rpc'),
|
|
157
153
|
__param(0, (0, broker_1.BrokerParam)('body', 'userId')),
|
|
158
|
-
__param(1, (0, broker_1.BrokerParam)('body', '
|
|
159
|
-
__param(2, (0, broker_1.BrokerParam)('body', '
|
|
154
|
+
__param(1, (0, broker_1.BrokerParam)('body', 'roles')),
|
|
155
|
+
__param(2, (0, broker_1.BrokerParam)('body', 'resourceId')),
|
|
156
|
+
__param(3, (0, broker_1.BrokerParam)('body', 'companyId')),
|
|
160
157
|
__metadata("design:type", Function),
|
|
161
|
-
__metadata("design:paramtypes", [String, String,
|
|
158
|
+
__metadata("design:paramtypes", [String, Array, String, String]),
|
|
162
159
|
__metadata("design:returntype", Promise)
|
|
163
160
|
], AclManagementService.prototype, "revoke", null);
|
|
164
161
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl-management.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/acl/services/acl-management.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,4CAAmE;AACnE,yCAAyD;AACzD,kEAA6D;AAC7D,oCAAkD;AAElD,+EAA0E;AAC1E,6EAAwE;AACxE,2EAAsE;AAG/D,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAG/B,YACmB,OAA4B,EAC5B,KAAwB,EACxB,MAA0B,EAC1B,KAAsB;QAHtB,YAAO,GAAP,OAAO,CAAqB;QAC5B,UAAK,GAAL,KAAK,CAAmB;QACxB,WAAM,GAAN,MAAM,CAAoB;QAC1B,UAAK,GAAL,KAAK,CAAiB;QANxB,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAO5D,CAAC;
|
|
1
|
+
{"version":3,"file":"acl-management.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/acl/services/acl-management.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,4CAAmE;AACnE,yCAAyD;AACzD,kEAA6D;AAC7D,oCAAkD;AAElD,+EAA0E;AAC1E,6EAAwE;AACxE,2EAAsE;AAG/D,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAG/B,YACmB,OAA4B,EAC5B,KAAwB,EACxB,MAA0B,EAC1B,KAAsB;QAHtB,YAAO,GAAP,OAAO,CAAqB;QAC5B,UAAK,GAAL,KAAK,CAAmB;QACxB,WAAM,GAAN,MAAM,CAAoB;QAC1B,UAAK,GAAL,KAAK,CAAiB;QANxB,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAO5D,CAAC;IAOC,AAAN,KAAK,CAAC,KAAK,CACsB,MAAc,EACf,KAAe,EACV,UAAmB,EACpB,SAAkB,EACf,YAAqB;QAE1D,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,wBAAe,CAAC,oBAAoB,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,EAAE,MAAM;YAAE,MAAM,IAAI,wBAAe,CAAC,oBAAoB,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAGnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,MAAgB,CAAC;QACrB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAI,EAAE;gBACnD,KAAK,EAAE,MAAM;gBACb,SAAS,EAAE,SAAS,IAAI,QAAQ,CAAC,SAAS;gBAC1C,YAAY,EAAE,YAAY,IAAI,QAAQ,CAAC,YAAY;aACpD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;QACxH,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CACqB,MAAc,EACf,KAAe,EACV,UAAmB,EACpB,SAAkB;QAEpD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,wBAAe,CAAC,oBAAoB,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,EAAE,MAAM;YAAE,MAAM,IAAI,wBAAe,CAAC,oBAAoB,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAG3B,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM;YAC7B,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YACnE,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAI,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAGO,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,UAAmB;QACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAKK,AAAN,KAAK,CAAC,YAAY,CACa,IAAY,EACL,WAAoB;QAExD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,MAAM,KAAK,GAAuB,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAClG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY,CAA8B,IAAY;QAC1D,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CACc,IAAa,EACZ,KAAc;QAE5C,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAA8B,IAAY;QACvD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAKK,AAAN,KAAK,CAAC,UAAU,CACe,IAAY,EACT,OAAiB,EACb,WAAoB;QAExD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,EAAE,MAAM;YAAE,MAAM,IAAI,wBAAe,CAAC,sBAAsB,CAAC,CAAC;QACxE,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,KAAK,GAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAA8B,IAAY;QAGxD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CACgB,IAAa,EACZ,KAAc;QAE5C,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAA8B,IAAY;QACrD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAAe;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,KAAe;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,wBAAe,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAe;QAC5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;CACF,CAAA;AAlKY,oDAAoB;AAezB;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,KAAK,EAAE,KAAK,CAAC;IAE/C,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC7B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACjC,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAChC,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,cAAc,CAAC,CAAA;;;;iDAqBrC;AAGK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,MAAM,EAAE,KAAK,CAAC;IAEhD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC7B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACjC,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,WAAW,CAAC,CAAA;;;;kDAclC;AAWK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,YAAY,EAAE,KAAK,CAAC;IAEtD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,aAAa,CAAC,CAAA;;;;wDAOpC;AAGK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,YAAY,EAAE,KAAK,CAAC;IACrC,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;;;wDAK9C;AAGK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,UAAU,EAAE,KAAK,CAAC;IAEpD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;;;;uDAG9B;AAGK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,SAAS,EAAE,KAAK,CAAC;IACrC,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;;;qDAG3C;AAKK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,UAAU,EAAE,KAAK,CAAC;IAEpD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC9B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,aAAa,CAAC,CAAA;;;;sDASpC;AAGK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,UAAU,EAAE,KAAK,CAAC;IACrC,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;;;sDAO5C;AAGK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;IAElD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;;;;qDAG9B;AAGK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,OAAO,EAAE,KAAK,CAAC;IACrC,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;;;mDAGzC;+BAjJU,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAKiB,2CAAmB;QACrB,uCAAiB;QAChB,yCAAkB;QACnB,mCAAe;GAP9B,oBAAoB,CAkKhC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IAclRoleService } from '../../proxy/services/acl.service';
|
|
2
2
|
import { AclCacheService } from '../cache/acl-cache.service';
|
|
3
|
-
import {
|
|
3
|
+
import { AclResourceGroup } from '../models';
|
|
4
4
|
import { AclGrantRepository } from '../repository/acl-grant.repository';
|
|
5
5
|
import { AclRoleRepository } from '../repository/acl-role.repository';
|
|
6
6
|
export declare class AclService implements IAclRoleService {
|
|
@@ -15,5 +15,4 @@ export declare class AclService implements IAclRoleService {
|
|
|
15
15
|
handleCanUserDoGtw(userId: string, roles?: string | string[]): Promise<boolean>;
|
|
16
16
|
handleCanUserDo(userId: string, resource: string, roles?: string | string[]): Promise<boolean>;
|
|
17
17
|
listResourcesByUser(userId: string): Promise<AclResourceGroup[]>;
|
|
18
|
-
listByUser(userId: string): Promise<AclGrant[]>;
|
|
19
18
|
}
|
|
@@ -83,14 +83,14 @@ let AclService = AclService_1 = class AclService {
|
|
|
83
83
|
const acls = await this.grants.filter({ userId });
|
|
84
84
|
const grouped = {};
|
|
85
85
|
for (const item of acls || []) {
|
|
86
|
-
const
|
|
87
|
-
if (!grouped[
|
|
88
|
-
grouped[
|
|
86
|
+
const companyKey = item.companyId ?? '';
|
|
87
|
+
if (!grouped[companyKey]) {
|
|
88
|
+
grouped[companyKey] = { companyId: item.companyId, resources: [] };
|
|
89
89
|
}
|
|
90
|
-
let resource = grouped[
|
|
90
|
+
let resource = grouped[companyKey].resources.find((r) => r.resourceId === item.resourceId);
|
|
91
91
|
if (!resource) {
|
|
92
92
|
resource = { resourceId: item.resourceId, actions: [], friendlyName: item.friendlyName };
|
|
93
|
-
grouped[
|
|
93
|
+
grouped[companyKey].resources.push(resource);
|
|
94
94
|
}
|
|
95
95
|
const roleNames = Array.isArray(item.roles) ? item.roles : [item.roles];
|
|
96
96
|
const actions = await this.roles.getActionsByNames(roleNames);
|
|
@@ -104,15 +104,6 @@ let AclService = AclService_1 = class AclService {
|
|
|
104
104
|
throw error;
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
-
async listByUser(userId) {
|
|
108
|
-
try {
|
|
109
|
-
return await this.grants.filter({ userId });
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
this.logger.error(error);
|
|
113
|
-
throw error;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
107
|
};
|
|
117
108
|
exports.AclService = AclService;
|
|
118
109
|
__decorate([
|
|
@@ -139,13 +130,6 @@ __decorate([
|
|
|
139
130
|
__metadata("design:paramtypes", [String]),
|
|
140
131
|
__metadata("design:returntype", Promise)
|
|
141
132
|
], AclService.prototype, "listResourcesByUser", null);
|
|
142
|
-
__decorate([
|
|
143
|
-
(0, broker_1.BrokerAction)(const_1.ACL_TOPIC, const_1.ACL_ACTIONS.listByUser, 'rpc'),
|
|
144
|
-
__param(0, (0, broker_1.BrokerParam)('body', 'userId')),
|
|
145
|
-
__metadata("design:type", Function),
|
|
146
|
-
__metadata("design:paramtypes", [String]),
|
|
147
|
-
__metadata("design:returntype", Promise)
|
|
148
|
-
], AclService.prototype, "listByUser", null);
|
|
149
133
|
exports.AclService = AclService = AclService_1 = __decorate([
|
|
150
134
|
(0, common_1.Injectable)(),
|
|
151
135
|
__metadata("design:paramtypes", [acl_grant_repository_1.AclGrantRepository,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/acl/services/acl.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"acl.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/acl/services/acl.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,4CAAoD;AACpD,yCAAyD;AAEzD,kEAA6D;AAC7D,oCAAkD;AAElD,6EAAwE;AACxE,2EAAsE;AAG/D,IAAM,UAAU,kBAAhB,MAAM,UAAU;IAGrB,YACmB,MAA0B,EAC1B,KAAwB,EACxB,KAAsB;QAFtB,WAAM,GAAN,MAAM,CAAoB;QAC1B,UAAK,GAAL,KAAK,CAAmB;QACxB,UAAK,GAAL,KAAK,CAAiB;QALxB,WAAM,GAAG,IAAI,eAAM,CAAC,YAAU,CAAC,IAAI,CAAC,CAAC;IAMlD,CAAC;IAEG,MAAM,CAAC,KAAwB;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAwB,EAAE,MAAc;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAwB,EAAE,MAAc,EAAE,UAAmB;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,WAAW,GAAG,YAAY,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;QACzF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC;IACjB,CAAC;IAGK,AAAN,KAAK,CAAC,kBAAkB,CACS,MAAc,EACf,KAAyB;QAEvD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,eAAe,CACY,MAAc,EACZ,QAAgB,EACnB,KAAyB;QAEvD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,mBAAmB,CACqB,MAAc;QAE1D,IAAI,CAAC;YACH,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,0BAAiB,CAAC,qBAAqB,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAClD,MAAM,OAAO,GAAqC,EAAE,CAAC;YACrD,KAAK,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;gBACrE,CAAC;gBACD,IAAI,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3F,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;oBACzF,OAAO,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC/C,CAAC;gBACD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAC9D,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;gBAClC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CAEF,CAAA;AA/FY,gCAAU;AAuCf;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,YAAY,EAAE,KAAK,CAAC;IAEtD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC7B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;;;;oDAQ9B;AAGK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,SAAS,EAAE,KAAK,CAAC;IAEnD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC7B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC/B,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;;;;iDAQ9B;AAGK;IADL,IAAA,qBAAY,EAAC,iBAAS,EAAE,mBAAW,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAE7D,WAAA,IAAA,oBAAW,EAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAA;;;;qDA0B5C;qBA7FU,UAAU;IADtB,IAAA,mBAAU,GAAE;qCAKgB,yCAAkB;QACnB,uCAAiB;QACjB,mCAAe;GAN9B,UAAU,CA+FtB"}
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import { DynamicModule, Type } from '@nestjs/common';
|
|
2
2
|
import { RabbitMQConfig } from '../../amqp-lib/config/rabbitmq.config';
|
|
3
3
|
import { BrokerTopic } from './config/topics.config';
|
|
4
|
-
import { RouteDiscoveryConfig } from './config/route-discovery.config';
|
|
5
4
|
import { AppConfig } from './services/utils.service';
|
|
6
5
|
export declare const ConfigurableModuleClass: import("@nestjs/common").ConfigurableModuleCls<RabbitMQConfig, "forRoot", "create", {}>, MODULE_OPTIONS_TOKEN: string | symbol;
|
|
7
6
|
export declare class BrokerModule {
|
|
8
|
-
static
|
|
7
|
+
private static withServiceNameConnection;
|
|
8
|
+
static forRoot(options: RabbitMQConfig, topics: BrokerTopic[], appOptions?: AppConfig): DynamicModule;
|
|
9
9
|
static forRootAsync(asyncOptions: {
|
|
10
10
|
useFactory: (...args: any[]) => Promise<{
|
|
11
11
|
options: RabbitMQConfig;
|
|
12
12
|
topics: BrokerTopic[];
|
|
13
13
|
appOptions?: AppConfig;
|
|
14
|
-
routeDiscovery?: RouteDiscoveryConfig;
|
|
15
14
|
}> | {
|
|
16
15
|
options: RabbitMQConfig;
|
|
17
16
|
topics: BrokerTopic[];
|
|
18
17
|
appOptions?: AppConfig;
|
|
19
|
-
routeDiscovery?: RouteDiscoveryConfig;
|
|
20
18
|
};
|
|
21
19
|
inject?: Type<any>[];
|
|
22
20
|
imports?: Type<any>[];
|
|
@@ -21,17 +21,35 @@ const shutdown_state_service_1 = require("./services/shutdown-state.service");
|
|
|
21
21
|
const utils_service_1 = require("./services/utils.service");
|
|
22
22
|
_a = new common_1.ConfigurableModuleBuilder().setClassMethodName('forRoot').build(), exports.ConfigurableModuleClass = _a.ConfigurableModuleClass, exports.MODULE_OPTIONS_TOKEN = _a.MODULE_OPTIONS_TOKEN;
|
|
23
23
|
let BrokerModule = BrokerModule_1 = class BrokerModule {
|
|
24
|
-
static
|
|
24
|
+
static withServiceNameConnection(options) {
|
|
25
|
+
const serviceName = options?.routeDiscovery?.serviceName;
|
|
26
|
+
if (!serviceName)
|
|
27
|
+
return options;
|
|
28
|
+
const cmo = options.connectionManagerOptions || {};
|
|
29
|
+
const co = cmo.connectionOptions || {};
|
|
30
|
+
const cp = co.clientProperties || {};
|
|
31
|
+
if (cp.connection_name)
|
|
32
|
+
return options;
|
|
33
|
+
return {
|
|
34
|
+
...options,
|
|
35
|
+
connectionManagerOptions: {
|
|
36
|
+
...cmo,
|
|
37
|
+
connectionOptions: { ...co, clientProperties: { ...cp, connection_name: serviceName } },
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
static forRoot(options, topics, appOptions) {
|
|
25
42
|
if (!options) {
|
|
26
43
|
throw new Error('RabbitMQConfig is required');
|
|
27
44
|
}
|
|
28
45
|
if (!topics) {
|
|
29
46
|
throw new Error('At least one topic is required');
|
|
30
47
|
}
|
|
31
|
-
const
|
|
48
|
+
const opts = BrokerModule_1.withServiceNameConnection(options);
|
|
49
|
+
const amqpOptionsProvider = { provide: const_1.RLB_AMQP_BROKER_OPTIONS, useValue: opts };
|
|
32
50
|
const topicOptionsProvider = { provide: const_1.RLB_AMQP_TOPIC_CONNECTION, useValue: topics };
|
|
33
51
|
const appOptionsProvider = { provide: const_1.RLB_AMQP_APP_OPTIONS, useValue: appOptions };
|
|
34
|
-
const routeDiscoveryProvider = { provide: const_1.RLB_ROUTE_DISCOVERY_OPTIONS, useValue: routeDiscovery };
|
|
52
|
+
const routeDiscoveryProvider = { provide: const_1.RLB_ROUTE_DISCOVERY_OPTIONS, useValue: opts.routeDiscovery };
|
|
35
53
|
return {
|
|
36
54
|
module: BrokerModule_1,
|
|
37
55
|
providers: [
|
|
@@ -53,7 +71,7 @@ let BrokerModule = BrokerModule_1 = class BrokerModule {
|
|
|
53
71
|
provide: const_1.RLB_AMQP_BROKER_OPTIONS,
|
|
54
72
|
useFactory: async (...args) => {
|
|
55
73
|
const result = await asyncOptions.useFactory(...args);
|
|
56
|
-
return result.options;
|
|
74
|
+
return BrokerModule_1.withServiceNameConnection(result.options);
|
|
57
75
|
},
|
|
58
76
|
inject: asyncOptions.inject || [],
|
|
59
77
|
};
|
|
@@ -77,7 +95,7 @@ let BrokerModule = BrokerModule_1 = class BrokerModule {
|
|
|
77
95
|
provide: const_1.RLB_ROUTE_DISCOVERY_OPTIONS,
|
|
78
96
|
useFactory: async (...args) => {
|
|
79
97
|
const result = await asyncOptions.useFactory(...args);
|
|
80
|
-
return result.routeDiscovery;
|
|
98
|
+
return result.options?.routeDiscovery;
|
|
81
99
|
},
|
|
82
100
|
inject: asyncOptions.inject || [],
|
|
83
101
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.module.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/broker/broker.module.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAA0G;AAC1G,6DAAgE;
|
|
1
|
+
{"version":3,"file":"broker.module.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/broker/broker.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildPathDefinitionsFromMeta = buildPathDefinitionsFromMeta;
|
|
4
|
+
exports.pairAuthToRoutes = pairAuthToRoutes;
|
|
4
5
|
function buildPathDefinitionsFromMeta(meta) {
|
|
5
6
|
const out = [];
|
|
6
7
|
for (const topic of Object.keys(meta || {})) {
|
|
7
8
|
for (const action of Object.keys(meta[topic] || {})) {
|
|
8
9
|
const entry = meta[topic][action] || {};
|
|
9
|
-
const auth = Array.isArray(entry.auth) ? entry.auth[0] : undefined;
|
|
10
10
|
for (const h of entry.http || []) {
|
|
11
11
|
out.push({
|
|
12
12
|
name: h.name ?? `${topic}:${action}:${h.method}:${h.path}`,
|
|
@@ -16,9 +16,9 @@ function buildPathDefinitionsFromMeta(meta) {
|
|
|
16
16
|
topic,
|
|
17
17
|
action,
|
|
18
18
|
mode: h.mode ?? (entry.type === 'event' ? 'event' : 'rpc'),
|
|
19
|
-
auth: h.auth
|
|
20
|
-
allowAnonymous: h.allowAnonymous
|
|
21
|
-
roles: h.roles ??
|
|
19
|
+
auth: h.auth,
|
|
20
|
+
allowAnonymous: h.allowAnonymous,
|
|
21
|
+
roles: h.roles ?? [],
|
|
22
22
|
successStatusCode: h.successStatusCode,
|
|
23
23
|
timeout: h.timeout,
|
|
24
24
|
parseRaw: h.parseRaw,
|
|
@@ -32,4 +32,34 @@ function buildPathDefinitionsFromMeta(meta) {
|
|
|
32
32
|
}
|
|
33
33
|
return out;
|
|
34
34
|
}
|
|
35
|
+
function pairAuthToRoutes(allHttp, allAuth, where = '') {
|
|
36
|
+
const warnings = [];
|
|
37
|
+
if (!allHttp?.length || !allAuth?.length)
|
|
38
|
+
return warnings;
|
|
39
|
+
const multiHttp = allHttp.length > 1;
|
|
40
|
+
for (const h of allHttp) {
|
|
41
|
+
const paired = multiHttp
|
|
42
|
+
? (h.name ? allAuth.find((a) => a.httpName === h.name) : undefined)
|
|
43
|
+
: (allAuth.find((a) => !a.httpName) ?? allAuth[0]);
|
|
44
|
+
if (paired) {
|
|
45
|
+
h.auth = paired.authName;
|
|
46
|
+
h.allowAnonymous = paired.allowAnonymous;
|
|
47
|
+
h.roles = paired.roles;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (multiHttp) {
|
|
51
|
+
const at = where ? ` on ${where}` : '';
|
|
52
|
+
const names = new Set(allHttp.map((h) => h.name).filter(Boolean));
|
|
53
|
+
const named = [...names].join(', ') || 'none';
|
|
54
|
+
for (const a of allAuth) {
|
|
55
|
+
if (!a.httpName) {
|
|
56
|
+
warnings.push(`@BrokerAuth '${a.authName}'${at} has no 'httpName' but the method declares ${allHttp.length} @BrokerHTTP routes; auth NOT applied. Add httpName matching a @BrokerHTTP { name } (${named}).`);
|
|
57
|
+
}
|
|
58
|
+
else if (!names.has(a.httpName)) {
|
|
59
|
+
warnings.push(`@BrokerAuth '${a.authName}'${at} references httpName '${a.httpName}' matching no @BrokerHTTP { name } (${named}); auth NOT applied.`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return warnings;
|
|
64
|
+
}
|
|
35
65
|
//# sourceMappingURL=decorator-paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorator-paths.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/broker/config/decorator-paths.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"decorator-paths.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/broker/config/decorator-paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export declare const RLB_BROKER_METHOD_METADATA_KEY = "rlb-broker:method";
|
|
|
7
7
|
export declare const RLB_BROKER_HTTP_METADATA_KEY = "rlb-broker:http";
|
|
8
8
|
export declare const RLB_BROKER_AUTH_METADATA_KEY = "rlb-broker:auth";
|
|
9
9
|
export declare const RLB_BROKER_PARAM_METADATA_KEY = "rlb-broker:param";
|
|
10
|
+
export declare const GW_RELOAD_ACTION = "gw-reload";
|
|
10
11
|
export declare const RLB_ROUTE_DISCOVERY_OPTIONS = "RLB_ROUTE_DISCOVERY_OPTIONS";
|
|
11
12
|
export declare const ROUTE_DISCOVERY_EXCHANGE = "rlb-route-discovery";
|
|
12
13
|
export declare const ROUTE_SYNC_QUEUE = "rlb-route-sync";
|
package/modules/broker/const.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ROUTE_SYNC_QUEUE = exports.ROUTE_DISCOVERY_EXCHANGE = exports.RLB_ROUTE_DISCOVERY_OPTIONS = exports.RLB_BROKER_PARAM_METADATA_KEY = exports.RLB_BROKER_AUTH_METADATA_KEY = exports.RLB_BROKER_HTTP_METADATA_KEY = exports.RLB_BROKER_METHOD_METADATA_KEY = exports.RLB_AMQP_GATEWAY_OPTIONS = exports.RLB_AMQP_AUTH_OPTIONS = exports.RLB_AMQP_APP_OPTIONS = exports.RLB_AMQP_TOPIC_CONNECTION = exports.RLB_AMQP_BROKER_OPTIONS = void 0;
|
|
3
|
+
exports.ROUTE_SYNC_QUEUE = exports.ROUTE_DISCOVERY_EXCHANGE = exports.RLB_ROUTE_DISCOVERY_OPTIONS = exports.GW_RELOAD_ACTION = exports.RLB_BROKER_PARAM_METADATA_KEY = exports.RLB_BROKER_AUTH_METADATA_KEY = exports.RLB_BROKER_HTTP_METADATA_KEY = exports.RLB_BROKER_METHOD_METADATA_KEY = exports.RLB_AMQP_GATEWAY_OPTIONS = exports.RLB_AMQP_AUTH_OPTIONS = exports.RLB_AMQP_APP_OPTIONS = exports.RLB_AMQP_TOPIC_CONNECTION = exports.RLB_AMQP_BROKER_OPTIONS = void 0;
|
|
4
4
|
exports.RLB_AMQP_BROKER_OPTIONS = 'RLB_AMQP_BROKER_OPTIONS';
|
|
5
5
|
exports.RLB_AMQP_TOPIC_CONNECTION = 'RLB_AMQP_TOPIC_CONNECTION';
|
|
6
6
|
exports.RLB_AMQP_APP_OPTIONS = 'RLB_AMQP_APP_OPTIONS';
|
|
@@ -10,6 +10,7 @@ exports.RLB_BROKER_METHOD_METADATA_KEY = 'rlb-broker:method';
|
|
|
10
10
|
exports.RLB_BROKER_HTTP_METADATA_KEY = 'rlb-broker:http';
|
|
11
11
|
exports.RLB_BROKER_AUTH_METADATA_KEY = 'rlb-broker:auth';
|
|
12
12
|
exports.RLB_BROKER_PARAM_METADATA_KEY = 'rlb-broker:param';
|
|
13
|
+
exports.GW_RELOAD_ACTION = 'gw-reload';
|
|
13
14
|
exports.RLB_ROUTE_DISCOVERY_OPTIONS = 'RLB_ROUTE_DISCOVERY_OPTIONS';
|
|
14
15
|
exports.ROUTE_DISCOVERY_EXCHANGE = 'rlb-route-discovery';
|
|
15
16
|
exports.ROUTE_SYNC_QUEUE = 'rlb-route-sync';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/broker/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AACxD,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,4BAA4B,GAAG,iBAAiB,CAAC;AACjD,QAAA,4BAA4B,GAAG,iBAAiB,CAAC;AACjD,QAAA,6BAA6B,GAAG,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/broker/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AACxD,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,4BAA4B,GAAG,iBAAiB,CAAC;AACjD,QAAA,4BAA4B,GAAG,iBAAiB,CAAC;AACjD,QAAA,6BAA6B,GAAG,kBAAkB,CAAC;AAKnD,QAAA,gBAAgB,GAAG,WAAW,CAAC;AAG/B,QAAA,2BAA2B,GAAG,6BAA6B,CAAC;AAE5D,QAAA,wBAAwB,GAAG,qBAAqB,CAAC;AAEjD,QAAA,gBAAgB,GAAG,gBAAgB,CAAC"}
|