@thisisagile/easy 7.34.12 → 7.34.19

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.
@@ -5,6 +5,7 @@ export declare const isNotEmpty: (o?: unknown) => boolean;
5
5
  export declare const isString: (o?: unknown) => o is string;
6
6
  export declare const isIsoDateString: (o?: unknown) => o is string;
7
7
  export declare const isBoolean: (o?: unknown) => o is boolean;
8
+ export declare const isTrue: (o?: unknown) => boolean;
8
9
  export declare const isNumber: (o?: unknown) => o is number;
9
10
  export declare const isObject: (o?: unknown) => o is Record<string, unknown>;
10
11
  export declare const isEmptyObject: (o?: unknown) => boolean;
package/dist/types/Is.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isError = exports.isPrimitive = exports.isIntersecting = exports.isIn = exports.isInstance = exports.isArray = exports.isFunction = exports.isEmptyObject = exports.isObject = exports.isNumber = exports.isBoolean = exports.isIsoDateString = exports.isString = exports.isNotEmpty = exports.isEmpty = exports.isDefined = void 0;
3
+ exports.isError = exports.isPrimitive = exports.isIntersecting = exports.isIn = exports.isInstance = exports.isArray = exports.isFunction = exports.isEmptyObject = exports.isObject = exports.isNumber = exports.isTrue = exports.isBoolean = exports.isIsoDateString = exports.isString = exports.isNotEmpty = exports.isEmpty = exports.isDefined = void 0;
4
4
  const isDefined = (o) => o !== undefined && o !== null;
5
5
  exports.isDefined = isDefined;
6
6
  const isEmpty = (o) => o === '' || o === null || o === undefined || ((0, exports.isArray)(o) && o.length === 0);
@@ -13,6 +13,8 @@ const isIsoDateString = (o) => (0, exports.isString)(o) && /^\d{4}-[01]\d-[0-3]\
13
13
  exports.isIsoDateString = isIsoDateString;
14
14
  const isBoolean = (o) => (0, exports.isDefined)(o) && typeof o === 'boolean';
15
15
  exports.isBoolean = isBoolean;
16
+ const isTrue = (o) => !!o;
17
+ exports.isTrue = isTrue;
16
18
  const isNumber = (o) => (0, exports.isDefined)(o) && typeof o === 'number' && !Number.isNaN(o);
17
19
  exports.isNumber = isNumber;
18
20
  const isObject = (o) => o != null && (typeof o === 'object' || typeof o === 'function') && !(0, exports.isArray)(o);
@@ -1 +1 @@
1
- {"version":3,"file":"Is.js","sourceRoot":"","sources":["../../src/types/Is.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Is.js","sourceRoot":"","sources":["../../src/types/Is.ts"],"names":[],"mappings":";;;AAEO,MAAM,SAAS,GAAG,CAAc,CAAK,EAAuB,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;AAAvF,QAAA,SAAS,aAA8E;AAE7F,MAAM,OAAO,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAAhH,QAAA,OAAO,WAAyG;AAEtH,MAAM,UAAU,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAAlH,QAAA,UAAU,cAAwG;AAExH,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAe,EAAE,CAAC,CAAC,YAAY,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;AAAtF,QAAA,QAAQ,YAA8E;AAE5F,MAAM,eAAe,GAAG,CAAC,CAAW,EAAe,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,4EAA4E,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAApJ,QAAA,eAAe,mBAAqI;AAE1J,MAAM,SAAS,GAAG,CAAC,CAAW,EAAgB,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,SAAS,CAAC;AAAlF,QAAA,SAAS,aAAyE;AAExF,MAAM,MAAM,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAAvC,QAAA,MAAM,UAAiC;AAE7C,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAe,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAAnG,QAAA,QAAQ,YAA2F;AAEzG,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAgC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,CAAC;AAAzI,QAAA,QAAQ,YAAiI;AAE/I,MAAM,aAAa,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAApG,QAAA,aAAa,iBAAuF;AAE1G,MAAM,UAAU,GAAG,CAAC,CAAW,EAA0C,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,UAAU,CAAC;AAA9G,QAAA,UAAU,cAAoG;AAEpH,MAAM,OAAO,GAAG,CAAU,CAAW,EAAiB,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC;AAAtF,QAAA,OAAO,WAA+E;AAE5F,MAAM,UAAU,GAAG,CAAI,IAAoB,EAAE,CAAW,EAAU,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC;AAArG,QAAA,UAAU,cAA2F;AAE3G,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,MAAiB,EAAW,EAAE,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAAhG,QAAA,IAAI,QAA4F;AAEtG,MAAM,cAAc,GAAG,CAAC,CAAa,EAAE,MAAkB,EAAW,EAAE,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,IAAA,eAAO,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAAjI,QAAA,cAAc,kBAAmH;AAEvI,MAAM,WAAW,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,CAAC;AAAtF,QAAA,WAAW,eAA2E;AAE5F,MAAM,OAAO,GAAG,CAAC,CAAU,EAAc,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC;AAAzE,QAAA,OAAO,WAAkE"}
@@ -1,28 +1,32 @@
1
1
  import { Construct, Constructor } from './Constructor';
2
2
  import { Validatable } from './Validatable';
3
- import { Get, Predicate } from './Get';
3
+ import { Get } from './Get';
4
+ import { Func } from './Func';
4
5
  declare abstract class Try<T = unknown> implements Validatable {
5
6
  is: {
6
- defined: () => Try<T>;
7
- empty: () => Try<T>;
8
- valid: () => Try<T>;
7
+ defined: (prop?: Func<unknown, T> | undefined) => Try<T>;
8
+ empty: (prop?: Func<unknown, T> | undefined) => Try<T>;
9
+ valid: (prop?: Func<unknown, T> | undefined) => Try<T>;
10
+ true: (prop?: Func<unknown, T> | undefined) => Try<T>;
11
+ false: (prop?: Func<unknown, T> | undefined) => Try<T>;
9
12
  not: {
10
- defined: () => Try<T>;
11
- empty: () => Try<T>;
12
- valid: () => Try<T>;
13
+ defined: (prop?: Func<unknown, T> | undefined) => Try<T>;
14
+ empty: (prop?: Func<unknown, T> | undefined) => Try<T>;
15
+ valid: (prop?: Func<unknown, T> | undefined) => Try<T>;
13
16
  };
14
17
  };
15
18
  abstract get value(): T;
16
19
  abstract get error(): Error;
17
20
  abstract get isValid(): boolean;
18
- static of: <T_1>(c: Construct<T_1 | Try<T_1>>, ...args: unknown[]) => Try<T_1>;
19
- abstract map<U>(f: Get<U | Try<U>, T>): Try<U>;
20
- abstract recover(f: Get<T | Try<T>, Error>): Try<T>;
21
- abstract recoverFrom(type: Constructor<Error>, f: Get<T | Try<T>, Error>): Try<T>;
22
- abstract accept(f: Get<void, T>): Try<T>;
23
- abstract filter(predicate: Predicate<T>): Try<T>;
21
+ static of: <T_1>(c: Get<T_1 | Try<T_1>, any>, ...args: unknown[]) => Try<T_1>;
22
+ abstract map<U>(f: Func<U | Try<U>, T>): Try<U>;
23
+ abstract recover(f: Func<T | Try<T>, Error>): Try<T>;
24
+ abstract recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T>;
25
+ abstract accept(f: Func<void, T>): Try<T>;
26
+ abstract filter(predicate: Func<boolean, T>): Try<T>;
27
+ abstract or(value: T): T;
24
28
  abstract orElse(value?: T): T | undefined;
25
29
  abstract orThrow(error: Construct<Error>): T;
26
30
  }
27
- export declare const tryTo: <T>(c: Construct<T | Try<T>>, ...args: unknown[]) => Try<T>;
31
+ export declare const tryTo: <T>(c: Get<T | Try<T>, any>, ...args: unknown[]) => Try<T>;
28
32
  export {};
package/dist/types/Try.js CHANGED
@@ -8,20 +8,22 @@ const Get_1 = require("./Get");
8
8
  class Try {
9
9
  constructor() {
10
10
  this.is = {
11
- defined: () => this.filter(v => (0, Is_1.isDefined)(v)),
12
- empty: () => this.filter(v => (0, Is_1.isEmpty)(v)),
13
- valid: () => this.filter(v => (0, validation_1.validate)(v).isValid),
11
+ defined: (prop) => this.filter(v => (0, Is_1.isDefined)(prop ? prop(v) : v)),
12
+ empty: (prop) => this.filter(v => (0, Is_1.isEmpty)(prop ? prop(v) : v)),
13
+ valid: (prop) => this.filter(v => (0, validation_1.validate)(prop ? prop(v) : v).isValid),
14
+ true: (prop) => this.filter(v => (0, Is_1.isTrue)(prop ? prop(v) : v)),
15
+ false: (prop) => this.filter(v => !(0, Is_1.isTrue)(prop ? prop(v) : v)),
14
16
  not: {
15
- defined: () => this.filter(v => !(0, Is_1.isDefined)(v)),
16
- empty: () => this.filter(v => !(0, Is_1.isEmpty)(v)),
17
- valid: () => this.filter(v => !(0, validation_1.validate)(v).isValid),
17
+ defined: (prop) => this.filter(v => !(0, Is_1.isDefined)(prop ? prop(v) : v)),
18
+ empty: (prop) => this.filter(v => !(0, Is_1.isEmpty)(prop ? prop(v) : v)),
19
+ valid: (prop) => this.filter(v => !(0, validation_1.validate)(prop ? prop(v) : v).isValid),
18
20
  },
19
21
  };
20
22
  }
21
23
  }
22
24
  Try.of = (c, ...args) => {
23
25
  try {
24
- const out = (0, Constructor_1.ofConstruct)(c, ...args);
26
+ const out = (0, Get_1.ofGet)(c, ...args);
25
27
  return new Success(out instanceof Try ? out.value : out);
26
28
  }
27
29
  catch (e) {
@@ -52,17 +54,20 @@ class Success extends Try {
52
54
  }
53
55
  accept(f) {
54
56
  return (0, exports.tryTo)(() => {
55
- (0, Get_1.ofGet)(f, this.value);
57
+ f(this.value);
56
58
  return this;
57
59
  });
58
60
  }
59
61
  filter(predicate) {
60
62
  return (0, exports.tryTo)(() => {
61
- if ((0, Get_1.ofGet)(predicate, this.value))
63
+ if (predicate(this.value))
62
64
  return this;
63
65
  throw new Error(`Applying filter(${predicate.toString()}) failed.`);
64
66
  });
65
67
  }
68
+ or(value) {
69
+ return this.value;
70
+ }
66
71
  orElse(value) {
67
72
  return this.value;
68
73
  }
@@ -98,6 +103,9 @@ class Failure extends Try {
98
103
  filter(predicate) {
99
104
  return this;
100
105
  }
106
+ or(value) {
107
+ return value;
108
+ }
101
109
  orElse(value) {
102
110
  return value;
103
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Try.js","sourceRoot":"","sources":["../../src/types/Try.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Try.js","sourceRoot":"","sources":["../../src/types/Try.ts"],"names":[],"mappings":"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"}
@@ -8,13 +8,10 @@ class Case {
8
8
  this.outcome = outcome;
9
9
  }
10
10
  case(pred, out) {
11
- try {
12
- const res = (0, types_1.ofGet)(pred, this.value);
13
- return res ? new Found(this.value, (0, types_1.ofGet)(out, this.value)) : this;
14
- }
15
- catch {
16
- return this;
17
- }
11
+ return (0, types_1.tryTo)(pred, this.value).is.true()
12
+ .map(() => (0, types_1.ofGet)(out, this.value))
13
+ .map(res => new Found(this.value, res))
14
+ .or(this);
18
15
  }
19
16
  else(alt) {
20
17
  return (0, types_1.ofGet)(alt, this.value);
@@ -1 +1 @@
1
- {"version":3,"file":"Case.js","sourceRoot":"","sources":["../../src/utils/Case.ts"],"names":[],"mappings":";;;AAAA,oCAAiD;AAEjD,MAAM,IAAI;IACR,YAAsB,KAAQ,EAAY,OAAW;QAA/B,UAAK,GAAL,KAAK,CAAG;QAAY,YAAO,GAAP,OAAO,CAAI;IAAG,CAAC;IAEzD,IAAI,CAAC,IAAkB,EAAE,GAAc;QACrC,IAAI;YACF,MAAM,GAAG,GAAG,IAAA,aAAK,EAAa,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAA,aAAK,EAAO,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SACzE;QAAC,MAAM;YACN,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,IAAI,CAAC,GAAc;QACjB,OAAO,IAAA,aAAK,EAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAa,KAAY,SAAQ,IAAU;IACzC,YAAsB,KAAQ,EAAY,OAAU;QAClD,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QADF,UAAK,GAAL,KAAK,CAAG;QAAY,YAAO,GAAP,OAAO,CAAG;IAEpD,CAAC;IAED,IAAI,CAAC,IAAkB,EAAE,GAAc;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAc;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAZD,sBAYC;AAEM,MAAM,MAAM,GAAG,CAAiB,KAAQ,EAAc,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAAnE,QAAA,MAAM,UAA6D"}
1
+ {"version":3,"file":"Case.js","sourceRoot":"","sources":["../../src/utils/Case.ts"],"names":[],"mappings":";;;AAAA,oCAAwD;AAExD,MAAM,IAAI;IACR,YAAsB,KAAQ,EAAY,OAAW;QAA/B,UAAK,GAAL,KAAK,CAAG;QAAY,YAAO,GAAP,OAAO,CAAI;IAAG,CAAC;IAEzD,IAAI,CAAC,IAAkB,EAAE,GAAc;QACrC,OAAO,IAAA,aAAK,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;aACrC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAA,aAAK,EAAO,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aACvC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAe,CAAC;aACpD,EAAE,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAc;QACjB,OAAO,IAAA,aAAK,EAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAa,KAAY,SAAQ,IAAU;IACzC,YAAsB,KAAQ,EAAY,OAAU;QAClD,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QADF,UAAK,GAAL,KAAK,CAAG;QAAY,YAAO,GAAP,OAAO,CAAG;IAEpD,CAAC;IAED,IAAI,CAAC,IAAkB,EAAE,GAAc;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAc;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAZD,sBAYC;AAEM,MAAM,MAAM,GAAG,CAAiB,KAAQ,EAAc,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAAnE,QAAA,MAAM,UAA6D"}
@@ -9,14 +9,12 @@ exports.asResults = asResults;
9
9
  const validators = (subject) => (0, types_1.meta)(subject)
10
10
  .keys('constraint')
11
11
  .reduce((list, vs) => list.add(vs), (0, types_1.toList)());
12
- const runValidator = (v, subject) => {
13
- v.actual = subject[v.property];
14
- const res = v.constraint(v.actual);
15
- return (0, types_1.isResults)(res) ? res : !res ? (0, exports.asResults)(subject, v.text, v) : (0, types_1.toResults)();
16
- };
17
- const constraints = (subject) => validators(subject)
18
- .mapDefined(v => runValidator(v, subject))
19
- .reduce((rs, r) => rs.add(...r.results), (0, types_1.toResults)());
12
+ const runValidator = (v, subject) => (0, types_1.tryTo)(() => subject[v.property])
13
+ .map(actual => v.constraint(actual))
14
+ .map(res => (0, types_1.isResults)(res) ? res : !res ? (0, exports.asResults)(subject, v.text, v) : (0, types_1.toResults)()).value;
15
+ const constraints = (subject) => (0, types_1.tryTo)(() => validators(subject))
16
+ .map(vs => vs.mapDefined(v => runValidator(v, subject)))
17
+ .map(res => res.reduce((rs, r) => rs.add(...r.results), (0, types_1.toResults)())).value;
20
18
  const validate = (subject) => (0, utils_1.choose)(subject)
21
19
  .case(s => !(0, types_1.isDefined)(s), s => (0, exports.asResults)(s, 'Subject is not defined.'))
22
20
  .case(s => (0, types_1.isEnum)(s), (e) => (e.isValid ? (0, types_1.toResults)() : (0, exports.asResults)(e, 'This is not a valid {type}.')))
@@ -1 +1 @@
1
- {"version":3,"file":"Validate.js","sourceRoot":"","sources":["../../src/validation/Validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Validate.js","sourceRoot":"","sources":["../../src/validation/Validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "7.34.12",
3
+ "version": "7.34.19",
4
4
  "description": "Straightforward library for building domain-driven microservice architectures",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "devDependencies": {
34
- "@thisisagile/easy-test": "7.34.12",
34
+ "@thisisagile/easy-test": "7.34.19",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.5",
37
37
  "@types/validator": "^13.6.3"
package/src/types/Is.ts CHANGED
@@ -12,6 +12,8 @@ export const isIsoDateString = (o?: unknown): o is string => isString(o) && /^\d
12
12
 
13
13
  export const isBoolean = (o?: unknown): o is boolean => isDefined(o) && typeof o === 'boolean';
14
14
 
15
+ export const isTrue = (o?: unknown): boolean => !!o;
16
+
15
17
  export const isNumber = (o?: unknown): o is number => isDefined(o) && typeof o === 'number' && !Number.isNaN(o);
16
18
 
17
19
  export const isObject = (o?: unknown): o is Record<string, unknown> => o != null && (typeof o === 'object' || typeof o === 'function') && !isArray(o);
package/src/types/Try.ts CHANGED
@@ -1,19 +1,22 @@
1
- import { isDefined, isEmpty } from './Is';
1
+ import { isDefined, isEmpty, isTrue } from './Is';
2
2
  import { validate } from '../validation';
3
3
  import { Construct, Constructor, ofConstruct } from './Constructor';
4
4
  import { Validatable } from './Validatable';
5
- import { Get, ofGet, Predicate } from './Get';
5
+ import { Get, ofGet } from './Get';
6
+ import { Func } from './Func';
6
7
 
7
8
  abstract class Try<T = unknown> implements Validatable {
8
9
 
9
10
  is = {
10
- defined: (): Try<T> => this.filter(v => isDefined(v)),
11
- empty: (): Try<T> => this.filter(v => isEmpty(v)),
12
- valid: (): Try<T> => this.filter(v => validate(v).isValid),
11
+ defined: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isDefined(prop ? prop(v) : v)),
12
+ empty: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isEmpty(prop ? prop(v) : v)),
13
+ valid: (prop?: Func<unknown, T>): Try<T> => this.filter(v => validate(prop ? prop(v) : v).isValid),
14
+ true: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isTrue(prop ? prop(v) : v)),
15
+ false: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isTrue(prop ? prop(v) : v)),
13
16
  not: {
14
- defined: (): Try<T> => this.filter(v => !isDefined(v)),
15
- empty: (): Try<T> => this.filter(v => !isEmpty(v)),
16
- valid: (): Try<T> => this.filter(v => !validate(v).isValid),
17
+ defined: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isDefined(prop ? prop(v) : v)),
18
+ empty: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isEmpty(prop ? prop(v) : v)),
19
+ valid: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !validate(prop ? prop(v) : v).isValid),
17
20
  },
18
21
  };
19
22
 
@@ -23,24 +26,26 @@ abstract class Try<T = unknown> implements Validatable {
23
26
 
24
27
  abstract get isValid(): boolean;
25
28
 
26
- static of = <T>(c: Construct<T | Try<T>>, ...args: unknown[]): Try<T> => {
29
+ static of = <T>(c: Get<T | Try<T>>, ...args: unknown[]): Try<T> => {
27
30
  try {
28
- const out = ofConstruct(c, ...args);
31
+ const out = ofGet(c, ...args);
29
32
  return new Success(out instanceof Try ? out.value : out);
30
33
  } catch (e) {
31
34
  return new Failure(e as Error);
32
35
  }
33
36
  };
34
37
 
35
- abstract map<U>(f: Get<U | Try<U>, T>): Try<U>;
38
+ abstract map<U>(f: Func<U | Try<U>, T>): Try<U>;
36
39
 
37
- abstract recover(f: Get<T | Try<T>, Error>): Try<T>;
40
+ abstract recover(f: Func<T | Try<T>, Error>): Try<T>;
38
41
 
39
- abstract recoverFrom(type: Constructor<Error>, f: Get<T | Try<T>, Error>): Try<T>;
42
+ abstract recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T>;
40
43
 
41
- abstract accept(f: Get<void, T>): Try<T>;
44
+ abstract accept(f: Func<void, T>): Try<T>;
42
45
 
43
- abstract filter(predicate: Predicate<T>): Try<T>;
46
+ abstract filter(predicate: Func<boolean, T>): Try<T>;
47
+
48
+ abstract or(value: T): T;
44
49
 
45
50
  abstract orElse(value?: T): T | undefined;
46
51
 
@@ -61,32 +66,36 @@ class Success<T> extends Try<T> {
61
66
  return true;
62
67
  };
63
68
 
64
- map<U>(f: Get<U | Try<U>, T>): Try<U> {
69
+ map<U>(f: Func<U | Try<U>, T>): Try<U> {
65
70
  return tryTo<U>(f, this.value);
66
71
  };
67
72
 
68
- recover(f: Get<T | Try<T>, Error>): Try<T> {
73
+ recover(f: Func<T | Try<T>, Error>): Try<T> {
69
74
  return this;
70
75
  }
71
76
 
72
- recoverFrom(type: Constructor<Error>, f: Get<T | Try<T>, Error>): Try<T> {
77
+ recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {
73
78
  return this;
74
79
  }
75
80
 
76
- accept(f: Get<void, T>): Try<T> {
81
+ accept(f: Func<void, T>): Try<T> {
77
82
  return tryTo(() => {
78
- ofGet(f, this.value);
83
+ f(this.value);
79
84
  return this;
80
85
  });
81
86
  }
82
87
 
83
- filter(predicate: Predicate<T>): Try<T> {
88
+ filter(predicate: Func<boolean, T>): Try<T> {
84
89
  return tryTo(() => {
85
- if (ofGet(predicate, this.value)) return this;
90
+ if (predicate(this.value)) return this;
86
91
  throw new Error(`Applying filter(${predicate.toString()}) failed.`);
87
92
  });
88
93
  }
89
94
 
95
+ or(value: T): T {
96
+ return this.value;
97
+ }
98
+
90
99
  orElse(value?: T): T | undefined {
91
100
  return this.value;
92
101
  }
@@ -109,26 +118,30 @@ class Failure<T> extends Try<T> {
109
118
  return false;
110
119
  };
111
120
 
112
- map<U>(f: Get<U | Try<U>, T>): Try<U> {
121
+ map<U>(f: Func<U | Try<U>, T>): Try<U> {
113
122
  return new Failure<U>(this.error);
114
123
  };
115
124
 
116
- recover<U>(f: Get<U | Try<U>, Error>): Try<U> {
125
+ recover<U>(f: Func<U | Try<U>, Error>): Try<U> {
117
126
  return tryTo<U>(f, this.error);
118
127
  }
119
128
 
120
- recoverFrom<U>(type: Constructor<Error>, f: Get<T | Try<T>, Error>): Try<T> {
129
+ recoverFrom<U>(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {
121
130
  return tryTo(() => this.error instanceof type ? this.recover(f) : this);
122
131
  }
123
132
 
124
- accept(f: Get<void, T>): Try<T> {
133
+ accept(f: Func<void, T>): Try<T> {
125
134
  return this;
126
135
  }
127
136
 
128
- filter(predicate: Predicate<T>): Try<T> {
137
+ filter(predicate: Func<boolean, T>): Try<T> {
129
138
  return this;
130
139
  }
131
140
 
141
+ or(value: T): T {
142
+ return value;
143
+ }
144
+
132
145
  orElse(value?: T): T | undefined {
133
146
  return value;
134
147
  }
@@ -138,4 +151,4 @@ class Failure<T> extends Try<T> {
138
151
  }
139
152
  }
140
153
 
141
- export const tryTo = <T>(c: Construct<T | Try<T>>, ...args: unknown[]) => Try.of<T>(c, ...args);
154
+ export const tryTo = <T>(c: Get<T | Try<T>>, ...args: unknown[]) => Try.of<T>(c, ...args);
package/src/utils/Case.ts CHANGED
@@ -1,15 +1,13 @@
1
- import { Get, ofGet, Predicate } from '../types';
1
+ import { Get, ofGet, Predicate, tryTo } from '../types';
2
2
 
3
3
  class Case<T, V = unknown> {
4
4
  constructor(protected value: V, protected outcome?: T) {}
5
5
 
6
6
  case(pred: Predicate<V>, out: Get<T, V>): Case<T, V> {
7
- try {
8
- const res = ofGet<boolean, V>(pred, this.value);
9
- return res ? new Found(this.value, ofGet<T, V>(out, this.value)) : this;
10
- } catch {
11
- return this;
12
- }
7
+ return tryTo(pred, this.value).is.true()
8
+ .map(() => ofGet<T, V>(out, this.value))
9
+ .map(res => new Found(this.value, res) as Case<T, V>)
10
+ .or(this);
13
11
  }
14
12
 
15
13
  else(alt: Get<T, V>): T {
@@ -15,7 +15,7 @@ import {
15
15
  toList,
16
16
  toName,
17
17
  toResult,
18
- toResults,
18
+ toResults, tryTo,
19
19
  Value,
20
20
  } from '../types';
21
21
  import { Constraint } from './Contraints';
@@ -32,16 +32,15 @@ const validators = (subject: unknown): List<Validator> =>
32
32
  .keys<List<Validator>>('constraint')
33
33
  .reduce((list, vs) => list.add(vs), toList<Validator>());
34
34
 
35
- const runValidator = (v: Validator, subject?: unknown): Results => {
36
- v.actual = (subject as any)[v.property];
37
- const res = v.constraint(v.actual);
38
- return isResults(res) ? res : !res ? asResults(subject, v.text, v) : toResults();
39
- };
35
+ const runValidator = (v: Validator, subject?: unknown): Results =>
36
+ tryTo(() => (subject as any)[v.property])
37
+ .map(actual => v.constraint(actual))
38
+ .map(res => isResults(res) ? res : !res ? asResults(subject, v.text, v) : toResults()).value;
40
39
 
41
40
  const constraints = (subject?: unknown): Results =>
42
- validators(subject)
43
- .mapDefined(v => runValidator(v, subject))
44
- .reduce((rs, r) => rs.add(...r.results), toResults());
41
+ tryTo(() => validators(subject))
42
+ .map(vs => vs.mapDefined(v => runValidator(v, subject)))
43
+ .map(res => res.reduce((rs, r) => rs.add(...r.results), toResults())).value;
45
44
 
46
45
  export const validate = (subject?: unknown): Results =>
47
46
  choose<Results, any>(subject)