fiscalia_bo-nest-helpers 0.1.56 → 0.1.58

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.
Files changed (40) hide show
  1. package/dist/helpers/expresion_regular.helper.d.ts +10 -0
  2. package/dist/helpers/expresion_regular.helper.js +14 -0
  3. package/dist/helpers/expresion_regular.helper.js.map +1 -0
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +2 -1
  6. package/dist/ms-seguridad-convenio/decorators/token.decorator.d.ts +8 -0
  7. package/dist/ms-seguridad-convenio/decorators/token.decorator.js +44 -0
  8. package/dist/ms-seguridad-convenio/decorators/token.decorator.js.map +1 -0
  9. package/dist/ms-seguridad-convenio/dto/ms-seguridad.input.d.ts +8 -0
  10. package/dist/ms-seguridad-convenio/dto/ms-seguridad.input.js +98 -0
  11. package/dist/ms-seguridad-convenio/dto/ms-seguridad.input.js.map +1 -0
  12. package/dist/ms-seguridad-convenio/helpers/global-exception.helper.d.ts +20 -0
  13. package/dist/ms-seguridad-convenio/helpers/global-exception.helper.js +86 -0
  14. package/dist/ms-seguridad-convenio/helpers/global-exception.helper.js.map +1 -0
  15. package/dist/ms-seguridad-convenio/index.d.ts +5 -0
  16. package/dist/ms-seguridad-convenio/index.js +26 -0
  17. package/dist/ms-seguridad-convenio/index.js.map +1 -0
  18. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.controller.d.ts +11 -0
  19. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.controller.js +89 -0
  20. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.controller.js.map +1 -0
  21. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.decorator.d.ts +10 -0
  22. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.decorator.js +36 -0
  23. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.decorator.js.map +1 -0
  24. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.module.d.ts +13 -0
  25. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.module.js +79 -0
  26. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.module.js.map +1 -0
  27. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.service.d.ts +14 -0
  28. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.service.js +51 -0
  29. package/dist/ms-seguridad-convenio/ms-seguridad-convenio.service.js.map +1 -0
  30. package/dist/ms-seguridad-convenio/permision.guard.d.ts +11 -0
  31. package/dist/ms-seguridad-convenio/permision.guard.js +56 -0
  32. package/dist/ms-seguridad-convenio/permision.guard.js.map +1 -0
  33. package/dist/ms-seguridad-convenio/token-auth.guard.d.ts +7 -0
  34. package/dist/ms-seguridad-convenio/token-auth.guard.js +43 -0
  35. package/dist/ms-seguridad-convenio/token-auth.guard.js.map +1 -0
  36. package/dist/ms-seguridad-convenio/types/Seguridad.pb.d.ts +276 -0
  37. package/dist/ms-seguridad-convenio/types/Seguridad.pb.js +38 -0
  38. package/dist/ms-seguridad-convenio/types/Seguridad.pb.js.map +1 -0
  39. package/dist/ms-seguridad-convenio/types/Seguridad.proto +305 -0
  40. package/package.json +2 -1
@@ -0,0 +1,79 @@
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 MsSeguridadConvenioModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.MsSeguridadConvenioModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const microservices_1 = require("@nestjs/microservices");
13
+ const ms_seguridad_convenio_service_1 = require("./ms-seguridad-convenio.service");
14
+ const path_1 = require("path");
15
+ const chalk_1 = require("chalk");
16
+ const core_1 = require("@nestjs/core");
17
+ const ms_seguridad_convenio_controller_1 = require("./ms-seguridad-convenio.controller");
18
+ const Seguridad_pb_1 = require("./types/Seguridad.pb");
19
+ let MsSeguridadConvenioModule = MsSeguridadConvenioModule_1 = class MsSeguridadConvenioModule {
20
+ static register(options) {
21
+ const urlSeguridad = process.env.ENV_GRPC_MS_SEGURIDAD || (options && options.urlSeguridad);
22
+ if (!urlSeguridad)
23
+ this.showError('ENV_GRPC_MS_SEGURIDAD');
24
+ this.client = microservices_1.ClientProxyFactory.create({
25
+ transport: microservices_1.Transport.GRPC,
26
+ options: {
27
+ url: urlSeguridad.trim(),
28
+ package: Seguridad_pb_1.SERVICES_SEGURIDAD_PACKAGE_NAME,
29
+ protoPath: (0, path_1.join)(__dirname, './types/Seguridad.proto'),
30
+ loader: { keepCase: true },
31
+ },
32
+ });
33
+ return {
34
+ global: options.global,
35
+ module: MsSeguridadConvenioModule_1,
36
+ imports: [],
37
+ controllers: [ms_seguridad_convenio_controller_1.SeguridadConvenioController],
38
+ providers: [
39
+ { provide: 'PROVIDER_NAME_MS_SEGURIDAD', useValue: this.client },
40
+ ms_seguridad_convenio_service_1.MsSeguridadConvenioService,
41
+ ],
42
+ exports: [ms_seguridad_convenio_service_1.MsSeguridadConvenioService, 'PROVIDER_NAME_MS_SEGURIDAD'],
43
+ };
44
+ }
45
+ static async registerAsync(options) {
46
+ const urlSeguridad = process.env.ENV_GRPC_MS_SEGURIDAD || (options && options.urlSeguridad);
47
+ if (!urlSeguridad)
48
+ this.showError('ENV_GRPC_MS_SEGURIDAD');
49
+ this.client = await microservices_1.ClientProxyFactory.create({
50
+ transport: microservices_1.Transport.GRPC,
51
+ options: {
52
+ url: urlSeguridad.trim(),
53
+ package: Seguridad_pb_1.SERVICES_SEGURIDAD_PACKAGE_NAME,
54
+ protoPath: (0, path_1.join)(__dirname, './types/Seguridad.proto'),
55
+ loader: { keepCase: true },
56
+ },
57
+ }).connect();
58
+ return {
59
+ module: MsSeguridadConvenioModule_1,
60
+ imports: [],
61
+ controllers: [ms_seguridad_convenio_controller_1.SeguridadConvenioController],
62
+ providers: [
63
+ { provide: 'PROVIDER_NAME_MS_SEGURIDAD', useValue: this.client },
64
+ ms_seguridad_convenio_service_1.MsSeguridadConvenioService,
65
+ ],
66
+ exports: [ms_seguridad_convenio_service_1.MsSeguridadConvenioService, 'PROVIDER_NAME_MS_SEGURIDAD'],
67
+ };
68
+ }
69
+ static showError(text) {
70
+ console.warn(chalk_1.bold.red(`${text} no definido en variables de entorno`));
71
+ }
72
+ };
73
+ MsSeguridadConvenioModule = MsSeguridadConvenioModule_1 = __decorate([
74
+ (0, common_1.Module)({
75
+ providers: [ms_seguridad_convenio_service_1.MsSeguridadConvenioService, core_1.Reflector],
76
+ })
77
+ ], MsSeguridadConvenioModule);
78
+ exports.MsSeguridadConvenioModule = MsSeguridadConvenioModule;
79
+ //# sourceMappingURL=ms-seguridad-convenio.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ms-seguridad-convenio.module.js","sourceRoot":"","sources":["../../src/ms-seguridad-convenio/ms-seguridad-convenio.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,yDAAmF;AACnF,mFAA6E;AAE7E,+BAA4B;AAC5B,iCAA6B;AAC7B,uCAAyC;AACzC,yFAAiF;AACjF,uDAAuE;AAUhE,IAAM,yBAAyB,iCAA/B,MAAM,yBAAyB;IAMpC,MAAM,CAAC,QAAQ,CAAC,OAAuC;QACrD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;QAE5F,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,kCAAkB,CAAC,MAAM,CAAC;YACtC,SAAS,EAAE,yBAAS,CAAC,IAAI;YACzB,OAAO,EAAE;gBACP,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE;gBACxB,OAAO,EAAE,8CAA+B;gBACxC,SAAS,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,yBAAyB,CAAC;gBACrD,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC3B;SACF,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,2BAAyB;YACjC,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,CAAC,8DAA2B,CAAC;YAC1C,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;gBAChE,0DAA0B;aAE3B;YACD,OAAO,EAAE,CAAC,0DAA0B,EAAE,4BAA4B,CAAC;SACpE,CAAC;IACJ,CAAC;IAKD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAuC;QAChE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;QAE5F,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,GAAG,MAAM,kCAAkB,CAAC,MAAM,CAAC;YAC5C,SAAS,EAAE,yBAAS,CAAC,IAAI;YACzB,OAAO,EAAE;gBACP,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE;gBACxB,OAAO,EAAE,8CAA+B;gBACxC,SAAS,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,yBAAyB,CAAC;gBACrD,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC3B;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,OAAO;YACL,MAAM,EAAE,2BAAyB;YACjC,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,CAAC,8DAA2B,CAAC;YAC1C,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;gBAChE,0DAA0B;aAC3B;YACD,OAAO,EAAE,CAAC,0DAA0B,EAAE,4BAA4B,CAAC;SACpE,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,IAAY;QACnC,OAAO,CAAC,IAAI,CAAC,YAAI,CAAC,GAAG,CAAC,GAAG,IAAI,sCAAsC,CAAC,CAAC,CAAC;IACxE,CAAC;CACF,CAAA;AAnEY,yBAAyB;IAHrC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,0DAA0B,EAAE,gBAAS,CAAC;KACnD,CAAC;GACW,yBAAyB,CAmErC;AAnEY,8DAAyB"}
@@ -0,0 +1,14 @@
1
+ import { ClientGrpc } from '@nestjs/microservices';
2
+ import { LoginConvenioBody, TokenBody, ConvenioLogBody } from './types/Seguridad.pb';
3
+ export declare class MsSeguridadConvenioService {
4
+ private readonly client;
5
+ private seguridadService;
6
+ constructor(client: ClientGrpc);
7
+ private onModuleInit;
8
+ login(body: LoginConvenioBody): Promise<import("./types/Seguridad.pb").LoginConvenioResponse>;
9
+ logout(body: TokenBody): Promise<import("./types/Seguridad.pb").ConvenioTokenValidResponse>;
10
+ valid(body: TokenBody): Promise<import("./types/Seguridad.pb").InformacionConvenioResponse>;
11
+ information(body: TokenBody): Promise<import("./types/Seguridad.pb").InformacionConvenioResponse>;
12
+ listServices(body: TokenBody): Promise<import("./types/Seguridad.pb").ResponseServicioTokenConvenio>;
13
+ createLog(body: ConvenioLogBody): Promise<import("./types/Seguridad.pb").ConvenioLogResponse>;
14
+ }
@@ -0,0 +1,51 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MsSeguridadConvenioService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const Seguridad_pb_1 = require("./types/Seguridad.pb");
18
+ const rxjs_1 = require("rxjs");
19
+ let MsSeguridadConvenioService = class MsSeguridadConvenioService {
20
+ constructor(client) {
21
+ this.client = client;
22
+ }
23
+ onModuleInit() {
24
+ this.seguridadService = this.client.getService(Seguridad_pb_1.SEGURIDAD_SERVICE_NAME);
25
+ }
26
+ login(body) {
27
+ return (0, rxjs_1.firstValueFrom)(this.seguridadService.convenioLogin(body));
28
+ }
29
+ logout(body) {
30
+ return (0, rxjs_1.firstValueFrom)(this.seguridadService.convenioLogout(body));
31
+ }
32
+ valid(body) {
33
+ return (0, rxjs_1.firstValueFrom)(this.seguridadService.convenioTokenInformation(body));
34
+ }
35
+ information(body) {
36
+ return (0, rxjs_1.firstValueFrom)(this.seguridadService.convenioTokenInformation(body));
37
+ }
38
+ listServices(body) {
39
+ return (0, rxjs_1.firstValueFrom)(this.seguridadService.convenioTokenServicios(body));
40
+ }
41
+ createLog(body) {
42
+ return (0, rxjs_1.firstValueFrom)(this.seguridadService.convenioLog(body));
43
+ }
44
+ };
45
+ MsSeguridadConvenioService = __decorate([
46
+ (0, common_1.Injectable)(),
47
+ __param(0, (0, common_1.Inject)('PROVIDER_NAME_MS_SEGURIDAD')),
48
+ __metadata("design:paramtypes", [Object])
49
+ ], MsSeguridadConvenioService);
50
+ exports.MsSeguridadConvenioService = MsSeguridadConvenioService;
51
+ //# sourceMappingURL=ms-seguridad-convenio.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ms-seguridad-convenio.service.js","sourceRoot":"","sources":["../../src/ms-seguridad-convenio/ms-seguridad-convenio.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,uDAM8B;AAC9B,+BAAsC;AAG/B,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAGrC,YACyD,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IACvE,CAAC;IAEG,YAAY;QAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAyB,qCAAsB,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,IAAuB;QAC3B,OAAO,IAAA,qBAAc,EAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,IAAe;QACpB,OAAO,IAAA,qBAAc,EAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,IAAe;QACnB,OAAO,IAAA,qBAAc,EAAC,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,WAAW,CAAC,IAAe;QACzB,OAAO,IAAA,qBAAc,EAAC,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,YAAY,CAAC,IAAe;QAC1B,OAAO,IAAA,qBAAc,EAAC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,SAAS,CAAC,IAAqB;QAC7B,OAAO,IAAA,qBAAc,EAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;CAEF,CAAA;AAnCY,0BAA0B;IADtC,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,4BAA4B,CAAC,CAAA;;GAJ5B,0BAA0B,CAmCtC;AAnCY,gEAA0B"}
@@ -0,0 +1,11 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { MsSeguridadConvenioService } from './ms-seguridad-convenio.service';
3
+ export declare const Permissions: (...dataOrPipes: unknown[]) => ParameterDecorator;
4
+ export declare const RequiredPermissions: (...permissions: string[]) => import("@nestjs/common").CustomDecorator<string>;
5
+ export declare class PermissionsGuard implements CanActivate {
6
+ private readonly seguridadService;
7
+ constructor(seguridadService: MsSeguridadConvenioService);
8
+ canActivate(context: ExecutionContext): Promise<boolean>;
9
+ private getRequiredPermissions;
10
+ private hasPermission;
11
+ }
@@ -0,0 +1,56 @@
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.PermissionsGuard = exports.RequiredPermissions = exports.Permissions = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const ms_seguridad_convenio_service_1 = require("./ms-seguridad-convenio.service");
15
+ const global_exception_filter_1 = require("../helpers/global-exception.filter");
16
+ exports.Permissions = (0, common_1.createParamDecorator)((data, ctx) => ctx.switchToHttp().getRequest().permissions);
17
+ const PERMISSIONS_KEY = 'permissions_headers_key';
18
+ const RequiredPermissions = (...permissions) => (0, common_1.SetMetadata)(PERMISSIONS_KEY, permissions);
19
+ exports.RequiredPermissions = RequiredPermissions;
20
+ let PermissionsGuard = class PermissionsGuard {
21
+ constructor(seguridadService) {
22
+ this.seguridadService = seguridadService;
23
+ }
24
+ async canActivate(context) {
25
+ var _a;
26
+ const request = context.switchToHttp().getRequest();
27
+ const token = request.headers.authorization.split(' ')[1];
28
+ const requiredPermissions = this.getRequiredPermissions(context);
29
+ const response = await this.seguridadService.listServices({ token });
30
+ const userPermissions = (_a = response.data) !== null && _a !== void 0 ? _a : [];
31
+ request.permissions = userPermissions;
32
+ if (!requiredPermissions) {
33
+ return true;
34
+ }
35
+ const result = this.hasPermission(userPermissions, requiredPermissions);
36
+ if (!result)
37
+ throw new global_exception_filter_1.MsSeguridadHttpError('No tiene los permisos necesarios', 403);
38
+ this.seguridadService.createLog({
39
+ servicio: userPermissions[0],
40
+ token,
41
+ });
42
+ return true;
43
+ }
44
+ getRequiredPermissions(context) {
45
+ return Reflect.getMetadata(PERMISSIONS_KEY, context.getHandler());
46
+ }
47
+ hasPermission(userPermissions, requiredPermissions) {
48
+ return requiredPermissions.every((permission) => userPermissions.includes(permission));
49
+ }
50
+ };
51
+ PermissionsGuard = __decorate([
52
+ (0, common_1.Injectable)(),
53
+ __metadata("design:paramtypes", [ms_seguridad_convenio_service_1.MsSeguridadConvenioService])
54
+ ], PermissionsGuard);
55
+ exports.PermissionsGuard = PermissionsGuard;
56
+ //# sourceMappingURL=permision.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permision.guard.js","sourceRoot":"","sources":["../../src/ms-seguridad-convenio/permision.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAMwB;AACxB,mFAA6E;AAC7E,gFAA2E;AAE9D,QAAA,WAAW,GAAG,IAAA,6BAAoB,EAC7C,CAAC,IAAa,EAAE,GAAqB,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,CACtF,CAAC;AAEF,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAC3C,MAAM,mBAAmB,GAAG,CAAC,GAAG,WAAqB,EAAE,EAAE,CAC9D,IAAA,oBAAW,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AAD/B,QAAA,mBAAmB,uBACY;AAGrC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAA6B,gBAA4C;QAA5C,qBAAgB,GAAhB,gBAAgB,CAA4B;IAAI,CAAC;IAE9E,KAAK,CAAC,WAAW,CAAC,OAAyB;;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAErE,MAAM,eAAe,GAAG,MAAA,QAAQ,CAAC,IAAI,mCAAI,EAAE,CAAC;QAC5C,OAAO,CAAC,WAAW,GAAG,eAAe,CAAC;QAEtC,IAAI,CAAC,mBAAmB,EAAE;YACxB,OAAO,IAAI,CAAC;SACb;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;QAGxE,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,8CAAoB,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;QACrF,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC9B,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;YAC5B,KAAK;SACN,CAAC,CAAA;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAGO,sBAAsB,CAAC,OAAyB;QACtD,OAAO,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAGO,aAAa,CAAC,eAAyB,EAAE,mBAA6B;QAC5E,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACzF,CAAC;CACF,CAAA;AArCY,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAEoC,0DAA0B;GAD9D,gBAAgB,CAqC5B;AArCY,4CAAgB"}
@@ -0,0 +1,7 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { MsSeguridadConvenioService } from './ms-seguridad-convenio.service';
3
+ export declare class TokenConvenioGuard implements CanActivate {
4
+ private readonly seguridadService;
5
+ constructor(seguridadService: MsSeguridadConvenioService);
6
+ canActivate(context: ExecutionContext): Promise<boolean>;
7
+ }
@@ -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.TokenConvenioGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const ms_seguridad_convenio_service_1 = require("./ms-seguridad-convenio.service");
15
+ const global_exception_filter_1 = require("../helpers/global-exception.filter");
16
+ let TokenConvenioGuard = class TokenConvenioGuard {
17
+ constructor(seguridadService) {
18
+ this.seguridadService = seguridadService;
19
+ }
20
+ async canActivate(context) {
21
+ const request = context.switchToHttp().getRequest();
22
+ const authHeader = request.headers.authorization;
23
+ if (!authHeader) {
24
+ throw new global_exception_filter_1.MsSeguridadHttpError('la petición debe contener un token de autorización', 401);
25
+ }
26
+ const [bearer, token] = authHeader.split(' ');
27
+ if (`${bearer}`.toLowerCase() !== 'bearer' || !token) {
28
+ throw new global_exception_filter_1.MsSeguridadHttpError('la petición debe contener un jwt de autorización válido', 401);
29
+ }
30
+ const { data, errorMessage } = await this.seguridadService.information({ token });
31
+ if (errorMessage) {
32
+ throw new global_exception_filter_1.MsSeguridadHttpError(errorMessage !== null && errorMessage !== void 0 ? errorMessage : 'el token no es válido', 401);
33
+ }
34
+ request.userHeader = data;
35
+ return true;
36
+ }
37
+ };
38
+ TokenConvenioGuard = __decorate([
39
+ (0, common_1.Injectable)(),
40
+ __metadata("design:paramtypes", [ms_seguridad_convenio_service_1.MsSeguridadConvenioService])
41
+ ], TokenConvenioGuard);
42
+ exports.TokenConvenioGuard = TokenConvenioGuard;
43
+ //# sourceMappingURL=token-auth.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-auth.guard.js","sourceRoot":"","sources":["../../src/ms-seguridad-convenio/token-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA2E;AAC3E,mFAA6E;AAC7E,gFAA2E;AAGpE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAA6B,gBAA4C;QAA5C,qBAAgB,GAAhB,gBAAgB,CAA4B;IAAI,CAAC;IAE9E,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QAEjD,IAAI,CAAC,UAAU,EAAE;YAEf,MAAM,IAAI,8CAAoB,CAAC,oDAAoD,EAAE,GAAG,CAAC,CAAC;SAC3F;QAED,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,GAAG,MAAM,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE;YAEpD,MAAM,IAAI,8CAAoB,CAC5B,yDAAyD,EACzD,GAAG,CACJ,CAAC;SACH;QAGD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAElF,IAAI,YAAY,EAAE;YAChB,MAAM,IAAI,8CAAoB,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,uBAAuB,EAAE,GAAG,CAAC,CAAC;SAC9E;QAED,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAhCY,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAEoC,0DAA0B;GAD9D,kBAAkB,CAgC9B;AAhCY,gDAAkB"}
@@ -0,0 +1,276 @@
1
+ import { Observable } from "rxjs";
2
+ export declare const protobufPackage = "services.seguridad";
3
+ export interface LoginConvenioBody {
4
+ token: string;
5
+ ci: string;
6
+ nombres: string;
7
+ apellidoPaterno: string;
8
+ apellidoMaterno: string;
9
+ fechaNacimiento: string;
10
+ intitucionIdentificador: string;
11
+ }
12
+ export interface TokenBody {
13
+ token: string;
14
+ }
15
+ export interface ConvenioLogBody {
16
+ token: string;
17
+ servicio: string;
18
+ }
19
+ export interface ConvenioLogResponse {
20
+ errorMessage?: string | undefined;
21
+ data?: string | undefined;
22
+ }
23
+ export interface RpaAgeticInput {
24
+ numeroDocumento: string;
25
+ }
26
+ export interface LoginRequest {
27
+ usuario: string;
28
+ password: string;
29
+ aplicacion: string;
30
+ userAgent: string;
31
+ ip: string;
32
+ codigoDispositivo?: string | undefined;
33
+ }
34
+ export interface ResponseListPermissions {
35
+ error: boolean;
36
+ message: string;
37
+ status: number;
38
+ response: ResponseListPermissions_ResponseListPermisoMsn | undefined;
39
+ }
40
+ export interface ResponseListPermissions_ResponseListPermisoMsn {
41
+ data: ResponseListPermissions_Response | undefined;
42
+ validationErrors: string;
43
+ suggestions: string;
44
+ }
45
+ export interface ResponseListPermissions_Response {
46
+ permisos: string[];
47
+ total: number;
48
+ }
49
+ export interface ResponseListServices {
50
+ error: boolean;
51
+ message: string;
52
+ status: number;
53
+ response: ResponseListServices_ResponseServicesMsn | undefined;
54
+ }
55
+ export interface ResponseListServices_ResponseServicesMsn {
56
+ data: ResponseListServices_ResponseServices | undefined;
57
+ validationErrors: string;
58
+ suggestions: string;
59
+ }
60
+ export interface ResponseListServices_ResponseServices {
61
+ servicios: string[];
62
+ total: number;
63
+ }
64
+ export interface ResponseValidToken {
65
+ error: boolean;
66
+ message: string;
67
+ status: number;
68
+ response: ResponseValidToken_ResponseValidTokenMsn | undefined;
69
+ }
70
+ export interface ResponseValidToken_ResponseValidTokenMsn {
71
+ data: boolean;
72
+ validationErrors: string;
73
+ suggestions: string;
74
+ }
75
+ export interface ResponseUserData {
76
+ error: boolean;
77
+ message: string;
78
+ status: number;
79
+ response: ResponseUserData_UserPayload | undefined;
80
+ }
81
+ export interface ResponseUserData_UserPayload {
82
+ usuarioId: number;
83
+ aplicacionId: number;
84
+ funcionarioId?: number | undefined;
85
+ msPersonaId: number;
86
+ perfilPersonaId: number;
87
+ ci: string;
88
+ institucionId?: number | undefined;
89
+ }
90
+ export interface LogoutResponse {
91
+ error: boolean;
92
+ message: string;
93
+ status: number;
94
+ }
95
+ export interface RpaServiceResponse {
96
+ error: boolean;
97
+ message: string;
98
+ status: number;
99
+ response?: RpaServiceResponse_RpaResponse | undefined;
100
+ }
101
+ export interface RpaServiceResponse_RpaResponse {
102
+ codigoPeticion?: string | undefined;
103
+ abogado?: RpaServiceResponse_Abogado | undefined;
104
+ }
105
+ export interface RpaServiceResponse_Abogado {
106
+ matricula?: string | undefined;
107
+ fechaRegistro?: string | undefined;
108
+ estadoRegistro?: string | undefined;
109
+ numeroDocumento?: string | undefined;
110
+ fechaNacimiento?: string | undefined;
111
+ nombres?: string | undefined;
112
+ primerApellido?: string | undefined;
113
+ segundoApellido?: string | undefined;
114
+ buzonElectronico?: string | undefined;
115
+ foto?: string | undefined;
116
+ fechaVencimientoMatricula?: string | undefined;
117
+ }
118
+ export interface LoginResponse {
119
+ error: boolean;
120
+ message: string;
121
+ status: number;
122
+ response: LoginResponse_ResponseLogin | undefined;
123
+ }
124
+ export interface LoginResponse_ResponseLogin {
125
+ token?: string | undefined;
126
+ tokenRefresh?: string | undefined;
127
+ usuario: LoginResponse_Usuario | undefined;
128
+ roles: string[];
129
+ funcionario: LoginResponse_Funcionario | undefined;
130
+ cargos: LoginResponse_Cargo[];
131
+ apps: LoginResponse_App[];
132
+ permisos: string[];
133
+ }
134
+ export interface LoginResponse_Usuario {
135
+ ci: string;
136
+ nombre: string;
137
+ paterno: string;
138
+ materno: string;
139
+ perfilPersonaId: number;
140
+ personaId: number;
141
+ msPersonaId: number;
142
+ nombreCompleto: string;
143
+ nacimiento: string;
144
+ sexo: string;
145
+ direccion: string;
146
+ celular: number;
147
+ email: string;
148
+ nacionalidad: string;
149
+ profesion: string;
150
+ foto: string;
151
+ fotoRuta: string;
152
+ whatsapp: number;
153
+ telegram: number;
154
+ emailValidado: number;
155
+ notificacionDefault: string;
156
+ id: number;
157
+ }
158
+ export interface LoginResponse_Funcionario {
159
+ funcionarioId: number;
160
+ estado: number;
161
+ latitud?: number | undefined;
162
+ longitud?: number | undefined;
163
+ divisiones: number;
164
+ organizaciones: number;
165
+ nombreCompleto: string;
166
+ fechaIngresoInstitucion: string;
167
+ aniosAntiguedad: number;
168
+ idFirma: number;
169
+ sinControlAsistencia: number;
170
+ conInamovilidad: number;
171
+ siglaProfesion: string;
172
+ usuarioId: number;
173
+ division: string;
174
+ cargo: string;
175
+ cargoId: number;
176
+ divisionId: number;
177
+ oficina: string;
178
+ oficinaId: number;
179
+ municipio: string;
180
+ departamentoId: number;
181
+ entidad: string;
182
+ entidadId: number;
183
+ institucionId: number;
184
+ institucion: string;
185
+ }
186
+ export interface LoginResponse_App {
187
+ nombre: string;
188
+ codigo: string;
189
+ url: string;
190
+ msFileIdLogo: string;
191
+ }
192
+ export interface LoginResponse_Cargo {
193
+ nombre: string;
194
+ fechaAlta: string;
195
+ fechaBaja: string;
196
+ tipo: number;
197
+ situacion: number;
198
+ estado: number;
199
+ }
200
+ export interface InformacionConvenioResponse {
201
+ errorMessage?: string | undefined;
202
+ data: InformacionConvenioResponse_Response | undefined;
203
+ }
204
+ export interface InformacionConvenioResponse_Response {
205
+ token: string;
206
+ tokenVigencia: string;
207
+ usuario: InformacionConvenioResponse_Usuario | undefined;
208
+ convenio: InformacionConvenioResponse_Convenio | undefined;
209
+ institucion: InformacionConvenioResponse_Institucion | undefined;
210
+ servicios: string[];
211
+ }
212
+ export interface InformacionConvenioResponse_Usuario {
213
+ ci: string;
214
+ personaId: number;
215
+ nombreCompleto: string;
216
+ }
217
+ export interface InformacionConvenioResponse_Convenio {
218
+ nombre: string;
219
+ fechaInicio: string;
220
+ fechaFin: string;
221
+ }
222
+ export interface InformacionConvenioResponse_Institucion {
223
+ nombre: string;
224
+ identificador: string;
225
+ }
226
+ export interface LoginConvenioResponse {
227
+ errorMessage: string;
228
+ data: LoginConvenioResponse_Response | undefined;
229
+ }
230
+ export interface LoginConvenioResponse_Response {
231
+ token: string;
232
+ tokenVigencia: string;
233
+ }
234
+ export interface ConvenioTokenValidResponse {
235
+ errorMessage?: string | undefined;
236
+ data?: string | undefined;
237
+ }
238
+ export interface ResponseServicioTokenConvenio {
239
+ errorMessage?: string | undefined;
240
+ data: string[];
241
+ }
242
+ export declare const SERVICES_SEGURIDAD_PACKAGE_NAME = "services.seguridad";
243
+ export interface seguridadServiceClient {
244
+ listPermissions(request: TokenBody): Observable<ResponseListPermissions>;
245
+ listServices(request: TokenBody): Observable<ResponseListServices>;
246
+ convenioLogin(request: LoginConvenioBody): Observable<LoginConvenioResponse>;
247
+ convenioLogout(request: TokenBody): Observable<ConvenioTokenValidResponse>;
248
+ convenioLog(request: ConvenioLogBody): Observable<ConvenioLogResponse>;
249
+ convenioTokenInformation(request: TokenBody): Observable<InformacionConvenioResponse>;
250
+ convenioTokenValidar(request: TokenBody): Observable<ConvenioTokenValidResponse>;
251
+ convenioTokenServicios(request: TokenBody): Observable<ResponseServicioTokenConvenio>;
252
+ validToken(request: TokenBody): Observable<ResponseValidToken>;
253
+ login(request: LoginRequest): Observable<LoginResponse>;
254
+ tokenInformation(request: TokenBody): Observable<LoginResponse>;
255
+ logout(request: TokenBody): Observable<LogoutResponse>;
256
+ userDataByToken(request: TokenBody): Observable<ResponseUserData>;
257
+ getRpaData(request: RpaAgeticInput): Observable<RpaServiceResponse>;
258
+ }
259
+ export interface seguridadServiceController {
260
+ listPermissions(request: TokenBody): Promise<ResponseListPermissions> | Observable<ResponseListPermissions> | ResponseListPermissions;
261
+ listServices(request: TokenBody): Promise<ResponseListServices> | Observable<ResponseListServices> | ResponseListServices;
262
+ convenioLogin(request: LoginConvenioBody): Promise<LoginConvenioResponse> | Observable<LoginConvenioResponse> | LoginConvenioResponse;
263
+ convenioLogout(request: TokenBody): Promise<ConvenioTokenValidResponse> | Observable<ConvenioTokenValidResponse> | ConvenioTokenValidResponse;
264
+ convenioLog(request: ConvenioLogBody): Promise<ConvenioLogResponse> | Observable<ConvenioLogResponse> | ConvenioLogResponse;
265
+ convenioTokenInformation(request: TokenBody): Promise<InformacionConvenioResponse> | Observable<InformacionConvenioResponse> | InformacionConvenioResponse;
266
+ convenioTokenValidar(request: TokenBody): Promise<ConvenioTokenValidResponse> | Observable<ConvenioTokenValidResponse> | ConvenioTokenValidResponse;
267
+ convenioTokenServicios(request: TokenBody): Promise<ResponseServicioTokenConvenio> | Observable<ResponseServicioTokenConvenio> | ResponseServicioTokenConvenio;
268
+ validToken(request: TokenBody): Promise<ResponseValidToken> | Observable<ResponseValidToken> | ResponseValidToken;
269
+ login(request: LoginRequest): Promise<LoginResponse> | Observable<LoginResponse> | LoginResponse;
270
+ tokenInformation(request: TokenBody): Promise<LoginResponse> | Observable<LoginResponse> | LoginResponse;
271
+ logout(request: TokenBody): Promise<LogoutResponse> | Observable<LogoutResponse> | LogoutResponse;
272
+ userDataByToken(request: TokenBody): Promise<ResponseUserData> | Observable<ResponseUserData> | ResponseUserData;
273
+ getRpaData(request: RpaAgeticInput): Promise<RpaServiceResponse> | Observable<RpaServiceResponse> | RpaServiceResponse;
274
+ }
275
+ export declare function seguridadServiceControllerMethods(): (constructor: Function) => void;
276
+ export declare const SEGURIDAD_SERVICE_NAME = "seguridadService";
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SEGURIDAD_SERVICE_NAME = exports.seguridadServiceControllerMethods = exports.SERVICES_SEGURIDAD_PACKAGE_NAME = exports.protobufPackage = void 0;
4
+ const microservices_1 = require("@nestjs/microservices");
5
+ exports.protobufPackage = "services.seguridad";
6
+ exports.SERVICES_SEGURIDAD_PACKAGE_NAME = "services.seguridad";
7
+ function seguridadServiceControllerMethods() {
8
+ return function (constructor) {
9
+ const grpcMethods = [
10
+ "listPermissions",
11
+ "listServices",
12
+ "convenioLogin",
13
+ "convenioLogout",
14
+ "convenioLog",
15
+ "convenioTokenInformation",
16
+ "convenioTokenValidar",
17
+ "convenioTokenServicios",
18
+ "validToken",
19
+ "login",
20
+ "tokenInformation",
21
+ "logout",
22
+ "userDataByToken",
23
+ "getRpaData",
24
+ ];
25
+ for (const method of grpcMethods) {
26
+ const descriptor = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
27
+ (0, microservices_1.GrpcMethod)("seguridadService", method)(constructor.prototype[method], method, descriptor);
28
+ }
29
+ const grpcStreamMethods = [];
30
+ for (const method of grpcStreamMethods) {
31
+ const descriptor = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
32
+ (0, microservices_1.GrpcStreamMethod)("seguridadService", method)(constructor.prototype[method], method, descriptor);
33
+ }
34
+ };
35
+ }
36
+ exports.seguridadServiceControllerMethods = seguridadServiceControllerMethods;
37
+ exports.SEGURIDAD_SERVICE_NAME = "seguridadService";
38
+ //# sourceMappingURL=Seguridad.pb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Seguridad.pb.js","sourceRoot":"","sources":["../../../src/ms-seguridad-convenio/types/Seguridad.pb.ts"],"names":[],"mappings":";;;AACA,yDAAqE;AAGxD,QAAA,eAAe,GAAG,oBAAoB,CAAC;AAsRvC,QAAA,+BAA+B,GAAG,oBAAoB,CAAC;AAoFpE,SAAgB,iCAAiC;IAC/C,OAAO,UAAU,WAAqB;QACpC,MAAM,WAAW,GAAa;YAC5B,iBAAiB;YACjB,cAAc;YACd,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,0BAA0B;YAC1B,sBAAsB;YACtB,wBAAwB;YACxB,YAAY;YACZ,OAAO;YACP,kBAAkB;YAClB,QAAQ;YACR,iBAAiB;YACjB,YAAY;SACb,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE;YAChC,MAAM,UAAU,GAAQ,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACxF,IAAA,0BAAU,EAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SAC3F;QACD,MAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE;YACtC,MAAM,UAAU,GAAQ,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACxF,IAAA,gCAAgB,EAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SACjG;IACH,CAAC,CAAC;AACJ,CAAC;AA5BD,8EA4BC;AAEY,QAAA,sBAAsB,GAAG,kBAAkB,CAAC"}