@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,8 @@
1
+ export * from './is-boolean-field.decorator';
2
+ export * from './is-date-field.decorator';
3
+ export * from './is-enum-field.decorator';
4
+ export * from './is-nested-field.decorator';
5
+ export * from './is-number-field.decorator';
6
+ export * from './is-string-field.decorator';
7
+ export * from './min-max-length.decorator';
8
+ export * from './transform.decorator';
@@ -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("./is-boolean-field.decorator"), exports);
18
+ __exportStar(require("./is-date-field.decorator"), exports);
19
+ __exportStar(require("./is-enum-field.decorator"), exports);
20
+ __exportStar(require("./is-nested-field.decorator"), exports);
21
+ __exportStar(require("./is-number-field.decorator"), exports);
22
+ __exportStar(require("./is-string-field.decorator"), exports);
23
+ __exportStar(require("./min-max-length.decorator"), exports);
24
+ __exportStar(require("./transform.decorator"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,4DAA0C;AAC1C,4DAA0C;AAC1C,8DAA4C;AAC5C,8DAA4C;AAC5C,8DAA4C;AAC5C,6DAA2C;AAC3C,wDAAsC"}
@@ -0,0 +1,2 @@
1
+ import { BooleanFieldOptions } from '../interfaces';
2
+ export declare const IsBooleanField: (booleanFieldOptions?: BooleanFieldOptions) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsBooleanField = void 0;
4
+ const class_validator_1 = require("class-validator");
5
+ const utils_1 = require("../utils");
6
+ const transform_decorator_1 = require("./transform.decorator");
7
+ const IsBooleanField = (booleanFieldOptions) => {
8
+ const options = {
9
+ each: false,
10
+ required: true,
11
+ arrayMinSize: 0,
12
+ arrayMaxSize: Number.MAX_SAFE_INTEGER,
13
+ ...booleanFieldOptions,
14
+ };
15
+ const decoratorsToApply = [
16
+ (0, class_validator_1.IsBoolean)({
17
+ each: options.each,
18
+ message: 'The value must be a boolean',
19
+ }),
20
+ (0, transform_decorator_1.ToBoolean)(),
21
+ ];
22
+ return (0, utils_1.applyCommonDecorators)(options, decoratorsToApply);
23
+ };
24
+ exports.IsBooleanField = IsBooleanField;
25
+ //# sourceMappingURL=is-boolean-field.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-boolean-field.decorator.js","sourceRoot":"","sources":["../../src/decorators/is-boolean-field.decorator.ts"],"names":[],"mappings":";;;AAAA,qDAA4C;AAG5C,oCAAiD;AACjD,+DAAkD;AAE3C,MAAM,cAAc,GAAG,CAAC,mBAAyC,EAAE,EAAE;IAC1E,MAAM,OAAO,GAAwB;QACnC,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,MAAM,CAAC,gBAAgB;QACrC,GAAG,mBAAmB;KACvB,CAAC;IAEF,MAAM,iBAAiB,GAAG;QACxB,IAAA,2BAAS,EAAC;YACR,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,6BAA6B;SACvC,CAAC;QACF,IAAA,+BAAS,GAAE;KACZ,CAAC;IAEF,OAAO,IAAA,6BAAqB,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC,CAAC;AAlBW,QAAA,cAAc,kBAkBzB"}
@@ -0,0 +1,2 @@
1
+ import { DateFieldOptions } from '../interfaces';
2
+ export declare const IsDateField: (dateFieldOptions?: DateFieldOptions) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsDateField = void 0;
4
+ const class_validator_1 = require("class-validator");
5
+ const utils_1 = require("../utils");
6
+ const IsDateField = (dateFieldOptions) => {
7
+ const options = {
8
+ each: false,
9
+ required: true,
10
+ arrayMinSize: 0,
11
+ arrayMaxSize: Number.MAX_SAFE_INTEGER,
12
+ lessThan: false,
13
+ greaterThan: false,
14
+ ...dateFieldOptions,
15
+ };
16
+ const decoratorsToApply = [
17
+ (0, class_validator_1.IsDateString)({
18
+ strict: true,
19
+ }, {
20
+ each: options.each,
21
+ message: 'The value must be a valid date string',
22
+ }),
23
+ ];
24
+ if (options.greaterThan) {
25
+ decoratorsToApply.push((0, class_validator_1.MinDate)(options.date, {
26
+ message: `The date must be after ${options.date}`,
27
+ }));
28
+ }
29
+ if (options.lessThan) {
30
+ decoratorsToApply.push((0, class_validator_1.MaxDate)(options.date, {
31
+ message: `The date must be before ${options.date}`,
32
+ }));
33
+ }
34
+ return (0, utils_1.applyCommonDecorators)(options, decoratorsToApply);
35
+ };
36
+ exports.IsDateField = IsDateField;
37
+ //# sourceMappingURL=is-date-field.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-date-field.decorator.js","sourceRoot":"","sources":["../../src/decorators/is-date-field.decorator.ts"],"names":[],"mappings":";;;AAAA,qDAAiE;AAGjE,oCAAiD;AAE1C,MAAM,WAAW,GAAG,CAAC,gBAAmC,EAAE,EAAE;IACjE,MAAM,OAAO,GAAqB;QAChC,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,MAAM,CAAC,gBAAgB;QACrC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;QAClB,GAAG,gBAAgB;KACpB,CAAC;IAEF,MAAM,iBAAiB,GAAG;QACxB,IAAA,8BAAY,EACV;YACE,MAAM,EAAE,IAAI;SACb,EACD;YACE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,uCAAuC;SACjD,CACF;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,iBAAiB,CAAC,IAAI,CACpB,IAAA,yBAAO,EAAC,OAAO,CAAC,IAAI,EAAE;YACpB,OAAO,EAAE,0BAA0B,OAAO,CAAC,IAAI,EAAE;SAClD,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,iBAAiB,CAAC,IAAI,CACpB,IAAA,yBAAO,EAAC,OAAO,CAAC,IAAI,EAAE;YACpB,OAAO,EAAE,2BAA2B,OAAO,CAAC,IAAI,EAAE;SACnD,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,IAAA,6BAAqB,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC,CAAC;AAxCW,QAAA,WAAW,eAwCtB"}
@@ -0,0 +1,2 @@
1
+ import { EnumFieldOptions } from '../interfaces';
2
+ export declare const IsEnumField: (entity: Record<string, string>, enumFieldOptions?: EnumFieldOptions) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsEnumField = void 0;
4
+ const class_validator_1 = require("class-validator");
5
+ const utils_1 = require("../utils");
6
+ const IsEnumField = (entity, enumFieldOptions) => {
7
+ const options = {
8
+ each: false,
9
+ required: true,
10
+ arrayMinSize: 0,
11
+ arrayMaxSize: Number.MAX_SAFE_INTEGER,
12
+ ...enumFieldOptions,
13
+ };
14
+ const decoratorsToApply = [
15
+ (0, class_validator_1.IsEnum)(entity, {
16
+ each: options.each,
17
+ message: 'The value must be a valid enum value',
18
+ }),
19
+ ];
20
+ return (0, utils_1.applyCommonDecorators)(options, decoratorsToApply);
21
+ };
22
+ exports.IsEnumField = IsEnumField;
23
+ //# sourceMappingURL=is-enum-field.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-enum-field.decorator.js","sourceRoot":"","sources":["../../src/decorators/is-enum-field.decorator.ts"],"names":[],"mappings":";;;AAAA,qDAAyC;AAGzC,oCAAiD;AAE1C,MAAM,WAAW,GAAG,CAAC,MAA8B,EAAE,gBAAmC,EAAE,EAAE;IACjG,MAAM,OAAO,GAAqB;QAChC,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,MAAM,CAAC,gBAAgB;QACrC,GAAG,gBAAgB;KACpB,CAAC;IAEF,MAAM,iBAAiB,GAAG;QACxB,IAAA,wBAAM,EAAC,MAAM,EAAE;YACb,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,sCAAsC;SAChD,CAAC;KACH,CAAC;IAEF,OAAO,IAAA,6BAAqB,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC,CAAC;AAjBW,QAAA,WAAW,eAiBtB"}
@@ -0,0 +1,2 @@
1
+ import { NestedFieldOptions } from '../interfaces';
2
+ export declare const IsNestedField: (entity: any, nestedFieldOptions?: NestedFieldOptions) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsNestedField = void 0;
4
+ const class_transformer_1 = require("class-transformer");
5
+ const class_validator_1 = require("class-validator");
6
+ const utils_1 = require("../utils");
7
+ const IsNestedField = (entity, nestedFieldOptions) => {
8
+ const options = {
9
+ required: true,
10
+ each: false,
11
+ arrayMinSize: 0,
12
+ arrayMaxSize: Number.MAX_SAFE_INTEGER,
13
+ ...nestedFieldOptions,
14
+ };
15
+ const decoratorsToApply = [
16
+ (0, class_validator_1.ValidateNested)({
17
+ each: options.each,
18
+ message: 'The value must be a valid nested object',
19
+ }),
20
+ (0, class_transformer_1.Type)(() => entity),
21
+ ];
22
+ return (0, utils_1.applyCommonDecorators)(options, decoratorsToApply);
23
+ };
24
+ exports.IsNestedField = IsNestedField;
25
+ //# sourceMappingURL=is-nested-field.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-nested-field.decorator.js","sourceRoot":"","sources":["../../src/decorators/is-nested-field.decorator.ts"],"names":[],"mappings":";;;AAAA,yDAAyC;AACzC,qDAAiD;AAGjD,oCAAiD;AAE1C,MAAM,aAAa,GAAG,CAAC,MAAW,EAAE,kBAAuC,EAAE,EAAE;IACpF,MAAM,OAAO,GAAuB;QAClC,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,KAAK;QACX,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,MAAM,CAAC,gBAAgB;QACrC,GAAG,kBAAkB;KACtB,CAAC;IAEF,MAAM,iBAAiB,GAAG;QACxB,IAAA,gCAAc,EAAC;YACb,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,yCAAyC;SACnD,CAAC;QACF,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;KACnB,CAAC;IAEF,OAAO,IAAA,6BAAqB,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC,CAAC;AAlBW,QAAA,aAAa,iBAkBxB"}
@@ -0,0 +1,2 @@
1
+ import { NumberFieldOptions } from '../interfaces';
2
+ export declare const IsNumberField: (numberFieldOptions?: NumberFieldOptions) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsNumberField = void 0;
4
+ const class_transformer_1 = require("class-transformer");
5
+ const class_validator_1 = require("class-validator");
6
+ const utils_1 = require("../utils");
7
+ const IsNumberField = (numberFieldOptions) => {
8
+ const options = {
9
+ min: 1,
10
+ required: true,
11
+ each: false,
12
+ max: Number.MAX_SAFE_INTEGER,
13
+ arrayMinSize: 0,
14
+ arrayMaxSize: Number.MAX_SAFE_INTEGER,
15
+ int: true,
16
+ positive: true,
17
+ ...numberFieldOptions,
18
+ };
19
+ const decoratorsToApply = [
20
+ (0, class_transformer_1.Type)(() => Number),
21
+ (0, class_validator_1.Min)(options.min, {
22
+ each: options.each,
23
+ message: `The value must be at least ${options.min}`,
24
+ }),
25
+ (0, class_validator_1.Max)(options.max, {
26
+ each: options.each,
27
+ message: `The value must be no more than ${options.max}`,
28
+ }),
29
+ ];
30
+ if (options.int) {
31
+ decoratorsToApply.push((0, class_validator_1.IsInt)({
32
+ each: options.each,
33
+ message: 'The value must be an integer',
34
+ }));
35
+ }
36
+ else {
37
+ decoratorsToApply.push((0, class_validator_1.IsNumber)({}, {
38
+ each: options.each,
39
+ message: 'The value must be a number',
40
+ }));
41
+ }
42
+ if (options.positive) {
43
+ decoratorsToApply.push((0, class_validator_1.IsPositive)({
44
+ each: options.each,
45
+ message: 'The value must be positive',
46
+ }));
47
+ }
48
+ return (0, utils_1.applyCommonDecorators)(options, decoratorsToApply);
49
+ };
50
+ exports.IsNumberField = IsNumberField;
51
+ //# sourceMappingURL=is-number-field.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-number-field.decorator.js","sourceRoot":"","sources":["../../src/decorators/is-number-field.decorator.ts"],"names":[],"mappings":";;;AAAA,yDAAyC;AACzC,qDAAwE;AAGxE,oCAAiD;AAE1C,MAAM,aAAa,GAAG,CAAC,kBAAuC,EAAE,EAAE;IACvE,MAAM,OAAO,GAAuB;QAClC,GAAG,EAAE,CAAC;QACN,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,MAAM,CAAC,gBAAgB;QAC5B,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,MAAM,CAAC,gBAAgB;QACrC,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,IAAI;QACd,GAAG,kBAAkB;KACtB,CAAC;IAEF,MAAM,iBAAiB,GAAG;QACxB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;QAClB,IAAA,qBAAG,EAAC,OAAO,CAAC,GAAG,EAAE;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,8BAA8B,OAAO,CAAC,GAAG,EAAE;SACrD,CAAC;QACF,IAAA,qBAAG,EAAC,OAAO,CAAC,GAAG,EAAE;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,kCAAkC,OAAO,CAAC,GAAG,EAAE;SACzD,CAAC;KACH,CAAC;IAEF,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,iBAAiB,CAAC,IAAI,CACpB,IAAA,uBAAK,EAAC;YACJ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,8BAA8B;SACxC,CAAC,CACH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,iBAAiB,CAAC,IAAI,CACpB,IAAA,0BAAQ,EACN,EAAE,EACF;YACE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,4BAA4B;SACtC,CACF,CACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,iBAAiB,CAAC,IAAI,CACpB,IAAA,4BAAU,EAAC;YACT,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,4BAA4B;SACtC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,IAAA,6BAAqB,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC,CAAC;AAtDW,QAAA,aAAa,iBAsDxB"}
@@ -0,0 +1,2 @@
1
+ import { StringFieldOptions } from '../interfaces';
2
+ export declare const IsStringField: (stringFieldOptions?: StringFieldOptions) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsStringField = void 0;
4
+ const helper_fns_1 = require("@codylabs/helper-fns");
5
+ const class_validator_1 = require("class-validator");
6
+ const class_transformer_1 = require("class-transformer");
7
+ const utils_1 = require("../utils");
8
+ const min_max_length_decorator_1 = require("./min-max-length.decorator");
9
+ const transform_decorator_1 = require("./transform.decorator");
10
+ const IsStringField = (stringFieldOptions) => {
11
+ const options = {
12
+ required: true,
13
+ numberString: false,
14
+ base64: false,
15
+ url: false,
16
+ email: false,
17
+ each: false,
18
+ trim: false,
19
+ minLength: 1,
20
+ maxLength: Number.MAX_SAFE_INTEGER,
21
+ arrayMinSize: 0,
22
+ arrayMaxSize: Number.MAX_SAFE_INTEGER,
23
+ ...stringFieldOptions,
24
+ };
25
+ const decoratorsToApply = [];
26
+ if (options.numberString) {
27
+ decoratorsToApply.push((0, class_validator_1.IsNumberString)({}, {
28
+ each: options.each,
29
+ message: 'The value must be a number string',
30
+ }));
31
+ }
32
+ else if (options.base64) {
33
+ decoratorsToApply.push((0, class_validator_1.IsBase64)({}, {
34
+ each: options.each,
35
+ message: 'The value must be a base64 string',
36
+ }));
37
+ }
38
+ else if (options.url) {
39
+ decoratorsToApply.push((0, class_validator_1.IsUrl)({}, {
40
+ each: options.each,
41
+ message: 'The value must be a URL',
42
+ }));
43
+ }
44
+ else if (options.email) {
45
+ decoratorsToApply.push((0, class_transformer_1.Transform)(({ value }) => value.toLowerCase(), { toClassOnly: true }), (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'string' ? (0, helper_fns_1.normalizeEmail)(value) : value), {
46
+ toClassOnly: true,
47
+ }), (0, class_validator_1.IsEmail)({}, {
48
+ each: options.each,
49
+ message: 'The value must be a valid email address',
50
+ }));
51
+ }
52
+ else {
53
+ decoratorsToApply.push((0, class_validator_1.IsString)({
54
+ each: options.each,
55
+ message: 'The value must be a string',
56
+ }));
57
+ }
58
+ decoratorsToApply.push((0, min_max_length_decorator_1.MinMaxLength)({
59
+ minLength: options.minLength,
60
+ maxLength: options.maxLength,
61
+ each: options.each,
62
+ }));
63
+ if (options.regex) {
64
+ decoratorsToApply.push((0, class_validator_1.Matches)(options.regex, {
65
+ message: 'The value does not match the required pattern',
66
+ }));
67
+ }
68
+ if (options.trim) {
69
+ decoratorsToApply.push((0, transform_decorator_1.Trim)());
70
+ }
71
+ return (0, utils_1.applyCommonDecorators)(options, decoratorsToApply);
72
+ };
73
+ exports.IsStringField = IsStringField;
74
+ //# sourceMappingURL=is-string-field.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-string-field.decorator.js","sourceRoot":"","sources":["../../src/decorators/is-string-field.decorator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { MinMaxLengthOptions } from '../interfaces';
2
+ export declare const MinMaxLength: (minMaxLengthOptions?: MinMaxLengthOptions) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MinMaxLength = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const class_validator_1 = require("class-validator");
6
+ const MinMaxLength = (minMaxLengthOptions) => {
7
+ const options = {
8
+ minLength: 1,
9
+ maxLength: 500,
10
+ each: false,
11
+ ...minMaxLengthOptions,
12
+ };
13
+ const decoratorsToApply = [
14
+ (0, class_validator_1.MinLength)(options.minLength, {
15
+ each: options.each,
16
+ message: `The value must be at least ${options.minLength} characters long`,
17
+ }),
18
+ (0, class_validator_1.MaxLength)(options.maxLength, {
19
+ each: options.each,
20
+ message: `The value must be no more than ${options.maxLength} characters long`,
21
+ }),
22
+ ];
23
+ return (0, common_1.applyDecorators)(...decoratorsToApply);
24
+ };
25
+ exports.MinMaxLength = MinMaxLength;
26
+ //# sourceMappingURL=min-max-length.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"min-max-length.decorator.js","sourceRoot":"","sources":["../../src/decorators/min-max-length.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,qDAAuD;AAIhD,MAAM,YAAY,GAAG,CAAC,mBAAyC,EAAE,EAAE;IACxE,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,GAAG;QACd,IAAI,EAAE,KAAK;QACX,GAAG,mBAAmB;KACvB,CAAC;IAEF,MAAM,iBAAiB,GAAG;QACxB,IAAA,2BAAS,EAAC,OAAO,CAAC,SAAS,EAAE;YAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,8BAA8B,OAAO,CAAC,SAAS,kBAAkB;SAC3E,CAAC;QACF,IAAA,2BAAS,EAAC,OAAO,CAAC,SAAS,EAAE;YAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,kCAAkC,OAAO,CAAC,SAAS,kBAAkB;SAC/E,CAAC;KACH,CAAC;IAEF,OAAO,IAAA,wBAAe,EAAC,GAAG,iBAAiB,CAAC,CAAC;AAC/C,CAAC,CAAC;AApBW,QAAA,YAAY,gBAoBvB"}
@@ -0,0 +1,4 @@
1
+ export declare const Trim: () => PropertyDecorator;
2
+ export declare const ToBoolean: () => PropertyDecorator;
3
+ export declare const ToArray: () => PropertyDecorator;
4
+ export declare const ToNumber: () => PropertyDecorator;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToNumber = exports.ToArray = exports.ToBoolean = exports.Trim = void 0;
4
+ const class_transformer_1 = require("class-transformer");
5
+ const trimValue = (value) => value.trim().replace(/\s\s+/g, ' ');
6
+ const toBooleanValue = (value) => (value === 'true' ? true : value === 'false' ? false : value);
7
+ const toNumberValue = (value) => (Number.isNaN(Number(value)) ? value : Number(value));
8
+ const Trim = () => (0, class_transformer_1.Transform)((parameters) => {
9
+ const value = parameters.value;
10
+ return Array.isArray(value) ? value.map(trimValue) : trimValue(value);
11
+ });
12
+ exports.Trim = Trim;
13
+ const ToBoolean = () => (0, class_transformer_1.Transform)((parameters) => toBooleanValue(parameters.value), {
14
+ toClassOnly: true,
15
+ });
16
+ exports.ToBoolean = ToBoolean;
17
+ const ToArray = () => (0, class_transformer_1.Transform)((parameters) => (Array.isArray(parameters.value) ? parameters.value : [parameters.value]), {
18
+ toClassOnly: true,
19
+ });
20
+ exports.ToArray = ToArray;
21
+ const ToNumber = () => (0, class_transformer_1.Transform)((parameters) => toNumberValue(parameters.value), {
22
+ toClassOnly: true,
23
+ });
24
+ exports.ToNumber = ToNumber;
25
+ //# sourceMappingURL=transform.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.decorator.js","sourceRoot":"","sources":["../../src/decorators/transform.decorator.ts"],"names":[],"mappings":";;;AAAA,yDAA8C;AAE9C,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACzE,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACxG,MAAM,aAAa,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAErF,MAAM,IAAI,GAAG,GAAG,EAAE,CACvB,IAAA,6BAAS,EAAC,CAAC,UAAU,EAAE,EAAE;IACvB,MAAM,KAAK,GAAG,UAAU,CAAC,KAA0B,CAAC;IAEpD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC;AALQ,QAAA,IAAI,QAKZ;AAEE,MAAM,SAAS,GAAG,GAAG,EAAE,CAC5B,IAAA,6BAAS,EAAC,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;IAC1D,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAHQ,QAAA,SAAS,aAGjB;AAEE,MAAM,OAAO,GAAG,GAAG,EAAE,CAC1B,IAAA,6BAAS,EAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;IACnG,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAHQ,QAAA,OAAO,WAGf;AAEE,MAAM,QAAQ,GAAG,GAAG,EAAE,CAC3B,IAAA,6BAAS,EAAC,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;IACzD,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAHQ,QAAA,QAAQ,YAGhB"}
@@ -0,0 +1,4 @@
1
+ import { ArgumentsHost, ExceptionFilter, HttpException } from '@nestjs/common';
2
+ export declare class HttpExceptionFilter implements ExceptionFilter {
3
+ catch(exception: HttpException, host: ArgumentsHost): void;
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.HttpExceptionFilter = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let HttpExceptionFilter = class HttpExceptionFilter {
12
+ catch(exception, host) {
13
+ const ctx = host.switchToHttp();
14
+ const response = ctx.getResponse();
15
+ const status = exception.getStatus ? exception.getStatus() : common_1.HttpStatus.INTERNAL_SERVER_ERROR;
16
+ const message = exception.message || common_1.HttpStatus[common_1.HttpStatus.INTERNAL_SERVER_ERROR];
17
+ response.status(status).json({
18
+ statusCode: status,
19
+ message,
20
+ error: {
21
+ stack: exception.stack,
22
+ },
23
+ });
24
+ }
25
+ };
26
+ exports.HttpExceptionFilter = HttpExceptionFilter;
27
+ exports.HttpExceptionFilter = HttpExceptionFilter = __decorate([
28
+ (0, common_1.Catch)(common_1.HttpException)
29
+ ], HttpExceptionFilter);
30
+ //# sourceMappingURL=http-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-exception.filter.js","sourceRoot":"","sources":["../../src/filters/http-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAkG;AAI3F,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,KAAK,CAAC,SAAwB,EAAE,IAAmB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAY,CAAC;QAE7C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,mBAAU,CAAC,qBAAqB,CAAC;QAC9F,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,mBAAU,CAAC,mBAAU,CAAC,qBAAqB,CAAC,CAAC;QAElF,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC3B,UAAU,EAAE,MAAM;YAClB,OAAO;YACP,KAAK,EAAE;gBACL,KAAK,EAAE,SAAS,CAAC,KAAK;aACvB;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAhBY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,cAAK,EAAC,sBAAa,CAAC;GACR,mBAAmB,CAgB/B"}
@@ -0,0 +1,2 @@
1
+ export * from './http-exception.filter';
2
+ export * from './unprocessable-entity-exception.filter';
@@ -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("./http-exception.filter"), exports);
18
+ __exportStar(require("./unprocessable-entity-exception.filter"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,0EAAwD"}
@@ -0,0 +1,5 @@
1
+ import { ArgumentsHost, ExceptionFilter, UnprocessableEntityException } from '@nestjs/common';
2
+ export declare class UnprocessableEntityExceptionFilter implements ExceptionFilter<UnprocessableEntityException> {
3
+ catch(exception: UnprocessableEntityException, host: ArgumentsHost): void;
4
+ private processValidationErrors;
5
+ }
@@ -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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.UnprocessableEntityExceptionFilter = void 0;
10
+ const helper_fns_1 = require("@codylabs/helper-fns");
11
+ const common_1 = require("@nestjs/common");
12
+ let UnprocessableEntityExceptionFilter = class UnprocessableEntityExceptionFilter {
13
+ catch(exception, host) {
14
+ const ctx = host.switchToHttp();
15
+ const response = ctx.getResponse();
16
+ const statusCode = exception.getStatus();
17
+ const r = exception.getResponse();
18
+ const validationErrors = r.message;
19
+ this.processValidationErrors(validationErrors);
20
+ response.status(statusCode).json(r);
21
+ }
22
+ processValidationErrors(validationErrors) {
23
+ for (const validationError of validationErrors) {
24
+ if (validationError.children && !(0, helper_fns_1.isEmpty)(validationError.children)) {
25
+ this.processValidationErrors(validationError.children);
26
+ }
27
+ validationError.target = undefined;
28
+ validationError.children = undefined;
29
+ if (validationError.constraints) {
30
+ for (const [constraintKey, constraint] of Object.entries(validationError.constraints)) {
31
+ if (!constraint) {
32
+ validationError.constraints[constraintKey] = `error.fields.${(0, helper_fns_1.snake)(constraintKey)}`;
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
38
+ };
39
+ exports.UnprocessableEntityExceptionFilter = UnprocessableEntityExceptionFilter;
40
+ exports.UnprocessableEntityExceptionFilter = UnprocessableEntityExceptionFilter = __decorate([
41
+ (0, common_1.Catch)(common_1.UnprocessableEntityException)
42
+ ], UnprocessableEntityExceptionFilter);
43
+ //# sourceMappingURL=unprocessable-entity-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unprocessable-entity-exception.filter.js","sourceRoot":"","sources":["../../src/filters/unprocessable-entity-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,qDAAsD;AACtD,2CAAqG;AAM9F,IAAM,kCAAkC,GAAxC,MAAM,kCAAkC;IAC7C,KAAK,CAAC,SAAuC,EAAE,IAAmB;QAChE,MAAM,GAAG,GAAsB,IAAI,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAa,GAAG,CAAC,WAAW,EAAY,CAAC;QACvD,MAAM,UAAU,GAAW,SAAS,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,CAAC,GAAG,SAAS,CAAC,WAAW,EAAoC,CAAC;QACpE,MAAM,gBAAgB,GAAsB,CAAC,CAAC,OAAO,CAAC;QAEtD,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;QAE/C,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAEO,uBAAuB,CAAC,gBAAmC;QACjE,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;YAC/C,IAAI,eAAe,CAAC,QAAQ,IAAI,CAAC,IAAA,oBAAO,EAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACzD,CAAC;YAED,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC;YACnC,eAAe,CAAC,QAAQ,GAAG,SAAS,CAAC;YAErC,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;gBAChC,KAAK,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtF,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,gBAAgB,IAAA,kBAAK,EAAC,aAAa,CAAC,EAAE,CAAC;oBACtF,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AA/BY,gFAAkC;6CAAlC,kCAAkC;IAD9C,IAAA,cAAK,EAAC,qCAA4B,CAAC;GACvB,kCAAkC,CA+B9C"}
@@ -0,0 +1,3 @@
1
+ import { CanActivate, InjectionToken, Type } from '@nestjs/common';
2
+ import { AndGuardOptions } from '../interfaces';
3
+ export declare const AndGuard: (guards: Array<Type<CanActivate> | InjectionToken>, andGuardOptions?: AndGuardOptions) => Type<CanActivate>;
@@ -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
+ 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.AndGuard = 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 AndGuard = (guards, andGuardOptions) => {
22
+ let AndMixinGuard = class AndMixinGuard {
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
+ const mapOperator = andGuardOptions?.sequential ? operators_1.concatMap : operators_1.mergeMap;
32
+ return (0, rxjs_1.from)(canActivateReturns).pipe(mapOperator((obs) => obs().pipe((0, utils_1.handleError)(andGuardOptions?.throwOnFirstError))), (0, operators_1.every)((val) => val === true), (0, operators_1.last)());
33
+ }
34
+ };
35
+ AndMixinGuard = __decorate([
36
+ __param(0, (0, common_1.Inject)(core_1.ModuleRef)),
37
+ __metadata("design:paramtypes", [core_1.ModuleRef])
38
+ ], AndMixinGuard);
39
+ const Guard = (0, common_1.mixin)(AndMixinGuard);
40
+ return Guard;
41
+ };
42
+ exports.AndGuard = AndGuard;
43
+ //# sourceMappingURL=and.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"and.guard.js","sourceRoot":"","sources":["../../src/guards/and.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoG;AACpG,uCAAyC;AACzC,+BAAwC;AACxC,8CAAkE;AAGlE,oCAAmD;AAE5C,MAAM,QAAQ,GAAG,CAAC,MAAiD,EAAE,eAAiC,EAAE,EAAE;IAC/G,IAAM,aAAa,GAAnB,MAAM,aAAa;QAKE;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,GAAqC,IAAI,CAAC,MAAM,CAAC,GAAG,CAC1E,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAA,kBAAU,EAAC,KAAK,EAAE,OAAO,CAAC,CAC5C,CAAC;YACF,MAAM,WAAW,GAAG,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,qBAAS,CAAC,CAAC,CAAC,oBAAQ,CAAC;YAEvE,OAAO,IAAA,WAAI,EAAC,kBAAkB,CAAC,CAAC,IAAI,CAClC,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAA,mBAAW,EAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACjF,IAAA,iBAAK,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,EAC5B,IAAA,gBAAI,GAAE,CACP,CAAC;QACJ,CAAC;KACF,CAAA;IAtBK,aAAa;QAId,WAAA,IAAA,eAAM,EAAC,gBAAS,CAAC,CAAA;yCACU,gBAAS;OALnC,aAAa,CAsBlB;IAED,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,aAAa,CAAC,CAAC;IAEnC,OAAO,KAA0B,CAAC;AACpC,CAAC,CAAC;AA5BW,QAAA,QAAQ,YA4BnB"}
@@ -0,0 +1,3 @@
1
+ export * from './and.guard';
2
+ export * from './or.guard';
3
+ export * from './sequential.guard';
@@ -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("./and.guard"), exports);
18
+ __exportStar(require("./or.guard"), exports);
19
+ __exportStar(require("./sequential.guard"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guards/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,6CAA2B;AAC3B,qDAAmC"}
@@ -0,0 +1,3 @@
1
+ import { CanActivate, InjectionToken, Type } from '@nestjs/common';
2
+ import { OrGuardOptions } from '../interfaces';
3
+ export declare const OrGuard: (guards: Array<Type<CanActivate> | InjectionToken>, orGuardOptions?: OrGuardOptions) => Type<CanActivate>;