@thisisagile/easy 8.41.8 → 8.41.10

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.
@@ -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":";;;AAAA,oCAqBkB;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,CAChE,IAAA,aAAK,EAAC,GAAG,EAAE,CAAE,OAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;KACtC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;KAC7C,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAA,iBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAS,GAAE,CAAC,CAAC;KAClH,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAS,EAAC,OAAO,EAAE,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAEzD,MAAM,WAAW,GAAG,CAAC,OAAiB,EAAW,EAAE,CACjD,IAAA,aAAK,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KAC7B,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;KACvD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,IAAA,iBAAS,GAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAEzE,MAAM,QAAQ,GAAG,CAAC,OAAiB,EAAW,EAAE,CACrD,IAAA,cAAM,EAAe,OAAO,CAAC;KAC1B,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,EAClB,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,EAAE,yBAAyB,CAAC,CAC7C;KACA,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,EACd,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,iBAAS,GAAE,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC,CACrF;KACA,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,EACf,CAAC,CAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,IAAA,iBAAS,GAAE,CAAC,CACxF;KACA,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,EACf,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,iBAAS,GAAE,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC,CACtF;KACA,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,IAAA,qBAAa,EAAC,CAAC,CAAC,EACrB,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CACpB;KACA,IAAI,CAAC,IAAA,iBAAS,GAAE,CAAC,CAAC;AAtBV,QAAA,QAAQ,YAsBE;AAEhB,MAAM,cAAc,GAAG,CAAI,OAAU,EAAc,EAAE,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAAnF,QAAA,cAAc,kBAAqE"}
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.10",
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.10",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.8",
37
37
  "@types/validator": "^13.7.1"
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();