@open-rlb/nestjs-amqp 2.1.1 → 2.2.1
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/modules/acl/const.d.ts +2 -0
- package/modules/acl/const.js +2 -0
- package/modules/acl/const.js.map +1 -1
- package/modules/acl/services/acl-management.service.d.ts +4 -0
- package/modules/acl/services/acl-management.service.js +36 -3
- package/modules/acl/services/acl-management.service.js.map +1 -1
- package/package.json +6 -5
- package/schematics/add-auth-provider/index.d.ts +3 -0
- package/schematics/add-auth-provider/index.js +60 -0
- package/schematics/add-auth-provider/index.js.map +1 -0
- package/schematics/add-auth-provider/index.spec.ts +83 -0
- package/schematics/add-auth-provider/index.ts +83 -0
- package/schematics/add-auth-provider/schema.d.ts +18 -0
- package/schematics/add-auth-provider/schema.js +3 -0
- package/schematics/add-auth-provider/schema.js.map +1 -0
- package/schematics/add-auth-provider/schema.json +59 -0
- package/schematics/add-auth-provider/schema.ts +35 -0
- package/schematics/add-exchange/index.d.ts +3 -0
- package/schematics/add-exchange/index.js +49 -0
- package/schematics/add-exchange/index.js.map +1 -0
- package/schematics/add-exchange/index.spec.ts +65 -0
- package/schematics/add-exchange/index.ts +65 -0
- package/schematics/add-exchange/schema.d.ts +14 -0
- package/schematics/add-exchange/schema.js +3 -0
- package/schematics/add-exchange/schema.js.map +1 -0
- package/schematics/add-exchange/schema.json +50 -0
- package/schematics/add-exchange/schema.ts +26 -0
- package/schematics/add-exchange-binding/index.d.ts +3 -0
- package/schematics/add-exchange-binding/index.js +53 -0
- package/schematics/add-exchange-binding/index.js.map +1 -0
- package/schematics/add-exchange-binding/index.spec.ts +73 -0
- package/schematics/add-exchange-binding/index.ts +64 -0
- package/schematics/add-exchange-binding/schema.d.ts +8 -0
- package/schematics/add-exchange-binding/schema.js +3 -0
- package/schematics/add-exchange-binding/schema.js.map +1 -0
- package/schematics/add-exchange-binding/schema.json +36 -0
- package/schematics/add-exchange-binding/schema.ts +14 -0
- package/schematics/add-gateway/index.d.ts +4 -0
- package/schematics/add-gateway/index.js +105 -0
- package/schematics/add-gateway/index.js.map +1 -0
- package/schematics/add-gateway/index.spec.ts +163 -0
- package/schematics/add-gateway/index.ts +141 -0
- package/schematics/add-gateway/paths.d.ts +12 -0
- package/schematics/add-gateway/paths.js +87 -0
- package/schematics/add-gateway/paths.js.map +1 -0
- package/schematics/add-gateway/paths.ts +103 -0
- package/schematics/add-gateway/schema.d.ts +13 -0
- package/schematics/add-gateway/schema.js +3 -0
- package/schematics/add-gateway/schema.js.map +1 -0
- package/schematics/add-gateway/schema.json +63 -0
- package/schematics/add-gateway/schema.ts +24 -0
- package/schematics/add-gateway/wiring.d.ts +14 -0
- package/schematics/add-gateway/wiring.js +102 -0
- package/schematics/add-gateway/wiring.js.map +1 -0
- package/schematics/add-gateway/wiring.ts +115 -0
- package/schematics/add-metrics-topic/index.d.ts +3 -0
- package/schematics/add-metrics-topic/index.js +31 -0
- package/schematics/add-metrics-topic/index.js.map +1 -0
- package/schematics/add-metrics-topic/index.spec.ts +79 -0
- package/schematics/add-metrics-topic/index.ts +49 -0
- package/schematics/add-metrics-topic/schema.d.ts +10 -0
- package/schematics/add-metrics-topic/schema.js +3 -0
- package/schematics/add-metrics-topic/schema.js.map +1 -0
- package/schematics/add-metrics-topic/schema.json +48 -0
- package/schematics/add-metrics-topic/schema.ts +18 -0
- package/schematics/add-queue/index.d.ts +3 -0
- package/schematics/add-queue/index.js +48 -0
- package/schematics/add-queue/index.js.map +1 -0
- package/schematics/add-queue/index.spec.ts +75 -0
- package/schematics/add-queue/index.ts +74 -0
- package/schematics/add-queue/schema.d.ts +17 -0
- package/schematics/add-queue/schema.js +3 -0
- package/schematics/add-queue/schema.js.map +1 -0
- package/schematics/add-queue/schema.json +54 -0
- package/schematics/add-queue/schema.ts +32 -0
- package/schematics/add-reply-queue/index.d.ts +3 -0
- package/schematics/add-reply-queue/index.js +26 -0
- package/schematics/add-reply-queue/index.js.map +1 -0
- package/schematics/add-reply-queue/index.spec.ts +69 -0
- package/schematics/add-reply-queue/index.ts +33 -0
- package/schematics/add-reply-queue/schema.d.ts +6 -0
- package/schematics/add-reply-queue/schema.js +3 -0
- package/schematics/add-reply-queue/schema.js.map +1 -0
- package/schematics/add-reply-queue/schema.json +28 -0
- package/schematics/add-reply-queue/schema.ts +10 -0
- package/schematics/add-route/index.d.ts +3 -0
- package/schematics/add-route/index.js +57 -0
- package/schematics/add-route/index.js.map +1 -0
- package/schematics/add-route/index.spec.ts +75 -0
- package/schematics/add-route/index.ts +74 -0
- package/schematics/add-route/schema.d.ts +22 -0
- package/schematics/add-route/schema.js +3 -0
- package/schematics/add-route/schema.js.map +1 -0
- package/schematics/add-route/schema.json +74 -0
- package/schematics/add-route/schema.ts +43 -0
- package/schematics/add-topic/index.d.ts +3 -0
- package/schematics/add-topic/index.js +69 -0
- package/schematics/add-topic/index.js.map +1 -0
- package/schematics/add-topic/index.spec.ts +100 -0
- package/schematics/add-topic/index.ts +104 -0
- package/schematics/add-topic/schema.d.ts +18 -0
- package/schematics/add-topic/schema.js +3 -0
- package/schematics/add-topic/schema.js.map +1 -0
- package/schematics/add-topic/schema.json +63 -0
- package/schematics/add-topic/schema.ts +34 -0
- package/schematics/add-ws-event/index.d.ts +3 -0
- package/schematics/add-ws-event/index.js +53 -0
- package/schematics/add-ws-event/index.js.map +1 -0
- package/schematics/add-ws-event/index.spec.ts +85 -0
- package/schematics/add-ws-event/index.ts +72 -0
- package/schematics/add-ws-event/schema.d.ts +17 -0
- package/schematics/add-ws-event/schema.js +3 -0
- package/schematics/add-ws-event/schema.js.map +1 -0
- package/schematics/add-ws-event/schema.json +53 -0
- package/schematics/add-ws-event/schema.ts +33 -0
- package/schematics/collection.json +81 -1
- package/schematics/configure-broker/index.d.ts +3 -0
- package/schematics/configure-broker/index.js +41 -0
- package/schematics/configure-broker/index.js.map +1 -0
- package/schematics/configure-broker/index.spec.ts +62 -0
- package/schematics/configure-broker/index.ts +51 -0
- package/schematics/configure-broker/schema.d.ts +11 -0
- package/schematics/configure-broker/schema.js +3 -0
- package/schematics/configure-broker/schema.js.map +1 -0
- package/schematics/configure-broker/schema.json +47 -0
- package/schematics/configure-broker/schema.ts +20 -0
- package/schematics/enable-load-config/index.d.ts +3 -0
- package/schematics/enable-load-config/index.js +32 -0
- package/schematics/enable-load-config/index.js.map +1 -0
- package/schematics/enable-load-config/index.spec.ts +61 -0
- package/schematics/enable-load-config/index.ts +39 -0
- package/schematics/enable-load-config/schema.d.ts +8 -0
- package/schematics/enable-load-config/schema.js +3 -0
- package/schematics/enable-load-config/schema.js.map +1 -0
- package/schematics/enable-load-config/schema.json +36 -0
- package/schematics/enable-load-config/schema.ts +14 -0
- package/schematics/enable-retry/index.d.ts +3 -0
- package/schematics/enable-retry/index.js +51 -0
- package/schematics/enable-retry/index.js.map +1 -0
- package/schematics/enable-retry/index.spec.ts +73 -0
- package/schematics/enable-retry/index.ts +62 -0
- package/schematics/enable-retry/schema.d.ts +13 -0
- package/schematics/enable-retry/schema.js +3 -0
- package/schematics/enable-retry/schema.js.map +1 -0
- package/schematics/enable-retry/schema.json +64 -0
- package/schematics/enable-retry/schema.ts +24 -0
- package/schematics/enable-route-discovery/index.d.ts +3 -0
- package/schematics/enable-route-discovery/index.js +36 -0
- package/schematics/enable-route-discovery/index.js.map +1 -0
- package/schematics/enable-route-discovery/index.spec.ts +55 -0
- package/schematics/enable-route-discovery/index.ts +48 -0
- package/schematics/enable-route-discovery/schema.d.ts +9 -0
- package/schematics/enable-route-discovery/schema.js +3 -0
- package/schematics/enable-route-discovery/schema.js.map +1 -0
- package/schematics/enable-route-discovery/schema.json +44 -0
- package/schematics/enable-route-discovery/schema.ts +16 -0
- package/schematics/harden-gateway/index.d.ts +3 -0
- package/schematics/harden-gateway/index.js +93 -0
- package/schematics/harden-gateway/index.js.map +1 -0
- package/schematics/harden-gateway/index.spec.ts +105 -0
- package/schematics/harden-gateway/index.ts +108 -0
- package/schematics/harden-gateway/schema.d.ts +11 -0
- package/schematics/harden-gateway/schema.js +3 -0
- package/schematics/harden-gateway/schema.js.map +1 -0
- package/schematics/harden-gateway/schema.json +47 -0
- package/schematics/harden-gateway/schema.ts +20 -0
- package/schematics/nest-add/index.js +55 -832
- package/schematics/nest-add/index.js.map +1 -1
- package/schematics/nest-add/index.spec.ts +73 -0
- package/schematics/nest-add/index.ts +76 -917
- package/schematics/nest-add/init.schema.d.ts +1 -0
- package/schematics/nest-add/init.schema.ts +3 -0
- package/schematics/nest-add/schema.json +4 -43
- package/schematics/set-connection-name/index.d.ts +3 -0
- package/schematics/set-connection-name/index.js +34 -0
- package/schematics/set-connection-name/index.js.map +1 -0
- package/schematics/set-connection-name/index.spec.ts +48 -0
- package/schematics/set-connection-name/index.ts +42 -0
- package/schematics/set-connection-name/schema.d.ts +5 -0
- package/schematics/set-connection-name/schema.js +3 -0
- package/schematics/set-connection-name/schema.js.map +1 -0
- package/schematics/set-connection-name/schema.json +24 -0
- package/schematics/set-connection-name/schema.ts +8 -0
- package/schematics/utils/broker-yaml.util.d.ts +53 -0
- package/schematics/utils/broker-yaml.util.js +91 -0
- package/schematics/utils/broker-yaml.util.js.map +1 -0
- package/schematics/utils/broker-yaml.util.ts +172 -0
- package/schematics/utils/nest-wiring.util.d.ts +30 -0
- package/schematics/utils/nest-wiring.util.js +170 -0
- package/schematics/utils/nest-wiring.util.js.map +1 -0
- package/schematics/utils/nest-wiring.util.ts +211 -0
- package/schematics/utils/schematic-prompt.util.d.ts +7 -0
- package/schematics/utils/schematic-prompt.util.js +57 -0
- package/schematics/utils/schematic-prompt.util.js.map +1 -0
- package/schematics/utils/schematic-prompt.util.ts +82 -0
- package/schematics/utils/yaml-config.util.d.ts +22 -0
- package/schematics/utils/yaml-config.util.js +119 -0
- package/schematics/utils/yaml-config.util.js.map +1 -0
- package/schematics/utils/yaml-config.util.ts +167 -0
- /package/schematics/{nest-add → add-gateway}/files/acl/src/cache/in-memory-acl-store.ts +0 -0
- /package/schematics/{nest-add → add-gateway}/files/acl/src/modules/database/repository/acl.repository.ts +0 -0
- /package/schematics/{nest-add → add-gateway}/files/db-core/src/modules/database/repository/in-memory-collection.ts +0 -0
- /package/schematics/{nest-add → add-gateway}/files/gateway-admin/src/modules/database/repository/gateway.repository.ts +0 -0
- /package/schematics/{nest-add → add-gateway}/files/gateway-admin/src/modules/database/repository/route-sync.repository.ts +0 -0
package/modules/acl/const.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export declare const ACL_ACTIONS: {
|
|
|
9
9
|
readonly listResourcesByUser: "acl-list-resources-by-user";
|
|
10
10
|
readonly grant: "acl-grant";
|
|
11
11
|
readonly revoke: "acl-revoke";
|
|
12
|
+
readonly adminGrant: "acl-admin-grant";
|
|
13
|
+
readonly adminRevoke: "acl-admin-revoke";
|
|
12
14
|
readonly grantSearch: "acl-grant-search";
|
|
13
15
|
readonly invalidate: "acl-invalidate";
|
|
14
16
|
readonly actionUpdate: "acl-action-update";
|
package/modules/acl/const.js
CHANGED
|
@@ -12,6 +12,8 @@ exports.ACL_ACTIONS = {
|
|
|
12
12
|
listResourcesByUser: 'acl-list-resources-by-user',
|
|
13
13
|
grant: 'acl-grant',
|
|
14
14
|
revoke: 'acl-revoke',
|
|
15
|
+
adminGrant: 'acl-admin-grant',
|
|
16
|
+
adminRevoke: 'acl-admin-revoke',
|
|
15
17
|
grantSearch: 'acl-grant-search',
|
|
16
18
|
invalidate: 'acl-invalidate',
|
|
17
19
|
actionUpdate: 'acl-action-update',
|
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;AAE5C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAI9C,QAAA,kCAAkC,GAAG,iBAAiB,CAAC;AAKvD,QAAA,8BAA8B,GAAG,aAAa,CAAC;AAG/C,QAAA,WAAW,GAAG;IAGzB,WAAW,EAAE,kBAAkB;IAE/B,mBAAmB,EAAE,4BAA4B;IACjD,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;
|
|
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;AAE5C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAI9C,QAAA,kCAAkC,GAAG,iBAAiB,CAAC;AAKvD,QAAA,8BAA8B,GAAG,aAAa,CAAC;AAG/C,QAAA,WAAW,GAAG;IAGzB,WAAW,EAAE,kBAAkB;IAE/B,mBAAmB,EAAE,4BAA4B;IACjD,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IAIpB,UAAU,EAAE,iBAAiB;IAC7B,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,kBAAkB;IAC/B,UAAU,EAAE,gBAAgB;IAE5B,YAAY,EAAE,mBAAmB;IACjC,YAAY,EAAE,mBAAmB;IACjC,UAAU,EAAE,iBAAiB;IAC7B,SAAS,EAAE,gBAAgB;IAC3B,YAAY,EAAE,mBAAmB;IACjC,UAAU,EAAE,iBAAiB;IAC7B,UAAU,EAAE,iBAAiB;IAC7B,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,cAAc;IACvB,UAAU,EAAE,iBAAiB;CACrB,CAAC"}
|
|
@@ -23,6 +23,10 @@ export declare class AclManagementService {
|
|
|
23
23
|
private invalidateAll;
|
|
24
24
|
grant(userId: string, roles: string[], resourceId?: string, companyId?: string, friendlyName?: string, currentUser?: string): Promise<AclGrant>;
|
|
25
25
|
revoke(userId: string, roles: string[], resourceId?: string, companyId?: string, currentUser?: string): Promise<AclGrant | null>;
|
|
26
|
+
adminGrant(userId: string, roles: string[], resourceId?: string, companyId?: string, friendlyName?: string): Promise<AclGrant>;
|
|
27
|
+
adminRevoke(userId: string, roles: string[], resourceId?: string, companyId?: string): Promise<AclGrant | null>;
|
|
28
|
+
private applyGrant;
|
|
29
|
+
private applyRevoke;
|
|
26
30
|
private findGrant;
|
|
27
31
|
upsertAction(name: string, description?: string): Promise<AclAction>;
|
|
28
32
|
deleteAction(name: string): Promise<AclAction>;
|
|
@@ -54,11 +54,24 @@ let AclManagementService = AclManagementService_1 = class AclManagementService {
|
|
|
54
54
|
await this.invalidation.broadcast('all');
|
|
55
55
|
}
|
|
56
56
|
async grant(userId, roles, resourceId, companyId, friendlyName, currentUser) {
|
|
57
|
+
await this.assertCanManage(currentUser ?? '', companyId, resourceId, 'grant');
|
|
58
|
+
return this.applyGrant(userId, roles, resourceId, companyId, friendlyName);
|
|
59
|
+
}
|
|
60
|
+
async revoke(userId, roles, resourceId, companyId, currentUser) {
|
|
61
|
+
await this.assertCanManage(currentUser ?? '', companyId, resourceId, 'revoke');
|
|
62
|
+
return this.applyRevoke(userId, roles, resourceId, companyId);
|
|
63
|
+
}
|
|
64
|
+
async adminGrant(userId, roles, resourceId, companyId, friendlyName) {
|
|
65
|
+
return this.applyGrant(userId, roles, resourceId, companyId, friendlyName);
|
|
66
|
+
}
|
|
67
|
+
async adminRevoke(userId, roles, resourceId, companyId) {
|
|
68
|
+
return this.applyRevoke(userId, roles, resourceId, companyId);
|
|
69
|
+
}
|
|
70
|
+
async applyGrant(userId, roles, resourceId, companyId, friendlyName) {
|
|
57
71
|
if (!userId)
|
|
58
72
|
throw new common_2.BadRequestError('userId is required');
|
|
59
73
|
if (!roles?.length)
|
|
60
74
|
throw new common_2.BadRequestError('roles are required');
|
|
61
|
-
await this.assertCanManage(currentUser ?? '', companyId, resourceId, 'grant');
|
|
62
75
|
await this.assertRolesExist(roles);
|
|
63
76
|
const existing = await this.findGrant(userId, companyId, resourceId);
|
|
64
77
|
let result;
|
|
@@ -76,12 +89,11 @@ let AclManagementService = AclManagementService_1 = class AclManagementService {
|
|
|
76
89
|
await this.invalidateUser(userId);
|
|
77
90
|
return result;
|
|
78
91
|
}
|
|
79
|
-
async
|
|
92
|
+
async applyRevoke(userId, roles, resourceId, companyId) {
|
|
80
93
|
if (!userId)
|
|
81
94
|
throw new common_2.BadRequestError('userId is required');
|
|
82
95
|
if (!roles?.length)
|
|
83
96
|
throw new common_2.BadRequestError('roles are required');
|
|
84
|
-
await this.assertCanManage(currentUser ?? '', companyId, resourceId, 'revoke');
|
|
85
97
|
const existing = await this.findGrant(userId, companyId, resourceId);
|
|
86
98
|
if (!existing)
|
|
87
99
|
return null;
|
|
@@ -194,6 +206,27 @@ __decorate([
|
|
|
194
206
|
__metadata("design:paramtypes", [String, Array, String, String, String]),
|
|
195
207
|
__metadata("design:returntype", Promise)
|
|
196
208
|
], AclManagementService.prototype, "revoke", null);
|
|
209
|
+
__decorate([
|
|
210
|
+
(0, broker_1.BrokerAction)(const_1.ACL_TOPIC, const_1.ACL_ACTIONS.adminGrant, 'rpc'),
|
|
211
|
+
__param(0, (0, broker_1.BrokerParam)('body', 'userId')),
|
|
212
|
+
__param(1, (0, broker_1.BrokerParam)('body', 'roles')),
|
|
213
|
+
__param(2, (0, broker_1.BrokerParam)('body', 'resourceId')),
|
|
214
|
+
__param(3, (0, broker_1.BrokerParam)('body', 'companyId')),
|
|
215
|
+
__param(4, (0, broker_1.BrokerParam)('body', 'friendlyName')),
|
|
216
|
+
__metadata("design:type", Function),
|
|
217
|
+
__metadata("design:paramtypes", [String, Array, String, String, String]),
|
|
218
|
+
__metadata("design:returntype", Promise)
|
|
219
|
+
], AclManagementService.prototype, "adminGrant", null);
|
|
220
|
+
__decorate([
|
|
221
|
+
(0, broker_1.BrokerAction)(const_1.ACL_TOPIC, const_1.ACL_ACTIONS.adminRevoke, 'rpc'),
|
|
222
|
+
__param(0, (0, broker_1.BrokerParam)('body', 'userId')),
|
|
223
|
+
__param(1, (0, broker_1.BrokerParam)('body', 'roles')),
|
|
224
|
+
__param(2, (0, broker_1.BrokerParam)('body', 'resourceId')),
|
|
225
|
+
__param(3, (0, broker_1.BrokerParam)('body', 'companyId')),
|
|
226
|
+
__metadata("design:type", Function),
|
|
227
|
+
__metadata("design:paramtypes", [String, Array, String, String]),
|
|
228
|
+
__metadata("design:returntype", Promise)
|
|
229
|
+
], AclManagementService.prototype, "adminRevoke", null);
|
|
197
230
|
__decorate([
|
|
198
231
|
(0, broker_1.BrokerAction)(const_1.ACL_TOPIC, const_1.ACL_ACTIONS.actionUpdate, 'rpc'),
|
|
199
232
|
__param(0, (0, broker_1.BrokerParam)('body', 'name')),
|
|
@@ -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":"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"}
|
|
1
|
+
{"version":3,"file":"acl-management.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/acl/services/acl-management.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-rlb/nestjs-amqp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Giuseppe Riolo <riolo.giuseppe@gmail.com>",
|
|
6
6
|
"private": false,
|
|
@@ -37,19 +37,19 @@
|
|
|
37
37
|
"jwks-rsa": "^4.0.1",
|
|
38
38
|
"reflect-metadata": "^0.2.2",
|
|
39
39
|
"rxjs": "^7.8.2",
|
|
40
|
-
"ws": "^8.21.0"
|
|
40
|
+
"ws": "^8.21.0",
|
|
41
|
+
"yaml": "^2.9.0"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
43
44
|
"@angular-devkit/core": "^22.0.1",
|
|
44
45
|
"@angular-devkit/schematics": "^22.0.1",
|
|
45
|
-
"@nestjs/mongoose": "^11.0.4",
|
|
46
|
-
"@types/js-yaml": "^4.0.9",
|
|
47
|
-
"mongoose": "^8.19.3",
|
|
48
46
|
"@nestjs/cli": "^11.0.23",
|
|
47
|
+
"@nestjs/mongoose": "^11.0.4",
|
|
49
48
|
"@nestjs/schematics": "^11.1.0",
|
|
50
49
|
"@nestjs/testing": "^11.1.26",
|
|
51
50
|
"@types/express": "^5.0.6",
|
|
52
51
|
"@types/jest": "^30.0.0",
|
|
52
|
+
"@types/js-yaml": "^4.0.9",
|
|
53
53
|
"@types/multer": "^2.1.0",
|
|
54
54
|
"@types/node": "^25.9.3",
|
|
55
55
|
"@types/supertest": "^7.2.0",
|
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
"eslint-config-prettier": "^10.1.8",
|
|
62
62
|
"eslint-plugin-prettier": "^5.5.6",
|
|
63
63
|
"jest": "^30.4.2",
|
|
64
|
+
"mongoose": "^8.19.3",
|
|
64
65
|
"prettier": "^3.8.4",
|
|
65
66
|
"source-map-support": "^0.5.21",
|
|
66
67
|
"supertest": "^7.2.2",
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.main = main;
|
|
4
|
+
const schematic_prompt_util_1 = require("../utils/schematic-prompt.util");
|
|
5
|
+
const yaml_config_util_1 = require("../utils/yaml-config.util");
|
|
6
|
+
const TYPES = ['jwt', 'jwks', 'basic', 'str-compare', 'none'];
|
|
7
|
+
const RELEVANT_FIELDS = {
|
|
8
|
+
jwt: ['issuer', 'algorithms', 'secret', 'audience', 'uidClaim', 'jwtMap'],
|
|
9
|
+
jwks: ['issuer', 'jwksUri', 'algorithms', 'audience', 'uidClaim', 'jwtMap', 'httpsAllowUnauthorized'],
|
|
10
|
+
basic: ['clientId', 'clientSecret', 'uidClaim'],
|
|
11
|
+
'str-compare': ['secret', 'uidClaim'],
|
|
12
|
+
none: [],
|
|
13
|
+
};
|
|
14
|
+
function main(options) {
|
|
15
|
+
return async (tree, context) => {
|
|
16
|
+
const flagsProvided = options.name !== undefined;
|
|
17
|
+
const prompts = (0, schematic_prompt_util_1.loadPrompts)(context, flagsProvided);
|
|
18
|
+
const name = options.name || (await (0, schematic_prompt_util_1.askText)(prompts, 'Auth-provider name?', ''));
|
|
19
|
+
if (!name) {
|
|
20
|
+
context.logger.error('[rlb-amqp] add-auth-provider: a name is required.');
|
|
21
|
+
return tree;
|
|
22
|
+
}
|
|
23
|
+
const type = options.type || (await (0, schematic_prompt_util_1.askSelect)(prompts, 'Provider type?', TYPES, 'jwks'));
|
|
24
|
+
const headerPrefix = options.headerPrefix ?? 'X-GTW-AUTH-';
|
|
25
|
+
const configPath = (0, yaml_config_util_1.findConfigYaml)(tree, options.config);
|
|
26
|
+
const { doc, existed } = (0, yaml_config_util_1.readConfigDoc)(tree, configPath);
|
|
27
|
+
if (!existed)
|
|
28
|
+
context.logger.info(`[rlb-amqp] ${configPath} not found — creating it.`);
|
|
29
|
+
const candidates = {
|
|
30
|
+
uidClaim: options.uidClaim,
|
|
31
|
+
jwtMap: options.jwtMap,
|
|
32
|
+
algorithms: options.algorithms,
|
|
33
|
+
issuer: options.issuer,
|
|
34
|
+
jwksUri: options.jwksUri,
|
|
35
|
+
secret: options.secret,
|
|
36
|
+
audience: options.audience,
|
|
37
|
+
clientId: options.clientId,
|
|
38
|
+
clientSecret: options.clientSecret,
|
|
39
|
+
httpsAllowUnauthorized: options.httpsAllowUnauthorized,
|
|
40
|
+
};
|
|
41
|
+
const item = { name, type, headerPrefix };
|
|
42
|
+
for (const field of RELEVANT_FIELDS[type]) {
|
|
43
|
+
if (candidates[field] !== undefined)
|
|
44
|
+
item[field] = candidates[field];
|
|
45
|
+
}
|
|
46
|
+
if (type === 'jwt' || type === 'jwks') {
|
|
47
|
+
if (!options.algorithms || options.algorithms.length === 0) {
|
|
48
|
+
context.logger.warn('[rlb-amqp] add-auth-provider: algorithms is REQUIRED for jwt/jwks — verification will be DENIED until set (algorithm-confusion guard).');
|
|
49
|
+
}
|
|
50
|
+
if (!options.jwtMap || options.jwtMap.length === 0) {
|
|
51
|
+
context.logger.warn('[rlb-amqp] add-auth-provider: without jwtMap no identity claims are forwarded (uidClaim still needed for the action gate).');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const outcome = (0, yaml_config_util_1.upsertSeqItemByKey)(doc, ['auth-providers'], 'name', item, { overwrite: options.overwrite });
|
|
55
|
+
(0, schematic_prompt_util_1.logOutcome)(context, `auth-provider '${name}'`, outcome);
|
|
56
|
+
(0, yaml_config_util_1.writeConfigDoc)(tree, configPath, doc);
|
|
57
|
+
return tree;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/schematics/add-auth-provider/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Rule, SchematicContext, Tree } from '@angular-devkit/schematics';
|
|
2
|
+
import { parseDocument } from 'yaml';
|
|
3
|
+
import { main } from './index';
|
|
4
|
+
import { AddAuthProviderOptions } from './schema';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Schematics are tested by invoking the factory Rule directly against a Tree, NOT via
|
|
8
|
+
* SchematicTestRunner (its testing entrypoint eagerly loads `ora`, an ESM-only module jest cannot
|
|
9
|
+
* transform here). Passing `name` makes `flagsProvided` true, so no interactive prompt is attempted.
|
|
10
|
+
*/
|
|
11
|
+
function makeCtx(warnings: string[] = []): SchematicContext {
|
|
12
|
+
return { logger: { info() {}, warn: (m: string) => warnings.push(m), error() {} } } as unknown as SchematicContext;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async function run(options: AddAuthProviderOptions, tree: Tree, ctx = makeCtx()): Promise<Tree> {
|
|
16
|
+
const rule = main(options) as Rule;
|
|
17
|
+
const result = await (rule as (t: Tree, c: SchematicContext) => Promise<Tree>)(tree, ctx);
|
|
18
|
+
return result || tree;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function read(tree: Tree, path = 'config/config.yaml'): string {
|
|
22
|
+
return tree.read(path)!.toString('utf-8');
|
|
23
|
+
}
|
|
24
|
+
function doc(tree: Tree) {
|
|
25
|
+
return parseDocument(read(tree));
|
|
26
|
+
}
|
|
27
|
+
function seedConfig(): Tree {
|
|
28
|
+
const tree = Tree.empty();
|
|
29
|
+
tree.create(
|
|
30
|
+
'config/config.yaml',
|
|
31
|
+
['# my config', 'auth-providers:', ' - name: existing', ' type: basic', 'gateway: {}', ''].join('\n'),
|
|
32
|
+
);
|
|
33
|
+
return tree;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
describe('add-auth-provider schematic', () => {
|
|
37
|
+
it('appends a jwks provider with only type-relevant fields, preserving comments', async () => {
|
|
38
|
+
const tree = await run(
|
|
39
|
+
{
|
|
40
|
+
name: 'keycloak',
|
|
41
|
+
type: 'jwks',
|
|
42
|
+
jwksUri: 'https://kc/realms/x/protocol/openid-connect/certs',
|
|
43
|
+
algorithms: ['RS256'],
|
|
44
|
+
jwtMap: ['sub:userId'],
|
|
45
|
+
uidClaim: 'sub',
|
|
46
|
+
clientSecret: 'should-not-appear',
|
|
47
|
+
},
|
|
48
|
+
seedConfig(),
|
|
49
|
+
);
|
|
50
|
+
const providers = doc(tree).getIn(['auth-providers']) as any;
|
|
51
|
+
expect(providers.items.map((i: any) => String(i.get('name')))).toEqual(['existing', 'keycloak']);
|
|
52
|
+
const kc = providers.items[1];
|
|
53
|
+
expect(String(kc.get('type'))).toBe('jwks');
|
|
54
|
+
expect(String(kc.get('headerPrefix'))).toBe('X-GTW-AUTH-');
|
|
55
|
+
expect(kc.get('jwksUri')).toBeDefined();
|
|
56
|
+
// clientSecret is irrelevant for jwks and must be filtered out.
|
|
57
|
+
expect(kc.get('clientSecret')).toBeUndefined();
|
|
58
|
+
expect(read(tree)).toContain('# my config');
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('is idempotent: re-adding the same provider leaves a single entry', async () => {
|
|
62
|
+
let tree = await run({ name: 'demo', type: 'basic', clientSecret: 'secret' }, seedConfig());
|
|
63
|
+
tree = await run({ name: 'demo', type: 'basic', clientSecret: 'secret' }, tree);
|
|
64
|
+
const providers = doc(tree).getIn(['auth-providers']) as any;
|
|
65
|
+
const names = providers.items.map((i: any) => String(i.get('name')));
|
|
66
|
+
expect(names.filter((n: string) => n === 'demo')).toHaveLength(1);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('warns when a jwt/jwks provider is missing algorithms and jwtMap (fails-closed invariant)', async () => {
|
|
70
|
+
const warnings: string[] = [];
|
|
71
|
+
await run({ name: 'insecure', type: 'jwt', issuer: 'https://issuer' }, seedConfig(), makeCtx(warnings));
|
|
72
|
+
expect(warnings.some((w) => w.includes('algorithms is REQUIRED'))).toBe(true);
|
|
73
|
+
expect(warnings.some((w) => w.includes('without jwtMap'))).toBe(true);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('creates config.yaml when it does not exist', async () => {
|
|
77
|
+
const tree = await run({ name: 'demo', type: 'basic', clientSecret: 'secret', uidClaim: 'USERID' }, Tree.empty());
|
|
78
|
+
expect(tree.exists('config/config.yaml')).toBe(true);
|
|
79
|
+
const providers = doc(tree).getIn(['auth-providers']) as any;
|
|
80
|
+
expect(String(providers.items[0].get('name'))).toBe('demo');
|
|
81
|
+
expect(String(providers.items[0].get('uidClaim'))).toBe('USERID');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Rule, SchematicContext, Tree } from '@angular-devkit/schematics';
|
|
2
|
+
import { askSelect, askText, loadPrompts, logOutcome } from '../utils/schematic-prompt.util';
|
|
3
|
+
import { findConfigYaml, readConfigDoc, upsertSeqItemByKey, writeConfigDoc } from '../utils/yaml-config.util';
|
|
4
|
+
import { AddAuthProviderOptions, AuthProviderType } from './schema';
|
|
5
|
+
|
|
6
|
+
const TYPES: readonly AuthProviderType[] = ['jwt', 'jwks', 'basic', 'str-compare', 'none'];
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Optional fields that make sense per verification strategy. A field is only emitted when it is BOTH
|
|
10
|
+
* relevant to the chosen type AND provided — so a `basic` provider never carries a stray `jwksUri`,
|
|
11
|
+
* and a token provider never carries `clientSecret`. `name`/`type`/`headerPrefix` are always written.
|
|
12
|
+
*/
|
|
13
|
+
const RELEVANT_FIELDS: Record<AuthProviderType, readonly string[]> = {
|
|
14
|
+
jwt: ['issuer', 'algorithms', 'secret', 'audience', 'uidClaim', 'jwtMap'],
|
|
15
|
+
jwks: ['issuer', 'jwksUri', 'algorithms', 'audience', 'uidClaim', 'jwtMap', 'httpsAllowUnauthorized'],
|
|
16
|
+
basic: ['clientId', 'clientSecret', 'uidClaim'],
|
|
17
|
+
'str-compare': ['secret', 'uidClaim'],
|
|
18
|
+
none: [],
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* `add-auth-provider <name>` — idempotent upsert of a top-level `auth-providers[]` entry,
|
|
23
|
+
* comment-preserving. The provider name is what gateway paths/events reference via `auth`.
|
|
24
|
+
* Only the fields relevant to the selected verification `type` are written (see RELEVANT_FIELDS).
|
|
25
|
+
*/
|
|
26
|
+
export function main(options: AddAuthProviderOptions): Rule {
|
|
27
|
+
return async (tree: Tree, context: SchematicContext) => {
|
|
28
|
+
const flagsProvided = options.name !== undefined;
|
|
29
|
+
const prompts = loadPrompts(context, flagsProvided);
|
|
30
|
+
|
|
31
|
+
const name = options.name || (await askText(prompts, 'Auth-provider name?', ''));
|
|
32
|
+
if (!name) {
|
|
33
|
+
context.logger.error('[rlb-amqp] add-auth-provider: a name is required.');
|
|
34
|
+
return tree;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const type = (options.type as AuthProviderType) || (await askSelect(prompts, 'Provider type?', TYPES, 'jwks'));
|
|
38
|
+
const headerPrefix = options.headerPrefix ?? 'X-GTW-AUTH-';
|
|
39
|
+
|
|
40
|
+
const configPath = findConfigYaml(tree, options.config);
|
|
41
|
+
const { doc, existed } = readConfigDoc(tree, configPath);
|
|
42
|
+
if (!existed) context.logger.info(`[rlb-amqp] ${configPath} not found — creating it.`);
|
|
43
|
+
|
|
44
|
+
// All candidate optional values; the per-type filter below keeps only the relevant, defined ones.
|
|
45
|
+
const candidates: Record<string, unknown> = {
|
|
46
|
+
uidClaim: options.uidClaim,
|
|
47
|
+
jwtMap: options.jwtMap,
|
|
48
|
+
algorithms: options.algorithms,
|
|
49
|
+
issuer: options.issuer,
|
|
50
|
+
jwksUri: options.jwksUri,
|
|
51
|
+
secret: options.secret,
|
|
52
|
+
audience: options.audience,
|
|
53
|
+
clientId: options.clientId,
|
|
54
|
+
clientSecret: options.clientSecret,
|
|
55
|
+
httpsAllowUnauthorized: options.httpsAllowUnauthorized,
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const item: Record<string, unknown> = { name, type, headerPrefix };
|
|
59
|
+
for (const field of RELEVANT_FIELDS[type]) {
|
|
60
|
+
if (candidates[field] !== undefined) item[field] = candidates[field];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Fails-closed invariants for token providers: without these the gateway can't safely verify.
|
|
64
|
+
if (type === 'jwt' || type === 'jwks') {
|
|
65
|
+
if (!options.algorithms || options.algorithms.length === 0) {
|
|
66
|
+
context.logger.warn(
|
|
67
|
+
'[rlb-amqp] add-auth-provider: algorithms is REQUIRED for jwt/jwks — verification will be DENIED until set (algorithm-confusion guard).',
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
if (!options.jwtMap || options.jwtMap.length === 0) {
|
|
71
|
+
context.logger.warn(
|
|
72
|
+
'[rlb-amqp] add-auth-provider: without jwtMap no identity claims are forwarded (uidClaim still needed for the action gate).',
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const outcome = upsertSeqItemByKey(doc, ['auth-providers'], 'name', item, { overwrite: options.overwrite });
|
|
78
|
+
logOutcome(context, `auth-provider '${name}'`, outcome);
|
|
79
|
+
|
|
80
|
+
writeConfigDoc(tree, configPath, doc);
|
|
81
|
+
return tree;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type AuthProviderType = 'jwt' | 'jwks' | 'basic' | 'str-compare' | 'none';
|
|
2
|
+
export interface AddAuthProviderOptions {
|
|
3
|
+
name?: string;
|
|
4
|
+
type?: AuthProviderType;
|
|
5
|
+
headerPrefix?: string;
|
|
6
|
+
uidClaim?: string;
|
|
7
|
+
jwtMap?: string[];
|
|
8
|
+
algorithms?: string[];
|
|
9
|
+
issuer?: string;
|
|
10
|
+
jwksUri?: string;
|
|
11
|
+
secret?: string;
|
|
12
|
+
audience?: string;
|
|
13
|
+
clientId?: string;
|
|
14
|
+
clientSecret?: string;
|
|
15
|
+
httpsAllowUnauthorized?: boolean;
|
|
16
|
+
overwrite?: boolean;
|
|
17
|
+
config?: string;
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/schematics/add-auth-provider/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "SchematicsRlbAmqpAddAuthProvider",
|
|
4
|
+
"title": "Add an auth-providers[] entry to config.yaml",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"name": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Provider name (the key gateway paths/events reference via auth).",
|
|
10
|
+
"x-prompt": "Auth-provider name?",
|
|
11
|
+
"$default": { "$source": "argv", "index": 0 }
|
|
12
|
+
},
|
|
13
|
+
"type": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"enum": ["jwt", "jwks", "basic", "str-compare", "none"],
|
|
16
|
+
"default": "jwks",
|
|
17
|
+
"description": "Verification strategy."
|
|
18
|
+
},
|
|
19
|
+
"headerPrefix": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"default": "X-GTW-AUTH-",
|
|
22
|
+
"description": "Prefix for the identity headers forwarded downstream."
|
|
23
|
+
},
|
|
24
|
+
"uidClaim": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "Claim whose value becomes the authenticated userId (drives the ACL/action gate)."
|
|
27
|
+
},
|
|
28
|
+
"jwtMap": {
|
|
29
|
+
"type": "array",
|
|
30
|
+
"items": { "type": "string" },
|
|
31
|
+
"description": "Claim->header maps as src:dest (jwt/jwks)."
|
|
32
|
+
},
|
|
33
|
+
"algorithms": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"items": { "type": "string" },
|
|
36
|
+
"description": "Allowed signature algorithms (jwt/jwks) — REQUIRED to verify."
|
|
37
|
+
},
|
|
38
|
+
"issuer": { "type": "string", "description": "Expected token issuer (jwt/jwks)." },
|
|
39
|
+
"jwksUri": { "type": "string", "description": "JWKS endpoint to fetch signing keys from (jwks)." },
|
|
40
|
+
"secret": { "type": "string", "description": "HMAC/shared secret (jwt symmetric, or str-compare)." },
|
|
41
|
+
"audience": { "type": "string", "description": "Expected token audience (jwt/jwks)." },
|
|
42
|
+
"clientId": { "type": "string", "description": "Client id (basic)." },
|
|
43
|
+
"clientSecret": { "type": "string", "description": "Client secret / password (basic)." },
|
|
44
|
+
"httpsAllowUnauthorized": {
|
|
45
|
+
"type": "boolean",
|
|
46
|
+
"description": "Accept self-signed TLS when fetching the JWKS (jwks) — DEV ONLY."
|
|
47
|
+
},
|
|
48
|
+
"overwrite": {
|
|
49
|
+
"type": "boolean",
|
|
50
|
+
"default": false,
|
|
51
|
+
"description": "Update the entry if it already exists (default: leave it untouched)."
|
|
52
|
+
},
|
|
53
|
+
"config": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"description": "Path to config.yaml (default: auto-detected)."
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"required": []
|
|
59
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Auth-provider verification strategy. Mirrors HandlerAuthConfig['type']. */
|
|
2
|
+
export type AuthProviderType = 'jwt' | 'jwks' | 'basic' | 'str-compare' | 'none';
|
|
3
|
+
|
|
4
|
+
export interface AddAuthProviderOptions {
|
|
5
|
+
/** Provider name (the key gateway paths/events reference via `auth`). Prompted when omitted. */
|
|
6
|
+
name?: string;
|
|
7
|
+
/** Verification strategy. Default: jwks. */
|
|
8
|
+
type?: AuthProviderType;
|
|
9
|
+
/** Prefix for the identity headers the gateway forwards downstream. Default: X-GTW-AUTH-. */
|
|
10
|
+
headerPrefix?: string;
|
|
11
|
+
/** Claim whose value becomes the authenticated userId (drives the ACL/action gate). */
|
|
12
|
+
uidClaim?: string;
|
|
13
|
+
/** Claim→header maps as `src:dest` (jwt/jwks): which token claims are forwarded downstream. */
|
|
14
|
+
jwtMap?: string[];
|
|
15
|
+
/** Allowed signature algorithms (jwt/jwks) — REQUIRED to verify (algorithm-confusion guard). */
|
|
16
|
+
algorithms?: string[];
|
|
17
|
+
/** Expected token issuer (jwt/jwks). */
|
|
18
|
+
issuer?: string;
|
|
19
|
+
/** JWKS endpoint to fetch signing keys from (jwks). */
|
|
20
|
+
jwksUri?: string;
|
|
21
|
+
/** HMAC/shared secret (jwt with symmetric alg, or str-compare). */
|
|
22
|
+
secret?: string;
|
|
23
|
+
/** Expected token audience (jwt/jwks). */
|
|
24
|
+
audience?: string;
|
|
25
|
+
/** Client id (basic). */
|
|
26
|
+
clientId?: string;
|
|
27
|
+
/** Client secret / password (basic). */
|
|
28
|
+
clientSecret?: string;
|
|
29
|
+
/** Accept self-signed TLS when fetching the JWKS (jwks) — DEV ONLY. */
|
|
30
|
+
httpsAllowUnauthorized?: boolean;
|
|
31
|
+
/** Update the entry when it already exists (default: leave it untouched). */
|
|
32
|
+
overwrite?: boolean;
|
|
33
|
+
/** Path to config.yaml (default: auto-detected, typically config/config.yaml). */
|
|
34
|
+
config?: string;
|
|
35
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.main = main;
|
|
4
|
+
const broker_yaml_util_1 = require("../utils/broker-yaml.util");
|
|
5
|
+
const schematic_prompt_util_1 = require("../utils/schematic-prompt.util");
|
|
6
|
+
const yaml_config_util_1 = require("../utils/yaml-config.util");
|
|
7
|
+
const TYPES = ['direct', 'topic', 'fanout', 'headers'];
|
|
8
|
+
function main(options) {
|
|
9
|
+
return async (tree, context) => {
|
|
10
|
+
const flagsProvided = options.name !== undefined;
|
|
11
|
+
const prompts = (0, schematic_prompt_util_1.loadPrompts)(context, flagsProvided);
|
|
12
|
+
const name = options.name || (await (0, schematic_prompt_util_1.askText)(prompts, 'Exchange name?', ''));
|
|
13
|
+
if (!name) {
|
|
14
|
+
context.logger.error('[rlb-amqp] add-exchange: a name is required.');
|
|
15
|
+
return tree;
|
|
16
|
+
}
|
|
17
|
+
const type = options.type || (await (0, schematic_prompt_util_1.askSelect)(prompts, 'Exchange type?', TYPES, 'direct'));
|
|
18
|
+
const configPath = (0, yaml_config_util_1.findConfigYaml)(tree, options.config);
|
|
19
|
+
const { doc, existed } = (0, yaml_config_util_1.readConfigDoc)(tree, configPath);
|
|
20
|
+
if (!existed)
|
|
21
|
+
context.logger.info(`[rlb-amqp] ${configPath} not found — creating it.`);
|
|
22
|
+
const outcome = (0, broker_yaml_util_1.ensureExchange)(doc, {
|
|
23
|
+
name,
|
|
24
|
+
type,
|
|
25
|
+
createExchangeIfNotExists: options.createIfNotExists ?? true,
|
|
26
|
+
durable: options.durable ?? true,
|
|
27
|
+
autoDelete: options.autoDelete ?? false,
|
|
28
|
+
internal: options.internal ?? false,
|
|
29
|
+
}, { overwrite: options.overwrite });
|
|
30
|
+
(0, schematic_prompt_util_1.logOutcome)(context, `exchange '${name}'`, outcome);
|
|
31
|
+
const withQueue = options.withQueue ?? (await (0, schematic_prompt_util_1.askConfirm)(prompts, `Create a queue bound to '${name}'?`, false));
|
|
32
|
+
if (withQueue) {
|
|
33
|
+
const queueName = options.queueName || (await (0, schematic_prompt_util_1.askText)(prompts, 'Queue name?', name));
|
|
34
|
+
const needsRoutingKey = type === 'topic';
|
|
35
|
+
const routingKey = needsRoutingKey ? options.routingKey || queueName : options.routingKey;
|
|
36
|
+
const qOutcome = (0, broker_yaml_util_1.ensureQueue)(doc, {
|
|
37
|
+
name: queueName,
|
|
38
|
+
exchange: name,
|
|
39
|
+
routingKey,
|
|
40
|
+
createQueueIfNotExists: true,
|
|
41
|
+
durable: true,
|
|
42
|
+
});
|
|
43
|
+
(0, schematic_prompt_util_1.logOutcome)(context, `queue '${queueName}'`, qOutcome);
|
|
44
|
+
}
|
|
45
|
+
(0, yaml_config_util_1.writeConfigDoc)(tree, configPath, doc);
|
|
46
|
+
return tree;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/schematics/add-exchange/index.ts"],"names":[],"mappings":";;AAcA,oBAkDC;AA/DD,gEAAsF;AACtF,0EAAyG;AACzG,gEAA0F;AAG1F,MAAM,KAAK,GAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAQhF,SAAgB,IAAI,CAAC,OAA2B;IAC9C,OAAO,KAAK,EAAE,IAAU,EAAE,OAAyB,EAAE,EAAE;QACrD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;QACjD,MAAM,OAAO,GAAG,IAAA,mCAAW,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,IAAA,+BAAO,EAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAI,OAAO,CAAC,IAAqB,IAAI,CAAC,MAAM,IAAA,iCAAS,EAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE7G,MAAM,UAAU,GAAG,IAAA,iCAAc,EAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAa,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,UAAU,2BAA2B,CAAC,CAAC;QAEvF,MAAM,OAAO,GAAG,IAAA,iCAAc,EAC5B,GAAG,EACH;YACE,IAAI;YACJ,IAAI;YACJ,yBAAyB,EAAE,OAAO,CAAC,iBAAiB,IAAI,IAAI;YAC5D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;YACvC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;SACpC,EACD,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACjC,CAAC;QACF,IAAA,kCAAU,EAAC,OAAO,EAAE,aAAa,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC;QAGnD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,MAAM,IAAA,kCAAU,EAAC,OAAO,EAAE,4BAA4B,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAChH,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,MAAM,IAAA,+BAAO,EAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;YACrF,MAAM,eAAe,GAAG,IAAI,KAAK,OAAO,CAAC;YACzC,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;YAC1F,MAAM,QAAQ,GAAG,IAAA,8BAAW,EAAC,GAAG,EAAE;gBAChC,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,IAAI;gBACd,UAAU;gBACV,sBAAsB,EAAE,IAAI;gBAC5B,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,IAAA,kCAAU,EAAC,OAAO,EAAE,UAAU,SAAS,GAAG,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;QAED,IAAA,iCAAc,EAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC"}
|