@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.
@@ -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 sanitizedValue = value.date ? { date: value.date } : undefined;
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 sanitizedValue = value.start && value.end ? { start: value.start, end: value.end } : undefined;
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.sanitizeDateRange,
34
+ [types_1.OperationEnum.OnOrAfter]: exports.sanitizeSingleDate,
24
35
  [types_1.OperationEnum.OnOrBefore]: exports.sanitizeSingleDate,
25
- [types_1.OperationEnum.BetweenDate]: exports.sanitizeSingleDate,
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;AAG/D,MAAM,kBAAkB,GAA0C,CAAC,KAAK,EAAE,EAAE;IACjF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7E,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,cAAc;QAC7B,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,kBAAkB,sBAO7B;AAEK,MAAM,iBAAiB,GAA2C,CAAC,KAAK,EAAE,EAAE;IACjF,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAa,EAAE,GAAG,EAAE,KAAK,CAAC,GAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAErH,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,cAAc;QAC7B,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,iBAAiB,qBAO5B;AAEW,QAAA,oBAAoB,GAA2C;IAC1E,CAAC,qBAAa,CAAC,EAAE,CAAC,EAAE,0BAAkB;IACtC,CAAC,qBAAa,CAAC,SAAS,CAAC,EAAE,yBAAiB;IAC5C,CAAC,qBAAa,CAAC,UAAU,CAAC,EAAE,0BAAkB;IAC9C,CAAC,qBAAa,CAAC,WAAW,CAAC,EAAE,0BAAkB;CAChD,CAAC"}
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.sanitizeNumericRange,
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.sanitizeNumericRange,
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontegg/entitlements-javascript-commons",
3
- "version": "1.0.0-alpha.13",
3
+ "version": "1.0.0-alpha.15",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -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 sanitizedValue = value.date ? { date: value.date as Date } : undefined;
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 sanitizedValue = value.start && value.end ? { start: value.start as Date, end: value.end as Date } : undefined;
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]: sanitizeDateRange,
39
+ [OperationEnum.OnOrAfter]: sanitizeSingleDate,
25
40
  [OperationEnum.OnOrBefore]: sanitizeSingleDate,
26
- [OperationEnum.BetweenDate]: sanitizeSingleDate,
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]: sanitizeNumericRange,
29
+ [OperationEnum.GreaterThan]: sanitizeSingleNumber,
30
30
  [OperationEnum.GreaterThanEqual]: sanitizeSingleNumber,
31
31
  [OperationEnum.LesserThan]: sanitizeSingleNumber,
32
- [OperationEnum.LesserThanEqual]: sanitizeNumericRange,
32
+ [OperationEnum.LesserThanEqual]: sanitizeSingleNumber,
33
33
  [OperationEnum.BetweenNumeric]: sanitizeNumericRange,
34
34
  };