@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 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: Id = this.state.imdbID;
70
- @required() readonly title: string = this.state.Title;
71
- @required() readonly year: number = this.state.Year;
72
- readonly poster: string = this.state.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", String)
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", String)
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", String)
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", enums_1.Country)
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,GAAW,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACnC,gBAAW,GAAW,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QACzD,cAAS,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAChC,eAAU,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B,YAAO,GAAY,eAAO,CAAC,IAAI,CAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAWpF,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;;uCAA6C;AAC5C;IAAX,IAAA,qBAAQ,GAAE;;4CAAuD;AAEzD;IAAR,IAAA,kBAAK,GAAE;;2CAA6E;AACzE;IAAX,IAAA,qBAAQ,GAAE;;qCAAyC;AACxC;IAAX,IAAA,qBAAQ,GAAE;8BAAmB,eAAO;wCAA6C;AANpF,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"}
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"}
@@ -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>;
@@ -34,6 +34,9 @@ class Found extends Case {
34
34
  case(pred, out) {
35
35
  return this;
36
36
  }
37
+ type(pred, out) {
38
+ return this;
39
+ }
37
40
  else(alt) {
38
41
  return this.outcome;
39
42
  }
@@ -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;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;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
- .case(s => !(0, types_1.isDefined)(s), s => (0, exports.asResults)(s, 'Subject is not defined.'))
21
- .case(s => (0, types_1.isEnum)(s), (e) => (e.isValid ? (0, types_1.toResults)() : (0, exports.asResults)(e, 'This is not a valid {type}.')))
22
- .case(s => (0, types_1.isArray)(s), (e) => e.map(i => (0, exports.validate)(i)).reduce((rs, r) => rs.add(...r.results), (0, types_1.toResults)()))
23
- .case(s => (0, types_1.isValue)(s), (v) => (v.isValid ? (0, types_1.toResults)() : (0, exports.asResults)(v, 'This is not a valid {type}.')))
24
- .case(s => (0, types_1.isValidatable)(s), v => constraints(v))
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":"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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": "8.41.8",
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.8",
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: string = this.state.street;
9
- @required() readonly houseNumber: string = this.state.houseNumber;
10
- readonly extension: string = this.state.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: string = this.state.city;
13
- @required() readonly country: Country = Country.byId<Country>(this.state.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
@@ -33,6 +33,10 @@ export class Found<T, V> extends Case<T, V> {
33
33
  return this;
34
34
  }
35
35
 
36
+ type<U>(pred: (v: unknown) => v is U, out: Get<T, U>): Case<T, V> {
37
+ return this;
38
+ }
39
+
36
40
  else(alt: Get<T, V>): T {
37
41
  return this.outcome;
38
42
  }
@@ -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
- .case(
51
- s => !isDefined(s),
52
- s => asResults(s, 'Subject is not defined.')
53
- )
54
- .case(
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();