@codylabs/nestjs-common 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. package/dist/decorators/index.d.ts +8 -0
  2. package/dist/decorators/index.js +25 -0
  3. package/dist/decorators/index.js.map +1 -0
  4. package/dist/decorators/is-boolean-field.decorator.d.ts +2 -0
  5. package/dist/decorators/is-boolean-field.decorator.js +25 -0
  6. package/dist/decorators/is-boolean-field.decorator.js.map +1 -0
  7. package/dist/decorators/is-date-field.decorator.d.ts +2 -0
  8. package/dist/decorators/is-date-field.decorator.js +37 -0
  9. package/dist/decorators/is-date-field.decorator.js.map +1 -0
  10. package/dist/decorators/is-enum-field.decorator.d.ts +2 -0
  11. package/dist/decorators/is-enum-field.decorator.js +23 -0
  12. package/dist/decorators/is-enum-field.decorator.js.map +1 -0
  13. package/dist/decorators/is-nested-field.decorator.d.ts +2 -0
  14. package/dist/decorators/is-nested-field.decorator.js +25 -0
  15. package/dist/decorators/is-nested-field.decorator.js.map +1 -0
  16. package/dist/decorators/is-number-field.decorator.d.ts +2 -0
  17. package/dist/decorators/is-number-field.decorator.js +51 -0
  18. package/dist/decorators/is-number-field.decorator.js.map +1 -0
  19. package/dist/decorators/is-string-field.decorator.d.ts +2 -0
  20. package/dist/decorators/is-string-field.decorator.js +74 -0
  21. package/dist/decorators/is-string-field.decorator.js.map +1 -0
  22. package/dist/decorators/min-max-length.decorator.d.ts +2 -0
  23. package/dist/decorators/min-max-length.decorator.js +26 -0
  24. package/dist/decorators/min-max-length.decorator.js.map +1 -0
  25. package/dist/decorators/transform.decorator.d.ts +4 -0
  26. package/dist/decorators/transform.decorator.js +25 -0
  27. package/dist/decorators/transform.decorator.js.map +1 -0
  28. package/dist/filters/http-exception.filter.d.ts +4 -0
  29. package/dist/filters/http-exception.filter.js +30 -0
  30. package/dist/filters/http-exception.filter.js.map +1 -0
  31. package/dist/filters/index.d.ts +2 -0
  32. package/dist/filters/index.js +19 -0
  33. package/dist/filters/index.js.map +1 -0
  34. package/dist/filters/unprocessable-entity-exception.filter.d.ts +5 -0
  35. package/dist/filters/unprocessable-entity-exception.filter.js +43 -0
  36. package/dist/filters/unprocessable-entity-exception.filter.js.map +1 -0
  37. package/dist/guards/and.guard.d.ts +3 -0
  38. package/dist/guards/and.guard.js +43 -0
  39. package/dist/guards/and.guard.js.map +1 -0
  40. package/dist/guards/index.d.ts +3 -0
  41. package/dist/guards/index.js +20 -0
  42. package/dist/guards/index.js.map +1 -0
  43. package/dist/guards/or.guard.d.ts +3 -0
  44. package/dist/guards/or.guard.js +42 -0
  45. package/dist/guards/or.guard.js.map +1 -0
  46. package/dist/guards/sequential.guard.d.ts +3 -0
  47. package/dist/guards/sequential.guard.js +42 -0
  48. package/dist/guards/sequential.guard.js.map +1 -0
  49. package/dist/index.d.ts +8 -0
  50. package/dist/index.js +25 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/interceptors/index.d.ts +1 -0
  53. package/dist/interceptors/index.js +18 -0
  54. package/dist/interceptors/index.js.map +1 -0
  55. package/dist/interceptors/update-selective-validation.interceptor.d.ts +7 -0
  56. package/dist/interceptors/update-selective-validation.interceptor.js +52 -0
  57. package/dist/interceptors/update-selective-validation.interceptor.js.map +1 -0
  58. package/dist/interfaces/guard.interface.d.ts +10 -0
  59. package/dist/interfaces/guard.interface.js +3 -0
  60. package/dist/interfaces/guard.interface.js.map +1 -0
  61. package/dist/interfaces/index.d.ts +2 -0
  62. package/dist/interfaces/index.js +19 -0
  63. package/dist/interfaces/index.js.map +1 -0
  64. package/dist/interfaces/validator.interface.d.ts +38 -0
  65. package/dist/interfaces/validator.interface.js +3 -0
  66. package/dist/interfaces/validator.interface.js.map +1 -0
  67. package/dist/pipes/abstract-validation.pipe.d.ts +11 -0
  68. package/dist/pipes/abstract-validation.pipe.js +42 -0
  69. package/dist/pipes/abstract-validation.pipe.js.map +1 -0
  70. package/dist/pipes/index.d.ts +3 -0
  71. package/dist/pipes/index.js +20 -0
  72. package/dist/pipes/index.js.map +1 -0
  73. package/dist/pipes/required.pipe.d.ts +4 -0
  74. package/dist/pipes/required.pipe.js +30 -0
  75. package/dist/pipes/required.pipe.js.map +1 -0
  76. package/dist/pipes/snowflake-id-param-validation.pipe.d.ts +8 -0
  77. package/dist/pipes/snowflake-id-param-validation.pipe.js +45 -0
  78. package/dist/pipes/snowflake-id-param-validation.pipe.js.map +1 -0
  79. package/dist/tsconfig.build.tsbuildinfo +1 -0
  80. package/dist/utils/decorator.util.d.ts +1 -0
  81. package/dist/utils/decorator.util.js +36 -0
  82. package/dist/utils/decorator.util.js.map +1 -0
  83. package/dist/utils/guard.util.d.ts +6 -0
  84. package/dist/utils/guard.util.js +35 -0
  85. package/dist/utils/guard.util.js.map +1 -0
  86. package/dist/utils/index.d.ts +2 -0
  87. package/dist/utils/index.js +19 -0
  88. package/dist/utils/index.js.map +1 -0
  89. package/dist/validators/index.d.ts +5 -0
  90. package/dist/validators/index.js +22 -0
  91. package/dist/validators/index.js.map +1 -0
  92. package/dist/validators/is-after.validator.d.ts +2 -0
  93. package/dist/validators/is-after.validator.js +43 -0
  94. package/dist/validators/is-after.validator.js.map +1 -0
  95. package/dist/validators/is-date-format.validator.d.ts +3 -0
  96. package/dist/validators/is-date-format.validator.js +54 -0
  97. package/dist/validators/is-date-format.validator.js.map +1 -0
  98. package/dist/validators/is-equal-to.validator.d.ts +2 -0
  99. package/dist/validators/is-equal-to.validator.js +36 -0
  100. package/dist/validators/is-equal-to.validator.js.map +1 -0
  101. package/dist/validators/is-greater-than.validator.d.ts +2 -0
  102. package/dist/validators/is-greater-than.validator.js +36 -0
  103. package/dist/validators/is-greater-than.validator.js.map +1 -0
  104. package/dist/validators/is-lower-than.validator.d.ts +2 -0
  105. package/dist/validators/is-lower-than.validator.js +36 -0
  106. package/dist/validators/is-lower-than.validator.js.map +1 -0
  107. package/package.json +36 -0
@@ -0,0 +1,42 @@
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.OrGuard = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const core_1 = require("@nestjs/core");
18
+ const rxjs_1 = require("rxjs");
19
+ const operators_1 = require("rxjs/operators");
20
+ const utils_1 = require("../utils");
21
+ const OrGuard = (guards, orGuardOptions) => {
22
+ let OrMixinGuard = class OrMixinGuard {
23
+ moduleRef;
24
+ guards = [];
25
+ constructor(moduleRef) {
26
+ this.moduleRef = moduleRef;
27
+ }
28
+ canActivate(context) {
29
+ this.guards = guards.map((guard) => this.moduleRef.get(guard, { strict: false }));
30
+ const canActivateReturns = this.guards.map((guard) => (0, utils_1.deferGuard)(guard, context));
31
+ return (0, rxjs_1.from)(canActivateReturns).pipe((0, operators_1.mergeMap)((obs) => obs.pipe((0, utils_1.handleError)(orGuardOptions?.throwOnFirstError))), (0, operators_1.takeWhile)((val) => val === false, true), (0, operators_1.last)());
32
+ }
33
+ };
34
+ OrMixinGuard = __decorate([
35
+ __param(0, (0, common_1.Inject)(core_1.ModuleRef)),
36
+ __metadata("design:paramtypes", [core_1.ModuleRef])
37
+ ], OrMixinGuard);
38
+ const Guard = (0, common_1.mixin)(OrMixinGuard);
39
+ return Guard;
40
+ };
41
+ exports.OrGuard = OrGuard;
42
+ //# sourceMappingURL=or.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"or.guard.js","sourceRoot":"","sources":["../../src/guards/or.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoG;AACpG,uCAAyC;AACzC,+BAAwC;AACxC,8CAA2D;AAG3D,oCAAmD;AAE5C,MAAM,OAAO,GAAG,CAAC,MAAiD,EAAE,cAA+B,EAAE,EAAE;IAC5G,IAAM,YAAY,GAAlB,MAAM,YAAY;QAKG;QAJX,MAAM,GAAkB,EAAE,CAAC;QAEnC,YAEmB,SAAoB;YAApB,cAAS,GAAT,SAAS,CAAW;QACpC,CAAC;QAEJ,WAAW,CAAC,OAAyB;YACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAElF,MAAM,kBAAkB,GAA+B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAE9G,OAAO,IAAA,WAAI,EAAC,kBAAkB,CAAC,CAAC,IAAI,CAClC,IAAA,oBAAQ,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAA,mBAAW,EAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC3E,IAAA,qBAAS,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,EAAE,IAAI,CAAC,EACvC,IAAA,gBAAI,GAAE,CACP,CAAC;QACJ,CAAC;KACF,CAAA;IAnBK,YAAY;QAIb,WAAA,IAAA,eAAM,EAAC,gBAAS,CAAC,CAAA;yCACU,gBAAS;OALnC,YAAY,CAmBjB;IAED,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,YAAY,CAAC,CAAC;IAElC,OAAO,KAA0B,CAAC;AACpC,CAAC,CAAC;AAzBW,QAAA,OAAO,WAyBlB"}
@@ -0,0 +1,3 @@
1
+ import { CanActivate, InjectionToken, Type } from '@nestjs/common';
2
+ import { SequentialGuardOptions } from '../interfaces';
3
+ export declare const SequentialGuard: (guards: Array<Type<CanActivate> | InjectionToken>, sequentialGuardOptions?: SequentialGuardOptions) => Type<CanActivate>;
@@ -0,0 +1,42 @@
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.SequentialGuard = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const core_1 = require("@nestjs/core");
18
+ const rxjs_1 = require("rxjs");
19
+ const operators_1 = require("rxjs/operators");
20
+ const utils_1 = require("../utils");
21
+ const SequentialGuard = (guards, sequentialGuardOptions) => {
22
+ let SequentialMixinGuard = class SequentialMixinGuard {
23
+ moduleRef;
24
+ guards = [];
25
+ constructor(moduleRef) {
26
+ this.moduleRef = moduleRef;
27
+ }
28
+ canActivate(context) {
29
+ this.guards = guards.map((guard) => this.moduleRef.get(guard, { strict: false }));
30
+ const canActivateReturns = this.guards.map((guard) => (0, utils_1.deferGuard)(guard, context));
31
+ return (0, rxjs_1.from)(canActivateReturns).pipe((0, operators_1.concatMap)((obs) => obs.pipe((0, utils_1.handleError)(sequentialGuardOptions?.throwOnError))), (0, operators_1.filter)((value) => value === true), (0, operators_1.defaultIfEmpty)(false), (0, operators_1.take)(1));
32
+ }
33
+ };
34
+ SequentialMixinGuard = __decorate([
35
+ __param(0, (0, common_1.Inject)(core_1.ModuleRef)),
36
+ __metadata("design:paramtypes", [core_1.ModuleRef])
37
+ ], SequentialMixinGuard);
38
+ const Guard = (0, common_1.mixin)(SequentialMixinGuard);
39
+ return Guard;
40
+ };
41
+ exports.SequentialGuard = SequentialGuard;
42
+ //# sourceMappingURL=sequential.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequential.guard.js","sourceRoot":"","sources":["../../src/guards/sequential.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoG;AACpG,uCAAyC;AACzC,+BAAwC;AACxC,8CAAyE;AAGzE,oCAAmD;AAE5C,MAAM,eAAe,GAAG,CAC7B,MAAiD,EACjD,sBAA+C,EAC/C,EAAE;IACF,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;QAKL;QAJX,MAAM,GAAkB,EAAE,CAAC;QAEnC,YAEmB,SAAoB;YAApB,cAAS,GAAT,SAAS,CAAW;QACpC,CAAC;QAEJ,WAAW,CAAC,OAAyB;YACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAElF,MAAM,kBAAkB,GAA+B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAE9G,OAAO,IAAA,WAAI,EAAC,kBAAkB,CAAC,CAAC,IAAI,CAClC,IAAA,qBAAS,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAA,mBAAW,EAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,EAC/E,IAAA,kBAAM,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,EACjC,IAAA,0BAAc,EAAC,KAAK,CAAC,EACrB,IAAA,gBAAI,EAAC,CAAC,CAAC,CACR,CAAC;QACJ,CAAC;KACF,CAAA;IApBK,oBAAoB;QAIrB,WAAA,IAAA,eAAM,EAAC,gBAAS,CAAC,CAAA;yCACU,gBAAS;OALnC,oBAAoB,CAoBzB;IAED,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,oBAAoB,CAAC,CAAC;IAE1C,OAAO,KAA0B,CAAC;AACpC,CAAC,CAAC;AA7BW,QAAA,eAAe,mBA6B1B"}
@@ -0,0 +1,8 @@
1
+ export * from './decorators';
2
+ export * from './filters';
3
+ export * from './guards';
4
+ export * from './interceptors';
5
+ export * from './interfaces';
6
+ export * from './pipes';
7
+ export * from './utils';
8
+ export * from './validators';
package/dist/index.js ADDED
@@ -0,0 +1,25 @@
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("./decorators"), exports);
18
+ __exportStar(require("./filters"), exports);
19
+ __exportStar(require("./guards"), exports);
20
+ __exportStar(require("./interceptors"), exports);
21
+ __exportStar(require("./interfaces"), exports);
22
+ __exportStar(require("./pipes"), exports);
23
+ __exportStar(require("./utils"), exports);
24
+ __exportStar(require("./validators"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,4CAA0B;AAC1B,2CAAyB;AACzB,iDAA+B;AAC/B,+CAA6B;AAC7B,0CAAwB;AACxB,0CAAwB;AACxB,+CAA6B"}
@@ -0,0 +1 @@
1
+ export * from './update-selective-validation.interceptor';
@@ -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("./update-selective-validation.interceptor"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4EAA0D"}
@@ -0,0 +1,7 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ export declare class UpdateSelectiveValidationInterceptor implements NestInterceptor {
4
+ intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
5
+ private getValidFields;
6
+ private filterObject;
7
+ }
@@ -0,0 +1,52 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.UpdateSelectiveValidationInterceptor = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const rxjs_1 = require("rxjs");
12
+ let UpdateSelectiveValidationInterceptor = class UpdateSelectiveValidationInterceptor {
13
+ intercept(context, next) {
14
+ const request = context.switchToHttp().getRequest();
15
+ const { updateMask } = request.query;
16
+ const dto = request.body;
17
+ if (!updateMask || updateMask === '*' || !dto) {
18
+ return next.handle();
19
+ }
20
+ if (typeof updateMask !== 'string') {
21
+ throw new common_1.BadRequestException('updateMask must be a string');
22
+ }
23
+ const validFields = this.getValidFields(updateMask, dto);
24
+ request.body = this.filterObject(dto, validFields);
25
+ return next.handle().pipe((0, rxjs_1.map)((response) => {
26
+ if (!response || typeof response !== 'object') {
27
+ return response;
28
+ }
29
+ return this.filterObject(response, validFields);
30
+ }));
31
+ }
32
+ getValidFields(updateMask, dto) {
33
+ const fields = updateMask
34
+ .split(',')
35
+ .map((field) => field.trim())
36
+ .filter((field) => field && field in dto);
37
+ if (!fields.length) {
38
+ throw new common_1.BadRequestException('No valid fields specified in updateMask');
39
+ }
40
+ return new Set(fields);
41
+ }
42
+ filterObject(obj, fields) {
43
+ return Object.fromEntries(Array.from(fields)
44
+ .filter((field) => field in obj)
45
+ .map((field) => [field, obj[field]]));
46
+ }
47
+ };
48
+ exports.UpdateSelectiveValidationInterceptor = UpdateSelectiveValidationInterceptor;
49
+ exports.UpdateSelectiveValidationInterceptor = UpdateSelectiveValidationInterceptor = __decorate([
50
+ (0, common_1.Injectable)()
51
+ ], UpdateSelectiveValidationInterceptor);
52
+ //# sourceMappingURL=update-selective-validation.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-selective-validation.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/update-selective-validation.interceptor.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAiH;AACjH,+BAAuC;AAGhC,IAAM,oCAAoC,GAA1C,MAAM,oCAAoC;IAC/C,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,IAA+B,CAAC;QAEpD,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,4BAAmB,CAAC,6BAA6B,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,UAAG,EAAC,CAAC,QAAQ,EAAE,EAAE;YACf,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC9C,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,QAAmC,EAAE,WAAW,CAAC,CAAC;QAC7E,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,UAAkB,EAAE,GAA4B;QACrE,MAAM,MAAM,GAAG,UAAU;aACtB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,4BAAmB,CAAC,yCAAyC,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAEO,YAAY,CAAC,GAA4B,EAAE,MAAmB;QACpE,OAAO,MAAM,CAAC,WAAW,CACvB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aACf,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC;aAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CACvC,CAAC;IACJ,CAAC;CACF,CAAA;AAhDY,oFAAoC;+CAApC,oCAAoC;IADhD,IAAA,mBAAU,GAAE;GACA,oCAAoC,CAgDhD"}
@@ -0,0 +1,10 @@
1
+ export interface AndGuardOptions {
2
+ throwOnFirstError?: boolean;
3
+ sequential?: boolean;
4
+ }
5
+ export interface OrGuardOptions {
6
+ throwOnFirstError?: boolean;
7
+ }
8
+ export interface SequentialGuardOptions {
9
+ throwOnError?: boolean;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=guard.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.interface.js","sourceRoot":"","sources":["../../src/interfaces/guard.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './guard.interface';
2
+ export * from './validator.interface';
@@ -0,0 +1,19 @@
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("./guard.interface"), exports);
18
+ __exportStar(require("./validator.interface"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,wDAAsC"}
@@ -0,0 +1,38 @@
1
+ export interface BaseValidator {
2
+ required?: boolean;
3
+ message?: string;
4
+ }
5
+ export interface BaseArrayValidator {
6
+ arrayMaxSize?: number;
7
+ arrayMinSize?: number;
8
+ each?: boolean;
9
+ }
10
+ export interface DateFieldOptions extends BaseValidator, BaseArrayValidator {
11
+ greaterThan?: boolean;
12
+ lessThan?: boolean;
13
+ date?: Date;
14
+ }
15
+ export interface NumberFieldOptions extends BaseValidator, BaseArrayValidator {
16
+ min?: number;
17
+ max?: number;
18
+ int?: boolean;
19
+ positive?: boolean;
20
+ }
21
+ export interface StringFieldOptions extends BaseValidator, BaseArrayValidator {
22
+ trim?: boolean;
23
+ regex?: RegExp;
24
+ minLength?: number;
25
+ maxLength?: number;
26
+ numberString?: boolean;
27
+ base64?: boolean;
28
+ url?: boolean;
29
+ email?: boolean;
30
+ }
31
+ export interface MinMaxLengthOptions extends Pick<StringFieldOptions, 'each' | 'minLength' | 'maxLength'> {
32
+ }
33
+ export interface EnumFieldOptions extends BaseValidator, BaseArrayValidator {
34
+ }
35
+ export interface BooleanFieldOptions extends BaseValidator, BaseArrayValidator {
36
+ }
37
+ export interface NestedFieldOptions extends BaseValidator, BaseArrayValidator {
38
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=validator.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.interface.js","sourceRoot":"","sources":["../../src/interfaces/validator.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { ArgumentMetadata, Type, ValidationPipe } from '@nestjs/common';
2
+ export declare class AbstractValidationPipe extends ValidationPipe {
3
+ private readonly targetTypes;
4
+ constructor(targetTypes: {
5
+ body?: Type<any>;
6
+ query?: Type<any>;
7
+ param?: Type<any>;
8
+ custom?: Type<any>;
9
+ });
10
+ transform(value: any, metadata: ArgumentMetadata): Promise<any>;
11
+ }
@@ -0,0 +1,42 @@
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.AbstractValidationPipe = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ let AbstractValidationPipe = class AbstractValidationPipe extends common_1.ValidationPipe {
15
+ targetTypes;
16
+ constructor(targetTypes) {
17
+ super({
18
+ whitelist: true,
19
+ transform: true,
20
+ forbidUnknownValues: false,
21
+ validateCustomDecorators: true,
22
+ enableDebugMessages: true,
23
+ });
24
+ this.targetTypes = targetTypes;
25
+ }
26
+ async transform(value, metadata) {
27
+ const targetType = this.targetTypes[metadata.type];
28
+ if (!targetType) {
29
+ return super.transform(value, metadata);
30
+ }
31
+ return super.transform(value, {
32
+ ...metadata,
33
+ metatype: targetType,
34
+ });
35
+ }
36
+ };
37
+ exports.AbstractValidationPipe = AbstractValidationPipe;
38
+ exports.AbstractValidationPipe = AbstractValidationPipe = __decorate([
39
+ (0, common_1.Injectable)(),
40
+ __metadata("design:paramtypes", [Object])
41
+ ], AbstractValidationPipe);
42
+ //# sourceMappingURL=abstract-validation.pipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-validation.pipe.js","sourceRoot":"","sources":["../../src/pipes/abstract-validation.pipe.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAoF;AAG7E,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,uBAAc;IAErC;IADnB,YACmB,WAKhB;QAED,KAAK,CAAC;YACJ,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,mBAAmB,EAAE,KAAK;YAC1B,wBAAwB,EAAE,IAAI;YAC9B,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC;QAbc,gBAAW,GAAX,WAAW,CAK3B;IASH,CAAC;IAEQ,KAAK,CAAC,SAAS,CAAC,KAAU,EAAE,QAA0B;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAc,CAAC;QAEhE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;YAC5B,GAAG,QAAQ;YACX,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA9BY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;;GACA,sBAAsB,CA8BlC"}
@@ -0,0 +1,3 @@
1
+ export * from './abstract-validation.pipe';
2
+ export * from './required.pipe';
3
+ export * from './snowflake-id-param-validation.pipe';
@@ -0,0 +1,20 @@
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("./abstract-validation.pipe"), exports);
18
+ __exportStar(require("./required.pipe"), exports);
19
+ __exportStar(require("./snowflake-id-param-validation.pipe"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,kDAAgC;AAChC,uEAAqD"}
@@ -0,0 +1,4 @@
1
+ import { ArgumentMetadata, PipeTransform } from '@nestjs/common';
2
+ export declare class RequiredPipe<T> implements PipeTransform {
3
+ transform(value: T, metadata: ArgumentMetadata): T;
4
+ }
@@ -0,0 +1,30 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.RequiredPipe = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let RequiredPipe = class RequiredPipe {
12
+ transform(value, metadata) {
13
+ if (value === null || value === undefined) {
14
+ throw new common_1.UnprocessableEntityException([
15
+ {
16
+ property: metadata.data,
17
+ constraints: {
18
+ isNotEmpty: 'This field is required',
19
+ },
20
+ },
21
+ ]);
22
+ }
23
+ return value;
24
+ }
25
+ };
26
+ exports.RequiredPipe = RequiredPipe;
27
+ exports.RequiredPipe = RequiredPipe = __decorate([
28
+ (0, common_1.Injectable)()
29
+ ], RequiredPipe);
30
+ //# sourceMappingURL=required.pipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"required.pipe.js","sourceRoot":"","sources":["../../src/pipes/required.pipe.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA2G;AAGpG,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,SAAS,CAAC,KAAQ,EAAE,QAA0B;QAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,qCAA4B,CAAC;gBACrC;oBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;oBACvB,WAAW,EAAE;wBACX,UAAU,EAAE,wBAAwB;qBACrC;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AAfY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;GACA,YAAY,CAexB"}
@@ -0,0 +1,8 @@
1
+ import { ArgumentMetadata, PipeTransform } from '@nestjs/common';
2
+ export declare class SnowflakeIdParamValidationPipe<T> implements PipeTransform {
3
+ transform(value: T, metadata: ArgumentMetadata): T;
4
+ private isEmpty;
5
+ private isNumber;
6
+ private isNumberString;
7
+ private throwException;
8
+ }
@@ -0,0 +1,45 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SnowflakeIdParamValidationPipe = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let SnowflakeIdParamValidationPipe = class SnowflakeIdParamValidationPipe {
12
+ transform(value, metadata) {
13
+ if (this.isEmpty(value)) {
14
+ this.throwException(metadata.data, 'This field is required');
15
+ }
16
+ if (!this.isNumber(value)) {
17
+ this.throwException(metadata.data, 'The value must be a number');
18
+ }
19
+ return value;
20
+ }
21
+ isEmpty(value) {
22
+ return value === null || value === undefined;
23
+ }
24
+ isNumber(value) {
25
+ return typeof value === 'number' || this.isNumberString(String(value));
26
+ }
27
+ isNumberString(value) {
28
+ return !Number.isNaN(Number(value)) && value.trim() !== '';
29
+ }
30
+ throwException(property, message) {
31
+ throw new common_1.UnprocessableEntityException([
32
+ {
33
+ property,
34
+ constraints: {
35
+ isNotEmpty: message,
36
+ },
37
+ },
38
+ ]);
39
+ }
40
+ };
41
+ exports.SnowflakeIdParamValidationPipe = SnowflakeIdParamValidationPipe;
42
+ exports.SnowflakeIdParamValidationPipe = SnowflakeIdParamValidationPipe = __decorate([
43
+ (0, common_1.Injectable)()
44
+ ], SnowflakeIdParamValidationPipe);
45
+ //# sourceMappingURL=snowflake-id-param-validation.pipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snowflake-id-param-validation.pipe.js","sourceRoot":"","sources":["../../src/pipes/snowflake-id-param-validation.pipe.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA2G;AAGpG,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IACzC,SAAS,CAAC,KAAQ,EAAE,QAA0B;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,OAAO,CAAC,KAAQ;QACtB,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAC/C,CAAC;IAEO,QAAQ,CAAC,KAAQ;QACvB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAEO,cAAc,CAAC,KAAa;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7D,CAAC;IAEO,cAAc,CAAC,QAAgB,EAAE,OAAe;QACtD,MAAM,IAAI,qCAA4B,CAAC;YACrC;gBACE,QAAQ;gBACR,WAAW,EAAE;oBACX,UAAU,EAAE,OAAO;iBACpB;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnCY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,mBAAU,GAAE;GACA,8BAA8B,CAmC1C"}