@thisisagile/easy 8.41.8 → 8.41.12
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/README.md +4 -4
- package/dist/domain/structs/Address.js +4 -4
- package/dist/domain/structs/Address.js.map +1 -1
- package/dist/utils/Case.d.ts +1 -0
- package/dist/utils/Case.js +3 -0
- package/dist/utils/Case.js.map +1 -1
- package/dist/validation/Validate.js +5 -5
- package/dist/validation/Validate.js.map +1 -1
- package/package.json +2 -2
- package/src/domain/structs/Address.ts +5 -5
- package/src/utils/Case.ts +4 -0
- package/src/validation/Validate.ts +6 -23
package/README.md
CHANGED
|
@@ -66,10 +66,10 @@ All classes that inherit from `Record` or `Entity` will have an internal object
|
|
|
66
66
|
An example of an entity is the `Movie` class below. Here the content of the object comes from an external service (called OMDb), and is mapped to the actual properties of the `Movie` class.
|
|
67
67
|
|
|
68
68
|
export class Movie extends Entity {
|
|
69
|
-
@required() readonly id
|
|
70
|
-
@required() readonly title
|
|
71
|
-
@required() readonly year
|
|
72
|
-
readonly poster
|
|
69
|
+
@required() readonly id = this.state.imdbID as Id;
|
|
70
|
+
@required() readonly title = this.state.Title as string;
|
|
71
|
+
@required() readonly year = this.state.Year as number;
|
|
72
|
+
readonly poster = this.state.Poster as string;
|
|
73
73
|
|
|
74
74
|
update = (add?: Json): Movie => new Movie(this.toJSON(add));
|
|
75
75
|
}
|
|
@@ -37,11 +37,11 @@ class Address extends Struct_1.Struct {
|
|
|
37
37
|
}
|
|
38
38
|
__decorate([
|
|
39
39
|
(0, validation_1.required)(),
|
|
40
|
-
__metadata("design:type",
|
|
40
|
+
__metadata("design:type", Object)
|
|
41
41
|
], Address.prototype, "street", void 0);
|
|
42
42
|
__decorate([
|
|
43
43
|
(0, validation_1.required)(),
|
|
44
|
-
__metadata("design:type",
|
|
44
|
+
__metadata("design:type", Object)
|
|
45
45
|
], Address.prototype, "houseNumber", void 0);
|
|
46
46
|
__decorate([
|
|
47
47
|
(0, validation_1.valid)(),
|
|
@@ -49,11 +49,11 @@ __decorate([
|
|
|
49
49
|
], Address.prototype, "postalCode", void 0);
|
|
50
50
|
__decorate([
|
|
51
51
|
(0, validation_1.required)(),
|
|
52
|
-
__metadata("design:type",
|
|
52
|
+
__metadata("design:type", Object)
|
|
53
53
|
], Address.prototype, "city", void 0);
|
|
54
54
|
__decorate([
|
|
55
55
|
(0, validation_1.required)(),
|
|
56
|
-
__metadata("design:type",
|
|
56
|
+
__metadata("design:type", Object)
|
|
57
57
|
], Address.prototype, "country", void 0);
|
|
58
58
|
exports.Address = Address;
|
|
59
59
|
const isAddress = (a) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Address.js","sourceRoot":"","sources":["../../../src/domain/structs/Address.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAwD;AACxD,sCAAmC;AACnC,iDAAmD;AACnD,oCAAmC;AACnC,sCAAuC;AAEvC,MAAa,OAAQ,SAAQ,eAAM;IAAnC;;QACuB,WAAM,
|
|
1
|
+
{"version":3,"file":"Address.js","sourceRoot":"","sources":["../../../src/domain/structs/Address.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAwD;AACxD,sCAAmC;AACnC,iDAAmD;AACnD,oCAAmC;AACnC,sCAAuC;AAEvC,MAAa,OAAQ,SAAQ,eAAM;IAAnC;;QACuB,WAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAgB,CAAC;QACrC,gBAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAqB,CAAC;QAC3D,cAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAmB,CAAC;QAClC,eAAU,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,SAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC;QACjC,YAAO,GAAG,eAAO,CAAC,IAAI,CAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAW3E,CAAC;IATC,QAAQ;QACN,OAAO,IAAA,YAAI,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;aACzB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;aAC1B,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;aACxB,GAAG,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC;aAC3E,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;aACnB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC;aAC5B,QAAQ,EAAE,CAAC;IAChB,CAAC;CACF;AAhBa;IAAX,IAAA,qBAAQ,GAAE;;uCAA+C;AAC9C;IAAX,IAAA,qBAAQ,GAAE;;4CAAyD;AAE3D;IAAR,IAAA,kBAAK,GAAE;;2CAA6E;AACzE;IAAX,IAAA,qBAAQ,GAAE;;qCAA2C;AAC1C;IAAX,IAAA,qBAAQ,GAAE;;wCAA8D;AAN3E,0BAiBC;AAEM,MAAM,SAAS,GAAG,CAAC,CAAW,EAAgB,EAAE;IACrD,OAAO,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC;AAC7C,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB"}
|
package/dist/utils/Case.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export declare class Found<T, V> extends Case<T, V> {
|
|
|
12
12
|
protected outcome: T;
|
|
13
13
|
constructor(value: V, outcome: T);
|
|
14
14
|
case(pred: Predicate<V>, out: Get<T, V>): this;
|
|
15
|
+
type<U>(pred: (v: unknown) => v is U, out: Get<T, U>): Case<T, V>;
|
|
15
16
|
else(alt: Get<T, V>): T;
|
|
16
17
|
}
|
|
17
18
|
export declare const choose: <T, V = unknown>(value: V) => Case<T, V>;
|
package/dist/utils/Case.js
CHANGED
package/dist/utils/Case.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;aAC3B,EAAE,CAAC,IAAI,EAAE;aACT,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,CAAI,IAA4B,EAAE,GAAc;QAClD,OAAO,IAAA,aAAK,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;aAC3B,EAAE,CAAC,IAAI,EAAE;aACT,GAAG,CAAC,GAAG,EAAE,CAAC,IAAA,aAAK,EAAO,GAAG,EAAE,IAAI,CAAC,KAAqB,CAAC,CAAC;aACvD,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;
|
|
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;aAC3B,EAAE,CAAC,IAAI,EAAE;aACT,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,CAAI,IAA4B,EAAE,GAAc;QAClD,OAAO,IAAA,aAAK,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;aAC3B,EAAE,CAAC,IAAI,EAAE;aACT,GAAG,CAAC,GAAG,EAAE,CAAC,IAAA,aAAK,EAAO,GAAG,EAAE,IAAI,CAAC,KAAqB,CAAC,CAAC;aACvD,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,CAAI,IAA4B,EAAE,GAAc;QACnD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC,GAAc;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAhBD,sBAgBC;AAEM,MAAM,MAAM,GAAG,CAAiB,KAAQ,EAAc,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAAnE,QAAA,MAAM,UAA6D"}
|
|
@@ -17,11 +17,11 @@ const constraints = (subject) => (0, types_1.tryTo)(() => validators(subject))
|
|
|
17
17
|
.map(vs => vs.mapDefined(v => runValidator(v, subject)))
|
|
18
18
|
.map(res => res.reduce((rs, r) => rs.add(...r.results), (0, types_1.toResults)())).value;
|
|
19
19
|
const validate = (subject) => (0, utils_1.choose)(subject)
|
|
20
|
-
.
|
|
21
|
-
.
|
|
22
|
-
.
|
|
23
|
-
.
|
|
24
|
-
.
|
|
20
|
+
.type(types_1.isUndefined, u => (0, exports.asResults)(u, 'Subject is not defined.'))
|
|
21
|
+
.type(types_1.isEnum, e => (e.isValid ? (0, types_1.toResults)() : (0, exports.asResults)(e, 'This is not a valid {type}.')))
|
|
22
|
+
.type(types_1.isValue, v => (v.isValid ? (0, types_1.toResults)() : (0, exports.asResults)(v, 'This is not a valid {type}.')))
|
|
23
|
+
.type(types_1.isArray, a => a.map(i => (0, exports.validate)(i)).reduce((rs, r) => rs.add(...r.results), (0, types_1.toResults)()))
|
|
24
|
+
.type(types_1.isValidatable, v => constraints(v))
|
|
25
25
|
.else((0, types_1.toResults)());
|
|
26
26
|
exports.validate = validate;
|
|
27
27
|
const validateReject = (subject) => (0, When_1.when)(subject).not.isValid.reject();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validate.js","sourceRoot":"","sources":["../../src/validation/Validate.ts"],"names":[],"mappings":";;;AAAA,
|
|
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": "8.41.
|
|
3
|
+
"version": "8.41.12",
|
|
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": "8.41.
|
|
34
|
+
"@thisisagile/easy-test": "8.41.12",
|
|
35
35
|
"@types/form-urlencoded": "^4.4.0",
|
|
36
36
|
"@types/jsonwebtoken": "^8.5.8",
|
|
37
37
|
"@types/validator": "^13.7.1"
|
|
@@ -5,12 +5,12 @@ import { Country } from '../enums';
|
|
|
5
5
|
import { postalCode } from '../values';
|
|
6
6
|
|
|
7
7
|
export class Address extends Struct {
|
|
8
|
-
@required() readonly street
|
|
9
|
-
@required() readonly houseNumber
|
|
10
|
-
readonly extension
|
|
8
|
+
@required() readonly street = this.state.street as string;
|
|
9
|
+
@required() readonly houseNumber = this.state.houseNumber as string;
|
|
10
|
+
readonly extension = this.state.extension as string;
|
|
11
11
|
@valid() readonly postalCode = postalCode(this.state.postalCode, this.state.country);
|
|
12
|
-
@required() readonly city
|
|
13
|
-
@required() readonly country
|
|
12
|
+
@required() readonly city = this.state.city as string;
|
|
13
|
+
@required() readonly country = Country.byId<Country>(this.state.country);
|
|
14
14
|
|
|
15
15
|
toString(): string {
|
|
16
16
|
return text(this.street, '')
|
package/src/utils/Case.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
asString,
|
|
3
|
-
Enum,
|
|
4
3
|
isArray,
|
|
5
|
-
isDefined,
|
|
6
4
|
isEnum,
|
|
7
5
|
isResults,
|
|
6
|
+
isUndefined,
|
|
8
7
|
isValidatable,
|
|
9
8
|
isValue,
|
|
10
9
|
List,
|
|
@@ -18,7 +17,6 @@ import {
|
|
|
18
17
|
toResult,
|
|
19
18
|
toResults,
|
|
20
19
|
tryTo,
|
|
21
|
-
Value,
|
|
22
20
|
} from '../types';
|
|
23
21
|
import { Constraint } from './Contraints';
|
|
24
22
|
import { when } from './When';
|
|
@@ -47,26 +45,11 @@ const constraints = (subject?: unknown): Results =>
|
|
|
47
45
|
|
|
48
46
|
export const validate = (subject?: unknown): Results =>
|
|
49
47
|
choose<Results, any>(subject)
|
|
50
|
-
.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
)
|
|
54
|
-
.
|
|
55
|
-
s => isEnum(s),
|
|
56
|
-
(e: Enum) => (e.isValid ? toResults() : asResults(e, 'This is not a valid {type}.'))
|
|
57
|
-
)
|
|
58
|
-
.case(
|
|
59
|
-
s => isArray(s),
|
|
60
|
-
(e: []) => e.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults())
|
|
61
|
-
)
|
|
62
|
-
.case(
|
|
63
|
-
s => isValue(s),
|
|
64
|
-
(v: Value) => (v.isValid ? toResults() : asResults(v, 'This is not a valid {type}.'))
|
|
65
|
-
)
|
|
66
|
-
.case(
|
|
67
|
-
s => isValidatable(s),
|
|
68
|
-
v => constraints(v)
|
|
69
|
-
)
|
|
48
|
+
.type(isUndefined, u => asResults(u, 'Subject is not defined.'))
|
|
49
|
+
.type(isEnum, e => (e.isValid ? toResults() : asResults(e, 'This is not a valid {type}.')))
|
|
50
|
+
.type(isValue, v => (v.isValid ? toResults() : asResults(v, 'This is not a valid {type}.')))
|
|
51
|
+
.type(isArray, a => a.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults()))
|
|
52
|
+
.type(isValidatable, v => constraints(v))
|
|
70
53
|
.else(toResults());
|
|
71
54
|
|
|
72
55
|
export const validateReject = <T>(subject: T): Promise<T> => when(subject).not.isValid.reject();
|