@nest-yalc-2/field-middleware 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +9 -0
  3. package/package.json +29 -0
  4. package/src/__tests__/class-transformer.helper.spec.ts +337 -0
  5. package/src/__tests__/decimal-middleware.helper.spec.ts +35 -0
  6. package/src/__tests__/field-error.enum.spec.ts +7 -0
  7. package/src/__tests__/fields-error.enum.spec.ts +17 -0
  8. package/src/__tests__/nullable-timestamp-middleware.helper.spec.ts +36 -0
  9. package/src/__tests__/string-format.enum.spec.ts +17 -0
  10. package/src/__tests__/transformer.helper.spec.ts +38 -0
  11. package/src/__tests__/tsconfig.json +3 -0
  12. package/src/__tests__/typeorm-transformer.helper.spec.ts +51 -0
  13. package/src/__tests__/validator.decorator.spec.ts +57 -0
  14. package/src/__tests__/validator.helper.spec.ts +92 -0
  15. package/src/__tests__/validator.interface.spec.ts +42 -0
  16. package/src/class-transformer.helper.d.ts +10 -0
  17. package/src/class-transformer.helper.js +63 -0
  18. package/src/class-transformer.helper.js.map +1 -0
  19. package/src/class-transformer.helper.ts +69 -0
  20. package/src/decimal-middleware.helper.d.ts +2 -0
  21. package/src/decimal-middleware.helper.js +8 -0
  22. package/src/decimal-middleware.helper.js.map +1 -0
  23. package/src/decimal-middleware.helper.ts +12 -0
  24. package/src/field-error.enum.d.ts +3 -0
  25. package/src/field-error.enum.js +8 -0
  26. package/src/field-error.enum.js.map +1 -0
  27. package/src/field-error.enum.ts +3 -0
  28. package/src/fields-error.enum.d.ts +3 -0
  29. package/src/fields-error.enum.js +8 -0
  30. package/src/fields-error.enum.js.map +1 -0
  31. package/src/fields-error.enum.ts +3 -0
  32. package/src/index.d.ts +9 -0
  33. package/src/index.js +26 -0
  34. package/src/index.js.map +1 -0
  35. package/src/index.ts +9 -0
  36. package/src/nullable-timestamp-middleware.helper.d.ts +2 -0
  37. package/src/nullable-timestamp-middleware.helper.js +9 -0
  38. package/src/nullable-timestamp-middleware.helper.js.map +1 -0
  39. package/src/nullable-timestamp-middleware.helper.ts +12 -0
  40. package/src/string-format.enum.d.ts +3 -0
  41. package/src/string-format.enum.js +8 -0
  42. package/src/string-format.enum.js.map +1 -0
  43. package/src/string-format.enum.ts +3 -0
  44. package/src/transformer.helper.d.ts +6 -0
  45. package/src/transformer.helper.js +29 -0
  46. package/src/transformer.helper.js.map +1 -0
  47. package/src/transformer.helper.ts +39 -0
  48. package/src/typeorm-transformer.helper.d.ts +6 -0
  49. package/src/typeorm-transformer.helper.js +29 -0
  50. package/src/typeorm-transformer.helper.js.map +1 -0
  51. package/src/typeorm-transformer.helper.ts +36 -0
  52. package/src/validator.decorator.d.ts +10 -0
  53. package/src/validator.decorator.js +53 -0
  54. package/src/validator.decorator.js.map +1 -0
  55. package/src/validator.decorator.ts +56 -0
  56. package/src/validator.helper.d.ts +7 -0
  57. package/src/validator.helper.js +53 -0
  58. package/src/validator.helper.js.map +1 -0
  59. package/src/validator.helper.ts +61 -0
  60. package/src/validator.interface.d.ts +17 -0
  61. package/src/validator.interface.js +9 -0
  62. package/src/validator.interface.js.map +1 -0
  63. package/src/validator.interface.ts +19 -0
@@ -0,0 +1,92 @@
1
+ import {
2
+ expect,
3
+ jest,
4
+ describe,
5
+ it,
6
+ beforeEach,
7
+ beforeAll,
8
+ afterAll,
9
+ afterEach,
10
+ } from '@jest/globals';
11
+ import { FieldErrorsEnum } from '../fields-error.enum.js';
12
+ import {
13
+ convertIfStringToDate,
14
+ errorTrhow,
15
+ stringIsInEnum,
16
+ stringIsInEnumOrThrow,
17
+ validateDate,
18
+ validateDateOrThrow,
19
+ validateStringFormat,
20
+ } from '../validator.helper.js';
21
+ import { StringFormatEnum } from '../string-format.enum.js';
22
+
23
+ describe('validator helper test', () => {
24
+ it('convertIfStringToDate should work', async () => {
25
+ let testData = convertIfStringToDate('2020 01 01');
26
+ expect(testData).toBeInstanceOf(Date);
27
+
28
+ testData = convertIfStringToDate(new Date());
29
+ expect(testData).toBeInstanceOf(Date);
30
+ });
31
+
32
+ it('stringIsInEnum should work', async () => {
33
+ let testData = stringIsInEnum(
34
+ FieldErrorsEnum.INVALID_VALUE,
35
+ FieldErrorsEnum,
36
+ );
37
+ expect(testData).toBeTruthy();
38
+
39
+ testData = stringIsInEnum(
40
+ `invalid_${FieldErrorsEnum.INVALID_VALUE}`,
41
+ FieldErrorsEnum,
42
+ );
43
+ expect(testData).toBeFalsy();
44
+ });
45
+
46
+ it('stringIsInEnumOrThrow should work', async () => {
47
+ const testData = stringIsInEnumOrThrow(
48
+ FieldErrorsEnum.INVALID_VALUE,
49
+ FieldErrorsEnum,
50
+ );
51
+ expect(testData).toBeTruthy();
52
+
53
+ expect(() =>
54
+ stringIsInEnumOrThrow(
55
+ `invalid_${FieldErrorsEnum.INVALID_VALUE}`,
56
+ FieldErrorsEnum,
57
+ ),
58
+ ).toThrow();
59
+ });
60
+
61
+ it('validateDate should work', async () => {
62
+ let testData = validateDate(new Date());
63
+ expect(testData).toBeTruthy();
64
+
65
+ testData = validateDate('');
66
+ expect(testData).toBeFalsy();
67
+
68
+ testData = validateDate({} as Date);
69
+ expect(testData).toBeFalsy();
70
+ });
71
+
72
+ it('validateDateOrThrow should work', async () => {
73
+ const testData = validateDateOrThrow(new Date());
74
+ expect(testData).toBeTruthy();
75
+
76
+ expect(() => validateDateOrThrow('')).toThrow();
77
+ });
78
+
79
+ it('validateStringFormat should work', async () => {
80
+ let testData = validateStringFormat('<>', StringFormatEnum.ALL);
81
+ expect(testData).toBeTruthy();
82
+
83
+ testData = validateStringFormat('Eh! Volevi!', StringFormatEnum.ALL);
84
+ expect(testData).toBeFalsy();
85
+ });
86
+
87
+ it('errorTrhow should work', async () => {
88
+ expect(() => errorTrhow('')).toThrow(FieldErrorsEnum.INVALID_VALUE);
89
+
90
+ expect(() => errorTrhow('', 'customError')).toThrow('customError');
91
+ });
92
+ });
@@ -0,0 +1,42 @@
1
+ import {
2
+ expect,
3
+ jest,
4
+ describe,
5
+ it,
6
+ beforeEach,
7
+ beforeAll,
8
+ afterAll,
9
+ afterEach,
10
+ } from '@jest/globals';
11
+ import { StringFormatEnum } from '../string-format.enum.js';
12
+ import {
13
+ DateCheckTypeEnum,
14
+ IDate,
15
+ IDateCheck,
16
+ IStringFormatMatchCheckOptions,
17
+ } from '../validator.interface.js';
18
+
19
+ describe('validator interface test', () => {
20
+ it('All the interfaces are defined', async () => {
21
+ const testData_1: IDate = {
22
+ year: 2020,
23
+ month: 1,
24
+ date: 1,
25
+ };
26
+
27
+ expect(testData_1).toBeDefined();
28
+ const testData_2: IDateCheck = {
29
+ checkType: DateCheckTypeEnum.MAX,
30
+ dateToAdd: testData_1,
31
+ };
32
+
33
+ expect(testData_2).toBeDefined();
34
+ const testData_3: IStringFormatMatchCheckOptions = {
35
+ toMatch: true,
36
+ pattern: StringFormatEnum.ALL,
37
+ };
38
+ expect(testData_3).toBeDefined();
39
+ });
40
+
41
+ expect(DateCheckTypeEnum).toBeDefined();
42
+ });
@@ -0,0 +1,10 @@
1
+ export declare function ParseArray({ separator }?: {
2
+ separator?: string | undefined;
3
+ }): PropertyDecorator;
4
+ export declare function parseArray(value: string, separator?: string): string[] | (string & any[]);
5
+ export declare function ParseBoolean(): PropertyDecorator;
6
+ export declare function parseBoolean(value: string | boolean): boolean;
7
+ export declare function ParseNumber(): PropertyDecorator;
8
+ export declare function parseNumber(value: string | number): number;
9
+ export declare function ParseInt(): PropertyDecorator;
10
+ export declare function parseInt(value: string | number): number;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParseArray = ParseArray;
4
+ exports.parseArray = parseArray;
5
+ exports.ParseBoolean = ParseBoolean;
6
+ exports.parseBoolean = parseBoolean;
7
+ exports.ParseNumber = ParseNumber;
8
+ exports.parseNumber = parseNumber;
9
+ exports.ParseInt = ParseInt;
10
+ exports.parseInt = parseInt;
11
+ const class_transformer_1 = require("class-transformer");
12
+ function ParseArray({ separator = ',' } = {}) {
13
+ return (0, class_transformer_1.Transform)(({ value }) => parseArray(value, separator));
14
+ }
15
+ function parseArray(value, separator = ',') {
16
+ if (!value) {
17
+ return [];
18
+ }
19
+ if (Array.isArray(value)) {
20
+ return value;
21
+ }
22
+ if (typeof value !== 'string') {
23
+ return [value];
24
+ }
25
+ return value.split(separator).filter((item) => item.length > 0);
26
+ }
27
+ function ParseBoolean() {
28
+ return (0, class_transformer_1.Transform)(({ value }) => parseBoolean(value));
29
+ }
30
+ function parseBoolean(value) {
31
+ if (typeof value === 'boolean') {
32
+ return value;
33
+ }
34
+ if (typeof value !== 'string') {
35
+ return false;
36
+ }
37
+ return value === 'true';
38
+ }
39
+ function ParseNumber() {
40
+ return (0, class_transformer_1.Transform)(({ value }) => parseNumber(value));
41
+ }
42
+ function parseNumber(value) {
43
+ if (typeof value === 'number') {
44
+ return value;
45
+ }
46
+ if (typeof value !== 'string' || value === '') {
47
+ return NaN;
48
+ }
49
+ return Number(value);
50
+ }
51
+ function ParseInt() {
52
+ return (0, class_transformer_1.Transform)(({ value }) => parseInt(value));
53
+ }
54
+ function parseInt(value) {
55
+ if (typeof value === 'number') {
56
+ return value;
57
+ }
58
+ if (typeof value !== 'string' || Number(value) % 1 !== 0) {
59
+ return NaN;
60
+ }
61
+ return Number.parseInt(value);
62
+ }
63
+ //# sourceMappingURL=class-transformer.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-transformer.helper.js","sourceRoot":"","sources":["class-transformer.helper.ts"],"names":[],"mappings":";;AAEA,gCAEC;AAED,gCAcC;AAED,oCAEC;AAED,oCAUC;AAED,kCAEC;AAED,kCAUC;AAED,4BAEC;AAED,4BAUC;AApED,yDAA8C;AAE9C,SAAgB,UAAU,CAAC,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,EAAE;IACjD,OAAO,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa,EAAE,SAAS,GAAG,GAAG;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,YAAY,CAAC,KAAuB;IAClD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,KAAK,MAAM,CAAC;AAC1B,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,WAAW,CAAC,KAAsB;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC9C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAgB,QAAQ;IACtB,OAAO,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAsB;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { Transform } from 'class-transformer';
2
+
3
+ export function ParseArray({ separator = ',' } = {}) {
4
+ return Transform(({ value }) => parseArray(value, separator));
5
+ }
6
+
7
+ export function parseArray(value: string, separator = ',') {
8
+ if (!value) {
9
+ return [];
10
+ }
11
+
12
+ if (Array.isArray(value)) {
13
+ return value;
14
+ }
15
+
16
+ if (typeof value !== 'string') {
17
+ return [value];
18
+ }
19
+
20
+ return value.split(separator).filter((item: string) => item.length > 0);
21
+ }
22
+
23
+ export function ParseBoolean() {
24
+ return Transform(({ value }) => parseBoolean(value));
25
+ }
26
+
27
+ export function parseBoolean(value: string | boolean) {
28
+ if (typeof value === 'boolean') {
29
+ return value;
30
+ }
31
+
32
+ if (typeof value !== 'string') {
33
+ return false;
34
+ }
35
+
36
+ return value === 'true';
37
+ }
38
+
39
+ export function ParseNumber() {
40
+ return Transform(({ value }) => parseNumber(value));
41
+ }
42
+
43
+ export function parseNumber(value: string | number) {
44
+ if (typeof value === 'number') {
45
+ return value;
46
+ }
47
+
48
+ if (typeof value !== 'string' || value === '') {
49
+ return NaN;
50
+ }
51
+
52
+ return Number(value);
53
+ }
54
+
55
+ export function ParseInt() {
56
+ return Transform(({ value }) => parseInt(value));
57
+ }
58
+
59
+ export function parseInt(value: string | number) {
60
+ if (typeof value === 'number') {
61
+ return value;
62
+ }
63
+
64
+ if (typeof value !== 'string' || Number(value) % 1 !== 0) {
65
+ return NaN;
66
+ }
67
+
68
+ return Number.parseInt(value);
69
+ }
@@ -0,0 +1,2 @@
1
+ import { FieldMiddleware } from '@nestjs/graphql';
2
+ export declare const decimalMiddleware: FieldMiddleware;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decimalMiddleware = void 0;
4
+ const decimalMiddleware = async (_ctx, next) => {
5
+ return await next();
6
+ };
7
+ exports.decimalMiddleware = decimalMiddleware;
8
+ //# sourceMappingURL=decimal-middleware.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal-middleware.helper.js","sourceRoot":"","sources":["decimal-middleware.helper.ts"],"names":[],"mappings":";;;AAMO,MAAM,iBAAiB,GAAoB,KAAK,EACrD,IAAuB,EACvB,IAAY,EACZ,EAAE;IACF,OAAO,MAAM,IAAI,EAAE,CAAC;AACtB,CAAC,CAAC;AALW,QAAA,iBAAiB,qBAK5B"}
@@ -0,0 +1,12 @@
1
+ import { FieldMiddleware, MiddlewareContext, NextFn } from '@nestjs/graphql';
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
4
+ /**
5
+ * @todo Apply conversion if needed for number with more than scale = 11
6
+ */
7
+ export const decimalMiddleware: FieldMiddleware = async (
8
+ _ctx: MiddlewareContext,
9
+ next: NextFn,
10
+ ) => {
11
+ return await next();
12
+ };
@@ -0,0 +1,3 @@
1
+ export declare enum FieldErrorsEnum {
2
+ INVALID_VALUE = "Invalid value"
3
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FieldErrorsEnum = void 0;
4
+ var FieldErrorsEnum;
5
+ (function (FieldErrorsEnum) {
6
+ FieldErrorsEnum["INVALID_VALUE"] = "Invalid value";
7
+ })(FieldErrorsEnum || (exports.FieldErrorsEnum = FieldErrorsEnum = {}));
8
+ //# sourceMappingURL=field-error.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-error.enum.js","sourceRoot":"","sources":["field-error.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,kDAA+B,CAAA;AACjC,CAAC,EAFW,eAAe,+BAAf,eAAe,QAE1B"}
@@ -0,0 +1,3 @@
1
+ export enum FieldErrorsEnum {
2
+ INVALID_VALUE = 'Invalid value',
3
+ }
@@ -0,0 +1,3 @@
1
+ export declare enum FieldErrorsEnum {
2
+ INVALID_VALUE = "Invalid value"
3
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FieldErrorsEnum = void 0;
4
+ var FieldErrorsEnum;
5
+ (function (FieldErrorsEnum) {
6
+ FieldErrorsEnum["INVALID_VALUE"] = "Invalid value";
7
+ })(FieldErrorsEnum || (exports.FieldErrorsEnum = FieldErrorsEnum = {}));
8
+ //# sourceMappingURL=fields-error.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields-error.enum.js","sourceRoot":"","sources":["fields-error.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,kDAA+B,CAAA;AACjC,CAAC,EAFW,eAAe,+BAAf,eAAe,QAE1B"}
@@ -0,0 +1,3 @@
1
+ export enum FieldErrorsEnum {
2
+ INVALID_VALUE = 'Invalid value',
3
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * from './class-transformer.helper.js';
2
+ export * from './decimal-middleware.helper.js';
3
+ export * from './fields-error.enum.js';
4
+ export * from './nullable-timestamp-middleware.helper.js';
5
+ export * from './string-format.enum.js';
6
+ export * from './typeorm-transformer.helper.js';
7
+ export * from './validator.decorator.js';
8
+ export * from './validator.helper.js';
9
+ export * from './validator.interface.js';
package/src/index.js ADDED
@@ -0,0 +1,26 @@
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("./class-transformer.helper.js"), exports);
18
+ __exportStar(require("./decimal-middleware.helper.js"), exports);
19
+ __exportStar(require("./fields-error.enum.js"), exports);
20
+ __exportStar(require("./nullable-timestamp-middleware.helper.js"), exports);
21
+ __exportStar(require("./string-format.enum.js"), exports);
22
+ __exportStar(require("./typeorm-transformer.helper.js"), exports);
23
+ __exportStar(require("./validator.decorator.js"), exports);
24
+ __exportStar(require("./validator.helper.js"), exports);
25
+ __exportStar(require("./validator.interface.js"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,iEAA+C;AAC/C,yDAAuC;AACvC,4EAA0D;AAC1D,0DAAwC;AACxC,kEAAgD;AAChD,2DAAyC;AACzC,wDAAsC;AACtC,2DAAyC"}
package/src/index.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * from './class-transformer.helper.js';
2
+ export * from './decimal-middleware.helper.js';
3
+ export * from './fields-error.enum.js';
4
+ export * from './nullable-timestamp-middleware.helper.js';
5
+ export * from './string-format.enum.js';
6
+ export * from './typeorm-transformer.helper.js';
7
+ export * from './validator.decorator.js';
8
+ export * from './validator.helper.js';
9
+ export * from './validator.interface.js';
@@ -0,0 +1,2 @@
1
+ import { FieldMiddleware } from '@nestjs/graphql';
2
+ export declare const nullableTimestampMiddleware: FieldMiddleware;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nullableTimestampMiddleware = void 0;
4
+ const nullableTimestampMiddleware = async (_ctx, next) => {
5
+ const date = await next();
6
+ return '0000-00-00 00:00:00' === date || !date ? null : date;
7
+ };
8
+ exports.nullableTimestampMiddleware = nullableTimestampMiddleware;
9
+ //# sourceMappingURL=nullable-timestamp-middleware.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullable-timestamp-middleware.helper.js","sourceRoot":"","sources":["nullable-timestamp-middleware.helper.ts"],"names":[],"mappings":";;;AAKO,MAAM,2BAA2B,GAAoB,KAAK,EAC/D,IAAuB,EACvB,IAAY,EACZ,EAAE;IACF,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,CAAC;IAC1B,OAAO,qBAAqB,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC,CAAC;AANW,QAAA,2BAA2B,+BAMtC"}
@@ -0,0 +1,12 @@
1
+ import { FieldMiddleware, MiddlewareContext, NextFn } from '@nestjs/graphql';
2
+
3
+ /**
4
+ * Parses an invalid or empty timestamp to null to avoid GraphQLISODateTime parsing issues
5
+ */
6
+ export const nullableTimestampMiddleware: FieldMiddleware = async (
7
+ _ctx: MiddlewareContext,
8
+ next: NextFn,
9
+ ) => {
10
+ const date = await next();
11
+ return '0000-00-00 00:00:00' === date || !date ? null : date;
12
+ };
@@ -0,0 +1,3 @@
1
+ export declare enum StringFormatEnum {
2
+ ALL = "^[<>&'\"/]+$"
3
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringFormatEnum = void 0;
4
+ var StringFormatEnum;
5
+ (function (StringFormatEnum) {
6
+ StringFormatEnum["ALL"] = "^[<>&'\"/]+$";
7
+ })(StringFormatEnum || (exports.StringFormatEnum = StringFormatEnum = {}));
8
+ //# sourceMappingURL=string-format.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-format.enum.js","sourceRoot":"","sources":["string-format.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,wCAAoB,CAAA;AACtB,CAAC,EAFW,gBAAgB,gCAAhB,gBAAgB,QAE3B"}
@@ -0,0 +1,3 @@
1
+ export enum StringFormatEnum {
2
+ ALL = '^[<>&\'"/]+$',
3
+ }
@@ -0,0 +1,6 @@
1
+ import { ValueTransformer } from 'typeorm';
2
+ export declare const enumTransformer: <T extends Record<string, any>>(enumName: T) => ValueTransformer;
3
+ export declare const defaultDateTransformer: () => {
4
+ from: (value: Date) => Date;
5
+ to: (value?: Date) => string | Date;
6
+ };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultDateTransformer = exports.enumTransformer = void 0;
4
+ const date_helper_1 = require("@nest-yalc-2/utils/date.helper");
5
+ const enum_helper_1 = require("@nest-yalc-2/utils/enum.helper");
6
+ const enumTransformer = (enumName) => {
7
+ const transformer = (value) => {
8
+ return (0, enum_helper_1.belongsToEnum)(enumName, value) ? value : null;
9
+ };
10
+ return {
11
+ to: (value) => value,
12
+ from: transformer,
13
+ };
14
+ };
15
+ exports.enumTransformer = enumTransformer;
16
+ const defaultDateTransformer = () => {
17
+ const transform = (value) => {
18
+ if (!value) {
19
+ return date_helper_1.DateHelper.dateToSQLDateTime(new Date());
20
+ }
21
+ return value;
22
+ };
23
+ return {
24
+ from: (value) => value,
25
+ to: transform,
26
+ };
27
+ };
28
+ exports.defaultDateTransformer = defaultDateTransformer;
29
+ //# sourceMappingURL=transformer.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer.helper.js","sourceRoot":"","sources":["transformer.helper.ts"],"names":[],"mappings":";;;AAAA,gEAA4D;AAC5D,gEAA+D;AAQxD,MAAM,eAAe,GAAG,CAC7B,QAAW,EACO,EAAE;IACpB,MAAM,WAAW,GAAG,CAAC,KAAsB,EAA0B,EAAE;QACrE,OAAO,IAAA,2BAAa,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,CAAC,KAAK,EAAW,EAAE,CAAC,KAAK;QAC7B,IAAI,EAAE,WAAW;KAClB,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,eAAe,mBAW1B;AAEK,MAAM,sBAAsB,GAAG,GAGpC,EAAE;IACF,MAAM,SAAS,GAAG,CAAC,KAAY,EAAiB,EAAE;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,wBAAU,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,CAAC,KAAW,EAAQ,EAAE,CAAC,KAAK;QAClC,EAAE,EAAE,SAAS;KACd,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,sBAAsB,0BAgBjC"}
@@ -0,0 +1,39 @@
1
+ import { DateHelper } from '@nest-yalc-2/utils/date.helper';
2
+ import { belongsToEnum } from '@nest-yalc-2/utils/enum.helper';
3
+ import { ValueTransformer } from 'typeorm';
4
+
5
+ /**
6
+ * Function for transforming the unfitting enum data to null after reading it from the database
7
+ * @param enumName: enum object for checking if the column value belongs to it
8
+ * @returns ValueTransformer object
9
+ */
10
+ export const enumTransformer = <T extends Record<string, any>>(
11
+ enumName: T,
12
+ ): ValueTransformer => {
13
+ const transformer = (value: string | number): string | number | null => {
14
+ return belongsToEnum(enumName, value) ? value : null;
15
+ };
16
+
17
+ return {
18
+ to: (value): unknown => value, // no transformation for writing
19
+ from: transformer,
20
+ };
21
+ };
22
+
23
+ export const defaultDateTransformer = (): {
24
+ from: (value: Date) => Date;
25
+ to: (value?: Date) => string | Date;
26
+ } => {
27
+ const transform = (value?: Date): string | Date => {
28
+ if (!value) {
29
+ return DateHelper.dateToSQLDateTime(new Date());
30
+ }
31
+
32
+ return value;
33
+ };
34
+
35
+ return {
36
+ from: (value: Date): Date => value,
37
+ to: transform,
38
+ };
39
+ };
@@ -0,0 +1,6 @@
1
+ import { ValueTransformer } from 'typeorm';
2
+ export declare const enumTransformer: <T extends Record<string, string | number>>(enumName: T) => ValueTransformer;
3
+ export declare const defaultDateTransformer: () => {
4
+ from: (value: Date) => Date;
5
+ to: (value?: Date) => string | Date;
6
+ };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultDateTransformer = exports.enumTransformer = void 0;
4
+ const date_helper_js_1 = require("@nest-yalc-2/utils/date.helper.js");
5
+ const enum_helper_js_1 = require("@nest-yalc-2/utils/enum.helper.js");
6
+ const enumTransformer = (enumName) => {
7
+ const transformer = (value) => {
8
+ return (0, enum_helper_js_1.belongsToEnum)(enumName, value) ? value : null;
9
+ };
10
+ return {
11
+ to: (value) => value,
12
+ from: transformer,
13
+ };
14
+ };
15
+ exports.enumTransformer = enumTransformer;
16
+ const defaultDateTransformer = () => {
17
+ const transform = (value) => {
18
+ if (!value) {
19
+ return date_helper_js_1.DateHelper.dateToSQLDateTime(new Date());
20
+ }
21
+ return value;
22
+ };
23
+ return {
24
+ from: (value) => value,
25
+ to: transform,
26
+ };
27
+ };
28
+ exports.defaultDateTransformer = defaultDateTransformer;
29
+ //# sourceMappingURL=typeorm-transformer.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeorm-transformer.helper.js","sourceRoot":"","sources":["typeorm-transformer.helper.ts"],"names":[],"mappings":";;;AAAA,sEAA+D;AAC/D,sEAAkE;AAQ3D,MAAM,eAAe,GAAG,CAC7B,QAAW,EACO,EAAE;IACpB,MAAM,WAAW,GAAG,CAAC,KAAsB,EAAE,EAAE;QAC7C,OAAO,IAAA,8BAAa,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QACpB,IAAI,EAAE,WAAW;KAClB,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,eAAe,mBAW1B;AAEK,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,2BAAU,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,CAAC,KAAW,EAAE,EAAE,CAAC,KAAK;QAC5B,EAAE,EAAE,SAAS;KACd,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,sBAAsB,0BAajC"}
@@ -0,0 +1,36 @@
1
+ import { DateHelper } from '@nest-yalc-2/utils/date.helper.js';
2
+ import { belongsToEnum } from '@nest-yalc-2/utils/enum.helper.js';
3
+ import { ValueTransformer } from 'typeorm';
4
+
5
+ /**
6
+ * Function for transforming the unfitting enum data to null after reading it from the database
7
+ * @param enumName: enum object for checking if the column value belongs to it
8
+ * @returns ValueTransformer object
9
+ */
10
+ export const enumTransformer = <T extends Record<string, string | number>>(
11
+ enumName: T,
12
+ ): ValueTransformer => {
13
+ const transformer = (value: string | number) => {
14
+ return belongsToEnum(enumName, value) ? value : null;
15
+ };
16
+
17
+ return {
18
+ to: (value) => value, // no transformation for writing
19
+ from: transformer,
20
+ };
21
+ };
22
+
23
+ export const defaultDateTransformer = () => {
24
+ const transform = (value?: Date) => {
25
+ if (!value) {
26
+ return DateHelper.dateToSQLDateTime(new Date());
27
+ }
28
+
29
+ return value;
30
+ };
31
+
32
+ return {
33
+ from: (value: Date) => value,
34
+ to: transform,
35
+ };
36
+ };
@@ -0,0 +1,10 @@
1
+ import { ValidationOptions } from 'class-validator';
2
+ import { IStringFormatMatchCheckOptions } from './validator.interface.js';
3
+ export declare const stringFormatMatchValidatorFactory: (stringMatchOptions: IStringFormatMatchCheckOptions) => {
4
+ validate(string: string): boolean;
5
+ };
6
+ export declare const dateValidatorFactory: () => {
7
+ validate(date: Date | string): boolean;
8
+ };
9
+ export declare function StringFormatMatchValidation(validationOptions?: ValidationOptions, stringMatchOptions?: IStringFormatMatchCheckOptions): (object: any, propertyName: string) => void;
10
+ export declare function DateValidation(validationOptions?: ValidationOptions): (object: any, propertyName: string) => void;