@ddd-ts/shape 0.0.0-feat.june-improvements.c0df263

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/index.js ADDED
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Optional = exports.Shape = exports.Shaped = void 0;
4
+ const traits_1 = require("@ddd-ts/traits");
5
+ function serialize(shape, runtime) {
6
+ if (shape === Number) {
7
+ return runtime;
8
+ }
9
+ if (shape === Boolean) {
10
+ return runtime;
11
+ }
12
+ if (shape === String) {
13
+ return runtime;
14
+ }
15
+ if (shape === BigInt) {
16
+ return runtime;
17
+ }
18
+ if (shape === Date) {
19
+ return runtime;
20
+ }
21
+ if ("optional" in shape) {
22
+ if (runtime === undefined) {
23
+ return undefined;
24
+ }
25
+ return serialize(shape.optional, runtime);
26
+ }
27
+ if ("serialize" in runtime) {
28
+ return runtime.serialize();
29
+ }
30
+ if (Array.isArray(shape)) {
31
+ if (shape.length === 1) {
32
+ return runtime.map((element) => serialize(shape[0], element));
33
+ }
34
+ throw new Error("handle tuples");
35
+ }
36
+ const serialized = {};
37
+ for (const key in shape) {
38
+ const subshape = shape[key];
39
+ serialized[key] = serialize(subshape, runtime[key]);
40
+ }
41
+ return serialized;
42
+ }
43
+ function deserialize(shape, serialized) {
44
+ if (shape === Number) {
45
+ return serialized;
46
+ }
47
+ if (shape === Boolean) {
48
+ return serialized;
49
+ }
50
+ if (shape === String) {
51
+ return serialized;
52
+ }
53
+ if (shape === BigInt) {
54
+ return serialized;
55
+ }
56
+ if (shape === Date) {
57
+ return new Date(serialized);
58
+ }
59
+ if ("optional" in shape) {
60
+ if (serialized === undefined) {
61
+ return undefined;
62
+ }
63
+ return deserialize(shape.optional, serialized);
64
+ }
65
+ if ("deserialize" in shape) {
66
+ return shape.deserialize(serialized);
67
+ }
68
+ if (Array.isArray(shape)) {
69
+ if (shape.length === 1) {
70
+ return serialized.map((element) => deserialize(shape[0], element));
71
+ }
72
+ throw new Error("handle tuples");
73
+ }
74
+ const deserialized = {};
75
+ for (const key in shape) {
76
+ const subshape = shape[key];
77
+ deserialized[key] = deserialize(subshape, serialized[key]);
78
+ }
79
+ return deserialized;
80
+ }
81
+ function isPrimitiveShape(shape) {
82
+ const isPrimitive = shape === Number ||
83
+ shape === Boolean ||
84
+ shape === String ||
85
+ shape === Date ||
86
+ shape === BigInt;
87
+ if ("optional" in shape) {
88
+ return true;
89
+ }
90
+ if (isPrimitive)
91
+ return true;
92
+ if (Array.isArray(shape)) {
93
+ return true;
94
+ }
95
+ const isWrappingPrimitive = shape?.shape
96
+ ? isPrimitiveShape(shape.shape)
97
+ : false;
98
+ return isWrappingPrimitive;
99
+ }
100
+ const Shaped = (shape) => (0, traits_1.Trait)((base) => {
101
+ const primitive = isPrimitiveShape(shape);
102
+ class Intermediate extends base {
103
+ static shape = shape;
104
+ constructor(props) {
105
+ super(props);
106
+ if (primitive) {
107
+ this.value = props;
108
+ }
109
+ else {
110
+ Object.assign(this, props);
111
+ }
112
+ }
113
+ serialize() {
114
+ const { serialize: _, ...props } = this;
115
+ return serialize(shape, primitive ? this.value : props);
116
+ }
117
+ static deserialize(serialized) {
118
+ return new this(deserialize(shape, serialized));
119
+ }
120
+ ensureValidity() { }
121
+ }
122
+ return Intermediate;
123
+ });
124
+ exports.Shaped = Shaped;
125
+ const Shape = (shape) => (0, traits_1.Derive)((0, exports.Shaped)(shape));
126
+ exports.Shape = Shape;
127
+ const Optional = (shape) => ({ optional: shape });
128
+ exports.Optional = Optional;
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,354 @@
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
+ const empty = Amount.deserialize(undefined);
76
+ expect(empty).toBeInstanceOf(Amount);
77
+ expect(empty.serialize()).toEqual(undefined);
78
+ const amount = Amount.deserialize(2);
79
+ expect(amount).toBeInstanceOf(Amount);
80
+ expect(amount.serialize()).toEqual(2);
81
+ });
82
+ it("support objects", () => {
83
+ class Amount extends (0, traits_1.Derive)((0, _1.Shaped)((0, _1.Optional)({ age: Number }))) {
84
+ do() {
85
+ // @ts-expect-error - value is optional
86
+ this.value.toExponential();
87
+ this.value?.age;
88
+ }
89
+ }
90
+ const empty = Amount.deserialize(undefined);
91
+ expect(empty).toBeInstanceOf(Amount);
92
+ expect(empty.serialize()).toEqual(undefined);
93
+ const amount = Amount.deserialize({ age: 2 });
94
+ expect(amount).toBeInstanceOf(Amount);
95
+ expect(amount.serialize()).toEqual({ age: 2 });
96
+ class Money extends Value((0, _1.Optional)(Number)) {
97
+ add(addend) {
98
+ return new Money((this.value || 0) + (addend.value || 0));
99
+ }
100
+ }
101
+ class Transfer extends Value({ in: Money, out: Money }) {
102
+ get flow() {
103
+ return (this.in.value || 0) - (this.out.value || 0);
104
+ }
105
+ }
106
+ const transfer = Transfer.deserialize({ in: 2, out: 3 });
107
+ expect(transfer).toBeInstanceOf(Transfer);
108
+ expect(transfer.serialize()).toEqual({ in: 2, out: 3 });
109
+ expect(transfer.flow).toBe(-1);
110
+ const emptyTransfer = Transfer.deserialize({
111
+ in: undefined,
112
+ out: undefined,
113
+ });
114
+ expect(emptyTransfer).toBeInstanceOf(Transfer);
115
+ expect(emptyTransfer.serialize()).toEqual({
116
+ in: undefined,
117
+ out: undefined,
118
+ });
119
+ expect(emptyTransfer.flow).toBe(0);
120
+ });
121
+ });
122
+ describe("Inheritance", () => {
123
+ class Amount extends Value(Number) {
124
+ add(other) {
125
+ return new Amount(this.value + other.value);
126
+ }
127
+ }
128
+ class Money extends Amount {
129
+ add(addend) {
130
+ return new Money(this.value + addend.value);
131
+ }
132
+ }
133
+ it("deserializes and reserializes", () => {
134
+ const money = Money.deserialize(2);
135
+ expect(money.serialize()).toEqual(2);
136
+ });
137
+ });
138
+ describe("Object", () => {
139
+ class Money extends Value(Number) {
140
+ }
141
+ class Transfer extends Value({ in: Money, out: Money }) {
142
+ get flow() {
143
+ return this.in.serialize() - this.out.serialize();
144
+ }
145
+ }
146
+ it("deserializes and reserializes", () => {
147
+ const transfer = Transfer.deserialize({ in: 2, out: 3 });
148
+ expect(transfer).toBeInstanceOf(Transfer);
149
+ expect(transfer.serialize()).toEqual({ in: 2, out: 3 });
150
+ });
151
+ it("uses values internally", () => {
152
+ const transfer = Transfer.deserialize({ in: 2, out: 3 });
153
+ const { in: input, out: output } = transfer;
154
+ expect(input).toBeInstanceOf(Money);
155
+ expect(output).toBeInstanceOf(Money);
156
+ });
157
+ it("supports domain logic", () => {
158
+ const transfer = Transfer.deserialize({ in: 2, out: 3 });
159
+ expect(transfer.flow).toBe(-1);
160
+ });
161
+ });
162
+ describe("Array", () => {
163
+ describe("of Primitives", () => {
164
+ class Prices extends Value([Number]) {
165
+ }
166
+ it("deserializes and reserializes", () => {
167
+ const prices = Prices.deserialize([1, 2, 3]);
168
+ console.log(prices);
169
+ expect(prices.serialize()).toEqual([1, 2, 3]);
170
+ expect(prices).toBeInstanceOf(Prices);
171
+ });
172
+ });
173
+ describe("of Values", () => {
174
+ class Money extends Value(Number) {
175
+ }
176
+ class Prices extends Value([Money]) {
177
+ }
178
+ it("deserializes and reserializes", () => {
179
+ const prices = Prices.deserialize([1, 2, 3]);
180
+ expect(prices).toBeInstanceOf(Prices);
181
+ expect(prices.serialize()).toEqual([1, 2, 3]);
182
+ });
183
+ it("uses values internally", () => {
184
+ const prices = Prices.deserialize([1, 2, 3]);
185
+ expect(prices.value[0]).toBeInstanceOf(Money);
186
+ });
187
+ });
188
+ describe("of Objects", () => {
189
+ class Money extends Value(Number) {
190
+ }
191
+ class Transfer extends Value({ in: Money, out: Money }) {
192
+ get flow() {
193
+ return this.in.serialize() - this.out.serialize();
194
+ }
195
+ }
196
+ class Extract extends Value([Transfer]) {
197
+ get flow() {
198
+ return this.value.reduce((acc, transfer) => acc + transfer.flow, 0);
199
+ }
200
+ }
201
+ it("deserializes and reserializes", () => {
202
+ const extract = Extract.deserialize([
203
+ { in: 2, out: 3 },
204
+ { in: 3, out: 4 },
205
+ ]);
206
+ expect(extract).toBeInstanceOf(Extract);
207
+ expect(extract.serialize()).toEqual([
208
+ { in: 2, out: 3 },
209
+ { in: 3, out: 4 },
210
+ ]);
211
+ });
212
+ it("uses values internally", () => {
213
+ const extract = Extract.deserialize([{ in: 2, out: 3 }]);
214
+ const [transfer] = extract.value;
215
+ expect(transfer).toBeInstanceOf(Transfer);
216
+ const { in: input, out: output } = transfer;
217
+ expect(input).toBeInstanceOf(Money);
218
+ expect(output).toBeInstanceOf(Money);
219
+ });
220
+ it("supports domain logic", () => {
221
+ const extract = Extract.deserialize([
222
+ { in: 2, out: 3 },
223
+ { in: 3, out: 4 },
224
+ ]);
225
+ expect(extract.flow).toBe(-2);
226
+ });
227
+ });
228
+ describe("of Arrays", () => {
229
+ class Money extends Value(Number) {
230
+ }
231
+ class Matrix extends Value([[Money]]) {
232
+ get total() {
233
+ let total = 0;
234
+ for (const row of this.value) {
235
+ for (const cell of row) {
236
+ total += cell.serialize();
237
+ }
238
+ }
239
+ return total;
240
+ }
241
+ }
242
+ it("deserializes and reserializes", () => {
243
+ const matrix = Matrix.deserialize([
244
+ [1, 2],
245
+ [3, 4],
246
+ ]);
247
+ expect(matrix).toBeInstanceOf(Matrix);
248
+ expect(matrix.serialize()).toEqual([
249
+ [1, 2],
250
+ [3, 4],
251
+ ]);
252
+ });
253
+ it("uses values internally", () => {
254
+ const matrix = Matrix.deserialize([
255
+ [1, 2],
256
+ [3, 4],
257
+ ]);
258
+ const [[cell]] = matrix.value;
259
+ expect(cell).toBeInstanceOf(Money);
260
+ });
261
+ it("supports domain logic", () => {
262
+ const matrix = Matrix.deserialize([
263
+ [1, 2],
264
+ [3, 4],
265
+ ]);
266
+ expect(matrix.total).toBe(10);
267
+ });
268
+ });
269
+ });
270
+ describe.skip("Tuple", () => {
271
+ describe("of Primitives", () => {
272
+ class Geo extends Value([Number, Number]) {
273
+ get total() {
274
+ const [lat, lon] = this.value;
275
+ return lat + lon;
276
+ }
277
+ }
278
+ it("deserializes and serializes", () => {
279
+ const geo = Geo.deserialize([1, 1]);
280
+ expect(geo).toBeInstanceOf(Geo);
281
+ expect(geo.serialize()).toEqual([1, 1]);
282
+ });
283
+ it("supports domain logic", () => {
284
+ const geo = Geo.deserialize([1, 1]);
285
+ expect(geo.total).toBe(2);
286
+ });
287
+ });
288
+ describe("of Values", () => {
289
+ class Point extends Value(Number) {
290
+ }
291
+ class Geo extends Value([Point, Point]) {
292
+ get total() {
293
+ const [lat, lon] = this.value;
294
+ return lat.serialize() + lon.serialize();
295
+ }
296
+ }
297
+ it("deserializes and serializes", () => {
298
+ const geo = Geo.deserialize([1, 1]);
299
+ expect(geo).toBeInstanceOf(Geo);
300
+ expect(geo.serialize()).toEqual([1, 1]);
301
+ });
302
+ it("uses values internally", () => {
303
+ const geo = Geo.deserialize([1, 1]);
304
+ const [lat, lon] = geo.value;
305
+ expect(lat).toBeInstanceOf(Point);
306
+ expect(lon).toBeInstanceOf(Point);
307
+ });
308
+ it("supports domain logic", () => {
309
+ const geo = Geo.deserialize([1, 1]);
310
+ expect(geo.total).toBe(2);
311
+ });
312
+ });
313
+ describe("of Objects", () => {
314
+ class Money extends Value(Number) {
315
+ }
316
+ class Transfer extends Value([
317
+ { amount: Money },
318
+ { message: String },
319
+ ]) {
320
+ get size() {
321
+ const [funds, notice] = this.value;
322
+ return funds.amount.serialize() + notice.message.length;
323
+ }
324
+ }
325
+ it("deserializes and serializes", () => {
326
+ const transfer = Transfer.deserialize([
327
+ { amount: 2 },
328
+ { message: "Thanks!" },
329
+ ]);
330
+ expect(transfer).toBeInstanceOf(Transfer);
331
+ expect(transfer.serialize()).toEqual([
332
+ { amount: 2 },
333
+ { message: "Thanks!" },
334
+ ]);
335
+ });
336
+ it("uses values internally", () => {
337
+ const transfer = Transfer.deserialize([
338
+ { amount: 2 },
339
+ { message: "Thanks!" },
340
+ ]);
341
+ const [funds] = transfer.value;
342
+ expect(funds.amount).toBeInstanceOf(Money);
343
+ });
344
+ it("supports domain logic", () => {
345
+ const transfer = Transfer.deserialize([
346
+ { amount: 2 },
347
+ { message: "Thanks!" },
348
+ ]);
349
+ expect(transfer.size).toBe(9);
350
+ });
351
+ });
352
+ });
353
+ });
354
+ //# 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 ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "@ddd-ts/shape",
3
+ "version": "0.0.0-feat.june-improvements.c0df263",
4
+ "main": "dist/index.js",
5
+ "types": "src/index.ts",
6
+ "license": "MIT",
7
+ "scripts": {
8
+ "build": "builder",
9
+ "test": "test-runner"
10
+ },
11
+ "peerDependencies": {
12
+ "@ddd-ts/traits": "*"
13
+ },
14
+ "devDependencies": {
15
+ "@ddd-ts/dev": "*",
16
+ "@ddd-ts/types": "*"
17
+ }
18
+ }