@thisisagile/easy 8.42.0 → 8.42.3

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.
@@ -2,5 +2,5 @@ import { Struct } from './Struct';
2
2
  import { Id, Json } from '../types';
3
3
  export declare abstract class Child extends Struct {
4
4
  readonly id: Id;
5
- protected merge: (a: Json) => Json;
5
+ protected merge: (a: unknown) => Json;
6
6
  }
@@ -17,7 +17,7 @@ class Child extends Struct_1.Struct {
17
17
  constructor() {
18
18
  super(...arguments);
19
19
  this.id = this.state.id ?? (0, types_1.toId)();
20
- this.merge = (a) => types_1.json.parse({ ...this, ...a, id: this.id });
20
+ this.merge = (a) => types_1.json.merge(this, a, { id: this.id });
21
21
  }
22
22
  }
23
23
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"Child.js","sourceRoot":"","sources":["../../src/domain/Child.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAkC;AAClC,oCAAgD;AAChD,8CAAyC;AAEzC,MAAsB,KAAM,SAAQ,eAAM;IAA1C;;QACuB,OAAE,GAAO,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAA,YAAI,GAAE,CAAC;QAC5C,UAAK,GAAG,CAAC,CAAO,EAAQ,EAAE,CAAC,YAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAClF,CAAC;CAAA;AAFa;IAAX,IAAA,qBAAQ,GAAE;;iCAA2C;AADxD,sBAGC"}
1
+ {"version":3,"file":"Child.js","sourceRoot":"","sources":["../../src/domain/Child.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAkC;AAClC,oCAAgD;AAChD,8CAAyC;AAEzC,MAAsB,KAAM,SAAQ,eAAM;IAA1C;;QACuB,OAAE,GAAO,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAA,YAAI,GAAE,CAAC;QAE5C,UAAK,GAAG,CAAC,CAAU,EAAQ,EAAE,CAAC,YAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;CAAA;AAHa;IAAX,IAAA,qBAAQ,GAAE;;iCAA2C;AADxD,sBAIC"}
@@ -5,5 +5,5 @@ export declare abstract class Entity extends Struct {
5
5
  readonly id: Id;
6
6
  readonly created: Audit;
7
7
  readonly lastModified: Audit;
8
- protected merge: (a: Json) => Json;
8
+ protected merge: (a: unknown) => Json;
9
9
  }
@@ -20,12 +20,10 @@ class Entity extends Struct_1.Struct {
20
20
  this.id = this.state.id ?? (0, types_1.toId)();
21
21
  this.created = new Audit_1.Audit(this.state.created);
22
22
  this.lastModified = new Audit_1.Audit(this.state.lastModified);
23
- this.merge = (a) => types_1.json.parse({
24
- ...this,
25
- ...a,
23
+ this.merge = (a) => types_1.json.merge(this, a, {
26
24
  id: this.id,
27
- created: this.created.toJSON(),
28
- lastModified: new Audit_1.Audit().toJSON(),
25
+ created: this.created,
26
+ lastModified: new Audit_1.Audit(),
29
27
  });
30
28
  }
31
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../src/domain/Entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAkC;AAClC,oCAAgD;AAChD,8CAAyC;AACzC,mCAAgC;AAEhC,MAAsB,MAAO,SAAQ,eAAM;IAA3C;;QACuB,OAAE,GAAO,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAA,YAAI,GAAE,CAAC;QACjC,YAAO,GAAU,IAAI,aAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,iBAAY,GAAU,IAAI,aAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEpE,UAAK,GAAG,CAAC,CAAO,EAAQ,EAAE,CAClC,YAAI,CAAC,KAAK,CAAC;YACT,GAAG,IAAI;YACP,GAAG,CAAC;YACJ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC9B,YAAY,EAAE,IAAI,aAAK,EAAE,CAAC,MAAM,EAAE;SACnC,CAAC,CAAC;IACP,CAAC;CAAA;AAZa;IAAX,IAAA,qBAAQ,GAAE;;kCAA2C;AAC1C;IAAX,IAAA,qBAAQ,GAAE;8BAAmB,aAAK;uCAAiC;AACxD;IAAX,IAAA,qBAAQ,GAAE;8BAAwB,aAAK;4CAAsC;AAHhF,wBAaC"}
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../src/domain/Entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAkC;AAClC,oCAAgD;AAChD,8CAAyC;AACzC,mCAAgC;AAEhC,MAAsB,MAAO,SAAQ,eAAM;IAA3C;;QACuB,OAAE,GAAO,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAA,YAAI,GAAE,CAAC;QACjC,YAAO,GAAU,IAAI,aAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,iBAAY,GAAU,IAAI,aAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEpE,UAAK,GAAG,CAAC,CAAU,EAAQ,EAAE,CAAC,YAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;YAC1D,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,aAAK,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;CAAA;AATa;IAAX,IAAA,qBAAQ,GAAE;;kCAA2C;AAC1C;IAAX,IAAA,qBAAQ,GAAE;8BAAmB,aAAK;uCAAiC;AACxD;IAAX,IAAA,qBAAQ,GAAE;8BAAwB,aAAK;4CAAsC;AAHhF,wBAUC"}
@@ -13,6 +13,7 @@ export declare class Repo<T extends Struct> {
13
13
  add(json: Json): Promise<T>;
14
14
  update(id: Id, json: Json): Promise<T>;
15
15
  remove(id: Id): Promise<boolean>;
16
+ extend(item: T): Promise<T>;
16
17
  validate(item: T): Promise<T>;
17
18
  upsert(id: Id, item: Json): Promise<T>;
18
19
  }
@@ -31,8 +31,8 @@ class Repo {
31
31
  return this.gateway.exists(id);
32
32
  }
33
33
  add(json) {
34
- return (0, validation_1.when)(new this.ctor(json))
35
- .not.isValid.reject()
34
+ return this.extend(new this.ctor(json))
35
+ .then(i => (0, validation_1.when)(i).not.isValid.reject())
36
36
  .then(i => this.validate(i))
37
37
  .then(i => this.gateway.add((0, types_1.toJson)(i)))
38
38
  .then(j => new this.ctor(j));
@@ -42,6 +42,7 @@ class Repo {
42
42
  .byId(id)
43
43
  .then(j => (0, validation_1.when)(j).not.isDefined.reject(types_1.Exception.DoesNotExist))
44
44
  .then(j => new this.ctor(j).update(json))
45
+ .then(i => this.extend(i))
45
46
  .then(i => (0, validation_1.when)(i).not.isValid.reject())
46
47
  .then(i => this.validate(i))
47
48
  .then(i => this.gateway.update((0, types_1.toJson)(i)))
@@ -50,6 +51,9 @@ class Repo {
50
51
  remove(id) {
51
52
  return this.gateway.remove(id);
52
53
  }
54
+ extend(item) {
55
+ return (0, utils_1.resolve)(item);
56
+ }
53
57
  validate(item) {
54
58
  return (0, utils_1.resolve)(item);
55
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Repo.js","sourceRoot":"","sources":["../../src/domain/Repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Repo.js","sourceRoot":"","sources":["../../src/domain/Repo.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,5 @@ export declare abstract class Struct implements Validatable {
6
6
  toJSON(): Json;
7
7
  toString(): string;
8
8
  update: (_add: Json) => Struct;
9
- protected merge: (a: Json) => Json;
9
+ protected merge: (a: unknown) => Json;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Struct.js","sourceRoot":"","sources":["../../src/domain/Struct.ts"],"names":[],"mappings":";;;AAAA,oCAAmD;AACnD,8CAAyC;AAEzC,MAAsB,MAAM;IAC1B,YAA+B,QAAa,EAAE;QAAf,UAAK,GAAL,KAAK,CAAU;QAc9C,WAAM,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,IAAI,CAAC;QAE5B,UAAK,GAAG,CAAC,CAAO,EAAQ,EAAE,CAAC,YAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAhBR,CAAC;IAElD,IAAI,OAAO;QACT,OAAO,IAAA,qBAAQ,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,OAAO,YAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;CAKF;AAlBD,wBAkBC"}
1
+ {"version":3,"file":"Struct.js","sourceRoot":"","sources":["../../src/domain/Struct.ts"],"names":[],"mappings":";;;AAAA,oCAAmD;AACnD,8CAAyC;AAEzC,MAAsB,MAAM;IAC1B,YAA+B,QAAa,EAAE;QAAf,UAAK,GAAL,KAAK,CAAU;QAc9C,WAAM,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,IAAI,CAAC;QAE5B,UAAK,GAAG,CAAC,CAAU,EAAQ,EAAE,CAAC,YAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAhBX,CAAC;IAElD,IAAI,OAAO;QACT,OAAO,IAAA,qBAAQ,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,OAAO,YAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;CAKF;AAlBD,wBAkBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "8.42.0",
3
+ "version": "8.42.3",
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.42.0",
34
+ "@thisisagile/easy-test": "8.42.3",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.8",
37
37
  "@types/validator": "^13.7.1"
@@ -4,5 +4,6 @@ import { required } from '../validation';
4
4
 
5
5
  export abstract class Child extends Struct {
6
6
  @required() readonly id: Id = this.state.id ?? toId();
7
- protected merge = (a: Json): Json => json.parse({ ...this, ...a, id: this.id });
7
+
8
+ protected merge = (a: unknown): Json => json.merge(this, a, { id: this.id });
8
9
  }
@@ -8,12 +8,9 @@ export abstract class Entity extends Struct {
8
8
  @required() readonly created: Audit = new Audit(this.state.created);
9
9
  @required() readonly lastModified: Audit = new Audit(this.state.lastModified);
10
10
 
11
- protected merge = (a: Json): Json =>
12
- json.parse({
13
- ...this,
14
- ...a,
15
- id: this.id,
16
- created: this.created.toJSON(),
17
- lastModified: new Audit().toJSON(),
18
- });
11
+ protected merge = (a: unknown): Json => json.merge(this, a, {
12
+ id: this.id,
13
+ created: this.created,
14
+ lastModified: new Audit(),
15
+ });
19
16
  }
@@ -4,7 +4,8 @@ import { reject, resolve } from '../utils';
4
4
  import { Struct } from './Struct';
5
5
 
6
6
  export class Repo<T extends Struct> {
7
- constructor(protected ctor: Constructor<T>, private readonly gateway: Gateway) {}
7
+ constructor(protected ctor: Constructor<T>, private readonly gateway: Gateway) {
8
+ }
8
9
 
9
10
  all(): Promise<List<T>> {
10
11
  return this.gateway.all().then(js => js.map(j => new this.ctor(j)));
@@ -34,8 +35,9 @@ export class Repo<T extends Struct> {
34
35
  }
35
36
 
36
37
  add(json: Json): Promise<T> {
37
- return when(new this.ctor(json))
38
- .not.isValid.reject()
38
+
39
+ return this.extend(new this.ctor(json))
40
+ .then(i => when(i).not.isValid.reject())
39
41
  .then(i => this.validate(i))
40
42
  .then(i => this.gateway.add(toJson(i)))
41
43
  .then(j => new this.ctor(j));
@@ -45,8 +47,9 @@ export class Repo<T extends Struct> {
45
47
  return this.gateway
46
48
  .byId(id)
47
49
  .then(j => when(j).not.isDefined.reject(Exception.DoesNotExist))
48
- .then(j => new this.ctor(j).update(json))
49
- .then(i => when(i as T).not.isValid.reject())
50
+ .then(j => new this.ctor(j).update(json) as T)
51
+ .then(i => this.extend(i))
52
+ .then(i => when(i).not.isValid.reject())
50
53
  .then(i => this.validate(i))
51
54
  .then(i => this.gateway.update(toJson(i)))
52
55
  .then(j => new this.ctor(j));
@@ -56,6 +59,10 @@ export class Repo<T extends Struct> {
56
59
  return this.gateway.remove(id);
57
60
  }
58
61
 
62
+ extend(item: T): Promise<T> {
63
+ return resolve(item);
64
+ }
65
+
59
66
  validate(item: T): Promise<T> {
60
67
  return resolve(item);
61
68
  }
@@ -18,5 +18,5 @@ export abstract class Struct implements Validatable {
18
18
 
19
19
  update = (_add: Json): Struct => this;
20
20
 
21
- protected merge = (a: Json): Json => json.merge(this, a);
21
+ protected merge = (a: unknown): Json => json.merge(this, a);
22
22
  }