@pocket-architect/core 0.1.6 → 0.1.8

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.
@@ -1,3 +1,4 @@
1
1
  import { Entity } from './Entity';
2
- export declare abstract class AggregateRoot<T> extends Entity<T> {
2
+ import { EntityId } from './EntityId';
3
+ export declare abstract class AggregateRoot<T, H extends EntityId> extends Entity<T, H> {
3
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AggregateRoot.js","sourceRoot":"","sources":["../src/AggregateRoot.ts"],"names":[],"mappings":";;;;AAAA,mCAAkC;AAElC;IAA+C,yCAAS;IAAxD;;IAEA,CAAC;IAAD,oBAAC;AAAD,CAAC,AAFD,CAA+C,eAAM,GAEpD;AAFqB,sCAAa"}
1
+ {"version":3,"file":"AggregateRoot.js","sourceRoot":"","sources":["../src/AggregateRoot.ts"],"names":[],"mappings":";;;;AAAA,mCAAkC;AAGlC;IAAmE,yCAAY;IAA/E;;IAEA,CAAC;IAAD,oBAAC;AAAD,CAAC,AAFD,CAAmE,eAAM,GAExE;AAFqB,sCAAa"}
package/build/Entity.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  import { EntityId } from './EntityId';
2
- export declare abstract class Entity<T> {
3
- protected readonly _id: EntityId;
2
+ export declare abstract class Entity<T, H extends EntityId> {
3
+ protected readonly _id: H;
4
4
  protected props: T;
5
- protected constructor(props: T, id?: EntityId | string | number);
6
- equals(object?: Entity<T>): boolean;
7
- get id(): EntityId;
5
+ protected constructor(props: T, id?: H | string | number);
6
+ equals(object?: Entity<T, H>): boolean;
7
+ get id(): H;
8
+ toPrimitive(): T;
9
+ toJSON(): T;
8
10
  }
package/build/Entity.js CHANGED
@@ -8,10 +8,10 @@ var isEntity = function (v) {
8
8
  var Entity = /** @class */ (function () {
9
9
  function Entity(props, id) {
10
10
  if (id) {
11
- this._id = typeof id === 'object' ? id : new EntityId_1.EntityId(id);
11
+ this._id = (typeof id === 'object' ? id : new EntityId_1.EntityId(id));
12
12
  }
13
13
  else {
14
- this._id = new EntityId_1.EntityId();
14
+ this._id = (new EntityId_1.EntityId());
15
15
  }
16
16
  this.props = props;
17
17
  }
@@ -34,6 +34,12 @@ var Entity = /** @class */ (function () {
34
34
  enumerable: false,
35
35
  configurable: true
36
36
  });
37
+ Entity.prototype.toPrimitive = function () {
38
+ return this.props;
39
+ };
40
+ Entity.prototype.toJSON = function () {
41
+ return this.toPrimitive();
42
+ };
37
43
  return Entity;
38
44
  }());
39
45
  exports.Entity = Entity;
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAEtC,IAAM,QAAQ,GAAG,UAAI,CAAY;IAC/B,OAAO,CAAC,YAAY,MAAM,CAAA;AAC5B,CAAC,CAAA;AAED;IAIE,gBAAsB,KAAQ,EAAE,EAA2B;QACzD,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAEM,uBAAM,GAAb,UAAc,MAAkB;QAC9B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,sBAAI,sBAAE;aAAN;YACE,OAAO,IAAI,CAAC,GAAG,CAAA;QACjB,CAAC;;;OAAA;IACH,aAAC;AAAD,CAAC,AAhCD,IAgCC;AAhCqB,wBAAM"}
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAEtC,IAAM,QAAQ,GAAG,UAAwB,CAAe;IACtD,OAAO,CAAC,YAAY,MAAM,CAAA;AAC5B,CAAC,CAAA;AAED;IAIE,gBAAsB,KAAQ,EAAE,EAAoB;QAClD,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC,GAAG,GAAM,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,GAAM,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAEM,uBAAM,GAAb,UAAc,MAAqB;QACjC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,sBAAI,sBAAE;aAAN;YACE,OAAO,IAAI,CAAC,GAAG,CAAA;QACjB,CAAC;;;OAAA;IAED,4BAAW,GAAX;QACE,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,uBAAM,GAAN;QACE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC;IACH,aAAC;AAAD,CAAC,AAxCD,IAwCC;AAxCqB,wBAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.spec.js","sourceRoot":"","sources":["../src/Entity.spec.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,uCAAsC;AAKtC;IAAyB,sCAAiB;IAA1C;;IAIA,CAAC;IAHQ,iBAAM,GAAb,UAAc,KAAgB,EAAE,EAA0B;QACxD,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IACH,iBAAC;AAAD,CAAC,AAJD,CAAyB,eAAM,GAI9B;AAED,QAAQ,CAAC,QAAQ,EAAE;IACjB,IAAI,MAAkB,CAAC;IAEvB,SAAS,CAAC;QACR,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE;;;YACL,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;YAE1D,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU;YACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,gBAAgB;YAC5D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO;YAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAa,EAAE,EAAE,EAAE,IAAI,mBAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa;YACrF,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;YAEvE,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU;YACvD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;;;SAC/E,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"Entity.spec.js","sourceRoot":"","sources":["../src/Entity.spec.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,uCAAsC;AAKtC;IAAyB,sCAA2B;IAApD;;IAIA,CAAC;IAHQ,iBAAM,GAAb,UAAc,KAAgB,EAAE,EAA0B;QACxD,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IACH,iBAAC;AAAD,CAAC,AAJD,CAAyB,eAAM,GAI9B;AAED,QAAQ,CAAC,QAAQ,EAAE;IACjB,IAAI,MAAkB,CAAC;IAEvB,SAAS,CAAC;QACR,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE;;;YACL,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;YAE1D,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU;YACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,gBAAgB;YAC5D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO;YAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAa,EAAE,EAAE,EAAE,IAAI,mBAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa;YACrF,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;YAEvE,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU;YACvD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;;;SAC/E,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var EntityId_1 = require("./EntityId");
5
+ var TestId = /** @class */ (function (_super) {
6
+ tslib_1.__extends(TestId, _super);
7
+ function TestId() {
8
+ return _super !== null && _super.apply(this, arguments) || this;
9
+ }
10
+ return TestId;
11
+ }(EntityId_1.EntityId));
12
+ describe('ValueObject', function () {
13
+ test('base', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
14
+ var id, id2, id3;
15
+ return tslib_1.__generator(this, function (_a) {
16
+ id = new TestId('1');
17
+ id2 = new EntityId_1.EntityId('1');
18
+ id3 = new TestId('1');
19
+ expect(id).toEqual(id3);
20
+ expect(id).not.toEqual(id2);
21
+ return [2 /*return*/];
22
+ });
23
+ }); });
24
+ });
25
+ //# sourceMappingURL=EntityId.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityId.spec.js","sourceRoot":"","sources":["../src/EntityId.spec.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAEtC;IAAqB,kCAAQ;IAA7B;;IACA,CAAC;IAAD,aAAC;AAAD,CAAC,AADD,CAAqB,mBAAQ,GAC5B;AAED,QAAQ,CAAC,aAAa,EAAE;IACtB,IAAI,CAAC,MAAM,EAAE;;;YACL,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,GAAG,GAAG,IAAI,mBAAQ,CAAC,GAAG,CAAC,CAAC;YACxB,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;;;SAC7B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pocket-architect/core",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -1,5 +1,6 @@
1
1
  import { Entity } from './Entity';
2
+ import { EntityId } from './EntityId';
2
3
 
3
- export abstract class AggregateRoot<T> extends Entity<T> {
4
+ export abstract class AggregateRoot<T, H extends EntityId> extends Entity<T, H> {
4
5
 
5
6
  }
@@ -4,7 +4,7 @@ import { EntityId } from './EntityId';
4
4
  interface TestProps {
5
5
  name: string;
6
6
  }
7
- class TestEntity extends Entity<TestProps> {
7
+ class TestEntity extends Entity<TestProps, EntityId> {
8
8
  static create(props: TestProps, id?:EntityId|string|number): TestEntity {
9
9
  return new TestEntity(props, id);
10
10
  }
package/src/Entity.ts CHANGED
@@ -1,23 +1,23 @@
1
1
  import { EntityId } from './EntityId';
2
2
 
3
- const isEntity = <T>(v: Entity<T>): v is Entity<T> => {
3
+ const isEntity = <T, H extends EntityId>(v: Entity<T, H>): v is Entity<T, H> => {
4
4
  return v instanceof Entity
5
5
  }
6
6
 
7
- export abstract class Entity<T> {
8
- protected readonly _id: EntityId;
9
- protected props: T
7
+ export abstract class Entity<T, H extends EntityId> {
8
+ protected readonly _id: H;
9
+ protected props: T;
10
10
 
11
- protected constructor(props: T, id?: EntityId|string|number) {
11
+ protected constructor(props: T, id?: H|string|number) {
12
12
  if (id) {
13
- this._id = typeof id === 'object' ? id : new EntityId(id);
13
+ this._id = <H>(typeof id === 'object' ? id : new EntityId(id));
14
14
  } else {
15
- this._id = new EntityId();
15
+ this._id = <H>(new EntityId());
16
16
  }
17
17
  this.props = props
18
18
  }
19
19
 
20
- public equals(object?: Entity<T>): boolean {
20
+ public equals(object?: Entity<T, H>): boolean {
21
21
  if (object === null || object === undefined) {
22
22
  return false
23
23
  }
@@ -33,7 +33,15 @@ export abstract class Entity<T> {
33
33
  return this._id.equals(object._id);
34
34
  }
35
35
 
36
- get id(): EntityId {
36
+ get id(): H {
37
37
  return this._id
38
38
  }
39
+
40
+ toPrimitive(): T {
41
+ return this.props
42
+ }
43
+
44
+ toJSON(): T {
45
+ return this.toPrimitive()
46
+ }
39
47
  }
@@ -0,0 +1,14 @@
1
+ import { EntityId } from './EntityId';
2
+
3
+ class TestId extends EntityId {
4
+ }
5
+
6
+ describe('ValueObject', () => {
7
+ test('base', async () => {
8
+ const id = new TestId('1');
9
+ const id2 = new EntityId('1');
10
+ const id3 = new TestId('1');
11
+ expect(id).toEqual(id3);
12
+ expect(id).not.toEqual(id2);
13
+ });
14
+ });