@ferreirasw/yoke-common 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/decorators/public.decorator.d.ts +2 -0
- package/dist/auth/decorators/public.decorator.js +8 -0
- package/dist/auth/decorators/public.decorator.js.map +1 -0
- package/dist/auth/guards/jwt-auth.guard.d.ts +10 -0
- package/dist/auth/guards/jwt-auth.guard.js +44 -0
- package/dist/auth/guards/jwt-auth.guard.js.map +1 -0
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.js +21 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/interfaces/jwt-payload.interface.d.ts +15 -0
- package/dist/auth/interfaces/jwt-payload.interface.js +3 -0
- package/dist/auth/interfaces/jwt-payload.interface.js.map +1 -0
- package/dist/auth/strategies/jwt.strategy.d.ts +8 -0
- package/dist/auth/strategies/jwt.strategy.js +43 -0
- package/dist/auth/strategies/jwt.strategy.js.map +1 -0
- package/dist/casl/decorators/check-policies.decorator.d.ts +3 -0
- package/dist/casl/decorators/check-policies.decorator.js +8 -0
- package/dist/casl/decorators/check-policies.decorator.js.map +1 -0
- package/dist/casl/guards/policies.guard.d.ts +11 -0
- package/dist/casl/guards/policies.guard.js +57 -0
- package/dist/casl/guards/policies.guard.js.map +1 -0
- package/dist/casl/index.d.ts +4 -0
- package/dist/casl/index.js +21 -0
- package/dist/casl/index.js.map +1 -0
- package/dist/casl/interfaces/policy-handler.interface.d.ts +5 -0
- package/dist/casl/interfaces/policy-handler.interface.js +3 -0
- package/dist/casl/interfaces/policy-handler.interface.js.map +1 -0
- package/dist/casl/types/app-ability.d.ts +4 -0
- package/dist/casl/types/app-ability.js +3 -0
- package/dist/casl/types/app-ability.js.map +1 -0
- package/dist/enums/index.d.ts +1 -0
- package/dist/enums/index.js +3 -1
- package/dist/enums/index.js.map +1 -1
- package/dist/enums/role.enum.d.ts +5 -0
- package/dist/enums/role.enum.js +10 -0
- package/dist/enums/role.enum.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/messaging/constants/dlx-config.d.ts +11 -0
- package/dist/messaging/constants/dlx-config.js +14 -0
- package/dist/messaging/constants/dlx-config.js.map +1 -0
- package/dist/messaging/constants/index.d.ts +1 -0
- package/dist/messaging/constants/index.js +1 -0
- package/dist/messaging/constants/index.js.map +1 -1
- package/dist/messaging/index.d.ts +2 -0
- package/dist/messaging/index.js +2 -0
- package/dist/messaging/index.js.map +1 -1
- package/dist/messaging/interfaces/consumer-options.d.ts +10 -0
- package/dist/messaging/interfaces/consumer-options.js +3 -0
- package/dist/messaging/interfaces/consumer-options.js.map +1 -0
- package/dist/messaging/interfaces/index.d.ts +1 -0
- package/dist/messaging/interfaces/index.js +18 -0
- package/dist/messaging/interfaces/index.js.map +1 -0
- package/dist/messaging/services/base-consumer.service.d.ts +28 -0
- package/dist/messaging/services/base-consumer.service.js +238 -0
- package/dist/messaging/services/base-consumer.service.js.map +1 -0
- package/dist/messaging/services/base-events.service.d.ts +2 -0
- package/dist/messaging/services/base-events.service.js +23 -3
- package/dist/messaging/services/base-events.service.js.map +1 -1
- package/dist/messaging/services/index.d.ts +1 -0
- package/dist/messaging/services/index.js +1 -0
- package/dist/messaging/services/index.js.map +1 -1
- package/dist/messaging/utils/index.d.ts +1 -0
- package/dist/messaging/utils/index.js +18 -0
- package/dist/messaging/utils/index.js.map +1 -0
- package/dist/messaging/utils/retry-calculator.d.ts +6 -0
- package/dist/messaging/utils/retry-calculator.js +37 -0
- package/dist/messaging/utils/retry-calculator.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +13 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Public = exports.IS_PUBLIC_KEY = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
exports.IS_PUBLIC_KEY = 'isPublic';
|
|
6
|
+
const Public = () => (0, common_1.SetMetadata)(exports.IS_PUBLIC_KEY, true);
|
|
7
|
+
exports.Public = Public;
|
|
8
|
+
//# sourceMappingURL=public.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.decorator.js","sourceRoot":"","sources":["../../../src/auth/decorators/public.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAOhC,QAAA,aAAa,GAAG,UAAU,CAAC;AAejC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAA,oBAAW,EAAC,qBAAa,EAAE,IAAI,CAAC,CAAC;AAAhD,QAAA,MAAM,UAA0C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ExecutionContext } from '@nestjs/common';
|
|
2
|
+
import { Reflector } from '@nestjs/core';
|
|
3
|
+
declare const JwtAuthGuard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
|
|
4
|
+
export declare class JwtAuthGuard extends JwtAuthGuard_base {
|
|
5
|
+
private reflector;
|
|
6
|
+
constructor(reflector: Reflector);
|
|
7
|
+
canActivate(context: ExecutionContext): boolean | Promise<boolean> | import("rxjs").Observable<boolean>;
|
|
8
|
+
handleRequest(err: any, user: any, info: any): any;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.JwtAuthGuard = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@nestjs/core");
|
|
15
|
+
const passport_1 = require("@nestjs/passport");
|
|
16
|
+
const public_decorator_1 = require("../decorators/public.decorator");
|
|
17
|
+
let JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)('jwt') {
|
|
18
|
+
constructor(reflector) {
|
|
19
|
+
super();
|
|
20
|
+
this.reflector = reflector;
|
|
21
|
+
}
|
|
22
|
+
canActivate(context) {
|
|
23
|
+
const isPublic = this.reflector.getAllAndOverride(public_decorator_1.IS_PUBLIC_KEY, [
|
|
24
|
+
context.getHandler(),
|
|
25
|
+
context.getClass(),
|
|
26
|
+
]);
|
|
27
|
+
if (isPublic) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
return super.canActivate(context);
|
|
31
|
+
}
|
|
32
|
+
handleRequest(err, user, info) {
|
|
33
|
+
if (err || !user) {
|
|
34
|
+
throw err || new common_1.UnauthorizedException('Token inválido ou expirado');
|
|
35
|
+
}
|
|
36
|
+
return user;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.JwtAuthGuard = JwtAuthGuard;
|
|
40
|
+
exports.JwtAuthGuard = JwtAuthGuard = __decorate([
|
|
41
|
+
(0, common_1.Injectable)(),
|
|
42
|
+
__metadata("design:paramtypes", [core_1.Reflector])
|
|
43
|
+
], JwtAuthGuard);
|
|
44
|
+
//# sourceMappingURL=jwt-auth.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../../src/auth/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAIwB;AACxB,uCAAyC;AACzC,+CAA6C;AAC7C,qEAA+D;AAuBxD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAChD,YAAoB,SAAoB;QACtC,KAAK,EAAE,CAAC;QADU,cAAS,GAAT,SAAS,CAAW;IAExC,CAAC;IAQD,WAAW,CAAC,OAAyB;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAWD,aAAa,CAAC,GAAQ,EAAE,IAAS,EAAE,IAAS;QAC1C,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,GAAG,IAAI,IAAI,8BAAqB,CAAC,4BAA4B,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAzCY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAEoB,gBAAS;GAD7B,YAAY,CAyCxB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./interfaces/jwt-payload.interface"), exports);
|
|
18
|
+
__exportStar(require("./decorators/public.decorator"), exports);
|
|
19
|
+
__exportStar(require("./guards/jwt-auth.guard"), exports);
|
|
20
|
+
__exportStar(require("./strategies/jwt.strategy"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAOA,qEAAmD;AAGnD,gEAA8C;AAG9C,0DAAwC;AAGxC,4DAA0C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Role } from '../../enums/role.enum';
|
|
2
|
+
export interface JwtPayload {
|
|
3
|
+
id: string;
|
|
4
|
+
email: string;
|
|
5
|
+
role: Role;
|
|
6
|
+
companyId?: string;
|
|
7
|
+
iat?: number;
|
|
8
|
+
exp?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface AuthenticatedUser {
|
|
11
|
+
id: string;
|
|
12
|
+
email: string;
|
|
13
|
+
role: Role;
|
|
14
|
+
companyId?: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-payload.interface.js","sourceRoot":"","sources":["../../../src/auth/interfaces/jwt-payload.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Strategy } from 'passport-jwt';
|
|
2
|
+
import { JwtPayload, AuthenticatedUser } from '../interfaces/jwt-payload.interface';
|
|
3
|
+
declare const JwtStrategy_base: new (...args: any[]) => Strategy;
|
|
4
|
+
export declare class JwtStrategy extends JwtStrategy_base {
|
|
5
|
+
constructor();
|
|
6
|
+
validate(payload: JwtPayload): Promise<AuthenticatedUser>;
|
|
7
|
+
}
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.JwtStrategy = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const passport_1 = require("@nestjs/passport");
|
|
15
|
+
const passport_jwt_1 = require("passport-jwt");
|
|
16
|
+
let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(passport_jwt_1.Strategy, 'jwt') {
|
|
17
|
+
constructor() {
|
|
18
|
+
super({
|
|
19
|
+
jwtFromRequest: passport_jwt_1.ExtractJwt.fromAuthHeaderAsBearerToken(),
|
|
20
|
+
ignoreExpiration: false,
|
|
21
|
+
secretOrKey: process.env.JWT_SECRET,
|
|
22
|
+
issuer: 'yoke-microservices',
|
|
23
|
+
audience: 'yoke-api',
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async validate(payload) {
|
|
27
|
+
if (!payload.id || !payload.email || !payload.role) {
|
|
28
|
+
throw new common_1.UnauthorizedException('Invalid token payload');
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
id: payload.id,
|
|
32
|
+
email: payload.email,
|
|
33
|
+
role: payload.role,
|
|
34
|
+
companyId: payload.companyId,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.JwtStrategy = JwtStrategy;
|
|
39
|
+
exports.JwtStrategy = JwtStrategy = __decorate([
|
|
40
|
+
(0, common_1.Injectable)(),
|
|
41
|
+
__metadata("design:paramtypes", [])
|
|
42
|
+
], JwtStrategy);
|
|
43
|
+
//# sourceMappingURL=jwt.strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.strategy.js","sourceRoot":"","sources":["../../../src/auth/strategies/jwt.strategy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;AACnE,+CAAoD;AACpD,+CAAoD;AA8B7C,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,IAAA,2BAAgB,EAAC,uBAAQ,EAAE,KAAK,CAAC;IAChE;QACE,KAAK,CAAC;YACJ,cAAc,EAAE,yBAAU,CAAC,2BAA2B,EAAE;YACxD,gBAAgB,EAAE,KAAK;YACvB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;YACnC,MAAM,EAAE,oBAAoB;YAC5B,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;IACL,CAAC;IAYD,KAAK,CAAC,QAAQ,CAAC,OAAmB;QAChC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACnD,MAAM,IAAI,8BAAqB,CAAC,uBAAuB,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;IACJ,CAAC;CACF,CAAA;AAjCY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;;GACA,WAAW,CAiCvB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CheckPolicies = exports.CHECK_POLICIES_KEY = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
exports.CHECK_POLICIES_KEY = 'check_policies';
|
|
6
|
+
const CheckPolicies = (...handlers) => (0, common_1.SetMetadata)(exports.CHECK_POLICIES_KEY, handlers);
|
|
7
|
+
exports.CheckPolicies = CheckPolicies;
|
|
8
|
+
//# sourceMappingURL=check-policies.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-policies.decorator.js","sourceRoot":"","sources":["../../../src/casl/decorators/check-policies.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAMhC,QAAA,kBAAkB,GAAG,gBAAgB,CAAC;AAuC5C,MAAM,aAAa,GAAG,CAAC,GAAG,QAAyB,EAAE,EAAE,CAC5D,IAAA,oBAAW,EAAC,0BAAkB,EAAE,QAAQ,CAAC,CAAC;AAD/B,QAAA,aAAa,iBACkB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CanActivate, ExecutionContext, Logger } from '@nestjs/common';
|
|
2
|
+
import { Reflector } from '@nestjs/core';
|
|
3
|
+
import { AppAbility } from '../types/app-ability';
|
|
4
|
+
export declare abstract class PoliciesGuard implements CanActivate {
|
|
5
|
+
protected reflector: Reflector;
|
|
6
|
+
protected readonly logger: Logger;
|
|
7
|
+
constructor(reflector: Reflector);
|
|
8
|
+
protected abstract createAbilityForUser(user: any): AppAbility | undefined;
|
|
9
|
+
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
10
|
+
private execPolicyHandler;
|
|
11
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var PoliciesGuard_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.PoliciesGuard = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const core_1 = require("@nestjs/core");
|
|
16
|
+
const check_policies_decorator_1 = require("../decorators/check-policies.decorator");
|
|
17
|
+
let PoliciesGuard = PoliciesGuard_1 = class PoliciesGuard {
|
|
18
|
+
constructor(reflector) {
|
|
19
|
+
this.reflector = reflector;
|
|
20
|
+
this.logger = new common_1.Logger(PoliciesGuard_1.name);
|
|
21
|
+
}
|
|
22
|
+
async canActivate(context) {
|
|
23
|
+
const policyHandlers = this.reflector.get(check_policies_decorator_1.CHECK_POLICIES_KEY, context.getHandler()) || [];
|
|
24
|
+
if (policyHandlers.length === 0) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
const request = context.switchToHttp().getRequest();
|
|
28
|
+
const { user } = request;
|
|
29
|
+
if (!user) {
|
|
30
|
+
this.logger.warn('PoliciesGuard: No user found in request. Ensure JwtAuthGuard runs before PoliciesGuard.');
|
|
31
|
+
throw new common_1.ForbiddenException('User not authenticated');
|
|
32
|
+
}
|
|
33
|
+
const ability = this.createAbilityForUser(user);
|
|
34
|
+
if (!ability) {
|
|
35
|
+
this.logger.warn(`PoliciesGuard: Could not create ability for user ${user.id}`);
|
|
36
|
+
throw new common_1.ForbiddenException('Cannot determine user permissions');
|
|
37
|
+
}
|
|
38
|
+
const allowed = policyHandlers.every((handler) => this.execPolicyHandler(handler, ability));
|
|
39
|
+
if (!allowed) {
|
|
40
|
+
this.logger.debug(`PoliciesGuard: Access denied for user ${user.id} (${user.role}) on ${request.method} ${request.url}`);
|
|
41
|
+
throw new common_1.ForbiddenException('Insufficient permissions');
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
execPolicyHandler(handler, ability) {
|
|
46
|
+
if (typeof handler === 'function') {
|
|
47
|
+
return handler(ability);
|
|
48
|
+
}
|
|
49
|
+
return handler.handle(ability);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.PoliciesGuard = PoliciesGuard;
|
|
53
|
+
exports.PoliciesGuard = PoliciesGuard = PoliciesGuard_1 = __decorate([
|
|
54
|
+
(0, common_1.Injectable)(),
|
|
55
|
+
__metadata("design:paramtypes", [core_1.Reflector])
|
|
56
|
+
], PoliciesGuard);
|
|
57
|
+
//# sourceMappingURL=policies.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policies.guard.js","sourceRoot":"","sources":["../../../src/casl/guards/policies.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAMwB;AACxB,uCAAyC;AAEzC,qFAA4E;AA2CrE,IAAe,aAAa,qBAA5B,MAAe,aAAa;IAGjC,YAAsB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QAFvB,WAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAEd,CAAC;IAkB9C,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,cAAc,GAClB,IAAI,CAAC,SAAS,CAAC,GAAG,CAChB,6CAAkB,EAClB,OAAO,CAAC,UAAU,EAAE,CACrB,IAAI,EAAE,CAAC;QAGV,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAGzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,yFAAyF,CAC1F,CAAC;YACF,MAAM,IAAI,2BAAkB,CAAC,wBAAwB,CAAC,CAAC;QACzD,CAAC;QAGD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,oDAAoD,IAAI,CAAC,EAAE,EAAE,CAC9D,CAAC;YACF,MAAM,IAAI,2BAAkB,CAAC,mCAAmC,CAAC,CAAC;QACpE,CAAC;QAGD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/C,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CACzC,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,yCAAyC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,QAAQ,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CACtG,CAAC;YACF,MAAM,IAAI,2BAAkB,CAAC,0BAA0B,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IASO,iBAAiB,CAAC,OAAsB,EAAE,OAAmB;QACnE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAElC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;CACF,CAAA;AAtFqB,sCAAa;wBAAb,aAAa;IADlC,IAAA,mBAAU,GAAE;qCAIsB,gBAAS;GAHtB,aAAa,CAsFlC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types/app-ability"), exports);
|
|
18
|
+
__exportStar(require("./interfaces/policy-handler.interface"), exports);
|
|
19
|
+
__exportStar(require("./decorators/check-policies.decorator"), exports);
|
|
20
|
+
__exportStar(require("./guards/policies.guard"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/casl/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAOA,sDAAoC;AAGpC,wEAAsD;AAGtD,wEAAsD;AAGtD,0DAAwC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-handler.interface.js","sourceRoot":"","sources":["../../../src/casl/interfaces/policy-handler.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-ability.js","sourceRoot":"","sources":["../../../src/casl/types/app-ability.ts"],"names":[],"mappings":""}
|
package/dist/enums/index.d.ts
CHANGED
|
@@ -7,4 +7,5 @@ export { Modality } from './modality.enum';
|
|
|
7
7
|
export { ProductStatus } from './product-status.enum';
|
|
8
8
|
export { QuotationStatus } from './quotation-status.enum';
|
|
9
9
|
export { RiskProfile } from './risk-profile.enum';
|
|
10
|
+
export { Role } from './role.enum';
|
|
10
11
|
export { TaxRegime } from './tax-regime.enum';
|
package/dist/enums/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TaxRegime = exports.RiskProfile = exports.QuotationStatus = exports.ProductStatus = exports.Modality = exports.InsurerStatus = exports.FundStatus = exports.CoverageType = exports.Benchmark = exports.Action = void 0;
|
|
3
|
+
exports.TaxRegime = exports.Role = exports.RiskProfile = exports.QuotationStatus = exports.ProductStatus = exports.Modality = exports.InsurerStatus = exports.FundStatus = exports.CoverageType = exports.Benchmark = exports.Action = void 0;
|
|
4
4
|
var action_enum_1 = require("./action.enum");
|
|
5
5
|
Object.defineProperty(exports, "Action", { enumerable: true, get: function () { return action_enum_1.Action; } });
|
|
6
6
|
var benchmark_enum_1 = require("./benchmark.enum");
|
|
@@ -19,6 +19,8 @@ var quotation_status_enum_1 = require("./quotation-status.enum");
|
|
|
19
19
|
Object.defineProperty(exports, "QuotationStatus", { enumerable: true, get: function () { return quotation_status_enum_1.QuotationStatus; } });
|
|
20
20
|
var risk_profile_enum_1 = require("./risk-profile.enum");
|
|
21
21
|
Object.defineProperty(exports, "RiskProfile", { enumerable: true, get: function () { return risk_profile_enum_1.RiskProfile; } });
|
|
22
|
+
var role_enum_1 = require("./role.enum");
|
|
23
|
+
Object.defineProperty(exports, "Role", { enumerable: true, get: function () { return role_enum_1.Role; } });
|
|
22
24
|
var tax_regime_enum_1 = require("./tax-regime.enum");
|
|
23
25
|
Object.defineProperty(exports, "TaxRegime", { enumerable: true, get: function () { return tax_regime_enum_1.TaxRegime; } });
|
|
24
26
|
//# sourceMappingURL=index.js.map
|
package/dist/enums/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":";;;AAMA,6CAAuC;AAA9B,qGAAA,MAAM,OAAA;AACf,mDAA6C;AAApC,2GAAA,SAAS,OAAA;AAClB,2DAAoD;AAA3C,kHAAA,YAAY,OAAA;AACrB,uDAAgD;AAAvC,8GAAA,UAAU,OAAA;AACnB,6DAAsD;AAA7C,oHAAA,aAAa,OAAA;AACtB,iDAA2C;AAAlC,yGAAA,QAAQ,OAAA;AACjB,6DAAsD;AAA7C,oHAAA,aAAa,OAAA;AACtB,iEAA0D;AAAjD,wHAAA,eAAe,OAAA;AACxB,yDAAkD;AAAzC,gHAAA,WAAW,OAAA;AACpB,qDAA8C;AAArC,4GAAA,SAAS,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":";;;AAMA,6CAAuC;AAA9B,qGAAA,MAAM,OAAA;AACf,mDAA6C;AAApC,2GAAA,SAAS,OAAA;AAClB,2DAAoD;AAA3C,kHAAA,YAAY,OAAA;AACrB,uDAAgD;AAAvC,8GAAA,UAAU,OAAA;AACnB,6DAAsD;AAA7C,oHAAA,aAAa,OAAA;AACtB,iDAA2C;AAAlC,yGAAA,QAAQ,OAAA;AACjB,6DAAsD;AAA7C,oHAAA,aAAa,OAAA;AACtB,iEAA0D;AAAjD,wHAAA,eAAe,OAAA;AACxB,yDAAkD;AAAzC,gHAAA,WAAW,OAAA;AACpB,yCAAmC;AAA1B,iGAAA,IAAI,OAAA;AACb,qDAA8C;AAArC,4GAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Role = void 0;
|
|
4
|
+
var Role;
|
|
5
|
+
(function (Role) {
|
|
6
|
+
Role["ADMIN"] = "admin";
|
|
7
|
+
Role["INSURANCE_COMPANY_MANAGER"] = "insurance_company_manager";
|
|
8
|
+
Role["END_USER"] = "end_user";
|
|
9
|
+
})(Role || (exports.Role = Role = {}));
|
|
10
|
+
//# sourceMappingURL=role.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.enum.js","sourceRoot":"","sources":["../../src/enums/role.enum.ts"],"names":[],"mappings":";;;AAWA,IAAY,IAIX;AAJD,WAAY,IAAI;IACd,uBAAe,CAAA;IACf,+DAAuD,CAAA;IACvD,6BAAqB,CAAA;AACvB,CAAC,EAJW,IAAI,oBAAJ,IAAI,QAIf"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -15,6 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./enums"), exports);
|
|
18
|
+
__exportStar(require("./auth"), exports);
|
|
19
|
+
__exportStar(require("./casl"), exports);
|
|
18
20
|
__exportStar(require("./messaging"), exports);
|
|
19
21
|
__exportStar(require("./dto"), exports);
|
|
20
22
|
__exportStar(require("./interfaces"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASA,0CAAwB;AAGxB,8CAA4B;AAG5B,wCAAsB;AACtB,+CAA6B;AAG7B,4CAA0B;AAC1B,iDAA+B;AAG/B,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASA,0CAAwB;AAGxB,yCAAuB;AACvB,yCAAuB;AAGvB,8CAA4B;AAG5B,wCAAsB;AACtB,+CAA6B;AAG7B,4CAA0B;AAC1B,iDAA+B;AAG/B,0CAAwB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const DLX_CONFIG: {
|
|
2
|
+
readonly DEAD_LETTER_EXCHANGE: "dlx.exchange";
|
|
3
|
+
readonly DEAD_LETTER_QUEUE_PREFIX: "dlq";
|
|
4
|
+
readonly RETRY_EXCHANGE: "retry.exchange";
|
|
5
|
+
readonly RETRY_QUEUE_PREFIX: "retry";
|
|
6
|
+
readonly MAX_RETRY_ATTEMPTS: 3;
|
|
7
|
+
readonly INITIAL_RETRY_DELAY: 1000;
|
|
8
|
+
readonly MAX_RETRY_DELAY: 60000;
|
|
9
|
+
readonly RETRY_MULTIPLIER: 2;
|
|
10
|
+
};
|
|
11
|
+
export type DLXConfig = typeof DLX_CONFIG;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DLX_CONFIG = void 0;
|
|
4
|
+
exports.DLX_CONFIG = {
|
|
5
|
+
DEAD_LETTER_EXCHANGE: 'dlx.exchange',
|
|
6
|
+
DEAD_LETTER_QUEUE_PREFIX: 'dlq',
|
|
7
|
+
RETRY_EXCHANGE: 'retry.exchange',
|
|
8
|
+
RETRY_QUEUE_PREFIX: 'retry',
|
|
9
|
+
MAX_RETRY_ATTEMPTS: 3,
|
|
10
|
+
INITIAL_RETRY_DELAY: 1000,
|
|
11
|
+
MAX_RETRY_DELAY: 60000,
|
|
12
|
+
RETRY_MULTIPLIER: 2,
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=dlx-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dlx-config.js","sourceRoot":"","sources":["../../../src/messaging/constants/dlx-config.ts"],"names":[],"mappings":";;;AAOa,QAAA,UAAU,GAAG;IAKxB,oBAAoB,EAAE,cAAc;IAMpC,wBAAwB,EAAE,KAAK;IAM/B,cAAc,EAAE,gBAAgB;IAMhC,kBAAkB,EAAE,OAAO;IAM3B,kBAAkB,EAAE,CAAC;IAMrB,mBAAmB,EAAE,IAAI;IAMzB,eAAe,EAAE,KAAK;IAMtB,gBAAgB,EAAE,CAAC;CACX,CAAC"}
|
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./exchanges"), exports);
|
|
18
18
|
__exportStar(require("./routing-keys"), exports);
|
|
19
|
+
__exportStar(require("./dlx-config"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/messaging/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIA,8CAA4B;AAC5B,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/messaging/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIA,8CAA4B;AAC5B,iDAA+B;AAC/B,+CAA6B"}
|
package/dist/messaging/index.js
CHANGED
|
@@ -17,4 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./constants"), exports);
|
|
18
18
|
__exportStar(require("./types"), exports);
|
|
19
19
|
__exportStar(require("./services"), exports);
|
|
20
|
+
__exportStar(require("./interfaces"), exports);
|
|
21
|
+
__exportStar(require("./utils"), exports);
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAMA,8CAA4B;AAC5B,0CAAwB;AACxB,6CAA2B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAMA,8CAA4B;AAC5B,0CAAwB;AACxB,6CAA2B;AAC3B,+CAA6B;AAC7B,0CAAwB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consumer-options.js","sourceRoot":"","sources":["../../../src/messaging/interfaces/consumer-options.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './consumer-options';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./consumer-options"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/messaging/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIA,qDAAmC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Logger, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { ConfigService } from '@nestjs/config';
|
|
3
|
+
import * as amqp from 'amqp-connection-manager';
|
|
4
|
+
import { ChannelWrapper } from 'amqp-connection-manager';
|
|
5
|
+
import { ConsumeMessage } from 'amqplib';
|
|
6
|
+
import { ConsumerOptions } from '../interfaces';
|
|
7
|
+
export declare abstract class BaseConsumerService implements OnModuleInit, OnModuleDestroy {
|
|
8
|
+
protected readonly configService: ConfigService;
|
|
9
|
+
protected readonly serviceName: string;
|
|
10
|
+
protected readonly logger: Logger;
|
|
11
|
+
protected connection: amqp.AmqpConnectionManager;
|
|
12
|
+
protected channelWrapper: ChannelWrapper;
|
|
13
|
+
protected channel: any;
|
|
14
|
+
constructor(configService: ConfigService, serviceName: string);
|
|
15
|
+
protected abstract setupConsumers(channel: any): Promise<void>;
|
|
16
|
+
protected abstract handleMessage(msg: ConsumeMessage, routingKey: string): Promise<void>;
|
|
17
|
+
onModuleInit(): Promise<void>;
|
|
18
|
+
onModuleDestroy(): Promise<void>;
|
|
19
|
+
protected setupDeadLetterExchange(channel: any): Promise<void>;
|
|
20
|
+
protected setupRetryQueue(channel: any, queueName: string, exchange: string, routingKeys: string[]): Promise<void>;
|
|
21
|
+
protected setupDeadLetterQueue(channel: any, queueName: string): Promise<void>;
|
|
22
|
+
protected consumeQueue(options: ConsumerOptions): Promise<void>;
|
|
23
|
+
protected handleMessageWrapper(msg: ConsumeMessage, maxRetryAttempts: number): Promise<void>;
|
|
24
|
+
protected retryMessage(msg: ConsumeMessage, currentAttempt: number): Promise<void>;
|
|
25
|
+
protected sendToDeadLetter(msg: ConsumeMessage, error: any): Promise<void>;
|
|
26
|
+
isConnected(): boolean;
|
|
27
|
+
getChannelWrapper(): ChannelWrapper;
|
|
28
|
+
}
|