@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.
- package/dist/types/Is.d.ts +1 -0
- package/dist/types/Is.js +3 -1
- package/dist/types/Is.js.map +1 -1
- package/dist/types/Try.d.ts +18 -14
- package/dist/types/Try.js +17 -9
- package/dist/types/Try.js.map +1 -1
- package/dist/utils/Case.js +4 -7
- package/dist/utils/Case.js.map +1 -1
- package/dist/validation/Validate.js +6 -8
- package/dist/validation/Validate.js.map +1 -1
- package/package.json +2 -2
- package/src/types/Is.ts +2 -0
- package/src/types/Try.ts +41 -28
- package/src/utils/Case.ts +5 -7
- package/src/validation/Validate.ts +8 -9
package/dist/types/Is.d.ts
CHANGED
|
@@ -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);
|
package/dist/types/Is.js.map
CHANGED
|
@@ -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":"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"}
|
package/dist/types/Try.d.ts
CHANGED
|
@@ -1,28 +1,32 @@
|
|
|
1
1
|
import { Construct, Constructor } from './Constructor';
|
|
2
2
|
import { Validatable } from './Validatable';
|
|
3
|
-
import { 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:
|
|
19
|
-
abstract map<U>(f:
|
|
20
|
-
abstract recover(f:
|
|
21
|
-
abstract recoverFrom(type: Constructor<Error>, f:
|
|
22
|
-
abstract accept(f:
|
|
23
|
-
abstract filter(predicate:
|
|
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:
|
|
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,
|
|
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
|
-
(
|
|
57
|
+
f(this.value);
|
|
56
58
|
return this;
|
|
57
59
|
});
|
|
58
60
|
}
|
|
59
61
|
filter(predicate) {
|
|
60
62
|
return (0, exports.tryTo)(() => {
|
|
61
|
-
if ((
|
|
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
|
}
|
package/dist/types/Try.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Try.js","sourceRoot":"","sources":["../../src/types/Try.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Try.js","sourceRoot":"","sources":["../../src/types/Try.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/Case.js
CHANGED
|
@@ -8,13 +8,10 @@ class Case {
|
|
|
8
8
|
this.outcome = outcome;
|
|
9
9
|
}
|
|
10
10
|
case(pred, out) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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);
|
package/dist/utils/Case.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Case.js","sourceRoot":"","sources":["../../src/utils/Case.ts"],"names":[],"mappings":";;;AAAA,
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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":";;;AAAA,oCAmBkB;AAElB,iCAA8B;AAC9B,oCAAkC;AAI3B,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,QAAc,EAAE,UAA2B,EAAE,EAAW,EAAE,CACpG,IAAA,iBAAS,EAAC,IAAA,gBAAQ,EAAC,IAAA,YAAI,EAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AADlE,QAAA,SAAS,aACyD;AAE/E,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAmB,EAAE,CACvD,IAAA,YAAI,EAAC,OAAO,CAAC;KACV,IAAI,CAAkB,YAAY,CAAC;KACnC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAA,cAAM,GAAa,CAAC,CAAC;AAE7D,MAAM,YAAY,GAAG,CAAC,CAAY,EAAE,OAAiB,EAAW,EAAE
|
|
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.
|
|
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.
|
|
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
|
|
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:
|
|
29
|
+
static of = <T>(c: Get<T | Try<T>>, ...args: unknown[]): Try<T> => {
|
|
27
30
|
try {
|
|
28
|
-
const out =
|
|
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:
|
|
38
|
+
abstract map<U>(f: Func<U | Try<U>, T>): Try<U>;
|
|
36
39
|
|
|
37
|
-
abstract recover(f:
|
|
40
|
+
abstract recover(f: Func<T | Try<T>, Error>): Try<T>;
|
|
38
41
|
|
|
39
|
-
abstract recoverFrom(type: Constructor<Error>, f:
|
|
42
|
+
abstract recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T>;
|
|
40
43
|
|
|
41
|
-
abstract accept(f:
|
|
44
|
+
abstract accept(f: Func<void, T>): Try<T>;
|
|
42
45
|
|
|
43
|
-
abstract filter(predicate:
|
|
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:
|
|
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:
|
|
73
|
+
recover(f: Func<T | Try<T>, Error>): Try<T> {
|
|
69
74
|
return this;
|
|
70
75
|
}
|
|
71
76
|
|
|
72
|
-
recoverFrom(type: Constructor<Error>, f:
|
|
77
|
+
recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {
|
|
73
78
|
return this;
|
|
74
79
|
}
|
|
75
80
|
|
|
76
|
-
accept(f:
|
|
81
|
+
accept(f: Func<void, T>): Try<T> {
|
|
77
82
|
return tryTo(() => {
|
|
78
|
-
|
|
83
|
+
f(this.value);
|
|
79
84
|
return this;
|
|
80
85
|
});
|
|
81
86
|
}
|
|
82
87
|
|
|
83
|
-
filter(predicate:
|
|
88
|
+
filter(predicate: Func<boolean, T>): Try<T> {
|
|
84
89
|
return tryTo(() => {
|
|
85
|
-
if (
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
133
|
+
accept(f: Func<void, T>): Try<T> {
|
|
125
134
|
return this;
|
|
126
135
|
}
|
|
127
136
|
|
|
128
|
-
filter(predicate:
|
|
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:
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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)
|