@frontegg/entitlements-javascript-commons 1.0.0-alpha.13 → 1.0.0-alpha.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/operations/date/sanitizers.d.ts +2 -0
- package/dist/operations/date/sanitizers.js +16 -5
- package/dist/operations/date/sanitizers.js.map +1 -1
- package/dist/operations/numeric/sanitizers.js +2 -2
- package/docs/CHANGELOG.md +14 -0
- package/package.json +1 -1
- package/src/operations/date/sanitizers.ts +19 -4
- package/src/operations/date/tests/sanitizers.spec.ts +18 -1
- package/src/operations/numeric/sanitizers.ts +2 -2
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Sanitizer, SanitizersMapper } from '../types';
|
|
2
2
|
import { BetweenDateOperationPayload, DateOperationPayload, SingleDateOperationPayload } from './types';
|
|
3
|
+
export declare const sanitizeDateValue: (value: Date | string | number) => Date;
|
|
4
|
+
export declare const isValidDate: (value: unknown) => boolean;
|
|
3
5
|
export declare const sanitizeSingleDate: Sanitizer<SingleDateOperationPayload>;
|
|
4
6
|
export declare const sanitizeDateRange: Sanitizer<BetweenDateOperationPayload>;
|
|
5
7
|
export declare const DateSanitizersMapper: SanitizersMapper<DateOperationPayload>;
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DateSanitizersMapper = exports.sanitizeDateRange = exports.sanitizeSingleDate = void 0;
|
|
3
|
+
exports.DateSanitizersMapper = exports.sanitizeDateRange = exports.sanitizeSingleDate = exports.isValidDate = exports.sanitizeDateValue = void 0;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
|
+
const sanitizeDateValue = (value) => {
|
|
6
|
+
return new Date(value);
|
|
7
|
+
};
|
|
8
|
+
exports.sanitizeDateValue = sanitizeDateValue;
|
|
9
|
+
const isValidDate = (value) => value instanceof Date && !isNaN(value);
|
|
10
|
+
exports.isValidDate = isValidDate;
|
|
5
11
|
const sanitizeSingleDate = (value) => {
|
|
6
|
-
const
|
|
12
|
+
const sanitizedDateValue = value.date ? (0, exports.sanitizeDateValue)(value.date) : undefined;
|
|
13
|
+
const sanitizedValue = sanitizedDateValue && (0, exports.isValidDate)(sanitizedDateValue) ? { date: sanitizedDateValue } : undefined;
|
|
7
14
|
return {
|
|
8
15
|
isSanitized: !!sanitizedValue,
|
|
9
16
|
sanitizedValue,
|
|
@@ -11,7 +18,11 @@ const sanitizeSingleDate = (value) => {
|
|
|
11
18
|
};
|
|
12
19
|
exports.sanitizeSingleDate = sanitizeSingleDate;
|
|
13
20
|
const sanitizeDateRange = (value) => {
|
|
14
|
-
const
|
|
21
|
+
const sanitizedStartValue = value.start ? (0, exports.sanitizeDateValue)(value.start) : undefined;
|
|
22
|
+
const sanitizedEndValue = value.end ? (0, exports.sanitizeDateValue)(value.end) : undefined;
|
|
23
|
+
const sanitizedValue = sanitizedStartValue && sanitizedEndValue && (0, exports.isValidDate)(sanitizedStartValue) && (0, exports.isValidDate)(sanitizedEndValue)
|
|
24
|
+
? { start: sanitizedStartValue, end: sanitizedEndValue }
|
|
25
|
+
: undefined;
|
|
15
26
|
return {
|
|
16
27
|
isSanitized: !!sanitizedValue,
|
|
17
28
|
sanitizedValue,
|
|
@@ -20,8 +31,8 @@ const sanitizeDateRange = (value) => {
|
|
|
20
31
|
exports.sanitizeDateRange = sanitizeDateRange;
|
|
21
32
|
exports.DateSanitizersMapper = {
|
|
22
33
|
[types_1.OperationEnum.On]: exports.sanitizeSingleDate,
|
|
23
|
-
[types_1.OperationEnum.OnOrAfter]: exports.
|
|
34
|
+
[types_1.OperationEnum.OnOrAfter]: exports.sanitizeSingleDate,
|
|
24
35
|
[types_1.OperationEnum.OnOrBefore]: exports.sanitizeSingleDate,
|
|
25
|
-
[types_1.OperationEnum.BetweenDate]: exports.
|
|
36
|
+
[types_1.OperationEnum.BetweenDate]: exports.sanitizeDateRange,
|
|
26
37
|
};
|
|
27
38
|
//# sourceMappingURL=sanitizers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizers.js","sourceRoot":"","sources":["../../../src/operations/date/sanitizers.ts"],"names":[],"mappings":";;;AAAA,oCAAsE;
|
|
1
|
+
{"version":3,"file":"sanitizers.js","sourceRoot":"","sources":["../../../src/operations/date/sanitizers.ts"],"names":[],"mappings":";;;AAAA,oCAAsE;AAK/D,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAQ,EAAE;IACvE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEK,MAAM,WAAW,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAA0B,CAAC,CAAC;AAAvG,QAAA,WAAW,eAA4F;AAE7G,MAAM,kBAAkB,GAA0C,CAAC,KAAK,EAAE,EAAE;IACjF,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,yBAAiB,EAAC,KAAK,CAAC,IAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,MAAM,cAAc,GAClB,kBAAkB,IAAI,IAAA,mBAAW,EAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnG,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,cAAc;QAC7B,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B;AAEK,MAAM,iBAAiB,GAA2C,CAAC,KAAK,EAAE,EAAE;IACjF,MAAM,mBAAmB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,yBAAiB,EAAC,KAAK,CAAC,KAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrG,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,yBAAiB,EAAC,KAAK,CAAC,GAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,MAAM,cAAc,GAClB,mBAAmB,IAAI,iBAAiB,IAAI,IAAA,mBAAW,EAAC,mBAAmB,CAAC,IAAI,IAAA,mBAAW,EAAC,iBAAiB,CAAC;QAC5G,CAAC,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,iBAAiB,EAAE;QACxD,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,cAAc;QAC7B,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,iBAAiB,qBAY5B;AAEW,QAAA,oBAAoB,GAA2C;IAC1E,CAAC,qBAAa,CAAC,EAAE,CAAC,EAAE,0BAAkB;IACtC,CAAC,qBAAa,CAAC,SAAS,CAAC,EAAE,0BAAkB;IAC7C,CAAC,qBAAa,CAAC,UAAU,CAAC,EAAE,0BAAkB;IAC9C,CAAC,qBAAa,CAAC,WAAW,CAAC,EAAE,yBAAiB;CAC/C,CAAC"}
|
|
@@ -23,10 +23,10 @@ const sanitizeNumericRange = (value) => {
|
|
|
23
23
|
exports.sanitizeNumericRange = sanitizeNumericRange;
|
|
24
24
|
exports.NumericSanitizersMapper = {
|
|
25
25
|
[types_1.OperationEnum.Equal]: exports.sanitizeSingleNumber,
|
|
26
|
-
[types_1.OperationEnum.GreaterThan]: exports.
|
|
26
|
+
[types_1.OperationEnum.GreaterThan]: exports.sanitizeSingleNumber,
|
|
27
27
|
[types_1.OperationEnum.GreaterThanEqual]: exports.sanitizeSingleNumber,
|
|
28
28
|
[types_1.OperationEnum.LesserThan]: exports.sanitizeSingleNumber,
|
|
29
|
-
[types_1.OperationEnum.LesserThanEqual]: exports.
|
|
29
|
+
[types_1.OperationEnum.LesserThanEqual]: exports.sanitizeSingleNumber,
|
|
30
30
|
[types_1.OperationEnum.BetweenNumeric]: exports.sanitizeNumericRange,
|
|
31
31
|
};
|
|
32
32
|
//# sourceMappingURL=sanitizers.js.map
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [1.0.0-alpha.15](https://github.com/frontegg/entitlements-javascript-commons/compare/v-1.0.0-alpha.14...v-1.0.0-alpha.15) (2023-10-25)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **date:** fix incorrect sanitizers mapping ([#25](https://github.com/frontegg/entitlements-javascript-commons/issues/25)) ([da08f16](https://github.com/frontegg/entitlements-javascript-commons/commit/da08f1628753b1794422c83327670ae09242ec11))
|
|
7
|
+
|
|
8
|
+
# [1.0.0-alpha.14](https://github.com/frontegg/entitlements-javascript-commons/compare/v-1.0.0-alpha.13...v-1.0.0-alpha.14) (2023-10-24)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **sanitizers:** fix numeric and date sanitizers ([#24](https://github.com/frontegg/entitlements-javascript-commons/issues/24)) ([8f5717a](https://github.com/frontegg/entitlements-javascript-commons/commit/8f5717acdcc0a1eccae84b272c7a02e315131a01))
|
|
14
|
+
|
|
1
15
|
# [1.0.0-alpha.13](https://github.com/frontegg/entitlements-javascript-commons/compare/v-1.0.0-alpha.12...v-1.0.0-alpha.13) (2023-10-22)
|
|
2
16
|
|
|
3
17
|
|
package/package.json
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import { OperationEnum, Sanitizer, SanitizersMapper } from '../types';
|
|
2
2
|
import { BetweenDateOperationPayload, DateOperationPayload, SingleDateOperationPayload } from './types';
|
|
3
3
|
|
|
4
|
+
type RawDateValue = Date | string | number;
|
|
5
|
+
|
|
6
|
+
export const sanitizeDateValue = (value: Date | string | number): Date => {
|
|
7
|
+
return new Date(value);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const isValidDate = (value: unknown): boolean => value instanceof Date && !isNaN(value as unknown as number);
|
|
11
|
+
|
|
4
12
|
export const sanitizeSingleDate: Sanitizer<SingleDateOperationPayload> = (value) => {
|
|
5
|
-
const
|
|
13
|
+
const sanitizedDateValue = value.date ? sanitizeDateValue(value.date as RawDateValue) : undefined;
|
|
14
|
+
const sanitizedValue =
|
|
15
|
+
sanitizedDateValue && isValidDate(sanitizedDateValue) ? { date: sanitizedDateValue } : undefined;
|
|
6
16
|
|
|
7
17
|
return {
|
|
8
18
|
isSanitized: !!sanitizedValue,
|
|
@@ -11,7 +21,12 @@ export const sanitizeSingleDate: Sanitizer<SingleDateOperationPayload> = (value)
|
|
|
11
21
|
};
|
|
12
22
|
|
|
13
23
|
export const sanitizeDateRange: Sanitizer<BetweenDateOperationPayload> = (value) => {
|
|
14
|
-
const
|
|
24
|
+
const sanitizedStartValue = value.start ? sanitizeDateValue(value.start as RawDateValue) : undefined;
|
|
25
|
+
const sanitizedEndValue = value.end ? sanitizeDateValue(value.end as RawDateValue) : undefined;
|
|
26
|
+
const sanitizedValue =
|
|
27
|
+
sanitizedStartValue && sanitizedEndValue && isValidDate(sanitizedStartValue) && isValidDate(sanitizedEndValue)
|
|
28
|
+
? { start: sanitizedStartValue, end: sanitizedEndValue }
|
|
29
|
+
: undefined;
|
|
15
30
|
|
|
16
31
|
return {
|
|
17
32
|
isSanitized: !!sanitizedValue,
|
|
@@ -21,7 +36,7 @@ export const sanitizeDateRange: Sanitizer<BetweenDateOperationPayload> = (value)
|
|
|
21
36
|
|
|
22
37
|
export const DateSanitizersMapper: SanitizersMapper<DateOperationPayload> = {
|
|
23
38
|
[OperationEnum.On]: sanitizeSingleDate,
|
|
24
|
-
[OperationEnum.OnOrAfter]:
|
|
39
|
+
[OperationEnum.OnOrAfter]: sanitizeSingleDate,
|
|
25
40
|
[OperationEnum.OnOrBefore]: sanitizeSingleDate,
|
|
26
|
-
[OperationEnum.BetweenDate]:
|
|
41
|
+
[OperationEnum.BetweenDate]: sanitizeDateRange,
|
|
27
42
|
};
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
import { fc, test } from '@fast-check/jest';
|
|
2
|
-
import { sanitizeDateRange, sanitizeSingleDate } from '../sanitizers';
|
|
2
|
+
import { isValidDate, sanitizeDateRange, sanitizeDateValue, sanitizeSingleDate } from '../sanitizers';
|
|
3
3
|
|
|
4
4
|
describe('Date sanitizers', () => {
|
|
5
|
+
it.each([['2021-01-01'], ['2023-10-23T12:09:17.502Z'], [123432443], [new Date()]])(
|
|
6
|
+
'should return sanitized date when value is a string',
|
|
7
|
+
(value) => {
|
|
8
|
+
const sanitizationResult = sanitizeDateValue(value);
|
|
9
|
+
|
|
10
|
+
expect(sanitizationResult).toBeDefined();
|
|
11
|
+
expect(sanitizationResult).toEqual(new Date(value));
|
|
12
|
+
},
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
it.each([['not a date'], [], {}, [undefined]])('should return invalid date when value is not a date', (value) => {
|
|
16
|
+
const sanitizationResult = sanitizeDateValue(value as any);
|
|
17
|
+
|
|
18
|
+
expect(sanitizationResult).toBeDefined();
|
|
19
|
+
expect(isValidDate(sanitizationResult)).toBe(false);
|
|
20
|
+
});
|
|
21
|
+
|
|
5
22
|
test.prop([fc.record({ date: fc.date() })], { verbose: true })(
|
|
6
23
|
'should return sanitized when date value exists',
|
|
7
24
|
(value) => {
|
|
@@ -26,9 +26,9 @@ export const sanitizeNumericRange: Sanitizer<BetweenNumericOperationPayload> = (
|
|
|
26
26
|
|
|
27
27
|
export const NumericSanitizersMapper: SanitizersMapper<NumericOperationPayload> = {
|
|
28
28
|
[OperationEnum.Equal]: sanitizeSingleNumber,
|
|
29
|
-
[OperationEnum.GreaterThan]:
|
|
29
|
+
[OperationEnum.GreaterThan]: sanitizeSingleNumber,
|
|
30
30
|
[OperationEnum.GreaterThanEqual]: sanitizeSingleNumber,
|
|
31
31
|
[OperationEnum.LesserThan]: sanitizeSingleNumber,
|
|
32
|
-
[OperationEnum.LesserThanEqual]:
|
|
32
|
+
[OperationEnum.LesserThanEqual]: sanitizeSingleNumber,
|
|
33
33
|
[OperationEnum.BetweenNumeric]: sanitizeNumericRange,
|
|
34
34
|
};
|