@pocket-architect/core 0.1.19 → 0.1.23
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/.eslintignore +1 -0
- package/build/Entity.d.ts +2 -1
- package/build/Entity.js +9 -2
- package/build/Entity.js.map +1 -1
- package/build/Entity.spec.js +9 -2
- package/build/Entity.spec.js.map +1 -1
- package/build/EntityId.d.ts +1 -0
- package/build/EntityId.js +3 -0
- package/build/EntityId.js.map +1 -1
- package/build/application/Application.d.ts +10 -0
- package/build/application/Application.js +43 -0
- package/build/application/Application.js.map +1 -0
- package/build/application/ApplicationModule.d.ts +5 -0
- package/build/application/ApplicationModule.js +10 -0
- package/build/application/ApplicationModule.js.map +1 -0
- package/build/bootstrap.d.ts +14 -0
- package/build/bootstrap.js +88 -0
- package/build/bootstrap.js.map +1 -0
- package/build/bootstrap.spec.d.ts +1 -0
- package/build/bootstrap.spec.js +144 -0
- package/build/bootstrap.spec.js.map +1 -0
- package/build/eventBus/InMemoryEventBus.d.ts +6 -2
- package/build/eventBus/InMemoryEventBus.js +15 -10
- package/build/eventBus/InMemoryEventBus.js.map +1 -1
- package/build/helpers.d.ts +1 -0
- package/build/helpers.js +37 -0
- package/build/helpers.js.map +1 -0
- package/build/helpers.spec.d.ts +1 -0
- package/build/helpers.spec.js +70 -0
- package/build/helpers.spec.js.map +1 -0
- package/build/index.d.ts +8 -1
- package/build/index.js +11 -1
- package/build/index.js.map +1 -1
- package/package.json +2 -1
- package/src/Entity.spec.ts +7 -2
- package/src/Entity.ts +12 -4
- package/src/EntityId.ts +4 -0
- package/src/application/Application.ts +24 -0
- package/src/application/ApplicationModule.ts +7 -0
- package/src/bootstrap.spec.ts +100 -0
- package/src/bootstrap.ts +87 -0
- package/src/eventBus/InMemoryEventBus.ts +19 -5
- package/src/helpers.spec.ts +65 -0
- package/src/helpers.ts +32 -0
- package/src/index.ts +17 -1
- package/tests/testapp/domain/test/service/TestService.d.ts +4 -0
- package/tests/testapp/domain/test/service/TestService.js +13 -0
- package/tests/testapp/domain/test/service/TestService.js.map +1 -0
- package/tests/testapp/domain/test/service/TestService.ts +8 -0
- package/tests/testapp/infra/test/providers/TestProvider.d.ts +4 -0
- package/tests/testapp/infra/test/providers/TestProvider.js +13 -0
- package/tests/testapp/infra/test/providers/TestProvider.js.map +1 -0
- package/tests/testapp/infra/test/providers/TestProvider.ts +8 -0
- package/tsconfig.json +1 -1
package/.eslintignore
CHANGED
package/build/Entity.d.ts
CHANGED
package/build/Entity.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Entity = void 0;
|
|
4
4
|
var EntityId_1 = require("./EntityId");
|
|
5
|
+
var helpers_1 = require("./helpers");
|
|
5
6
|
var isEntity = function (v) {
|
|
6
7
|
return v instanceof Entity;
|
|
7
8
|
};
|
|
@@ -27,8 +28,9 @@ var Entity = /** @class */ (function () {
|
|
|
27
28
|
}
|
|
28
29
|
var diffs = {};
|
|
29
30
|
var copy = JSON.parse(this._snapshot);
|
|
31
|
+
var snapshotObj = (0, helpers_1.createSnapshot)(this.props);
|
|
30
32
|
for (var key in this.props) {
|
|
31
|
-
if (JSON.stringify(
|
|
33
|
+
if (JSON.stringify(snapshotObj[key]) !== JSON.stringify(copy[key])) {
|
|
32
34
|
diffs[key] = this.props[key];
|
|
33
35
|
}
|
|
34
36
|
}
|
|
@@ -38,7 +40,7 @@ var Entity = /** @class */ (function () {
|
|
|
38
40
|
if (!this._snapshot) {
|
|
39
41
|
return false;
|
|
40
42
|
}
|
|
41
|
-
return this._snapshot !== JSON.stringify(this.props);
|
|
43
|
+
return this._snapshot !== JSON.stringify((0, helpers_1.createSnapshot)(this.props));
|
|
42
44
|
};
|
|
43
45
|
Entity.prototype.equals = function (object) {
|
|
44
46
|
if (object === null || object === undefined) {
|
|
@@ -62,9 +64,14 @@ var Entity = /** @class */ (function () {
|
|
|
62
64
|
Entity.prototype.toPrimitive = function () {
|
|
63
65
|
return this.props;
|
|
64
66
|
};
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
68
|
Entity.prototype.toJSON = function () {
|
|
66
69
|
return this.toPrimitive();
|
|
67
70
|
};
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
+
Entity.prototype.toSnapshot = function () {
|
|
73
|
+
return this.toPrimitive();
|
|
74
|
+
};
|
|
68
75
|
return Entity;
|
|
69
76
|
}());
|
|
70
77
|
exports.Entity = Entity;
|
package/build/Entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;
|
|
1
|
+
{"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":"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"}
|
package/build/Entity.spec.js
CHANGED
|
@@ -18,12 +18,19 @@ var TestEntity = /** @class */ (function (_super) {
|
|
|
18
18
|
enumerable: false,
|
|
19
19
|
configurable: true
|
|
20
20
|
});
|
|
21
|
+
Object.defineProperty(TestEntity.prototype, "testId", {
|
|
22
|
+
set: function (val) {
|
|
23
|
+
this.props.testId = val;
|
|
24
|
+
},
|
|
25
|
+
enumerable: false,
|
|
26
|
+
configurable: true
|
|
27
|
+
});
|
|
21
28
|
return TestEntity;
|
|
22
29
|
}(Entity_1.Entity));
|
|
23
30
|
describe('Entity', function () {
|
|
24
31
|
var entity;
|
|
25
32
|
beforeAll(function () {
|
|
26
|
-
entity = TestEntity.create({ name: 'test' }, '1');
|
|
33
|
+
entity = TestEntity.create({ name: 'test', testId: new EntityId_1.EntityId('1') }, '1');
|
|
27
34
|
});
|
|
28
35
|
test('base', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
29
36
|
var entityNew, entity2, entity3;
|
|
@@ -48,7 +55,7 @@ describe('Entity', function () {
|
|
|
48
55
|
var snapshot;
|
|
49
56
|
return tslib_1.__generator(this, function (_a) {
|
|
50
57
|
snapshot = entity.snapshot();
|
|
51
|
-
expect(snapshot).toEqual({ name: 'test' });
|
|
58
|
+
expect(snapshot).toEqual({ name: 'test', testId: '3D4WX' });
|
|
52
59
|
expect(function () {
|
|
53
60
|
snapshot.name = 'changed';
|
|
54
61
|
}).toThrow();
|
package/build/Entity.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entity.spec.js","sourceRoot":"","sources":["../src/Entity.spec.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,uCAAsC;
|
|
1
|
+
{"version":3,"file":"Entity.spec.js","sourceRoot":"","sources":["../src/Entity.spec.ts"],"names":[],"mappings":"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"}
|
package/build/EntityId.d.ts
CHANGED
package/build/EntityId.js
CHANGED
|
@@ -57,6 +57,9 @@ var EntityId = /** @class */ (function () {
|
|
|
57
57
|
EntityId.prototype.toString = function () {
|
|
58
58
|
return this._uuid;
|
|
59
59
|
};
|
|
60
|
+
EntityId.prototype.toJSON = function () {
|
|
61
|
+
return this.toHash();
|
|
62
|
+
};
|
|
60
63
|
EntityId.prototype.equals = function (id) {
|
|
61
64
|
return this._uuid === id._uuid;
|
|
62
65
|
};
|
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;AAC9B,+CAA4C;AAE5C;IAIE,kBAAY,QAAyB,EAAE,MAAsB,EAAE,IAAmB;QAAtE,yBAAA,EAAA,eAAyB;QAAE,uBAAA,EAAA,cAAsB;QAAE,qBAAA,EAAA,WAAmB;QAHxE,cAAS,GAAW,IAAI,CAAC;QACzB,UAAK,GAAW,IAAI,CAAC;QAG7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAa,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,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;IAES,2BAAQ,GAAlB,UAAmB,IAAY;QAC7B,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,
|
|
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,QAAyB,EAAE,MAAsB,EAAE,IAAmB;QAAtE,yBAAA,EAAA,eAAyB;QAAE,uBAAA,EAAA,cAAsB;QAAE,qBAAA,EAAA,WAAmB;QAHxE,cAAS,GAAW,IAAI,CAAC;QACzB,UAAK,GAAW,IAAI,CAAC;QAG7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAa,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,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;IAES,2BAAQ,GAAlB,UAAmB,IAAY;QAC7B,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;QACE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,yBAAM,GAAN,UAAO,EAAe;QACpB,OAAO,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,CAAC;IACjC,CAAC;IACH,eAAC;AAAD,CAAC,AA3DD,IA2DC;AA3DY,4BAAQ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseBootstrapEnv } from "../bootstrap";
|
|
2
|
+
import type { ApplicationModule } from "./ApplicationModule";
|
|
3
|
+
export declare abstract class Application {
|
|
4
|
+
protected _modules: ApplicationModule[];
|
|
5
|
+
abstract initApplication(scope: BaseBootstrapEnv): Promise<void>;
|
|
6
|
+
prepareApplication?(scope: BaseBootstrapEnv): Promise<void>;
|
|
7
|
+
postInitApplication?(scope: BaseBootstrapEnv): Promise<void>;
|
|
8
|
+
initModules(modules: ApplicationModule[], scope: BaseBootstrapEnv): Promise<void>;
|
|
9
|
+
get modules(): ApplicationModule[];
|
|
10
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Application = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var Application = /** @class */ (function () {
|
|
6
|
+
function Application() {
|
|
7
|
+
this._modules = [];
|
|
8
|
+
}
|
|
9
|
+
Application.prototype.initModules = function (modules, scope) {
|
|
10
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
11
|
+
var _i, modules_1, module_1;
|
|
12
|
+
return tslib_1.__generator(this, function (_a) {
|
|
13
|
+
switch (_a.label) {
|
|
14
|
+
case 0:
|
|
15
|
+
_i = 0, modules_1 = modules;
|
|
16
|
+
_a.label = 1;
|
|
17
|
+
case 1:
|
|
18
|
+
if (!(_i < modules_1.length)) return [3 /*break*/, 4];
|
|
19
|
+
module_1 = modules_1[_i];
|
|
20
|
+
return [4 /*yield*/, module_1.initModule(this, scope)];
|
|
21
|
+
case 2:
|
|
22
|
+
_a.sent();
|
|
23
|
+
this._modules.push(module_1);
|
|
24
|
+
_a.label = 3;
|
|
25
|
+
case 3:
|
|
26
|
+
_i++;
|
|
27
|
+
return [3 /*break*/, 1];
|
|
28
|
+
case 4: return [2 /*return*/];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
Object.defineProperty(Application.prototype, "modules", {
|
|
34
|
+
get: function () {
|
|
35
|
+
return this._modules;
|
|
36
|
+
},
|
|
37
|
+
enumerable: false,
|
|
38
|
+
configurable: true
|
|
39
|
+
});
|
|
40
|
+
return Application;
|
|
41
|
+
}());
|
|
42
|
+
exports.Application = Application;
|
|
43
|
+
//# sourceMappingURL=Application.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Application.js","sourceRoot":"","sources":["../../src/application/Application.ts"],"names":[],"mappings":";;;;AAGA;IAAA;QAEY,aAAQ,GAAwB,EAAE,CAAC;IAkB/C,CAAC;IAVO,iCAAW,GAAjB,UAAkB,OAA4B,EAAE,KAAuB;;;;;;8BACzC,EAAP,mBAAO;;;6BAAP,CAAA,qBAAO,CAAA;wBAAvB;wBACH,qBAAM,QAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAA;;wBAApC,SAAoC,CAAC;wBACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAM,CAAC,CAAC;;;wBAFR,IAAO,CAAA;;;;;;KAI7B;IAED,sBAAI,gCAAO;aAAX;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;;;OAAA;IACH,kBAAC;AAAD,CAAC,AApBD,IAoBC;AAnBc,kCAAW"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApplicationModule = void 0;
|
|
4
|
+
var ApplicationModule = /** @class */ (function () {
|
|
5
|
+
function ApplicationModule() {
|
|
6
|
+
}
|
|
7
|
+
return ApplicationModule;
|
|
8
|
+
}());
|
|
9
|
+
exports.ApplicationModule = ApplicationModule;
|
|
10
|
+
//# sourceMappingURL=ApplicationModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationModule.js","sourceRoot":"","sources":["../../src/application/ApplicationModule.ts"],"names":[],"mappings":";;;AAGA;IAAA;IAGA,CAAC;IAAD,wBAAC;AAAD,CAAC,AAHD,IAGC;AAFc,8CAAiB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AwilixContainer } from 'awilix';
|
|
2
|
+
import { Application } from "./application/Application";
|
|
3
|
+
export interface BootstrapOptions {
|
|
4
|
+
appFolder: string;
|
|
5
|
+
domainsFolder: string;
|
|
6
|
+
infraFolder: string;
|
|
7
|
+
scanFolders?: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface BaseBootstrapEnv {
|
|
10
|
+
app: Application;
|
|
11
|
+
env: string;
|
|
12
|
+
DIContainer: AwilixContainer<BaseBootstrapEnv>;
|
|
13
|
+
}
|
|
14
|
+
export declare function bootstrap(app: Application, { appFolder, domainsFolder, infraFolder, scanFolders }: BootstrapOptions, env?: string): Promise<void>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bootstrap = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var awilix_1 = require("awilix");
|
|
6
|
+
function bootstrap(app, _a, env) {
|
|
7
|
+
var appFolder = _a.appFolder, domainsFolder = _a.domainsFolder, infraFolder = _a.infraFolder, scanFolders = _a.scanFolders;
|
|
8
|
+
if (env === void 0) { env = 'dev'; }
|
|
9
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
10
|
+
function warmupSingletons(container) {
|
|
11
|
+
var _a;
|
|
12
|
+
var regs = (_a = container.registrations) !== null && _a !== void 0 ? _a : {};
|
|
13
|
+
var names = Object.keys(regs);
|
|
14
|
+
for (var _i = 0, names_1 = names; _i < names_1.length; _i++) {
|
|
15
|
+
var name = names_1[_i];
|
|
16
|
+
var r = regs[name];
|
|
17
|
+
// Awilix зберігає lifetime всередині resolver'а (зазвичай r.lifetime)
|
|
18
|
+
if ((r === null || r === void 0 ? void 0 : r.lifetime) === awilix_1.Lifetime.SINGLETON) {
|
|
19
|
+
// важливо: резолвимо саме з ROOT
|
|
20
|
+
container.resolve(name);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
var rootContainer, scope, folders, err_1;
|
|
25
|
+
return tslib_1.__generator(this, function (_b) {
|
|
26
|
+
switch (_b.label) {
|
|
27
|
+
case 0:
|
|
28
|
+
_b.trys.push([0, 6, , 7]);
|
|
29
|
+
if (!appFolder) {
|
|
30
|
+
throw new Error('`appFolder` is required');
|
|
31
|
+
}
|
|
32
|
+
if (!domainsFolder) {
|
|
33
|
+
throw new Error('`domainsFolder` is required');
|
|
34
|
+
}
|
|
35
|
+
if (!infraFolder) {
|
|
36
|
+
throw new Error('`infraFolder` is required');
|
|
37
|
+
}
|
|
38
|
+
rootContainer = (0, awilix_1.createContainer)({
|
|
39
|
+
injectionMode: awilix_1.InjectionMode.PROXY
|
|
40
|
+
});
|
|
41
|
+
rootContainer.register({
|
|
42
|
+
app: (0, awilix_1.asValue)(app),
|
|
43
|
+
env: (0, awilix_1.asValue)(env),
|
|
44
|
+
});
|
|
45
|
+
scope = rootContainer.createScope();
|
|
46
|
+
scope.register({
|
|
47
|
+
DIContainer: (0, awilix_1.asValue)(scope)
|
|
48
|
+
});
|
|
49
|
+
folders = [];
|
|
50
|
+
// app folder
|
|
51
|
+
// folders.push(`${appFolder}/**/!(*.spec|*.d|index).{ts,js}`);
|
|
52
|
+
// domains folder
|
|
53
|
+
folders.push("".concat(domainsFolder, "/**/!(*.spec|*.d).{ts,js}"));
|
|
54
|
+
folders.push("".concat(domainsFolder, "/**/service/**/!(*.spec|*.d).{ts,js}"));
|
|
55
|
+
// infra folder
|
|
56
|
+
folders.push("".concat(infraFolder, "/**/repository/**/!(*.spec|*.d).{ts,js}"));
|
|
57
|
+
// провайдери реєструються у глобальному контейнері як синглтони і потім через warmupSingletons створюються одразу
|
|
58
|
+
// щоб перевірити чи не використовують вони залежності з transient lifetime
|
|
59
|
+
rootContainer.loadModules([
|
|
60
|
+
["".concat(infraFolder, "/**/providers/**/!(*.spec|*.d).{ts,js}"), { lifetime: awilix_1.Lifetime.SINGLETON }]
|
|
61
|
+
], { resolverOptions: {} });
|
|
62
|
+
scope.loadModules(tslib_1.__spreadArray(tslib_1.__spreadArray([], folders, true), (scanFolders !== null && scanFolders !== void 0 ? scanFolders : []), true), { resolverOptions: {} });
|
|
63
|
+
warmupSingletons(scope);
|
|
64
|
+
if (!app.prepareApplication) return [3 /*break*/, 2];
|
|
65
|
+
return [4 /*yield*/, app.prepareApplication(scope.cradle)];
|
|
66
|
+
case 1:
|
|
67
|
+
_b.sent();
|
|
68
|
+
_b.label = 2;
|
|
69
|
+
case 2: return [4 /*yield*/, app.initApplication(scope.cradle)];
|
|
70
|
+
case 3:
|
|
71
|
+
_b.sent();
|
|
72
|
+
if (!app.postInitApplication) return [3 /*break*/, 5];
|
|
73
|
+
return [4 /*yield*/, app.postInitApplication(scope.cradle)];
|
|
74
|
+
case 4:
|
|
75
|
+
_b.sent();
|
|
76
|
+
_b.label = 5;
|
|
77
|
+
case 5: return [3 /*break*/, 7];
|
|
78
|
+
case 6:
|
|
79
|
+
err_1 = _b.sent();
|
|
80
|
+
console.info(err_1);
|
|
81
|
+
throw err_1;
|
|
82
|
+
case 7: return [2 /*return*/];
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
exports.bootstrap = bootstrap;
|
|
88
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var bootstrap_1 = require("./bootstrap");
|
|
5
|
+
var Application_1 = require("./application/Application");
|
|
6
|
+
var awilix_1 = require("awilix");
|
|
7
|
+
var ApplicationModule_1 = require("./application/ApplicationModule");
|
|
8
|
+
var InMemoryEventBus_1 = require("./eventBus/InMemoryEventBus");
|
|
9
|
+
var DomainEvent_1 = require("./DomainEvent");
|
|
10
|
+
var TestApplication = /** @class */ (function (_super) {
|
|
11
|
+
tslib_1.__extends(TestApplication, _super);
|
|
12
|
+
function TestApplication() {
|
|
13
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
14
|
+
_this.result = [];
|
|
15
|
+
return _this;
|
|
16
|
+
}
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
+
TestApplication.prototype.initApplication = function (_a) {
|
|
19
|
+
var scope = _a.DIContainer;
|
|
20
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
21
|
+
var provider, service, newScope;
|
|
22
|
+
return tslib_1.__generator(this, function (_b) {
|
|
23
|
+
switch (_b.label) {
|
|
24
|
+
case 0:
|
|
25
|
+
this.eventBus = new InMemoryEventBus_1.InMemoryEventBus();
|
|
26
|
+
provider = scope.resolve('TestProvider');
|
|
27
|
+
service = scope.resolve('TestService');
|
|
28
|
+
provider.inc();
|
|
29
|
+
service.inc();
|
|
30
|
+
newScope = scope.createScope();
|
|
31
|
+
provider = newScope.resolve('TestProvider');
|
|
32
|
+
service = newScope.resolve('TestService');
|
|
33
|
+
provider.inc();
|
|
34
|
+
service.inc();
|
|
35
|
+
newScope = scope.createScope();
|
|
36
|
+
provider = newScope.resolve('TestProvider');
|
|
37
|
+
service = newScope.resolve('TestService');
|
|
38
|
+
provider.inc();
|
|
39
|
+
service.inc();
|
|
40
|
+
this.result = [provider.value, service.value];
|
|
41
|
+
scope.register({
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
context: (0, awilix_1.asValue)({ userId: '1' }),
|
|
45
|
+
TestModule: (0, awilix_1.asValue)(new TestModule())
|
|
46
|
+
});
|
|
47
|
+
this.scope = scope;
|
|
48
|
+
return [4 /*yield*/, this.initModules([
|
|
49
|
+
scope.resolve('TestModule')
|
|
50
|
+
], scope.cradle)];
|
|
51
|
+
case 1:
|
|
52
|
+
_b.sent();
|
|
53
|
+
return [2 /*return*/];
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
return TestApplication;
|
|
59
|
+
}(Application_1.Application));
|
|
60
|
+
var TestModule = /** @class */ (function (_super) {
|
|
61
|
+
tslib_1.__extends(TestModule, _super);
|
|
62
|
+
function TestModule() {
|
|
63
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
64
|
+
_this.events = [];
|
|
65
|
+
return _this;
|
|
66
|
+
}
|
|
67
|
+
TestModule.prototype.subscribedTo = function () {
|
|
68
|
+
return [TestDomainEvent];
|
|
69
|
+
};
|
|
70
|
+
TestModule.prototype.on = function (domainEvent) {
|
|
71
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
72
|
+
return tslib_1.__generator(this, function (_a) {
|
|
73
|
+
this.events.push(domainEvent.test);
|
|
74
|
+
return [2 /*return*/];
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
TestModule.prototype.initModule = function (app) {
|
|
79
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
80
|
+
return tslib_1.__generator(this, function (_a) {
|
|
81
|
+
app.eventBus.addSubscribers(this);
|
|
82
|
+
return [2 /*return*/];
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
return TestModule;
|
|
87
|
+
}(ApplicationModule_1.ApplicationModule));
|
|
88
|
+
var TestDomainEvent = /** @class */ (function (_super) {
|
|
89
|
+
tslib_1.__extends(TestDomainEvent, _super);
|
|
90
|
+
function TestDomainEvent() {
|
|
91
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
92
|
+
}
|
|
93
|
+
Object.defineProperty(TestDomainEvent.prototype, "test", {
|
|
94
|
+
get: function () {
|
|
95
|
+
return this.props.test;
|
|
96
|
+
},
|
|
97
|
+
enumerable: false,
|
|
98
|
+
configurable: true
|
|
99
|
+
});
|
|
100
|
+
return TestDomainEvent;
|
|
101
|
+
}(DomainEvent_1.DomainEvent));
|
|
102
|
+
describe('bootstrap', function () {
|
|
103
|
+
test('bootstrap', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
104
|
+
var app;
|
|
105
|
+
return tslib_1.__generator(this, function (_a) {
|
|
106
|
+
switch (_a.label) {
|
|
107
|
+
case 0:
|
|
108
|
+
app = new TestApplication();
|
|
109
|
+
return [4 /*yield*/, (0, bootstrap_1.bootstrap)(app, {
|
|
110
|
+
appFolder: "".concat(__dirname, "/../tests/testapp/app"),
|
|
111
|
+
domainsFolder: "".concat(__dirname, "/../tests/testapp/domain"),
|
|
112
|
+
infraFolder: "".concat(__dirname, "/../tests/testapp/infra"),
|
|
113
|
+
})];
|
|
114
|
+
case 1:
|
|
115
|
+
_a.sent();
|
|
116
|
+
// провайдер в інфрі синглтон, сервіс - ні
|
|
117
|
+
expect(app.result).toEqual([3, 1]);
|
|
118
|
+
return [4 /*yield*/, app.eventBus.push(new TestDomainEvent({ test: 'data' }))];
|
|
119
|
+
case 2:
|
|
120
|
+
_a.sent();
|
|
121
|
+
expect(app.eventBus.listenerCount('TestDomainEvent')).toBe(1);
|
|
122
|
+
return [4 /*yield*/, app.eventBus.publish()];
|
|
123
|
+
case 3:
|
|
124
|
+
_a.sent();
|
|
125
|
+
expect(app.modules[0].events).toEqual(['data']);
|
|
126
|
+
return [2 /*return*/];
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}); });
|
|
130
|
+
test('bootstrap error', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
131
|
+
return tslib_1.__generator(this, function (_a) {
|
|
132
|
+
switch (_a.label) {
|
|
133
|
+
case 0:
|
|
134
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
135
|
+
return [4 /*yield*/, expect(function () { return (0, bootstrap_1.bootstrap)(new TestApplication(), {}); }).rejects.toThrow('`appFolder` is required')];
|
|
136
|
+
case 1:
|
|
137
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
138
|
+
_a.sent();
|
|
139
|
+
return [2 /*return*/];
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}); });
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=bootstrap.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.spec.js","sourceRoot":"","sources":["../src/bootstrap.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,14 @@ import { EventEmitter } from 'events';
|
|
|
3
3
|
import { AnyDomainEvent } from '../DomainEvent';
|
|
4
4
|
import { EventBus } from '../EventBus';
|
|
5
5
|
import { DomainEventSubscriber } from "../DomainEventSubscriber";
|
|
6
|
-
export declare class InMemoryEventBus
|
|
6
|
+
export declare class InMemoryEventBus implements EventBus {
|
|
7
7
|
protected _events: AnyDomainEvent[];
|
|
8
|
+
protected _emitter: EventEmitter;
|
|
9
|
+
constructor();
|
|
8
10
|
push(event: AnyDomainEvent): Promise<void>;
|
|
9
11
|
clear(): Promise<void>;
|
|
10
12
|
publish(events?: AnyDomainEvent[]): Promise<void>;
|
|
11
|
-
|
|
13
|
+
on(event: string, listener: (...args: never[]) => void): void;
|
|
14
|
+
listenerCount(event: string): number;
|
|
15
|
+
addSubscribers(subscribers: DomainEventSubscriber[] | DomainEventSubscriber): void;
|
|
12
16
|
}
|
|
@@ -3,12 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.InMemoryEventBus = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var events_1 = require("events");
|
|
6
|
-
var InMemoryEventBus = /** @class */ (function (
|
|
7
|
-
tslib_1.__extends(InMemoryEventBus, _super);
|
|
6
|
+
var InMemoryEventBus = /** @class */ (function () {
|
|
8
7
|
function InMemoryEventBus() {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return _this;
|
|
8
|
+
this._events = [];
|
|
9
|
+
this._emitter = new events_1.EventEmitter();
|
|
12
10
|
}
|
|
13
11
|
InMemoryEventBus.prototype.push = function (event) {
|
|
14
12
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
@@ -36,7 +34,7 @@ var InMemoryEventBus = /** @class */ (function (_super) {
|
|
|
36
34
|
allEvents = (this._events || []).concat(events !== null && events !== void 0 ? events : []);
|
|
37
35
|
for (_i = 0, allEvents_1 = allEvents; _i < allEvents_1.length; _i++) {
|
|
38
36
|
event = allEvents_1[_i];
|
|
39
|
-
this.emit(event.eventName, event);
|
|
37
|
+
this._emitter.emit(event.eventName, event);
|
|
40
38
|
}
|
|
41
39
|
return [4 /*yield*/, this.clear()];
|
|
42
40
|
case 1:
|
|
@@ -46,18 +44,25 @@ var InMemoryEventBus = /** @class */ (function (_super) {
|
|
|
46
44
|
});
|
|
47
45
|
});
|
|
48
46
|
};
|
|
47
|
+
InMemoryEventBus.prototype.on = function (event, listener) {
|
|
48
|
+
this._emitter.on(event, listener);
|
|
49
|
+
};
|
|
50
|
+
InMemoryEventBus.prototype.listenerCount = function (event) {
|
|
51
|
+
return this._emitter.listenerCount(event);
|
|
52
|
+
};
|
|
49
53
|
InMemoryEventBus.prototype.addSubscribers = function (subscribers) {
|
|
50
54
|
var _a;
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
var subsArray = Array.isArray(subscribers) ? subscribers : [subscribers];
|
|
56
|
+
for (var _i = 0, subsArray_1 = subsArray; _i < subsArray_1.length; _i++) {
|
|
57
|
+
var subscriber = subsArray_1[_i];
|
|
53
58
|
var events = subscriber.subscribedTo();
|
|
54
59
|
for (var _b = 0, events_2 = events; _b < events_2.length; _b++) {
|
|
55
60
|
var event = events_2[_b];
|
|
56
|
-
this.on((_a = event.EVENT_NAME) !== null && _a !== void 0 ? _a : event.name, subscriber.on.bind(subscriber));
|
|
61
|
+
this._emitter.on((_a = event.EVENT_NAME) !== null && _a !== void 0 ? _a : event.name, subscriber.on.bind(subscriber));
|
|
57
62
|
}
|
|
58
63
|
}
|
|
59
64
|
};
|
|
60
65
|
return InMemoryEventBus;
|
|
61
|
-
}(
|
|
66
|
+
}());
|
|
62
67
|
exports.InMemoryEventBus = InMemoryEventBus;
|
|
63
68
|
//# sourceMappingURL=InMemoryEventBus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryEventBus.js","sourceRoot":"","sources":["../../src/eventBus/InMemoryEventBus.ts"],"names":[],"mappings":";;;;AAAA,iCAAsC;AAKtC;
|
|
1
|
+
{"version":3,"file":"InMemoryEventBus.js","sourceRoot":"","sources":["../../src/eventBus/InMemoryEventBus.ts"],"names":[],"mappings":";;;;AAAA,iCAAsC;AAKtC;IAIE;QAHU,YAAO,GAAqB,EAAE,CAAC;QAIvC,IAAI,CAAC,QAAQ,GAAG,IAAI,qBAAY,EAAE,CAAC;IACrC,CAAC;IAEK,+BAAI,GAAV,UAAW,KAAqB;;;gBAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;;KAC1B;IAEK,gCAAK,GAAX;;;gBACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;;;;KACnB;IAEK,kCAAO,GAAb,UAAc,MAA6B;QAA7B,uBAAA,EAAA,WAA6B;;;;;;wBACnC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,CAAC;wBAC5D,WAA6B,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE,CAAC;4BAArB,KAAK;4BACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC7C,CAAC;wBACD,qBAAM,IAAI,CAAC,KAAK,EAAE,EAAA;;wBAAlB,SAAkB,CAAC;;;;;KACpB;IAED,6BAAE,GAAF,UAAG,KAAa,EAAE,QAAoC;QACpD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,wCAAa,GAAb,UAAc,KAAa;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,yCAAc,GAAd,UAAe,WAA4D;;QACzE,IAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC3E,KAAyB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE,CAAC;YAAhC,IAAM,UAAU,kBAAA;YACnB,IAAM,MAAM,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;YACzC,KAAoB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,EAAE,CAAC;gBAAxB,IAAM,KAAK,eAAA;gBACd,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAA,KAAK,CAAC,UAAU,mCAAI,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IACH,uBAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,4CAAgB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createSnapshot<T>(obj: T): T;
|
package/build/helpers.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSnapshot = void 0;
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
|
+
function createSnapshot(obj) {
|
|
6
|
+
if (!obj) {
|
|
7
|
+
return obj;
|
|
8
|
+
}
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
if (typeof obj.toSnapshot === 'function') {
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
return obj.toSnapshot();
|
|
15
|
+
}
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
if (typeof obj.toJSON === 'function') {
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
return obj.toJSON();
|
|
22
|
+
}
|
|
23
|
+
var copy = {};
|
|
24
|
+
for (var key in obj) {
|
|
25
|
+
if (!Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (typeof obj[key] !== 'object') {
|
|
29
|
+
copy[key] = obj[key];
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
copy[key] = createSnapshot(obj[key]);
|
|
33
|
+
}
|
|
34
|
+
return copy;
|
|
35
|
+
}
|
|
36
|
+
exports.createSnapshot = createSnapshot;
|
|
37
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;AAAA,8DAA8D;AAC9D,SAAgB,cAAc,CAAI,GAAM;IACtC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,GAAG,CAAC;IACb,CAAC;IACD,6DAA6D;IAC7D,aAAa;IACb,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACzC,6DAA6D;QAC7D,aAAa;QACb,OAAO,GAAG,CAAC,UAAU,EAAO,CAAC;IAC/B,CAAC;IACD,6DAA6D;IAC7D,aAAa;IACb,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACrC,6DAA6D;QAC7D,aAAa;QACb,OAAO,GAAG,CAAC,MAAM,EAAO,CAAC;IAC3B,CAAC;IACD,IAAM,IAAI,GAAK,EAAO,CAAC;IACvB,KAAK,IAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACpD,SAAS;QACX,CAAC;QACD,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AA9BD,wCA8BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|