@pocket-architect/core 0.1.16 → 0.1.18
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/build/EntityId.js +7 -0
- package/build/EntityId.js.map +1 -1
- package/build/EntityId.spec.js +18 -0
- package/build/EntityId.spec.js.map +1 -1
- package/build/error/HashError.d.ts +3 -0
- package/build/error/HashError.js +15 -0
- package/build/error/HashError.js.map +1 -0
- package/build/index.d.ts +2 -1
- package/build/index.js +3 -1
- package/build/index.js.map +1 -1
- package/package.json +1 -1
- package/src/EntityId.spec.ts +15 -0
- package/src/EntityId.ts +7 -0
- package/src/error/HashError.ts +8 -0
- package/src/index.ts +3 -1
package/build/EntityId.js
CHANGED
|
@@ -5,6 +5,7 @@ var tslib_1 = require("tslib");
|
|
|
5
5
|
var uuid_by_string_1 = tslib_1.__importDefault(require("uuid-by-string"));
|
|
6
6
|
var cuid2_1 = require("@paralleldrive/cuid2");
|
|
7
7
|
var hashids_1 = tslib_1.__importDefault(require("hashids"));
|
|
8
|
+
var HashError_1 = require("./error/HashError");
|
|
8
9
|
var EntityId = /** @class */ (function () {
|
|
9
10
|
function EntityId(recordId, isHash, uuid) {
|
|
10
11
|
if (recordId === void 0) { recordId = null; }
|
|
@@ -38,8 +39,14 @@ var EntityId = /** @class */ (function () {
|
|
|
38
39
|
return hashids.encode(this.toPrimitive().toString());
|
|
39
40
|
};
|
|
40
41
|
EntityId.prototype.fromHash = function (hash) {
|
|
42
|
+
if (!hash) {
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
41
45
|
var hashids = new (hashids_1.default.bind.apply(hashids_1.default, tslib_1.__spreadArray([void 0], this.hashOptions, false)))();
|
|
42
46
|
var num = hashids.decode(hash)[0];
|
|
47
|
+
if (!num) {
|
|
48
|
+
throw new HashError_1.HashError("Invalid hash ".concat(hash));
|
|
49
|
+
}
|
|
43
50
|
this._recordId = (typeof this._recordId === 'string' ? num.toString() : num);
|
|
44
51
|
this.createUUID();
|
|
45
52
|
return this;
|
package/build/EntityId.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityId.js","sourceRoot":"","sources":["../src/EntityId.ts"],"names":[],"mappings":";;;;AAAA,0EAAuC;AACvC,8CAA+C;AAC/C,4DAA8B;
|
|
1
|
+
{"version":3,"file":"EntityId.js","sourceRoot":"","sources":["../src/EntityId.ts"],"names":[],"mappings":";;;;AAAA,0EAAuC;AACvC,8CAA+C;AAC/C,4DAA8B;AAC9B,+CAA4C;AAE5C;IAIE,kBAAY,QAAkB,EAAE,MAAsB,EAAE,IAAmB;QAA/D,yBAAA,EAAA,eAAkB;QAAE,uBAAA,EAAA,cAAsB;QAAE,qBAAA,EAAA,WAAmB;QAHjE,cAAS,GAAW,IAAI,CAAC;QACzB,UAAK,GAAW,IAAI,CAAC;QAG7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,CAAC,QAAkB,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,6BAAU,GAAlB;QACE,IAAI,CAAC,KAAK,GAAG,IAAA,wBAAU,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAA,gBAAQ,GAAE,EAAE,IAAA,wBAAU,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACtH,CAAC;IAED,sBAAI,iCAAW;aAAf;YACE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;;;OAAA;IAED,yBAAM,GAAN;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,IAAM,OAAO,QAAO,iBAAO,YAAP,iBAAO,kCAAI,IAAI,CAAC,WAAW,YAAC,CAAC;QACjD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,2BAAQ,GAAR,UAAS,IAAY;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAM,OAAO,QAAO,iBAAO,YAAP,iBAAO,kCAAI,IAAI,CAAC,WAAW,YAAC,CAAC;QACjD,IAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,qBAAS,CAAC,uBAAgB,IAAI,CAAE,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,SAAS,GAAM,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8BAAW,GAAX;QACE,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,2BAAQ,GAAR;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,yBAAM,GAAN,UAAO,EAAe;QACpB,OAAO,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,CAAC;IACjC,CAAC;IACH,eAAC;AAAD,CAAC,AAvDD,IAuDC;AAvDY,4BAAQ"}
|
package/build/EntityId.spec.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var tslib_1 = require("tslib");
|
|
4
4
|
var EntityId_1 = require("./EntityId");
|
|
5
|
+
var HashError_1 = require("./error/HashError");
|
|
5
6
|
var TestId = /** @class */ (function (_super) {
|
|
6
7
|
tslib_1.__extends(TestId, _super);
|
|
7
8
|
function TestId() {
|
|
@@ -30,6 +31,23 @@ describe('ValueObject', function () {
|
|
|
30
31
|
return [2 /*return*/];
|
|
31
32
|
});
|
|
32
33
|
}); });
|
|
34
|
+
test('fromHash', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
35
|
+
return tslib_1.__generator(this, function (_a) {
|
|
36
|
+
expect.assertions(4);
|
|
37
|
+
expect((new Test2Id(undefined, true)).toPrimitive()).toEqual(null);
|
|
38
|
+
expect((new Test2Id(null, true)).toPrimitive()).toEqual(null);
|
|
39
|
+
try {
|
|
40
|
+
new Test2Id('123', true);
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
// eslint-disable-next-line jest/no-conditional-expect
|
|
44
|
+
expect(err).toBeInstanceOf(HashError_1.HashError);
|
|
45
|
+
// eslint-disable-next-line jest/no-conditional-expect
|
|
46
|
+
expect(err.message).toEqual('Invalid hash 123');
|
|
47
|
+
}
|
|
48
|
+
return [2 /*return*/];
|
|
49
|
+
});
|
|
50
|
+
}); });
|
|
33
51
|
test('toHash', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
34
52
|
var id, id2, id3;
|
|
35
53
|
return tslib_1.__generator(this, function (_a) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityId.spec.js","sourceRoot":"","sources":["../src/EntityId.spec.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;
|
|
1
|
+
{"version":3,"file":"EntityId.spec.js","sourceRoot":"","sources":["../src/EntityId.spec.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AACtC,+CAA4C;AAE5C;IAAqB,kCAAgB;IAArC;;IACA,CAAC;IAAD,aAAC;AAAD,CAAC,AADD,CAAqB,mBAAQ,GAC5B;AAED;IAAsB,mCAAgB;IAAtC;;IACA,CAAC;IAAD,cAAC;AAAD,CAAC,AADD,CAAsB,mBAAQ,GAC7B;AAED,QAAQ,CAAC,aAAa,EAAE;IACtB,IAAI,CAAC,MAAM,EAAE;;;YACL,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,GAAG,GAAG,IAAI,mBAAQ,CAAC,GAAG,CAAC,CAAC;YACxB,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEtB,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;;SACzC,CAAC,CAAC;IACH,IAAI,CAAC,UAAU,EAAE;;YACf,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAErB,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE9D,IAAI,CAAC;gBACH,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,sDAAsD;gBACtD,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,qBAAS,CAAC,CAAC;gBACtC,sDAAsD;gBACtD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAClD,CAAC;;;SACF,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,EAAE;;;YACP,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxD,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;YAEhE,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEnD,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,cAAM,OAAA,GAAG,CAAC,MAAM,EAAE,EAAZ,CAAY,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;;;SACrE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HashError = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var HashError = /** @class */ (function (_super) {
|
|
6
|
+
tslib_1.__extends(HashError, _super);
|
|
7
|
+
function HashError(message) {
|
|
8
|
+
var _this = _super.call(this, message) || this;
|
|
9
|
+
Object.setPrototypeOf(_this, HashError.prototype);
|
|
10
|
+
return _this;
|
|
11
|
+
}
|
|
12
|
+
return HashError;
|
|
13
|
+
}(Error));
|
|
14
|
+
exports.HashError = HashError;
|
|
15
|
+
//# sourceMappingURL=HashError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HashError.js","sourceRoot":"","sources":["../../src/error/HashError.ts"],"names":[],"mappings":";;;;AACA;IACwB,qCAAK;IAC3B,mBAAY,OAAe;QACzB,YAAA,MAAK,YAAC,OAAO,CAAC,SAAC;QACf,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;;IACnD,CAAC;IACH,gBAAC;AAAD,CAAC,AAND,CACwB,KAAK,GAK5B;AALK,8BAAS"}
|
package/build/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ import { Entity } from './Entity';
|
|
|
2
2
|
import { EntityId } from './EntityId';
|
|
3
3
|
import { ValueObject } from './ValueObject';
|
|
4
4
|
import { AggregateRoot } from './AggregateRoot';
|
|
5
|
-
|
|
5
|
+
import { HashError } from './error/HashError';
|
|
6
|
+
export { Entity, EntityId, ValueObject, AggregateRoot, HashError };
|
package/build/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AggregateRoot = exports.ValueObject = exports.EntityId = exports.Entity = void 0;
|
|
3
|
+
exports.HashError = exports.AggregateRoot = exports.ValueObject = exports.EntityId = exports.Entity = void 0;
|
|
4
4
|
var Entity_1 = require("./Entity");
|
|
5
5
|
Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return Entity_1.Entity; } });
|
|
6
6
|
var EntityId_1 = require("./EntityId");
|
|
@@ -9,4 +9,6 @@ var ValueObject_1 = require("./ValueObject");
|
|
|
9
9
|
Object.defineProperty(exports, "ValueObject", { enumerable: true, get: function () { return ValueObject_1.ValueObject; } });
|
|
10
10
|
var AggregateRoot_1 = require("./AggregateRoot");
|
|
11
11
|
Object.defineProperty(exports, "AggregateRoot", { enumerable: true, get: function () { return AggregateRoot_1.AggregateRoot; } });
|
|
12
|
+
var HashError_1 = require("./error/HashError");
|
|
13
|
+
Object.defineProperty(exports, "HashError", { enumerable: true, get: function () { return HashError_1.HashError; } });
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAOhC,uFAPO,eAAM,OAOP;AANR,uCAAsC;AAOpC,yFAPO,mBAAQ,OAOP;AANV,6CAA4C;AAO1C,4FAPO,yBAAW,OAOP;AANb,iDAAgD;AAO9C,8FAPO,6BAAa,OAOP;AANf,+CAA8C;AAO5C,0FAPO,qBAAS,OAOP"}
|
package/package.json
CHANGED
package/src/EntityId.spec.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EntityId } from './EntityId';
|
|
2
|
+
import {HashError} from "./error/HashError";
|
|
2
3
|
|
|
3
4
|
class TestId extends EntityId<number> {
|
|
4
5
|
}
|
|
@@ -17,7 +18,21 @@ describe('ValueObject', () => {
|
|
|
17
18
|
const id4 = new Test2Id('9KdMR', true);
|
|
18
19
|
expect(id4.toPrimitive()).toEqual('123')
|
|
19
20
|
});
|
|
21
|
+
test('fromHash', async () => {
|
|
22
|
+
expect.assertions(4);
|
|
20
23
|
|
|
24
|
+
expect((new Test2Id(undefined, true)).toPrimitive()).toEqual(null);
|
|
25
|
+
expect((new Test2Id(null, true)).toPrimitive()).toEqual(null);
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
new Test2Id('123', true)
|
|
29
|
+
} catch (err) {
|
|
30
|
+
// eslint-disable-next-line jest/no-conditional-expect
|
|
31
|
+
expect(err).toBeInstanceOf(HashError);
|
|
32
|
+
// eslint-disable-next-line jest/no-conditional-expect
|
|
33
|
+
expect(err.message).toEqual('Invalid hash 123');
|
|
34
|
+
}
|
|
35
|
+
});
|
|
21
36
|
test('toHash', async () => {
|
|
22
37
|
const id = new Test2Id('123');
|
|
23
38
|
expect(id.toHash()).toEqual('9KdMR');
|
package/src/EntityId.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import createUUID from 'uuid-by-string'
|
|
2
2
|
import { createId } from '@paralleldrive/cuid2'
|
|
3
3
|
import Hashids from 'hashids';
|
|
4
|
+
import {HashError} from "./error/HashError";
|
|
4
5
|
|
|
5
6
|
export class EntityId<T> {
|
|
6
7
|
protected _recordId: T|null = null;
|
|
@@ -33,8 +34,14 @@ export class EntityId<T> {
|
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
fromHash(hash: string) : EntityId<T> {
|
|
37
|
+
if (!hash) {
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
36
40
|
const hashids = new Hashids(...this.hashOptions);
|
|
37
41
|
const num = hashids.decode(hash)[0];
|
|
42
|
+
if (!num) {
|
|
43
|
+
throw new HashError(`Invalid hash ${hash}`);
|
|
44
|
+
}
|
|
38
45
|
this._recordId = <T>(typeof this._recordId === 'string' ? num.toString() : num);
|
|
39
46
|
this.createUUID();
|
|
40
47
|
return this;
|
package/src/index.ts
CHANGED
|
@@ -2,10 +2,12 @@ import { Entity } from './Entity';
|
|
|
2
2
|
import { EntityId } from './EntityId';
|
|
3
3
|
import { ValueObject } from './ValueObject';
|
|
4
4
|
import { AggregateRoot } from './AggregateRoot';
|
|
5
|
+
import { HashError } from './error/HashError';
|
|
5
6
|
|
|
6
7
|
export {
|
|
7
8
|
Entity,
|
|
8
9
|
EntityId,
|
|
9
10
|
ValueObject,
|
|
10
|
-
AggregateRoot
|
|
11
|
+
AggregateRoot,
|
|
12
|
+
HashError
|
|
11
13
|
}
|