@ddd-ts/shape 0.0.3-58 → 0.0.3-61

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/either.d.ts CHANGED
@@ -1,21 +1,40 @@
1
1
  import { Expand, DefinitionOf, AbstractConstructor, Empty } from "./_";
2
2
  import { ClassShorthand } from "./class";
3
3
  import { LiteralShorthand } from "./literal";
4
- type StrToNumber<T> = T extends `${infer U extends number}` ? U : never;
5
- export type EitherConfiguration = (LiteralShorthand | ClassShorthand)[];
6
- export declare const Either: <const S extends EitherConfiguration, const B extends AbstractConstructor<{}> = typeof Empty>(of: S, base?: B) => Omit<B, "prototype"> & Omit<(abstract new (value: DefinitionOf<S[number]>["$inline"]) => {
7
- value: DefinitionOf<S[number], typeof Empty>["$inline"];
8
- serialize(): Expand<{ [K in keyof S]: [StrToNumber<K>, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[number]>;
4
+ type Config = {
5
+ [key: string]: any;
6
+ };
7
+ type ExhaustiveMatcher<C extends Config> = {
8
+ [key in keyof C]: (value: InstanceType<C[key]>) => any;
9
+ };
10
+ type UnsafeFallthroughMatcher<C extends Config> = {
11
+ [key in keyof C]?: (value: InstanceType<C[key]>) => any;
12
+ } & {
13
+ _: (value: InstanceType<C[keyof C]>) => any;
14
+ };
15
+ type PartialMatcher<C extends Config> = {
16
+ [key in keyof C]?: (value: InstanceType<C[key]>) => any;
17
+ };
18
+ type Matcher<C extends Config> = ExhaustiveMatcher<C> | UnsafeFallthroughMatcher<C> | PartialMatcher<C>;
19
+ export type EitherConfiguration = {
20
+ [key: string]: LiteralShorthand | ClassShorthand;
21
+ };
22
+ export declare const Either: <const S extends EitherConfiguration, const B extends AbstractConstructor<{}> = typeof Empty>(of: S, base?: B) => Omit<B, "prototype"> & Omit<(abstract new (value: DefinitionOf<S[keyof S]>["$inline"]) => {
23
+ value: DefinitionOf<S[keyof S], typeof Empty>["$inline"];
24
+ serialize(): Expand<{ [K in keyof S]: [K, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[keyof S]>;
25
+ match<M extends Matcher<S>, F extends M extends ExhaustiveMatcher<S> ? [] : M extends UnsafeFallthroughMatcher<S> ? [] : M extends PartialMatcher<S> ? [fallback: (value: InstanceType<Omit<S, keyof M>[Exclude<keyof S, keyof M>]>) => any] : []>(matcher: M, ...__0_1: F): (M[keyof M] extends (...args: any[]) => any ? ReturnType<M[keyof M]> : never) | (F[0] extends (...args: any[]) => any ? ReturnType<F[0]> : never);
9
26
  }) & {
27
+ serialized: { [K in keyof S]: [K, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[keyof S];
10
28
  of: S;
11
29
  $name: "either";
12
- deserialize<T extends any>(this: T, value: Expand<{ [K in keyof S]: [StrToNumber<K>, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[number]>): InstanceType<T>;
13
- $deserialize<T_1 extends any>(this: T_1, value: { [K in keyof S]: [StrToNumber<K>, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[number]): DefinitionOf<S[number]>["$inline"];
14
- $serialize<T_2 extends any>(this: T_2, value: DefinitionOf<S[number]>["$inline"]): { [K in keyof S]: [StrToNumber<K>, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[number];
15
- $inline: DefinitionOf<S[number]>["$inline"];
16
- }, "prototype"> & (abstract new (value: Expand<DefinitionOf<S[number]>["$inline"]>) => InstanceType<B> & {
17
- value: DefinitionOf<S[number], typeof Empty>["$inline"];
18
- serialize(): Expand<{ [K in keyof S]: [StrToNumber<K>, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[number]>;
30
+ deserialize<T extends any>(this: T, value: Expand<{ [K in keyof S]: [K, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[keyof S]>): InstanceType<T>;
31
+ $deserialize<T_1 extends any>(this: T_1, value: { [K in keyof S]: [K, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[keyof S]): DefinitionOf<S[keyof S]>["$inline"];
32
+ $serialize<T_2 extends any>(this: T_2, value: DefinitionOf<S[keyof S]>["$inline"]): { [K in keyof S]: [K, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[keyof S];
33
+ $inline: DefinitionOf<S[keyof S]>["$inline"];
34
+ }, "prototype"> & (abstract new (value: Expand<DefinitionOf<S[keyof S]>["$inline"]>) => InstanceType<B> & {
35
+ value: DefinitionOf<S[keyof S], typeof Empty>["$inline"];
36
+ serialize(): Expand<{ [K in keyof S]: [K, ReturnType<DefinitionOf<S[K]>["$serialize"]>]; }[keyof S]>;
37
+ match<M extends Matcher<S>, F extends M extends ExhaustiveMatcher<S> ? [] : M extends UnsafeFallthroughMatcher<S> ? [] : M extends PartialMatcher<S> ? [fallback: (value: InstanceType<Omit<S, keyof M>[Exclude<keyof S, keyof M>]>) => any] : []>(matcher: M, ...__0_1: F): (M[keyof M] extends (...args: any[]) => any ? ReturnType<M[keyof M]> : never) | (F[0] extends (...args: any[]) => any ? ReturnType<F[0]> : never);
19
38
  });
20
39
  export {};
21
40
  //# sourceMappingURL=either.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"either.d.ts","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EACN,YAAY,EAEZ,mBAAmB,EACnB,KAAK,EAEN,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG,CAAC,gBAAgB,GAAG,cAAc,CAAC,EAAE,CAAC;AAExE,eAAO,MAAM,MAAM,oGAIb,CAAC,SACC,CAAC;;;;;;qCA2BG,CAAC,+GAEN,aAAa,CAAC,CAAC;;;;;;;EAuCrB,CAAC"}
1
+ {"version":3,"file":"either.d.ts","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,YAAY,EAEZ,mBAAmB,EACnB,KAAK,EACN,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,KAAK,MAAM,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAErC,KAAK,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI;KACxC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;CACvD,CAAC;AAEF,KAAK,wBAAwB,CAAC,CAAC,SAAS,MAAM,IAAI;KAC/C,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;CACxD,GAAG;IACF,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;CAC7C,CAAC;AAEF,KAAK,cAAc,CAAC,CAAC,SAAS,MAAM,IAAI;KACrC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;CACxD,CAAC;AAEF,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IACzB,iBAAiB,CAAC,CAAC,CAAC,GACpB,wBAAwB,CAAC,CAAC,CAAC,GAC3B,cAAc,CAAC,CAAC,CAAC,CAAC;AAEtB,MAAM,MAAM,mBAAmB,GAAG;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,cAAc,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,MAAM,oGAIb,CAAC,SACC,CAAC;;;4OAqCiF,GAAG,gEAI1D,GAAG,EAAE,KAAK,GAAG,6DAA6D,GAAG,EAAE,KAAK,GAAG;;;;;qCAmB9G,CAAC,mGAEN,aAAa,CAAC,CAAC;;;;;;;4OAzBoE,GAAG,gEAI1D,GAAG,EAAE,KAAK,GAAG,6DAA6D,GAAG,EAAE,KAAK,GAAG;EAkEzH,CAAC"}
package/dist/either.js CHANGED
@@ -3,36 +3,57 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Either = void 0;
4
4
  const _1 = require("./_");
5
5
  const Either = (of, base = _1.Empty) => {
6
- const definitions = of.map((i) => (0, _1.Shape)(i));
6
+ const definitions = Object.fromEntries(Object.entries(of).map(([key, value]) => {
7
+ return [key, (0, _1.Shape)(value)];
8
+ }));
7
9
  class $Either extends base {
8
10
  value;
9
11
  constructor(value) {
10
12
  super();
11
13
  this.value = value;
12
14
  }
15
+ static serialized;
13
16
  static of = of;
14
17
  static $name = "either";
15
18
  serialize() {
16
19
  return $Either.$serialize(this.value);
17
20
  }
21
+ match(...[matcher, fallback]) {
22
+ const key = Object.entries(of).find(([_, v]) => v === this.value.constructor)?.[0];
23
+ const handler = matcher[key];
24
+ if (handler) {
25
+ return handler(this.value);
26
+ }
27
+ if (fallback) {
28
+ return fallback(this.value);
29
+ }
30
+ if (matcher._) {
31
+ return matcher._(this.value);
32
+ }
33
+ throw new Error("Non-exhaustive match");
34
+ }
35
+ ;
18
36
  static deserialize(value) {
19
37
  return new this(this.$deserialize(value));
20
38
  }
21
39
  static $deserialize(value) {
22
- const [index, serialized] = value;
23
- const definition = definitions[index];
40
+ const [key, serialized] = value;
41
+ const definition = definitions[key];
24
42
  if (!definition) {
25
43
  throw new Error("Cannot deserialize Either");
26
44
  }
27
45
  return definition.$deserialize(serialized);
28
46
  }
29
47
  static $serialize(value) {
30
- const index = of.indexOf(value.constructor);
31
- const definition = definitions[index];
48
+ const key = Object.entries(of).find(([_, v]) => v === value.constructor)?.[0];
49
+ if (!key) {
50
+ throw new Error("Cannot serialize Either, no matching key");
51
+ }
52
+ const definition = definitions[key];
32
53
  if (!definition) {
33
54
  throw new Error("Cannot serialize Either");
34
55
  }
35
- return [index, definition.$serialize(value)];
56
+ return [key, definition.$serialize(value)];
36
57
  }
37
58
  static $inline;
38
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"either.js","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":";;;AAAA,0BASa;AAQN,MAAM,MAAM,GAAG,CAIpB,EAAK,EACL,OAAU,QAAY,EACtB,EAAE;IAUF,MAAM,WAAW,GAAI,EAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,QAAK,EAAC,CAAC,CAAC,CAAC,CAAC;IAE1D,MAAe,OAAQ,SAAS,IAA+B;QAC1C;QAAnB,YAAmB,KAAa;YAC9B,KAAK,EAAE,CAAC;YADS,UAAK,GAAL,KAAK,CAAQ;QAEhC,CAAC;QAED,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QAEf,MAAM,CAAC,KAAK,GAAG,QAAiB,CAAC;QAEjC,SAAS;YACP,OAAQ,OAAe,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC;QACxD,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAyB;YAEzB,OAAO,IAAK,IAAY,CAAC,IAAI,CAAC,YAAY,CAAC,KAAY,CAAC,CAAQ,CAAC;QACnE,CAAC;QAED,MAAM,CAAC,YAAY,CAEjB,KAAiB;YAEjB,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,KAAY,CAAC;YACzC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YACD,OAAQ,UAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,CAAC,UAAU,CAEf,KAAa;YAEb,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAE,KAAa,CAAC,WAAkB,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,CAAC,KAAK,EAAG,UAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAQ,CAAC;QAC/D,CAAC;QAED,MAAM,CAAC,OAAO,CAAS;;IAUzB,OAAO,OAAiB,CAAC;AAC3B,CAAC,CAAC;AAzEW,QAAA,MAAM,UAyEjB"}
1
+ {"version":3,"file":"either.js","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":"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"}
@@ -5,21 +5,21 @@ const dict_1 = require("./dict");
5
5
  const test_1 = require("./test");
6
6
  describe("Either", () => {
7
7
  it("class definition with two arguments", () => {
8
- class Test extends (0, either_1.Either)([String, Number]) {
8
+ class Test extends (0, either_1.Either)({ String, Number }) {
9
9
  test = true;
10
10
  }
11
11
  // Constructor parameters
12
12
  (0, test_1.ex)(Test).toHaveFirstParam().ok;
13
13
  // Deserialization
14
14
  (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
15
- const a = Test.deserialize([0, "test"]);
15
+ const a = Test.deserialize(["String", "test"]);
16
16
  (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
17
17
  // Additional prototype
18
18
  (0, test_1.ex)(a.test).toBe(true).ok;
19
19
  // Inherited prototype on deserialization
20
20
  (0, test_1.ex)(a.value).toBe("test").ok;
21
21
  // Serialization
22
- (0, test_1.ex)(a.serialize()).toStrictEqual([0, "test"]).ok;
22
+ (0, test_1.ex)(a.serialize()).toStrictEqual(["String", "test"]).ok;
23
23
  // Instantiation
24
24
  const b = new Test("test");
25
25
  (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
@@ -41,25 +41,35 @@ describe("Either", () => {
41
41
  return { a: this.a };
42
42
  }
43
43
  }
44
- class Test extends (0, either_1.Either)([A, B]) {
44
+ class Test extends (0, either_1.Either)({ A, B }) {
45
45
  test = true;
46
46
  }
47
47
  // Constructor parameters
48
48
  (0, test_1.ex)(Test).toHaveFirstParam().ok;
49
49
  // Deserialization
50
50
  (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
51
- const a = Test.deserialize([0, { a: "test" }]);
51
+ const a = Test.deserialize(["A", { a: "test" }]);
52
52
  (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
53
- const b = Test.deserialize([1, { a: "test" }]);
53
+ const b = Test.deserialize(["B", { a: "test" }]);
54
54
  (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
55
55
  // Additional prototype
56
+ (0, test_1.ex)(a.match({
57
+ A: () => true,
58
+ B: () => false,
59
+ })).toBe(true).ok;
60
+ (0, test_1.ex)(a.match({
61
+ _: () => true,
62
+ })).toBe(true).ok;
63
+ (0, test_1.ex)(a.match({
64
+ B: () => true,
65
+ }, () => false)).toBe(false).ok;
56
66
  (0, test_1.ex)(a.test).toBe(true).ok;
57
67
  // Inherited prototype on deserialization
58
68
  (0, test_1.ex)(a.value).toBeInstanceOf(A).ok;
59
69
  (0, test_1.ex)(b.value).toBeInstanceOf(B).ok;
60
70
  // Serialization
61
- (0, test_1.ex)(a.serialize()).toStrictEqual([0, { a: "test" }]).ok;
62
- (0, test_1.ex)(b.serialize()).toStrictEqual([1, { a: "test" }]).ok;
71
+ (0, test_1.ex)(a.serialize()).toStrictEqual(["A", { a: "test" }]).ok;
72
+ (0, test_1.ex)(b.serialize()).toStrictEqual(["B", { a: "test" }]).ok;
63
73
  // Instantiation
64
74
  const c = new Test(new A({ a: "test" }));
65
75
  (0, test_1.ex)(c).toBeInstanceOf(Test).ok;
@@ -72,18 +82,19 @@ describe("Either", () => {
72
82
  (0, test_1.ex)(d.value.a).toBe("test").ok;
73
83
  });
74
84
  it("inline definition", () => {
75
- class Test extends (0, dict_1.Dict)({ nested: (0, either_1.Either)([String, Number]) }) {
85
+ class Test extends (0, dict_1.Dict)({ nested: (0, either_1.Either)({ String, Number }) }) {
76
86
  }
77
87
  // Constructor parameters
78
88
  (0, test_1.ex)(Test).toHaveFirstParam().ok;
79
89
  // Deserialization
80
90
  (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
81
- const a = Test.deserialize({ nested: [0, "test"] });
91
+ const a = Test.deserialize({ nested: ["String", "test"] });
82
92
  (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
83
93
  // Inherited prototype on deserialization
84
94
  (0, test_1.ex)(a.nested).toBe("test").ok;
85
95
  // Serialization
86
- (0, test_1.ex)(a.serialize()).toStrictEqual({ nested: [0, "test"] }).ok;
96
+ (0, test_1.ex)(a.serialize()).toStrictEqual({ nested: ["String", "test"] })
97
+ .ok;
87
98
  // Instantiation
88
99
  const b = new Test({ nested: "test" });
89
100
  (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
@@ -91,7 +102,7 @@ describe("Either", () => {
91
102
  (0, test_1.ex)(b.nested).toBe("test").ok;
92
103
  });
93
104
  it("referenced definition", () => {
94
- class A extends (0, either_1.Either)([String, Number]) {
105
+ class A extends (0, either_1.Either)({ String, Number }) {
95
106
  }
96
107
  class Test extends (0, dict_1.Dict)({ nested: A }) {
97
108
  }
@@ -99,13 +110,14 @@ describe("Either", () => {
99
110
  (0, test_1.ex)(Test).toHaveFirstParam().ok;
100
111
  // Deserialization
101
112
  (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
102
- const a = Test.deserialize({ nested: [0, "test"] });
113
+ const a = Test.deserialize({ nested: ["String", "test"] });
103
114
  (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
104
115
  // Inherited prototype on deserialization
105
116
  (0, test_1.ex)(a.nested).toBeInstanceOf(A).ok;
106
117
  (0, test_1.ex)(a.nested.value).toBe("test").ok;
107
118
  // Serialization
108
- (0, test_1.ex)(a.serialize()).toStrictEqual({ nested: [0, "test"] }).ok;
119
+ (0, test_1.ex)(a.serialize()).toStrictEqual({ nested: ["String", "test"] })
120
+ .ok;
109
121
  // Instantiation
110
122
  const b = new Test({ nested: new A("test") });
111
123
  (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
@@ -120,7 +132,7 @@ describe("Either", () => {
120
132
  }
121
133
  return Mix;
122
134
  };
123
- class Test extends Mixin([String, Number]) {
135
+ class Test extends Mixin({ String, Number }) {
124
136
  test = true;
125
137
  // @ts-expect-error is not assignable to parameter of type 'true'
126
138
  abstract = false;
@@ -131,7 +143,7 @@ describe("Either", () => {
131
143
  (0, test_1.ex)(Test.deep).toBe(true).ok;
132
144
  // Deserialization
133
145
  (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
134
- const a = Test.deserialize([0, "test"]);
146
+ const a = Test.deserialize(["String", "test"]);
135
147
  (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
136
148
  // Additional prototype on deserialization
137
149
  (0, test_1.ex)(a.test).toBe(true).ok;
@@ -141,7 +153,7 @@ describe("Either", () => {
141
153
  // Inherited prototype on deserialization
142
154
  (0, test_1.ex)(a.value).toBe("test").ok;
143
155
  // Serialization
144
- (0, test_1.ex)(a.serialize()).toStrictEqual([0, "test"]).ok;
156
+ (0, test_1.ex)(a.serialize()).toStrictEqual(["String", "test"]).ok;
145
157
  // Instantiation
146
158
  const b = new Test("test");
147
159
  (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
@@ -161,7 +173,7 @@ describe("Either", () => {
161
173
  }
162
174
  return (0, either_1.Either)(config, I);
163
175
  };
164
- class Test extends Testable([String, Number]) {
176
+ class Test extends Testable({ String, Number }) {
165
177
  test = true;
166
178
  // @ts-expect-error is not assignable to parameter of type 'true'
167
179
  abstract = false;
@@ -172,7 +184,7 @@ describe("Either", () => {
172
184
  (0, test_1.ex)(Test.deep).toBe(true).ok;
173
185
  // Deserialization
174
186
  (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
175
- const a = Test.deserialize([0, "test"]);
187
+ const a = Test.deserialize(["String", "test"]);
176
188
  (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
177
189
  // Additional prototype on deserialization
178
190
  (0, test_1.ex)(a.test).toBe(true).ok;
@@ -182,7 +194,7 @@ describe("Either", () => {
182
194
  // Inherited prototype on deserialization
183
195
  (0, test_1.ex)(a.value).toBe("test").ok;
184
196
  // Serialization
185
- (0, test_1.ex)(a.serialize()).toStrictEqual([0, "test"]).ok;
197
+ (0, test_1.ex)(a.serialize()).toStrictEqual(["String", "test"]).ok;
186
198
  // Instantiation
187
199
  const b = new Test(2);
188
200
  (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
@@ -1 +1 @@
1
- {"version":3,"file":"either.spec.js","sourceRoot":"","sources":["../src/either.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"either.spec.js","sourceRoot":"","sources":["../src/either.spec.ts"],"names":[],"mappings":"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"}
package/dist/enum.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ import { Constructor } from "@ddd-ts/traits";
2
+ export declare const Enum: <const V extends string>(values: V[]) => {
3
+ new (value: V): {
4
+ value: V;
5
+ serialize(): V;
6
+ is<U extends V>(value: U): this is any & {
7
+ value: U;
8
+ serialize(): U;
9
+ };
10
+ match<T extends any, M extends MatcherParam<V>>(this: T, matcher: M): M extends Required<MatcherParam<V>> ? { [K in V]: M[K] extends () => infer R ? R : never; }[V] : { [K_1 in V]: M[K_1] extends () => infer R_1 ? R_1 : never; }[V] | (M extends {
11
+ _: () => infer R_2;
12
+ } ? R_2 : never);
13
+ };
14
+ values: V[];
15
+ deserialize<T_1 extends Constructor>(this: T_1, value: V): InstanceType<T_1>;
16
+ } & { [K_2 in V]: <T_2 extends Constructor>(this: T_2) => InstanceType<T_2>; };
17
+ type Matcher<cases extends string> = {
18
+ [K in cases]?: () => any;
19
+ };
20
+ type Catchall = {
21
+ _: () => any;
22
+ };
23
+ type MatcherParam<cases extends string> = Required<Matcher<cases>> | (Matcher<cases> & Catchall);
24
+ export {};
25
+ //# sourceMappingURL=enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../src/enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,eAAO,MAAM,IAAI;;;;;;;;;;;;;;8EA+ChB,CAAC;AAEF,KAAK,OAAO,CAAC,KAAK,SAAS,MAAM,IAAI;KACnC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG;CACxB,CAAC;AAEF,KAAK,QAAQ,GAAG;IAAE,CAAC,EAAE,MAAM,GAAG,CAAA;CAAE,CAAC;AAEjC,KAAK,YAAY,CAAC,KAAK,SAAS,MAAM,IACnC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GACxB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC"}
package/dist/enum.js ADDED
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Enum = void 0;
4
+ const Enum = (values) => {
5
+ const I = class EnumIntermediate {
6
+ value;
7
+ static values = values;
8
+ constructor(value) {
9
+ this.value = value;
10
+ }
11
+ serialize() {
12
+ return this.value;
13
+ }
14
+ is(value) {
15
+ return this.value === value;
16
+ }
17
+ match(matcher) {
18
+ const fn = matcher[this.value];
19
+ if (fn) {
20
+ return fn();
21
+ }
22
+ const catchAll = matcher._;
23
+ return catchAll();
24
+ }
25
+ static deserialize(value) {
26
+ return new this(value);
27
+ }
28
+ };
29
+ for (const v of values) {
30
+ I[v] = function () {
31
+ return new this(v);
32
+ };
33
+ }
34
+ return I;
35
+ };
36
+ exports.Enum = Enum;
37
+ //# sourceMappingURL=enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.js","sourceRoot":"","sources":["../src/enum.ts"],"names":[],"mappings":";;;AAEO,MAAM,IAAI,GAAG,CAAyB,MAAW,EAAE,EAAE;IAC3D,MAAM,CAAC,GAAG,MAAM,gBAAgB;QAEZ;QADnB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,YAAmB,KAAQ;YAAR,UAAK,GAAL,KAAK,CAAG;QAAG,CAAC;QAE/B,SAAS;YACR,OAAO,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QAED,EAAE,CAAc,KAAQ;YACvB,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;QAC7B,CAAC;QAED,KAAK,CAEJ,OAAU;YAUV,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,EAAE,EAAE;gBACP,OAAO,EAAE,EAAS,CAAC;aACnB;YACD,MAAM,QAAQ,GAAI,OAAe,CAAC,CAAC,CAAC;YACpC,OAAO,QAAQ,EAAS,CAAC;QAC1B,CAAC;QAED,MAAM,CAAC,WAAW,CAAiC,KAAQ;YAC1D,OAAO,IAAI,IAAI,CAAC,KAAK,CAAoB,CAAC;QAC3C,CAAC;KACD,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;QACtB,CAAS,CAAC,CAAC,CAAC,GAAG;YACf,OAAO,IAAI,IAAI,CAAC,CAAC,CAAoB,CAAC;QACvC,CAAC,CAAC;KACF;IAED,OAAO,CAEN,CAAC;AACH,CAAC,CAAC;AA/CW,QAAA,IAAI,QA+Cf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=enum.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.spec.d.ts","sourceRoot":"","sources":["../src/enum.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const enum_1 = require("./enum");
4
+ describe('Enum', () => {
5
+ class Bool extends (0, enum_1.Enum)(['yes', 'no']) {
6
+ }
7
+ it('should instanciate', () => {
8
+ new Bool('yes');
9
+ new Bool('no');
10
+ // @ts-expect-error it should not be possible to instanciate with invalid value
11
+ new Bool('maybe');
12
+ });
13
+ it('should serialize and deserialize', () => {
14
+ const test = Bool.deserialize('yes').serialize();
15
+ expect(test).toBe('yes');
16
+ });
17
+ it('should pattern match', async () => {
18
+ const test = await Bool.deserialize('yes').match({
19
+ yes: async () => 'yeap',
20
+ no: async () => 'nope'
21
+ });
22
+ expect(test).toBe('yeap');
23
+ // @ts-expect-error it should not be possible to pattern match with incomplete cases
24
+ Bool.deserialize('yes').match({
25
+ yes: () => 'yeap',
26
+ });
27
+ // it should allow catch all instead of other cases
28
+ Bool.deserialize('yes').match({
29
+ yes: () => 'yeap',
30
+ _: () => 'nope'
31
+ });
32
+ });
33
+ it('should become predictible after conditional', () => {
34
+ const value = Bool.yes();
35
+ if (value.is('yes')) {
36
+ const test = value.serialize();
37
+ expect(test).toBe('yes');
38
+ }
39
+ });
40
+ // For next time :p
41
+ //
42
+ // it.skip('should allow struct enums', () => {
43
+ // class Triangle extends Shape(Number) { }
44
+ // class Geometry extends Enum({
45
+ // Point: null,
46
+ // Circle: Number,
47
+ // Rectangle: { side: Number }
48
+ // Triangle,
49
+ // }){}
50
+ // const rect = Geometry.deserialize({
51
+ // variant: 'Rectangle',
52
+ // params: {
53
+ // side: 2
54
+ // }
55
+ // }).serialize()
56
+ // expect(rect).toEqual({
57
+ // variant: 'Rectangle',
58
+ // params: {
59
+ // side: 2
60
+ // }
61
+ // })
62
+ // const triangle = Geometry.deserialize({
63
+ // variant: 'Triangle',
64
+ // params: 3
65
+ // })
66
+ // if(triangle.is('Triangle')){
67
+ // triangle.value === 3
68
+ // }
69
+ // })
70
+ });
71
+ //# sourceMappingURL=enum.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.spec.js","sourceRoot":"","sources":["../src/enum.spec.ts"],"names":[],"mappings":";;AAAA,iCAA6B;AAE7B,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IAClB,MAAM,IAAK,SAAQ,IAAA,WAAI,EAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAAI;IAC1C,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;QACf,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QACd,+EAA+E;QAC/E,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,IAAI,GAAiB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAA;QAC9D,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,IAAI,GAAoB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;YAC9D,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,MAAe;YAChC,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,MAAe;SAClC,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEzB,oFAAoF;QACpF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;YAC1B,GAAG,EAAE,GAAG,EAAE,CAAC,MAAe;SAC7B,CAAC,CAAA;QAEF,mDAAmD;QACnD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;YAC1B,GAAG,EAAE,GAAG,EAAE,CAAC,MAAe;YAC1B,CAAC,EAAE,GAAG,EAAE,CAAC,MAAe;SAC3B,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;YACjB,MAAM,IAAI,GAAU,KAAK,CAAC,SAAS,EAAE,CAAA;YACrC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SAC3B;IACL,CAAC,CAAC,CAAA;IAGF,mBAAmB;IACnB,EAAE;IACF,+CAA+C;IAC/C,+CAA+C;IAE/C,oCAAoC;IACpC,uBAAuB;IACvB,0BAA0B;IAC1B,sCAAsC;IACtC,oBAAoB;IACpB,WAAW;IAEX,0CAA0C;IAC1C,gCAAgC;IAChC,oBAAoB;IACpB,sBAAsB;IACtB,YAAY;IACZ,qBAAqB;IAErB,6BAA6B;IAC7B,gCAAgC;IAChC,oBAAoB;IACpB,sBAAsB;IACtB,YAAY;IACZ,SAAS;IAET,8CAA8C;IAC9C,+BAA+B;IAC/B,oBAAoB;IACpB,SAAS;IAGT,mCAAmC;IACnC,+BAA+B;IAC/B,SAAS;IACT,KAAK;AACT,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const traits_1 = require("@ddd-ts/traits");
4
+ const _1 = require(".");
5
+ const Value = _1.Shape;
6
+ describe("Value", () => {
7
+ describe("Primitive", () => {
8
+ class Money extends Value(Number) {
9
+ add(addend) {
10
+ return new Money(this.value + addend.value);
11
+ }
12
+ }
13
+ it("number: deserializes and reserializes", () => {
14
+ const money = Money.deserialize(2);
15
+ expect(money).toBeInstanceOf(Money);
16
+ expect(money.serialize()).toEqual(2);
17
+ });
18
+ it("can execute methods", () => {
19
+ const before = new Money(2);
20
+ const after = before.add(new Money(2));
21
+ expect(after.value).toBe(4);
22
+ });
23
+ class Sentence extends Value(String) {
24
+ get wordCount() {
25
+ return this.value.split(" ").length;
26
+ }
27
+ }
28
+ it("string: deserializes and reserializes", () => {
29
+ const sentence = Sentence.deserialize("Hello World!");
30
+ expect(sentence).toBeInstanceOf(Sentence);
31
+ expect(sentence.serialize()).toEqual("Hello World!");
32
+ });
33
+ it("can execute getters", () => {
34
+ const sentence = Sentence.deserialize("Hello World!");
35
+ expect(sentence.wordCount).toEqual(2);
36
+ });
37
+ class IsTransactionStale extends Value(Boolean) {
38
+ }
39
+ it("boolean: deserializes and reserializes", () => {
40
+ const isStale = IsTransactionStale.deserialize(false);
41
+ expect(isStale).toBeInstanceOf(IsTransactionStale);
42
+ expect(isStale.serialize()).toEqual(false);
43
+ });
44
+ });
45
+ describe("Wrapping", () => {
46
+ class Amount extends Value(Number) {
47
+ add(other) {
48
+ return new Amount(this.value + other.value);
49
+ }
50
+ }
51
+ class Money extends Value(Amount) {
52
+ add(addend) {
53
+ return new Money(this.value.add(addend.value));
54
+ }
55
+ }
56
+ it("deserializes and reserializes", () => {
57
+ const money = Money.deserialize(2);
58
+ expect(money.serialize()).toEqual(2);
59
+ });
60
+ it("uses value internally", () => {
61
+ const money = Money.deserialize(2);
62
+ expect(money.value).toBeInstanceOf(Amount);
63
+ });
64
+ });
65
+ describe("Optional", () => {
66
+ it("deserializes and reserializes", () => {
67
+ class Amount extends (0, traits_1.Derive)((0, _1.Shaped)((0, _1.Optional)(Number))) {
68
+ do() {
69
+ // @ts-expect-error - value is optional
70
+ this.value.toExponential();
71
+ // @ts-expect-error - no nesting
72
+ this.value?.value.toExponential();
73
+ }
74
+ }
75
+ new ((0, traits_1.Derive)((0, _1.Shaped)(Number)))(2);
76
+ new Amount(2);
77
+ new Amount(undefined);
78
+ const empty = Amount.deserialize(undefined);
79
+ expect(empty).toBeInstanceOf(Amount);
80
+ expect(empty.serialize()).toEqual(undefined);
81
+ const amount = Amount.deserialize(2);
82
+ expect(amount).toBeInstanceOf(Amount);
83
+ expect(amount.serialize()).toEqual(2);
84
+ });
85
+ it("support objects", () => {
86
+ class Amount extends (0, traits_1.Derive)((0, _1.Shaped)((0, _1.Optional)({ age: Number }))) {
87
+ do() {
88
+ // @ts-expect-error - value is optional
89
+ this.value.toExponential();
90
+ this.value?.age;
91
+ }
92
+ }
93
+ const empty = Amount.deserialize(undefined);
94
+ expect(empty).toBeInstanceOf(Amount);
95
+ expect(empty.serialize()).toEqual(undefined);
96
+ const amount = Amount.deserialize({ age: 2 });
97
+ expect(amount).toBeInstanceOf(Amount);
98
+ expect(amount.serialize()).toEqual({ age: 2 });
99
+ class Money extends Value((0, _1.Optional)(Number)) {
100
+ add(addend) {
101
+ return new Money((this.value || 0) + (addend.value || 0));
102
+ }
103
+ }
104
+ class Transfer extends Value({ in: Money, out: Money }) {
105
+ get flow() {
106
+ return (this.in.value || 0) - (this.out.value || 0);
107
+ }
108
+ }
109
+ const transfer = Transfer.deserialize({ in: 2, out: 3 });
110
+ expect(transfer).toBeInstanceOf(Transfer);
111
+ expect(transfer.serialize()).toEqual({ in: 2, out: 3 });
112
+ expect(transfer.flow).toBe(-1);
113
+ const emptyTransfer = Transfer.deserialize({
114
+ in: undefined,
115
+ out: undefined,
116
+ });
117
+ expect(emptyTransfer).toBeInstanceOf(Transfer);
118
+ expect(emptyTransfer.serialize()).toEqual({
119
+ in: undefined,
120
+ out: undefined,
121
+ });
122
+ expect(emptyTransfer.flow).toBe(0);
123
+ });
124
+ });
125
+ describe("Inheritance", () => {
126
+ class Amount extends Value(Number) {
127
+ add(other) {
128
+ return new Amount(this.value + other.value);
129
+ }
130
+ }
131
+ class Money extends Amount {
132
+ add(addend) {
133
+ return new Money(this.value + addend.value);
134
+ }
135
+ }
136
+ it("deserializes and reserializes", () => {
137
+ const money = Money.deserialize(2);
138
+ expect(money.serialize()).toEqual(2);
139
+ });
140
+ });
141
+ describe("Object", () => {
142
+ class Money extends Value(Number) {
143
+ }
144
+ class Transfer extends Value({ in: Money, out: Money }) {
145
+ get flow() {
146
+ return this.in.serialize() - this.out.serialize();
147
+ }
148
+ }
149
+ it("deserializes and reserializes", () => {
150
+ const transfer = Transfer.deserialize({ in: 2, out: 3 });
151
+ expect(transfer).toBeInstanceOf(Transfer);
152
+ expect(transfer.serialize()).toEqual({ in: 2, out: 3 });
153
+ });
154
+ it("uses values internally", () => {
155
+ const transfer = Transfer.deserialize({ in: 2, out: 3 });
156
+ const { in: input, out: output } = transfer;
157
+ expect(input).toBeInstanceOf(Money);
158
+ expect(output).toBeInstanceOf(Money);
159
+ });
160
+ it("supports domain logic", () => {
161
+ const transfer = Transfer.deserialize({ in: 2, out: 3 });
162
+ expect(transfer.flow).toBe(-1);
163
+ });
164
+ });
165
+ describe("Array", () => {
166
+ describe("of Primitives", () => {
167
+ class Prices extends Value([Number]) {
168
+ }
169
+ it("deserializes and reserializes", () => {
170
+ const prices = Prices.deserialize([1, 2, 3]);
171
+ console.log(prices);
172
+ expect(prices.serialize()).toEqual([1, 2, 3]);
173
+ expect(prices).toBeInstanceOf(Prices);
174
+ });
175
+ });
176
+ describe("of Values", () => {
177
+ class Money extends Value(Number) {
178
+ }
179
+ class Prices extends Value([Money]) {
180
+ }
181
+ it("deserializes and reserializes", () => {
182
+ const prices = Prices.deserialize([1, 2, 3]);
183
+ expect(prices).toBeInstanceOf(Prices);
184
+ expect(prices.serialize()).toEqual([1, 2, 3]);
185
+ });
186
+ it("uses values internally", () => {
187
+ const prices = Prices.deserialize([1, 2, 3]);
188
+ expect(prices.value[0]).toBeInstanceOf(Money);
189
+ });
190
+ });
191
+ describe("of Objects", () => {
192
+ class Money extends Value(Number) {
193
+ }
194
+ class Transfer extends Value({ in: Money, out: Money }) {
195
+ get flow() {
196
+ return this.in.serialize() - this.out.serialize();
197
+ }
198
+ }
199
+ class Extract extends Value([Transfer]) {
200
+ get flow() {
201
+ return this.value.reduce((acc, transfer) => acc + transfer.flow, 0);
202
+ }
203
+ }
204
+ it("deserializes and reserializes", () => {
205
+ const extract = Extract.deserialize([
206
+ { in: 2, out: 3 },
207
+ { in: 3, out: 4 },
208
+ ]);
209
+ expect(extract).toBeInstanceOf(Extract);
210
+ expect(extract.serialize()).toEqual([
211
+ { in: 2, out: 3 },
212
+ { in: 3, out: 4 },
213
+ ]);
214
+ });
215
+ it("uses values internally", () => {
216
+ const extract = Extract.deserialize([{ in: 2, out: 3 }]);
217
+ const [transfer] = extract.value;
218
+ expect(transfer).toBeInstanceOf(Transfer);
219
+ const { in: input, out: output } = transfer;
220
+ expect(input).toBeInstanceOf(Money);
221
+ expect(output).toBeInstanceOf(Money);
222
+ });
223
+ it("supports domain logic", () => {
224
+ const extract = Extract.deserialize([
225
+ { in: 2, out: 3 },
226
+ { in: 3, out: 4 },
227
+ ]);
228
+ expect(extract.flow).toBe(-2);
229
+ });
230
+ });
231
+ describe("of Arrays", () => {
232
+ class Money extends Value(Number) {
233
+ }
234
+ class Matrix extends Value([[Money]]) {
235
+ get total() {
236
+ let total = 0;
237
+ for (const row of this.value) {
238
+ for (const cell of row) {
239
+ total += cell.serialize();
240
+ }
241
+ }
242
+ return total;
243
+ }
244
+ }
245
+ it("deserializes and reserializes", () => {
246
+ const matrix = Matrix.deserialize([
247
+ [1, 2],
248
+ [3, 4],
249
+ ]);
250
+ expect(matrix).toBeInstanceOf(Matrix);
251
+ expect(matrix.serialize()).toEqual([
252
+ [1, 2],
253
+ [3, 4],
254
+ ]);
255
+ });
256
+ it("uses values internally", () => {
257
+ const matrix = Matrix.deserialize([
258
+ [1, 2],
259
+ [3, 4],
260
+ ]);
261
+ const [[cell]] = matrix.value;
262
+ expect(cell).toBeInstanceOf(Money);
263
+ });
264
+ it("supports domain logic", () => {
265
+ const matrix = Matrix.deserialize([
266
+ [1, 2],
267
+ [3, 4],
268
+ ]);
269
+ expect(matrix.total).toBe(10);
270
+ });
271
+ });
272
+ });
273
+ describe.skip("Tuple", () => {
274
+ describe("of Primitives", () => {
275
+ class Geo extends Value([Number, Number]) {
276
+ get total() {
277
+ const [lat, lon] = this.value;
278
+ return lat + lon;
279
+ }
280
+ }
281
+ it("deserializes and serializes", () => {
282
+ const geo = Geo.deserialize([1, 1]);
283
+ expect(geo).toBeInstanceOf(Geo);
284
+ expect(geo.serialize()).toEqual([1, 1]);
285
+ });
286
+ it("supports domain logic", () => {
287
+ const geo = Geo.deserialize([1, 1]);
288
+ expect(geo.total).toBe(2);
289
+ });
290
+ });
291
+ describe("of Values", () => {
292
+ class Point extends Value(Number) {
293
+ }
294
+ class Geo extends Value([Point, Point]) {
295
+ get total() {
296
+ const [lat, lon] = this.value;
297
+ return lat.serialize() + lon.serialize();
298
+ }
299
+ }
300
+ it("deserializes and serializes", () => {
301
+ const geo = Geo.deserialize([1, 1]);
302
+ expect(geo).toBeInstanceOf(Geo);
303
+ expect(geo.serialize()).toEqual([1, 1]);
304
+ });
305
+ it("uses values internally", () => {
306
+ const geo = Geo.deserialize([1, 1]);
307
+ const [lat, lon] = geo.value;
308
+ expect(lat).toBeInstanceOf(Point);
309
+ expect(lon).toBeInstanceOf(Point);
310
+ });
311
+ it("supports domain logic", () => {
312
+ const geo = Geo.deserialize([1, 1]);
313
+ expect(geo.total).toBe(2);
314
+ });
315
+ });
316
+ describe("of Objects", () => {
317
+ class Money extends Value(Number) {
318
+ }
319
+ class Transfer extends Value([
320
+ { amount: Money },
321
+ { message: String },
322
+ ]) {
323
+ get size() {
324
+ const [funds, notice] = this.value;
325
+ return funds.amount.serialize() + notice.message.length;
326
+ }
327
+ }
328
+ it("deserializes and serializes", () => {
329
+ const transfer = Transfer.deserialize([
330
+ { amount: 2 },
331
+ { message: "Thanks!" },
332
+ ]);
333
+ expect(transfer).toBeInstanceOf(Transfer);
334
+ expect(transfer.serialize()).toEqual([
335
+ { amount: 2 },
336
+ { message: "Thanks!" },
337
+ ]);
338
+ });
339
+ it("uses values internally", () => {
340
+ const transfer = Transfer.deserialize([
341
+ { amount: 2 },
342
+ { message: "Thanks!" },
343
+ ]);
344
+ const [funds] = transfer.value;
345
+ expect(funds.amount).toBeInstanceOf(Money);
346
+ });
347
+ it("supports domain logic", () => {
348
+ const transfer = Transfer.deserialize([
349
+ { amount: 2 },
350
+ { message: "Thanks!" },
351
+ ]);
352
+ expect(transfer.size).toBe(9);
353
+ });
354
+ });
355
+ });
356
+ });
357
+ //# sourceMappingURL=index.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ddd-ts/shape",
3
- "version": "0.0.3-58",
3
+ "version": "0.0.3-61",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",