@pocket-architect/core 0.1.20 → 0.1.26

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.
Files changed (59) hide show
  1. package/.eslintignore +1 -0
  2. package/build/Entity.d.ts +9 -1
  3. package/build/Entity.js +25 -12
  4. package/build/Entity.js.map +1 -1
  5. package/build/Entity.spec.js +100 -7
  6. package/build/Entity.spec.js.map +1 -1
  7. package/build/EntityId.d.ts +1 -0
  8. package/build/EntityId.js +3 -0
  9. package/build/EntityId.js.map +1 -1
  10. package/build/EventBus.spec.js +28 -4
  11. package/build/EventBus.spec.js.map +1 -1
  12. package/build/application/Application.d.ts +10 -0
  13. package/build/application/Application.js +43 -0
  14. package/build/application/Application.js.map +1 -0
  15. package/build/application/ApplicationModule.d.ts +5 -0
  16. package/build/application/ApplicationModule.js +10 -0
  17. package/build/application/ApplicationModule.js.map +1 -0
  18. package/build/bootstrap.d.ts +14 -0
  19. package/build/bootstrap.js +88 -0
  20. package/build/bootstrap.js.map +1 -0
  21. package/build/bootstrap.spec.d.ts +1 -0
  22. package/build/bootstrap.spec.js +144 -0
  23. package/build/bootstrap.spec.js.map +1 -0
  24. package/build/eventBus/InMemoryEventBus.d.ts +1 -1
  25. package/build/eventBus/InMemoryEventBus.js +3 -2
  26. package/build/eventBus/InMemoryEventBus.js.map +1 -1
  27. package/build/helpers/diff.d.ts +43 -0
  28. package/build/helpers/diff.js +154 -0
  29. package/build/helpers/diff.js.map +1 -0
  30. package/build/helpers.js +23 -14
  31. package/build/helpers.js.map +1 -1
  32. package/build/helpers.spec.js +2 -2
  33. package/build/helpers.spec.js.map +1 -1
  34. package/build/index.d.ts +5 -1
  35. package/build/index.js +9 -1
  36. package/build/index.js.map +1 -1
  37. package/package.json +2 -1
  38. package/src/Entity.spec.ts +103 -7
  39. package/src/Entity.ts +32 -14
  40. package/src/EntityId.ts +4 -0
  41. package/src/EventBus.spec.ts +30 -5
  42. package/src/application/Application.ts +24 -0
  43. package/src/application/ApplicationModule.ts +7 -0
  44. package/src/bootstrap.spec.ts +100 -0
  45. package/src/bootstrap.ts +87 -0
  46. package/src/eventBus/InMemoryEventBus.ts +3 -2
  47. package/src/helpers/diff.ts +220 -0
  48. package/src/helpers.spec.ts +5 -2
  49. package/src/helpers.ts +32 -18
  50. package/src/index.ts +11 -1
  51. package/tests/testapp/domain/test/service/TestService.d.ts +4 -0
  52. package/tests/testapp/domain/test/service/TestService.js +13 -0
  53. package/tests/testapp/domain/test/service/TestService.js.map +1 -0
  54. package/tests/testapp/domain/test/service/TestService.ts +8 -0
  55. package/tests/testapp/infra/test/providers/TestProvider.d.ts +4 -0
  56. package/tests/testapp/infra/test/providers/TestProvider.js +13 -0
  57. package/tests/testapp/infra/test/providers/TestProvider.js.map +1 -0
  58. package/tests/testapp/infra/test/providers/TestProvider.ts +8 -0
  59. package/tsconfig.json +1 -1
@@ -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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"}
@@ -12,5 +12,5 @@ export declare class InMemoryEventBus implements EventBus {
12
12
  publish(events?: AnyDomainEvent[]): Promise<void>;
13
13
  on(event: string, listener: (...args: never[]) => void): void;
14
14
  listenerCount(event: string): number;
15
- addSubscribers(subscribers: DomainEventSubscriber[]): void;
15
+ addSubscribers(subscribers: DomainEventSubscriber[] | DomainEventSubscriber): void;
16
16
  }
@@ -52,8 +52,9 @@ var InMemoryEventBus = /** @class */ (function () {
52
52
  };
53
53
  InMemoryEventBus.prototype.addSubscribers = function (subscribers) {
54
54
  var _a;
55
- for (var _i = 0, subscribers_1 = subscribers; _i < subscribers_1.length; _i++) {
56
- var subscriber = subscribers_1[_i];
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];
57
58
  var events = subscriber.subscribedTo();
58
59
  for (var _b = 0, events_2 = events; _b < events_2.length; _b++) {
59
60
  var event = events_2[_b];
@@ -1 +1 @@
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,WAAoC;;QACjD,KAAyB,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW,EAAE,CAAC;YAAlC,IAAM,UAAU,oBAAA;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,AAxCD,IAwCC;AAxCY,4CAAgB"}
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,43 @@
1
+ export type DiffKind = 'added' | 'removed' | 'changed';
2
+ export type PathSegment = {
3
+ type: 'key';
4
+ key: string;
5
+ } | {
6
+ type: 'index';
7
+ index: number;
8
+ };
9
+ export interface DiffEntry {
10
+ path: string;
11
+ segments: PathSegment[];
12
+ kind: DiffKind;
13
+ before?: unknown;
14
+ after?: unknown;
15
+ }
16
+ export interface LabelContext {
17
+ key: string | null;
18
+ index: number | null;
19
+ path: string;
20
+ segments: PathSegment[];
21
+ entry: DiffEntry;
22
+ }
23
+ export interface DiffFormatterOptions {
24
+ /**
25
+ * - string → label (людська назва поля)
26
+ * - null → ignore
27
+ * - undefined → fallback на path
28
+ */
29
+ resolveLabel?: (ctx: LabelContext) => string | null | undefined;
30
+ formatValue?: (value: unknown, ctx: LabelContext) => string;
31
+ }
32
+ export interface DiffViewModel {
33
+ kind: DiffKind;
34
+ label: string;
35
+ path: string;
36
+ index: number | null;
37
+ beforeRaw?: unknown;
38
+ afterRaw?: unknown;
39
+ before?: string;
40
+ after?: string;
41
+ }
42
+ export declare function diffObjects(before: unknown, after: unknown): DiffEntry[];
43
+ export declare function buildDiffViewModel(diffs: DiffEntry[], options: DiffFormatterOptions): DiffViewModel[];
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildDiffViewModel = exports.diffObjects = void 0;
4
+ var tslib_1 = require("tslib");
5
+ function diffObjects(before, after) {
6
+ var diffs = [];
7
+ walk(before, after, [], diffs);
8
+ return diffs;
9
+ }
10
+ exports.diffObjects = diffObjects;
11
+ function walk(before, after, segments, out) {
12
+ if (Object.is(before, after))
13
+ return;
14
+ var isPlainObject = function (v) {
15
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
16
+ };
17
+ // arrays
18
+ if (Array.isArray(before) || Array.isArray(after)) {
19
+ var bArr = Array.isArray(before) ? before : [];
20
+ var aArr = Array.isArray(after) ? after : [];
21
+ var max = Math.max(bArr.length, aArr.length);
22
+ for (var i = 0; i < max; i++) {
23
+ walk(bArr[i], aArr[i], tslib_1.__spreadArray(tslib_1.__spreadArray([], segments, true), [{ type: 'index', index: i }], false), out);
24
+ }
25
+ return;
26
+ }
27
+ // primitives or mismatched types
28
+ if (!isPlainObject(before) || !isPlainObject(after)) {
29
+ out.push({
30
+ path: segmentsToPath(segments),
31
+ segments: segments,
32
+ kind: 'changed',
33
+ before: before,
34
+ after: after,
35
+ });
36
+ return;
37
+ }
38
+ // objects
39
+ var bObj = before;
40
+ var aObj = after;
41
+ var keys = tslib_1.__spreadArray(tslib_1.__spreadArray([], Object.keys(bObj), true), Object.keys(aObj), true);
42
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
43
+ var key = keys_1[_i];
44
+ var b = bObj[key];
45
+ var a = aObj[key];
46
+ var nextSeg = tslib_1.__spreadArray(tslib_1.__spreadArray([], segments, true), [{ type: 'key', key: key }], false);
47
+ if (b === undefined && a !== undefined) {
48
+ out.push({
49
+ path: segmentsToPath(nextSeg),
50
+ segments: nextSeg,
51
+ kind: 'added',
52
+ after: a,
53
+ });
54
+ continue;
55
+ }
56
+ if (b !== undefined && a === undefined) {
57
+ out.push({
58
+ path: segmentsToPath(nextSeg),
59
+ segments: nextSeg,
60
+ kind: 'removed',
61
+ before: b,
62
+ });
63
+ continue;
64
+ }
65
+ walk(b, a, nextSeg, out);
66
+ }
67
+ }
68
+ function segmentsToPath(segments) {
69
+ var path = '';
70
+ for (var _i = 0, segments_1 = segments; _i < segments_1.length; _i++) {
71
+ var s = segments_1[_i];
72
+ if (s.type === 'key') {
73
+ path += path ? ".".concat(s.key) : s.key;
74
+ }
75
+ else {
76
+ path += "[".concat(s.index, "]");
77
+ }
78
+ }
79
+ return path || '';
80
+ }
81
+ function buildLabelContext(entry) {
82
+ var key = null;
83
+ var index = null;
84
+ for (var i = entry.segments.length - 1; i >= 0; i--) {
85
+ var s = entry.segments[i];
86
+ if (s.type === 'key') {
87
+ key = s.key;
88
+ break;
89
+ }
90
+ }
91
+ for (var i = entry.segments.length - 1; i >= 0; i--) {
92
+ var s = entry.segments[i];
93
+ if (s.type === 'index') {
94
+ index = s.index;
95
+ break;
96
+ }
97
+ }
98
+ return {
99
+ key: key,
100
+ index: index,
101
+ path: entry.path,
102
+ segments: entry.segments,
103
+ entry: entry,
104
+ };
105
+ }
106
+ function defaultStringify(value) {
107
+ if (typeof value === 'string')
108
+ return "\"".concat(value, "\"");
109
+ if (typeof value === 'boolean')
110
+ return value ? 'true' : 'false';
111
+ if (value === null)
112
+ return 'null';
113
+ if (typeof value === 'object')
114
+ return JSON.stringify(value);
115
+ return String(value);
116
+ }
117
+ function buildDiffViewModel(diffs, options) {
118
+ var resolveLabel = options.resolveLabel, _a = options.formatValue, formatValue = _a === void 0 ? defaultStringify : _a;
119
+ var seen = new Set();
120
+ var result = [];
121
+ for (var _i = 0, diffs_1 = diffs; _i < diffs_1.length; _i++) {
122
+ var entry = diffs_1[_i];
123
+ var ctx = buildLabelContext(entry);
124
+ var resolvedLabel = resolveLabel === null || resolveLabel === void 0 ? void 0 : resolveLabel(ctx);
125
+ if (resolvedLabel === null)
126
+ continue;
127
+ var label = resolvedLabel !== null && resolvedLabel !== void 0 ? resolvedLabel : entry.path;
128
+ var beforeFormatted = entry.before !== undefined ? formatValue(entry.before, ctx) : undefined;
129
+ var afterFormatted = entry.after !== undefined ? formatValue(entry.after, ctx) : undefined;
130
+ // якщо форматовано однаково — не зміна
131
+ if (entry.kind === 'changed' && beforeFormatted === afterFormatted) {
132
+ continue;
133
+ }
134
+ // 👇 КЛЮЧ ДЕДУПЛІКАЦІЇ
135
+ var dedupeKey = "".concat(entry.kind, "|").concat(entry.path);
136
+ if (seen.has(dedupeKey)) {
137
+ continue;
138
+ }
139
+ seen.add(dedupeKey);
140
+ result.push({
141
+ kind: entry.kind,
142
+ label: label,
143
+ path: entry.path,
144
+ index: ctx.index,
145
+ beforeRaw: entry.before,
146
+ afterRaw: entry.after,
147
+ before: beforeFormatted,
148
+ after: afterFormatted,
149
+ });
150
+ }
151
+ return result;
152
+ }
153
+ exports.buildDiffViewModel = buildDiffViewModel;
154
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/helpers/diff.ts"],"names":[],"mappings":"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"}
package/build/helpers.js CHANGED
@@ -3,26 +3,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createSnapshot = void 0;
4
4
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
5
  function createSnapshot(obj) {
6
- if (!obj) {
6
+ if (obj === null || obj === undefined) {
7
7
  return obj;
8
8
  }
9
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
- // @ts-ignore
9
+ // toSnapshot має найвищий пріоритет
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
11
  if (typeof obj.toSnapshot === 'function') {
12
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
13
- // @ts-ignore
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
13
  return obj.toSnapshot();
15
14
  }
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ if (typeof obj.toJSON === 'function') {
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ return obj.toJSON();
19
+ }
20
+ // ✅ МАСИВИ
21
+ if (Array.isArray(obj)) {
22
+ return obj.map(function (item) { return createSnapshot(item); });
23
+ }
24
+ // primitives
25
+ if (typeof obj !== 'object') {
26
+ return obj;
27
+ }
28
+ // plain object
16
29
  var copy = {};
17
- for (var key in obj) {
18
- if (!Object.prototype.hasOwnProperty.call(obj, key)) {
19
- continue;
20
- }
21
- if (typeof obj[key] !== 'object') {
22
- copy[key] = obj[key];
23
- continue;
24
- }
25
- copy[key] = createSnapshot(obj[key]);
30
+ for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {
31
+ var key = _a[_i];
32
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
+ var value = obj[key];
34
+ copy[key] = createSnapshot(value);
26
35
  }
27
36
  return copy;
28
37
  }
@@ -1 +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,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;AAvBD,wCAuBC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;AAAA,8DAA8D;AAC9D,SAAgB,cAAc,CAAI,GAAM;IACtC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,oCAAoC;IACpC,8DAA8D;IAC9D,IAAI,OAAQ,GAAW,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAClD,8DAA8D;QAC9D,OAAQ,GAAW,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IACD,8DAA8D;IAC9D,IAAI,OAAQ,GAAW,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC9C,8DAA8D;QAC9D,OAAQ,GAAW,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW;IACX,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,cAAc,CAAC,IAAI,CAAC,EAApB,CAAoB,CAAiB,CAAC;IAC/D,CAAC;IAED,aAAa;IACb,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,eAAe;IACf,IAAM,IAAI,GAAG,EAA6B,CAAC;IAE3C,KAAkB,UAA0B,EAA1B,KAAA,MAAM,CAAC,IAAI,CAAC,GAAa,CAAC,EAA1B,cAA0B,EAA1B,IAA0B,EAAE,CAAC;QAA1C,IAAM,GAAG,SAAA;QACZ,8DAA8D;QAC9D,IAAM,KAAK,GAAI,GAAW,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,IAAS,CAAC;AACnB,CAAC;AArCD,wCAqCC"}
@@ -48,12 +48,12 @@ describe('helpers', function () {
48
48
  id: new EntityId_1.EntityId('1'),
49
49
  };
50
50
  snapshot = (0, helpers_1.createSnapshot)(original);
51
- expect(snapshot).toEqual(original);
51
+ expect(snapshot).toEqual(tslib_1.__assign(tslib_1.__assign({}, original), { id: '3D4WX' }));
52
52
  expect(snapshot).not.toBe(original);
53
53
  expect(snapshot.c).not.toBe(original.c);
54
54
  expect(snapshot.c.f).not.toBe(original.c.f);
55
55
  expect(snapshot.id).not.toBe(original.id);
56
- expect(snapshot.id).toEqual(new EntityId_1.EntityId('1'));
56
+ expect(snapshot.id).toEqual('3D4WX');
57
57
  item = TestEntity.create({
58
58
  name: 'test',
59
59
  testId: new EntityId_1.EntityId('2')
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.spec.js","sourceRoot":"","sources":["../src/helpers.spec.ts"],"names":[],"mappings":";;;AAAA,qCAAyC;AACzC,uCAAoC;AACpC,mCAAgC;AAMhC;IAAyB,sCAA2C;IAApE;;IAmBA,CAAC;IAlBQ,iBAAM,GAAb,UAAc,KAAgB,EAAE,EAA2B;QACzD,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,sBAAI,4BAAI;aAAR,UAAS,IAAY;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,CAAC;;;OAAA;IAED,sBAAI,8BAAM;aAAV,UAAW,GAAqB;YAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QAC1B,CAAC;;;OAAA;IAED,+BAAU,GAAV;QACE,OAAO,sCACF,IAAI,CAAC,KAAK,KACb,MAAM,EAAE,SAAS,GACT,CAAC;IACb,CAAC;IACH,iBAAC;AAAD,CAAC,AAnBD,CAAyB,eAAM,GAmB9B;AAED,QAAQ,CAAC,SAAS,EAAE;IAClB,IAAI,CAAC,gBAAgB,EAAE;;;YACf,QAAQ,GAAG;gBACf,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE;oBACD,CAAC,EAAE,CAAC;oBACJ,CAAC,EAAE,QAAQ;oBACX,CAAC,EAAE;wBACD,CAAC,EAAE,CAAC;qBACL;iBACF;gBACD,EAAE,EAAE,IAAI,mBAAQ,CAAS,GAAG,CAAC;aAC9B,CAAC;YACI,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,mBAAQ,CAAS,GAAG,CAAC,CAAC,CAAC;YAEjD,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC7B,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,IAAI,mBAAQ,CAAC,GAAG,CAAC;aAC1B,EAAE,GAAG,CAAC,CAAC;YACF,YAAY,GAAG,IAAA,wBAAc,EAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;gBAC3B,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;;;SACJ,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"helpers.spec.js","sourceRoot":"","sources":["../src/helpers.spec.ts"],"names":[],"mappings":";;;AAAA,qCAAyC;AACzC,uCAAoC;AACpC,mCAAgC;AAMhC;IAAyB,sCAA2C;IAApE;;IAmBA,CAAC;IAlBQ,iBAAM,GAAb,UAAc,KAAgB,EAAE,EAA2B;QACzD,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,sBAAI,4BAAI;aAAR,UAAS,IAAY;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,CAAC;;;OAAA;IAED,sBAAI,8BAAM;aAAV,UAAW,GAAqB;YAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QAC1B,CAAC;;;OAAA;IAED,+BAAU,GAAV;QACE,OAAO,sCACF,IAAI,CAAC,KAAK,KACb,MAAM,EAAE,SAAS,GACT,CAAC;IACb,CAAC;IACH,iBAAC;AAAD,CAAC,AAnBD,CAAyB,eAAM,GAmB9B;AAED,QAAQ,CAAC,SAAS,EAAE;IAClB,IAAI,CAAC,gBAAgB,EAAE;;;YACf,QAAQ,GAAG;gBACf,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE;oBACD,CAAC,EAAE,CAAC;oBACJ,CAAC,EAAE,QAAQ;oBACX,CAAC,EAAE;wBACD,CAAC,EAAE,CAAC;qBACL;iBACF;gBACD,EAAE,EAAE,IAAI,mBAAQ,CAAS,GAAG,CAAC;aAC9B,CAAC;YACI,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,uCACnB,QAAQ,KACX,EAAE,EAAE,OAAO,IACX,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE/B,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC7B,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,IAAI,mBAAQ,CAAC,GAAG,CAAC;aAC1B,EAAE,GAAG,CAAC,CAAC;YACF,YAAY,GAAG,IAAA,wBAAc,EAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;gBAC3B,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;;;SACJ,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/build/index.d.ts CHANGED
@@ -6,4 +6,8 @@ import { HashError } from './error/HashError';
6
6
  import { DomainEvent } from './DomainEvent';
7
7
  import { DomainEventSubscriber } from './DomainEventSubscriber';
8
8
  import { EventBus } from './EventBus';
9
- export { Entity, EntityId, ValueObject, AggregateRoot, HashError, DomainEvent, DomainEventSubscriber, EventBus };
9
+ import { Eventable } from './mixins/Eventable';
10
+ import { Application } from './application/Application';
11
+ import { ApplicationModule } from './application/ApplicationModule';
12
+ import { bootstrap } from './bootstrap';
13
+ export { Entity, EntityId, ValueObject, AggregateRoot, HashError, DomainEvent, DomainEventSubscriber, EventBus, Eventable, Application, ApplicationModule, bootstrap };
package/build/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DomainEvent = exports.HashError = exports.AggregateRoot = exports.ValueObject = exports.EntityId = exports.Entity = void 0;
3
+ exports.bootstrap = exports.ApplicationModule = exports.Application = exports.Eventable = exports.DomainEvent = 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");
@@ -13,4 +13,12 @@ var HashError_1 = require("./error/HashError");
13
13
  Object.defineProperty(exports, "HashError", { enumerable: true, get: function () { return HashError_1.HashError; } });
14
14
  var DomainEvent_1 = require("./DomainEvent");
15
15
  Object.defineProperty(exports, "DomainEvent", { enumerable: true, get: function () { return DomainEvent_1.DomainEvent; } });
16
+ var Eventable_1 = require("./mixins/Eventable");
17
+ Object.defineProperty(exports, "Eventable", { enumerable: true, get: function () { return Eventable_1.Eventable; } });
18
+ var Application_1 = require("./application/Application");
19
+ Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return Application_1.Application; } });
20
+ var ApplicationModule_1 = require("./application/ApplicationModule");
21
+ Object.defineProperty(exports, "ApplicationModule", { enumerable: true, get: function () { return ApplicationModule_1.ApplicationModule; } });
22
+ var bootstrap_1 = require("./bootstrap");
23
+ Object.defineProperty(exports, "bootstrap", { enumerable: true, get: function () { return bootstrap_1.bootstrap; } });
16
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAUhC,uFAVO,eAAM,OAUP;AATR,uCAAsC;AAUpC,yFAVO,mBAAQ,OAUP;AATV,6CAA4C;AAU1C,4FAVO,yBAAW,OAUP;AATb,iDAAgD;AAU9C,8FAVO,6BAAa,OAUP;AATf,+CAA8C;AAU5C,0FAVO,qBAAS,OAUP;AATX,6CAA4C;AAU1C,4FAVO,yBAAW,OAUP"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAchC,uFAdO,eAAM,OAcP;AAbR,uCAAsC;AAcpC,yFAdO,mBAAQ,OAcP;AAbV,6CAA4C;AAc1C,4FAdO,yBAAW,OAcP;AAbb,iDAAgD;AAc9C,8FAdO,6BAAa,OAcP;AAbf,+CAA8C;AAc5C,0FAdO,qBAAS,OAcP;AAbX,6CAA4C;AAc1C,4FAdO,yBAAW,OAcP;AAXb,gDAA+C;AAc7C,0FAdO,qBAAS,OAcP;AAbX,yDAAwD;AAetD,4FAfO,yBAAW,OAeP;AAdb,qEAAoE;AAelE,kGAfO,qCAAiB,OAeP;AAdnB,yCAAwC;AAgBtC,0FAhBO,qBAAS,OAgBP"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pocket-architect/core",
3
- "version": "0.1.20",
3
+ "version": "0.1.26",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@paralleldrive/cuid2": "^2.2.2",
20
+ "awilix": "^10.0.2",
20
21
  "hashids": "^2.3.0",
21
22
  "shallow-equal-object": "^1.1.1",
22
23
  "uuid-by-string": "^4.0.0"