@thisisagile/easy 11.3.17 → 11.5.0

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.
@@ -6,14 +6,22 @@ declare class CaseBuilder<V> {
6
6
  type<T, U = unknown>(guard: (u: unknown) => u is U, out: Func<T, U>): Case<T, V>;
7
7
  is: {
8
8
  defined: <T>(prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
9
+ empty: <T_1>(prop: Func<unknown, V>, out: Func<T_1, V>) => Case<T_1, V>;
10
+ valid: <T_2>(prop: Func<unknown, V>, out: Func<T_2, V>) => Case<T_2, V>;
9
11
  not: {
10
- defined: <T_1>(prop: Func<unknown, V>, out: Func<T_1, V>) => Case<T_1, V>;
12
+ defined: <T_3>(prop: Func<unknown, V>, out: Func<T_3, V>) => Case<T_3, V>;
13
+ empty: <T_4>(prop: Func<unknown, V>, out: Func<T_4, V>) => Case<T_4, V>;
14
+ valid: <T_5>(prop: Func<unknown, V>, out: Func<T_5, V>) => Case<T_5, V>;
11
15
  };
12
16
  };
13
17
  if: {
14
18
  defined: <T>(prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
19
+ empty: <T_1>(prop: Func<unknown, V>, out: Func<T_1, V>) => Case<T_1, V>;
20
+ valid: <T_2>(prop: Func<unknown, V>, out: Func<T_2, V>) => Case<T_2, V>;
15
21
  not: {
16
- defined: <T_1>(prop: Func<unknown, V>, out: Func<T_1, V>) => Case<T_1, V>;
22
+ defined: <T_3>(prop: Func<unknown, V>, out: Func<T_3, V>) => Case<T_3, V>;
23
+ empty: <T_4>(prop: Func<unknown, V>, out: Func<T_4, V>) => Case<T_4, V>;
24
+ valid: <T_5>(prop: Func<unknown, V>, out: Func<T_5, V>) => Case<T_5, V>;
17
25
  };
18
26
  };
19
27
  }
@@ -25,14 +33,22 @@ declare class Case<T, V = unknown> {
25
33
  type<U>(guard: (u: unknown) => u is U, out: Func<T, U>): Case<T, V>;
26
34
  is: {
27
35
  defined: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
36
+ empty: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
37
+ valid: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
28
38
  not: {
29
39
  defined: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
40
+ empty: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
41
+ valid: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
30
42
  };
31
43
  };
32
44
  if: {
33
45
  defined: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
46
+ empty: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
47
+ valid: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
34
48
  not: {
35
49
  defined: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
50
+ empty: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
51
+ valid: (prop: Func<unknown, V>, out: Func<T, V>) => Case<T, V>;
36
52
  };
37
53
  };
38
54
  else(alt: Get<T, V>): T;
@@ -2,13 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.choose = void 0;
4
4
  const index_1 = require("./index");
5
+ const validation_1 = require("../validation");
5
6
  class CaseBuilder {
6
7
  constructor(v) {
7
8
  this.v = v;
8
9
  this.is = {
9
10
  defined: (prop, out) => new Case(this.v).case((0, index_1.isDefined)(prop(this.v)), out),
11
+ empty: (prop, out) => new Case(this.v).case((0, index_1.isEmpty)(prop(this.v)), out),
12
+ valid: (prop, out) => new Case(this.v).case((0, validation_1.validate)(prop(this.v)).isValid, out),
10
13
  not: {
11
14
  defined: (prop, out) => new Case(this.v).case(!(0, index_1.isDefined)(prop(this.v)), out),
15
+ empty: (prop, out) => new Case(this.v).case(!(0, index_1.isEmpty)(prop(this.v)), out),
16
+ valid: (prop, out) => new Case(this.v).case(!(0, validation_1.validate)(prop(this.v)).isValid, out),
12
17
  },
13
18
  };
14
19
  this.if = this.is;
@@ -26,8 +31,12 @@ class Case {
26
31
  this.outcome = outcome;
27
32
  this.is = {
28
33
  defined: (prop, out) => new Case(this.value).case((0, index_1.isDefined)(prop(this.value)), out),
34
+ empty: (prop, out) => new Case(this.value).case((0, index_1.isEmpty)(prop(this.value)), out),
35
+ valid: (prop, out) => new Case(this.value).case((0, validation_1.validate)(prop(this.value)).isValid, out),
29
36
  not: {
30
37
  defined: (prop, out) => new Case(this.value).case(!(0, index_1.isDefined)(prop(this.value)), out),
38
+ empty: (prop, out) => new Case(this.value).case(!(0, index_1.isEmpty)(prop(this.value)), out),
39
+ valid: (prop, out) => new Case(this.value).case(!(0, validation_1.validate)(prop(this.value)).isValid, out),
31
40
  },
32
41
  };
33
42
  this.if = this.is;
@@ -57,8 +66,12 @@ class Found extends Case {
57
66
  this.outcome = outcome;
58
67
  this.is = {
59
68
  defined: (_prop, _out) => this,
69
+ empty: (_prop, _out) => this,
70
+ valid: (_prop, _out) => this,
60
71
  not: {
61
72
  defined: (_prop, _out) => this,
73
+ empty: (_prop, _out) => this,
74
+ valid: (_prop, _out) => this,
62
75
  },
63
76
  };
64
77
  this.if = this.is;
@@ -1 +1 @@
1
- {"version":3,"file":"Case.js","sourceRoot":"","sources":["../../src/types/Case.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Case.js","sourceRoot":"","sources":["../../src/types/Case.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "11.3.17",
3
+ "version": "11.5.0",
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": "11.3.17",
34
+ "@thisisagile/easy-test": "11.5.0",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.8",
37
37
  "@types/luxon": "3.0.0",
package/src/types/Case.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { Func, Get, isDefined, ofGet, Predicate, tryTo } from './index';
1
+ import { Func, Get, isDefined, isEmpty, ofGet, Predicate, tryTo } from './index';
2
+ import { validate } from '../validation';
2
3
 
3
4
  class CaseBuilder<V> {
4
5
  constructor(readonly v: V) {}
@@ -13,8 +14,12 @@ class CaseBuilder<V> {
13
14
 
14
15
  is = {
15
16
  defined: <T>(prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.v).case(isDefined(prop(this.v)), out),
17
+ empty: <T>(prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.v).case(isEmpty(prop(this.v)), out),
18
+ valid: <T>(prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.v).case(validate(prop(this.v)).isValid, out),
16
19
  not: {
17
20
  defined: <T>(prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!isDefined(prop(this.v)), out),
21
+ empty: <T>(prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!isEmpty(prop(this.v)), out),
22
+ valid: <T>(prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!validate(prop(this.v)).isValid, out),
18
23
  },
19
24
  };
20
25
 
@@ -42,8 +47,12 @@ class Case<T, V = unknown> {
42
47
 
43
48
  is = {
44
49
  defined: (prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.value).case(isDefined(prop(this.value)), out),
50
+ empty: (prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.value).case(isEmpty(prop(this.value)), out),
51
+ valid: (prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.value).case(validate(prop(this.value)).isValid, out),
45
52
  not: {
46
53
  defined: (prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!isDefined(prop(this.value)), out),
54
+ empty: (prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!isEmpty(prop(this.value)), out),
55
+ valid: (prop: Func<unknown, V>, out: Func<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!validate(prop(this.value)).isValid, out),
47
56
  },
48
57
  };
49
58
 
@@ -69,8 +78,12 @@ class Found<T, V> extends Case<T, V> {
69
78
 
70
79
  is = {
71
80
  defined: (_prop: Func<unknown, V>, _out: Func<T, V>): Case<T, V> => this,
81
+ empty: (_prop: Func<unknown, V>, _out: Func<T, V>): Case<T, V> => this,
82
+ valid: (_prop: Func<unknown, V>, _out: Func<T, V>): Case<T, V> => this,
72
83
  not: {
73
84
  defined: (_prop: Func<unknown, V>, _out: Func<T, V>): Case<T, V> => this,
85
+ empty: (_prop: Func<unknown, V>, _out: Func<T, V>): Case<T, V> => this,
86
+ valid: (_prop: Func<unknown, V>, _out: Func<T, V>): Case<T, V> => this,
74
87
  },
75
88
  };
76
89