@quadnix/octo 0.0.20 → 0.0.22
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/dist/app.type.d.ts +8 -1
- package/dist/app.type.js +13 -7
- package/dist/app.type.js.map +1 -1
- package/dist/decorators/action.decorator.d.ts +19 -2
- package/dist/decorators/action.decorator.js +28 -5
- package/dist/decorators/action.decorator.js.map +1 -1
- package/dist/decorators/anchor.decorator.d.ts +13 -0
- package/dist/decorators/anchor.decorator.js +14 -1
- package/dist/decorators/anchor.decorator.js.map +1 -1
- package/dist/decorators/enable-hook.decorator.d.ts +14 -0
- package/dist/decorators/enable-hook.decorator.js +14 -0
- package/dist/decorators/enable-hook.decorator.js.map +1 -1
- package/dist/decorators/event-source.decorator.d.ts +15 -0
- package/dist/decorators/event-source.decorator.js +15 -0
- package/dist/decorators/event-source.decorator.js.map +1 -1
- package/dist/decorators/factory.decorator.d.ts +54 -5
- package/dist/decorators/factory.decorator.js +56 -3
- package/dist/decorators/factory.decorator.js.map +1 -1
- package/dist/decorators/model.decorator.d.ts +13 -0
- package/dist/decorators/model.decorator.js +14 -1
- package/dist/decorators/model.decorator.js.map +1 -1
- package/dist/decorators/module.decorator.d.ts +61 -5
- package/dist/decorators/module.decorator.js +62 -3
- package/dist/decorators/module.decorator.js.map +1 -1
- package/dist/decorators/on-event.decorator.d.ts +17 -0
- package/dist/decorators/on-event.decorator.js +17 -0
- package/dist/decorators/on-event.decorator.js.map +1 -1
- package/dist/decorators/overlay.decorator.d.ts +13 -0
- package/dist/decorators/overlay.decorator.js +14 -1
- package/dist/decorators/overlay.decorator.js.map +1 -1
- package/dist/decorators/resource.decorator.d.ts +13 -0
- package/dist/decorators/resource.decorator.js +14 -1
- package/dist/decorators/resource.decorator.js.map +1 -1
- package/dist/decorators/validate.decorator.d.ts +9 -0
- package/dist/decorators/validate.decorator.js +23 -0
- package/dist/decorators/validate.decorator.js.map +1 -0
- package/dist/events/error.event.d.ts +30 -0
- package/dist/events/error.event.js +30 -0
- package/dist/events/error.event.js.map +1 -1
- package/dist/events/event.model.d.ts +27 -0
- package/dist/events/event.model.js +27 -3
- package/dist/events/event.model.js.map +1 -1
- package/dist/events/hook.event.d.ts +167 -0
- package/dist/events/hook.event.js +167 -0
- package/dist/events/hook.event.js.map +1 -1
- package/dist/events/module.event.d.ts +12 -0
- package/dist/events/module.event.js +12 -0
- package/dist/events/module.event.js.map +1 -1
- package/dist/events/registration.event.d.ts +90 -0
- package/dist/events/registration.event.js +90 -0
- package/dist/events/registration.event.js.map +1 -1
- package/dist/events/serialization.event.d.ts +61 -0
- package/dist/events/serialization.event.js +61 -0
- package/dist/events/serialization.event.js.map +1 -1
- package/dist/events/transaction.event.d.ts +41 -0
- package/dist/events/transaction.event.js +41 -0
- package/dist/events/transaction.event.js.map +1 -1
- package/dist/functions/container/container.d.ts +53 -0
- package/dist/functions/container/container.js +102 -0
- package/dist/functions/container/container.js.map +1 -0
- package/dist/functions/container/test-container.d.ts +75 -0
- package/dist/functions/container/test-container.js +97 -0
- package/dist/functions/container/test-container.js.map +1 -0
- package/dist/functions/dependency/dependency.d.ts +6 -6
- package/dist/functions/dependency/dependency.js +1 -8
- package/dist/functions/dependency/dependency.js.map +1 -1
- package/dist/functions/diff/diff-metadata.d.ts +5 -2
- package/dist/functions/diff/diff-metadata.js +6 -11
- package/dist/functions/diff/diff-metadata.js.map +1 -1
- package/dist/functions/diff/diff.d.ts +6 -3
- package/dist/functions/diff/diff.js +8 -13
- package/dist/functions/diff/diff.js.map +1 -1
- package/dist/functions/diff/diff.utility.d.ts +38 -6
- package/dist/functions/diff/diff.utility.js +55 -6
- package/dist/functions/diff/diff.utility.js.map +1 -1
- package/dist/functions/hook/commit.hook.js +6 -3
- package/dist/functions/hook/commit.hook.js.map +1 -1
- package/dist/functions/hook/model-action.hook.js +7 -4
- package/dist/functions/hook/model-action.hook.js.map +1 -1
- package/dist/functions/hook/resource-action.hook.js +6 -3
- package/dist/functions/hook/resource-action.hook.js.map +1 -1
- package/dist/functions/node/node.abstract.d.ts +84 -0
- package/dist/functions/node/node.abstract.js +275 -0
- package/dist/functions/node/node.abstract.js.map +1 -0
- package/dist/functions/node/node.interface.d.ts +176 -0
- package/dist/functions/node/node.interface.js +2 -0
- package/dist/functions/node/node.interface.js.map +1 -0
- package/dist/index.d.ts +12 -12
- package/dist/index.js +11 -11
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +11 -10
- package/dist/main.js +76 -37
- package/dist/main.js.map +1 -1
- package/dist/models/app/app.interface.d.ts +5 -0
- package/dist/models/app/app.model.d.ts +30 -3
- package/dist/models/app/app.model.js +40 -6
- package/dist/models/app/app.model.js.map +1 -1
- package/dist/models/deployment/deployment.interface.d.ts +5 -0
- package/dist/models/deployment/deployment.model.d.ts +16 -3
- package/dist/models/deployment/deployment.model.js +20 -6
- package/dist/models/deployment/deployment.model.js.map +1 -1
- package/dist/models/environment/environment.interface.d.ts +5 -0
- package/dist/models/environment/environment.model.d.ts +19 -3
- package/dist/models/environment/environment.model.js +33 -8
- package/dist/models/environment/environment.model.js.map +1 -1
- package/dist/models/execution/execution.interface.d.ts +5 -0
- package/dist/models/execution/execution.model.d.ts +24 -3
- package/dist/models/execution/execution.model.js +40 -7
- package/dist/models/execution/execution.model.js.map +1 -1
- package/dist/models/image/image.interface.d.ts +5 -0
- package/dist/models/image/image.model.d.ts +36 -3
- package/dist/models/image/image.model.js +25 -9
- package/dist/models/image/image.model.js.map +1 -1
- package/dist/models/model-action.interface.d.ts +18 -1
- package/dist/models/model.abstract.d.ts +7 -42
- package/dist/models/model.abstract.js +24 -295
- package/dist/models/model.abstract.js.map +1 -1
- package/dist/models/model.interface.d.ts +51 -11
- package/dist/models/pipeline/pipeline.interface.d.ts +5 -0
- package/dist/models/pipeline/pipeline.model.d.ts +16 -3
- package/dist/models/pipeline/pipeline.model.js +25 -8
- package/dist/models/pipeline/pipeline.model.js.map +1 -1
- package/dist/models/region/region.interface.d.ts +5 -0
- package/dist/models/region/region.model.d.ts +19 -3
- package/dist/models/region/region.model.js +29 -6
- package/dist/models/region/region.model.js.map +1 -1
- package/dist/models/server/server.interface.d.ts +5 -0
- package/dist/models/server/server.model.d.ts +18 -3
- package/dist/models/server/server.model.js +24 -6
- package/dist/models/server/server.model.js.map +1 -1
- package/dist/models/service/service.interface.d.ts +5 -0
- package/dist/models/service/service.model.d.ts +16 -3
- package/dist/models/service/service.model.js +19 -6
- package/dist/models/service/service.model.js.map +1 -1
- package/dist/models/subnet/subnet.interface.d.ts +5 -0
- package/dist/models/subnet/subnet.model.d.ts +50 -3
- package/dist/models/subnet/subnet.model.js +58 -22
- package/dist/models/subnet/subnet.model.js.map +1 -1
- package/dist/modules/module.container.d.ts +4 -2
- package/dist/modules/module.container.js +17 -8
- package/dist/modules/module.container.js.map +1 -1
- package/dist/modules/test-module.container.d.ts +4 -4
- package/dist/modules/test-module.container.js +18 -17
- package/dist/modules/test-module.container.js.map +1 -1
- package/dist/overlays/anchor.abstract.js +0 -3
- package/dist/overlays/anchor.abstract.js.map +1 -1
- package/dist/overlays/overlay-data.repository.d.ts +2 -4
- package/dist/overlays/overlay-data.repository.js +8 -36
- package/dist/overlays/overlay-data.repository.js.map +1 -1
- package/dist/overlays/overlay.abstract.d.ts +6 -7
- package/dist/overlays/overlay.abstract.js +20 -42
- package/dist/overlays/overlay.abstract.js.map +1 -1
- package/dist/overlays/overlay.service.d.ts +0 -1
- package/dist/overlays/overlay.service.js +1 -7
- package/dist/overlays/overlay.service.js.map +1 -1
- package/dist/resources/resource-data.repository.d.ts +16 -6
- package/dist/resources/resource-data.repository.js +121 -18
- package/dist/resources/resource-data.repository.js.map +1 -1
- package/dist/resources/resource.abstract.d.ts +23 -6
- package/dist/resources/resource.abstract.js +147 -13
- package/dist/resources/resource.abstract.js.map +1 -1
- package/dist/resources/shared-resource.abstract.d.ts +2 -2
- package/dist/resources/shared-resource.abstract.js +5 -2
- package/dist/resources/shared-resource.abstract.js.map +1 -1
- package/dist/services/capture/capture.service.d.ts +1 -2
- package/dist/services/capture/capture.service.js +5 -4
- package/dist/services/capture/capture.service.js.map +1 -1
- package/dist/services/event/event.service.js +9 -6
- package/dist/services/event/event.service.js.map +1 -1
- package/dist/services/input/input.service.js +3 -5
- package/dist/services/input/input.service.js.map +1 -1
- package/dist/services/serialization/model/model-serialization.service.js +13 -14
- package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
- package/dist/services/serialization/resource/resource-serialization.service.d.ts +4 -4
- package/dist/services/serialization/resource/resource-serialization.service.js +23 -13
- package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
- package/dist/services/state-management/local.state-provider.js +0 -1
- package/dist/services/state-management/local.state-provider.js.map +1 -1
- package/dist/services/state-management/state-management.service.d.ts +1 -1
- package/dist/services/state-management/state-management.service.js +6 -9
- package/dist/services/state-management/state-management.service.js.map +1 -1
- package/dist/services/state-management/test.state-provider.js +3 -1
- package/dist/services/state-management/test.state-provider.js.map +1 -1
- package/dist/services/transaction/transaction.service.d.ts +5 -2
- package/dist/services/transaction/transaction.service.js +117 -87
- package/dist/services/transaction/transaction.service.js.map +1 -1
- package/dist/services/validation/validation.service.d.ts +19 -0
- package/dist/services/validation/validation.service.js +66 -0
- package/dist/services/validation/validation.service.js.map +1 -0
- package/dist/utilities/object/object.utility.js +1 -0
- package/dist/utilities/object/object.utility.js.map +1 -1
- package/dist/utilities/validation/validation.utility.d.ts +5 -0
- package/dist/utilities/validation/validation.utility.js +12 -0
- package/dist/utilities/validation/validation.utility.js.map +1 -0
- package/package.json +1 -1
- package/dist/decorators/container.d.ts +0 -24
- package/dist/decorators/container.js +0 -96
- package/dist/decorators/container.js.map +0 -1
- package/dist/decorators/test-container.d.ts +0 -27
- package/dist/decorators/test-container.js +0 -52
- package/dist/decorators/test-container.js.map +0 -1
|
@@ -4,21 +4,45 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import {
|
|
7
|
+
import { NodeType } from '../app.type.js';
|
|
8
8
|
import { Factory } from '../decorators/factory.decorator.js';
|
|
9
9
|
import { Diff, DiffAction } from '../functions/diff/diff.js';
|
|
10
10
|
export class ResourceDataRepository {
|
|
11
|
-
oldResources
|
|
12
|
-
|
|
13
|
-
constructor(oldResources = [], newResources = []) {
|
|
11
|
+
constructor(actualResources, oldResources, newResources) {
|
|
12
|
+
this.actualResources = actualResources;
|
|
14
13
|
this.oldResources = oldResources;
|
|
15
14
|
this.newResources = newResources;
|
|
16
|
-
|
|
15
|
+
this.dirtyResources = [];
|
|
16
|
+
for (const resource of oldResources) {
|
|
17
|
+
const actual = actualResources.find((r) => r.resourceId === resource.resourceId);
|
|
18
|
+
if (!resource.isDeepEquals(actual)) {
|
|
19
|
+
this.dirtyResources.push(resource);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
for (const resource of actualResources) {
|
|
23
|
+
if (!oldResources.find((r) => r.resourceId === resource.resourceId)) {
|
|
24
|
+
this.dirtyResources.push(resource);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
addActualResource(resource) {
|
|
29
|
+
if (resource.NODE_TYPE !== NodeType.RESOURCE && resource.NODE_TYPE !== NodeType.SHARED_RESOURCE) {
|
|
30
|
+
throw new Error('Adding non-resource node!');
|
|
31
|
+
}
|
|
32
|
+
// Insert or replace resources.
|
|
33
|
+
const rIndex = this.actualResources.findIndex((r) => r.resourceId === resource.resourceId);
|
|
34
|
+
if (rIndex === -1) {
|
|
35
|
+
this.actualResources.push(resource);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.actualResources[rIndex] = resource;
|
|
39
|
+
}
|
|
17
40
|
}
|
|
18
|
-
|
|
19
|
-
if (resource.
|
|
20
|
-
throw new Error('Adding non-resource
|
|
41
|
+
addNewResource(resource) {
|
|
42
|
+
if (resource.NODE_TYPE !== NodeType.RESOURCE && resource.NODE_TYPE !== NodeType.SHARED_RESOURCE) {
|
|
43
|
+
throw new Error('Adding non-resource node!');
|
|
21
44
|
}
|
|
45
|
+
// Insert or replace resources.
|
|
22
46
|
const rIndex = this.newResources.findIndex((r) => r.resourceId === resource.resourceId);
|
|
23
47
|
if (rIndex === -1) {
|
|
24
48
|
this.newResources.push(resource);
|
|
@@ -26,11 +50,28 @@ export class ResourceDataRepository {
|
|
|
26
50
|
else {
|
|
27
51
|
this.newResources[rIndex] = resource;
|
|
28
52
|
}
|
|
53
|
+
// Clone response from old.
|
|
54
|
+
const oIndex = this.oldResources.findIndex((r) => r.resourceId === resource.resourceId);
|
|
55
|
+
if (oIndex > -1) {
|
|
56
|
+
for (const key of Object.keys(this.oldResources[oIndex].response)) {
|
|
57
|
+
resource.response[key] = JSON.parse(JSON.stringify(this.oldResources[oIndex].response[key]));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
29
60
|
}
|
|
30
61
|
async diff() {
|
|
31
62
|
const oldResources = this.oldResources.reduce((accumulator, current) => ({ ...accumulator, [current.resourceId]: current }), {});
|
|
32
63
|
const newResources = this.newResources.reduce((accumulator, current) => ({ ...accumulator, [current.resourceId]: current }), {});
|
|
33
64
|
const diffs = [];
|
|
65
|
+
for (const oldResource of Object.values(oldResources)) {
|
|
66
|
+
if (oldResource.isMarkedDeleted()) {
|
|
67
|
+
delete oldResources[oldResource.resourceId];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
for (const newResource of Object.values(newResources)) {
|
|
71
|
+
if (newResource.isMarkedDeleted()) {
|
|
72
|
+
delete newResources[newResource.resourceId];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
34
75
|
for (const oldResourceId of Object.keys(oldResources)) {
|
|
35
76
|
if (!newResources[oldResourceId] || newResources[oldResourceId].isMarkedDeleted()) {
|
|
36
77
|
diffs.push(new Diff(oldResources[oldResourceId], DiffAction.DELETE, 'resourceId', oldResourceId));
|
|
@@ -45,29 +86,92 @@ export class ResourceDataRepository {
|
|
|
45
86
|
continue;
|
|
46
87
|
}
|
|
47
88
|
const newResource = newResources[newResourceId];
|
|
48
|
-
|
|
89
|
+
// A shared resource is being added, but shared resources don't have diffs.
|
|
90
|
+
if (newResource.NODE_TYPE === 'shared-resource') {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const sharedResource = newResource.getSharedResource();
|
|
94
|
+
if (sharedResource !== undefined) {
|
|
95
|
+
// If a new resource is being added, and it has a shared resource,
|
|
96
|
+
// we expect the resource to override diff() and diff against the shared resource.
|
|
97
|
+
// The custom diff() would decide diff actions.
|
|
98
|
+
const rDiff = await newResource.diff(sharedResource);
|
|
99
|
+
diffs.push(...rDiff);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// The resource is a normal resource, and just needs to be added.
|
|
103
|
+
diffs.push(new Diff(newResource, DiffAction.ADD, 'resourceId', newResource.resourceId));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return diffs;
|
|
107
|
+
}
|
|
108
|
+
async diffDirty() {
|
|
109
|
+
const actualResources = this.actualResources.reduce((accumulator, current) => ({ ...accumulator, [current.resourceId]: current }), {});
|
|
110
|
+
const newResources = this.newResources.reduce((accumulator, current) => ({ ...accumulator, [current.resourceId]: current }), {});
|
|
111
|
+
const diffs = [];
|
|
112
|
+
for (const actualResource of Object.values(actualResources)) {
|
|
113
|
+
if (actualResource.isMarkedDeleted()) {
|
|
114
|
+
delete actualResources[actualResource.resourceId];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
for (const newResource of Object.values(newResources)) {
|
|
118
|
+
if (newResource.isMarkedDeleted()) {
|
|
119
|
+
delete newResources[newResource.resourceId];
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
for (const actualResourceId of Object.keys(actualResources)) {
|
|
123
|
+
if (!newResources[actualResourceId] || newResources[actualResourceId].isMarkedDeleted()) {
|
|
124
|
+
diffs.push(new Diff(actualResources[actualResourceId], DiffAction.DELETE, 'resourceId', actualResourceId));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const rDiff = await newResources[actualResourceId].diff(actualResources[actualResourceId]);
|
|
128
|
+
diffs.push(...rDiff);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
for (const newResourceId of Object.keys(newResources)) {
|
|
132
|
+
if (actualResources[newResourceId]) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const newResource = newResources[newResourceId];
|
|
136
|
+
// A shared resource is being added, but shared resources don't have diffs.
|
|
137
|
+
if (newResource.NODE_TYPE === 'shared-resource') {
|
|
49
138
|
continue;
|
|
50
139
|
}
|
|
51
140
|
const sharedResource = newResource.getSharedResource();
|
|
52
141
|
if (sharedResource !== undefined) {
|
|
142
|
+
// If a new resource is being added, and it has a shared resource,
|
|
143
|
+
// we expect the resource to override diff() and diff against the shared resource.
|
|
144
|
+
// The custom diff() would decide diff actions.
|
|
53
145
|
const rDiff = await newResource.diff(sharedResource);
|
|
54
146
|
diffs.push(...rDiff);
|
|
55
147
|
}
|
|
56
148
|
else {
|
|
149
|
+
// The resource is a normal resource, and just needs to be added.
|
|
57
150
|
diffs.push(new Diff(newResource, DiffAction.ADD, 'resourceId', newResource.resourceId));
|
|
58
151
|
}
|
|
59
152
|
}
|
|
60
153
|
return diffs;
|
|
61
154
|
}
|
|
62
|
-
|
|
155
|
+
ensureDiffsNotOperatingOnDirtyResources(diffs) {
|
|
156
|
+
if (diffs.some((d) => this.dirtyResources.some((dr) => d.node.hasAncestor(dr)))) {
|
|
157
|
+
throw new Error('Cannot operate diff on dirty resources!');
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
getActualResourceById(resourceId) {
|
|
161
|
+
return this.actualResources.find((r) => r.resourceId === resourceId);
|
|
162
|
+
}
|
|
163
|
+
getNewResourceById(resourceId) {
|
|
63
164
|
return this.newResources.find((r) => r.resourceId === resourceId);
|
|
64
165
|
}
|
|
65
|
-
|
|
166
|
+
getActualResourcesByProperties(filters = []) {
|
|
167
|
+
return this.actualResources.filter((r) => filters.every((c) => r.properties[c.key] === c.value));
|
|
168
|
+
}
|
|
169
|
+
getNewResourcesByProperties(filters = []) {
|
|
66
170
|
return this.newResources.filter((r) => filters.every((c) => r.properties[c.key] === c.value));
|
|
67
171
|
}
|
|
68
|
-
|
|
69
|
-
if (resource.
|
|
70
|
-
throw new Error('Removing non-resource
|
|
172
|
+
removeNewResource(resource) {
|
|
173
|
+
if (resource.NODE_TYPE !== NodeType.RESOURCE && resource.NODE_TYPE !== NodeType.SHARED_RESOURCE) {
|
|
174
|
+
throw new Error('Removing non-resource node!');
|
|
71
175
|
}
|
|
72
176
|
if (!resource.isMarkedDeleted()) {
|
|
73
177
|
resource.remove();
|
|
@@ -79,13 +183,12 @@ export class ResourceDataRepository {
|
|
|
79
183
|
}
|
|
80
184
|
}
|
|
81
185
|
let ResourceDataRepositoryFactory = class ResourceDataRepositoryFactory {
|
|
82
|
-
static
|
|
83
|
-
static async create(forceNew, oldResources, newResources) {
|
|
186
|
+
static async create(forceNew = false, actualResources = [], oldResources = [], newResources = []) {
|
|
84
187
|
if (!this.instance) {
|
|
85
|
-
this.instance = new ResourceDataRepository(oldResources, newResources);
|
|
188
|
+
this.instance = new ResourceDataRepository(actualResources, oldResources, newResources);
|
|
86
189
|
}
|
|
87
190
|
if (forceNew) {
|
|
88
|
-
const newInstance = new ResourceDataRepository(oldResources, newResources);
|
|
191
|
+
const newInstance = new ResourceDataRepository(actualResources, oldResources, newResources);
|
|
89
192
|
Object.keys(this.instance).forEach((key) => (this.instance[key] = newInstance[key]));
|
|
90
193
|
}
|
|
91
194
|
return this.instance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-data.repository.js","sourceRoot":"","sources":["../../src/resources/resource-data.repository.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAsB,
|
|
1
|
+
{"version":3,"file":"resource-data.repository.js","sourceRoot":"","sources":["../../src/resources/resource-data.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,41 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NodeType, type UnknownResource } from '../app.type.js';
|
|
2
2
|
import { type Dependency } from '../functions/dependency/dependency.js';
|
|
3
3
|
import { Diff } from '../functions/diff/diff.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ANode } from '../functions/node/node.abstract.js';
|
|
5
5
|
import type { IResource } from './resource.interface.js';
|
|
6
6
|
import type { ASharedResource } from './shared-resource.abstract.js';
|
|
7
|
-
export declare abstract class AResource<T> extends
|
|
7
|
+
export declare abstract class AResource<T> extends ANode<IResource, T> {
|
|
8
8
|
readonly resourceId: IResource['resourceId'];
|
|
9
9
|
readonly properties: IResource['properties'];
|
|
10
|
-
abstract readonly
|
|
11
|
-
readonly
|
|
10
|
+
abstract readonly NODE_NAME: string;
|
|
11
|
+
readonly NODE_TYPE: NodeType;
|
|
12
|
+
private _deleteMarker;
|
|
12
13
|
readonly response: IResource['response'];
|
|
13
14
|
protected constructor(resourceId: IResource['resourceId'], properties: IResource['properties'], parents: UnknownResource[]);
|
|
14
|
-
addAnchor(): void;
|
|
15
15
|
addRelationship(): {
|
|
16
16
|
thatToThisDependency: Dependency;
|
|
17
17
|
thisToThatDependency: Dependency;
|
|
18
18
|
};
|
|
19
|
+
static cloneResource<T extends AResource<T>>(sourceResource: T, deReferenceResource: (resourceId: string) => Promise<UnknownResource>): Promise<T>;
|
|
20
|
+
cloneResourceInPlace(sourceResource: UnknownResource, deReferenceResource: (resourceId: string) => Promise<UnknownResource>): Promise<void>;
|
|
19
21
|
diff(previous: T | ASharedResource<T>): Promise<Diff[]>;
|
|
22
|
+
diffInverse(diff: Diff, deReferenceResource: (resourceId: string) => Promise<UnknownResource>): Promise<void>;
|
|
20
23
|
diffProperties(previous: T | ASharedResource<T>): Promise<Diff[]>;
|
|
21
24
|
getSharedResource(): ASharedResource<T> | undefined;
|
|
25
|
+
isDeepEquals(other?: UnknownResource): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* To check if self is marked as deleted.
|
|
28
|
+
* A deleted node will be removed from the graph after the transaction.
|
|
29
|
+
*/
|
|
30
|
+
isMarkedDeleted(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* To mark self as deleted.
|
|
33
|
+
* A deleted node will be removed from the graph after the transaction.
|
|
34
|
+
* - A node cannot be deleted if it has dependencies.
|
|
35
|
+
*
|
|
36
|
+
* @throws {@link Error} If node contains dependencies to other nodes.
|
|
37
|
+
*/
|
|
38
|
+
remove(): void;
|
|
22
39
|
setContext(): string;
|
|
23
40
|
synth(): IResource;
|
|
24
41
|
static unSynth(deserializationClass: any, resource: IResource, parentResourceIds: string[], deReferenceResource: (resourceId: string) => Promise<UnknownResource>): Promise<UnknownResource>;
|
|
@@ -1,30 +1,74 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NodeType } from '../app.type.js';
|
|
2
|
+
import { DependencyRelationship } from '../functions/dependency/dependency.js';
|
|
2
3
|
import { Diff, DiffAction } from '../functions/diff/diff.js';
|
|
3
4
|
import { DiffUtility } from '../functions/diff/diff.utility.js';
|
|
4
|
-
import {
|
|
5
|
-
export class AResource extends
|
|
6
|
-
resourceId;
|
|
7
|
-
properties;
|
|
8
|
-
MODEL_TYPE = ModelType.RESOURCE;
|
|
9
|
-
response = {};
|
|
5
|
+
import { ANode } from '../functions/node/node.abstract.js';
|
|
6
|
+
export class AResource extends ANode {
|
|
10
7
|
constructor(resourceId, properties, parents) {
|
|
11
8
|
super();
|
|
12
9
|
this.resourceId = resourceId;
|
|
13
10
|
this.properties = properties;
|
|
11
|
+
this.NODE_TYPE = NodeType.RESOURCE;
|
|
12
|
+
this._deleteMarker = false;
|
|
13
|
+
this.response = {};
|
|
14
14
|
for (const parent of parents) {
|
|
15
15
|
parent.addChild('resourceId', this, 'resourceId');
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
addAnchor() {
|
|
19
|
-
throw new Error('Anchors are not supported in resources!');
|
|
20
|
-
}
|
|
21
18
|
addRelationship() {
|
|
22
19
|
throw new Error('Relationships are not supported in resources!');
|
|
23
20
|
}
|
|
21
|
+
static async cloneResource(sourceResource, deReferenceResource) {
|
|
22
|
+
const resource = {
|
|
23
|
+
properties: JSON.parse(JSON.stringify(sourceResource.properties)),
|
|
24
|
+
resourceId: sourceResource.resourceId,
|
|
25
|
+
response: JSON.parse(JSON.stringify(sourceResource.response)),
|
|
26
|
+
};
|
|
27
|
+
const parentResourceIds = await Promise.all(Object.values(sourceResource.getParents())
|
|
28
|
+
.flat()
|
|
29
|
+
.map((d) => d.to.resourceId));
|
|
30
|
+
const deserializationClass = sourceResource.constructor;
|
|
31
|
+
return deserializationClass.unSynth(deserializationClass, resource, parentResourceIds, deReferenceResource);
|
|
32
|
+
}
|
|
33
|
+
async cloneResourceInPlace(sourceResource, deReferenceResource) {
|
|
34
|
+
// Remove all dependencies from self.
|
|
35
|
+
const selfParents = Object.values(this.getParents())
|
|
36
|
+
.flat()
|
|
37
|
+
.map((d) => d.to);
|
|
38
|
+
for (const parent of selfParents) {
|
|
39
|
+
this.removeRelationship(parent);
|
|
40
|
+
}
|
|
41
|
+
// From source resource, get all dependencies from source to its parents.
|
|
42
|
+
const sourceChildToParentDependencies = Object.values(sourceResource.getParents()).flat();
|
|
43
|
+
// Clone each of those dependencies.
|
|
44
|
+
for (const sourceChildToParentDependency of sourceChildToParentDependencies) {
|
|
45
|
+
const parent = await deReferenceResource(sourceChildToParentDependency.to.resourceId);
|
|
46
|
+
const { childToParentDependency, parentToChildDependency } = parent.addChild('resourceId', this, 'resourceId');
|
|
47
|
+
// Clone behaviors from source to its parent.
|
|
48
|
+
for (const b of sourceChildToParentDependency.synth().behaviors) {
|
|
49
|
+
childToParentDependency.addBehavior(b.onField, b.onAction, b.toField, b.forAction);
|
|
50
|
+
}
|
|
51
|
+
// Clone behaviors from parent to source.
|
|
52
|
+
const sourceParentToChildDependency = sourceChildToParentDependency.to.getDependency(sourceChildToParentDependency.from, DependencyRelationship.PARENT);
|
|
53
|
+
for (const b of sourceParentToChildDependency.synth().behaviors) {
|
|
54
|
+
parentToChildDependency.addBehavior(b.onField, b.onAction, b.toField, b.forAction);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Clone properties.
|
|
58
|
+
for (const key of Object.keys(sourceResource.properties)) {
|
|
59
|
+
this.properties[key] = JSON.parse(JSON.stringify(sourceResource.properties[key]));
|
|
60
|
+
}
|
|
61
|
+
// Clone responses.
|
|
62
|
+
for (const key of Object.keys(sourceResource.response)) {
|
|
63
|
+
this.response[key] = JSON.parse(JSON.stringify(sourceResource.response[key]));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// @ts-expect-error since this overridden diff() is always called with previous.
|
|
24
67
|
async diff(previous) {
|
|
25
68
|
const diffs = [];
|
|
26
69
|
const propertyDiffs = await this.diffProperties(previous);
|
|
27
70
|
diffs.push(...propertyDiffs);
|
|
71
|
+
// Parent diffs.
|
|
28
72
|
const previousParents = Object.values(previous.getParents())
|
|
29
73
|
.flat()
|
|
30
74
|
.map((d) => d.to);
|
|
@@ -41,16 +85,106 @@ export class AResource extends AModel {
|
|
|
41
85
|
}
|
|
42
86
|
return diffs;
|
|
43
87
|
}
|
|
88
|
+
async diffInverse(diff, deReferenceResource) {
|
|
89
|
+
switch (diff.field) {
|
|
90
|
+
case 'resourceId': {
|
|
91
|
+
if (diff.action === DiffAction.DELETE) {
|
|
92
|
+
this.remove();
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
throw new Error('Unknown action on "resourceId" field during diff inverse!');
|
|
96
|
+
}
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
case 'parent': {
|
|
100
|
+
if (diff.action === DiffAction.ADD || diff.action === DiffAction.DELETE) {
|
|
101
|
+
await this.cloneResourceInPlace(diff.node, deReferenceResource);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
throw new Error('Unknown action on "parent" field during diff inverse!');
|
|
105
|
+
}
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
case 'properties': {
|
|
109
|
+
if (diff.action === DiffAction.ADD || diff.action === DiffAction.UPDATE) {
|
|
110
|
+
const change = diff.value;
|
|
111
|
+
this.properties[change.key] = JSON.parse(JSON.stringify(change.value));
|
|
112
|
+
}
|
|
113
|
+
else if (diff.action === DiffAction.DELETE) {
|
|
114
|
+
delete this.properties[diff.field];
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
throw new Error('Unknown action on "properties" field during diff inverse!');
|
|
118
|
+
}
|
|
119
|
+
for (const key of Object.keys(diff.node.response)) {
|
|
120
|
+
this.response[key] = JSON.parse(JSON.stringify(diff.node.response[key]));
|
|
121
|
+
}
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
default: {
|
|
125
|
+
throw new Error('Unknown field during diff inverse!');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
44
129
|
async diffProperties(previous) {
|
|
45
130
|
return DiffUtility.diffObject(previous, this, 'properties');
|
|
46
131
|
}
|
|
47
132
|
getSharedResource() {
|
|
48
|
-
const
|
|
49
|
-
const sharedResourceDependency =
|
|
133
|
+
const sameNodeDependencies = this.getChildren(this.NODE_NAME)[this.NODE_NAME];
|
|
134
|
+
const sharedResourceDependency = sameNodeDependencies?.find((d) => d.to.NODE_TYPE === NodeType.SHARED_RESOURCE);
|
|
50
135
|
return sharedResourceDependency?.to;
|
|
51
136
|
}
|
|
137
|
+
isDeepEquals(other) {
|
|
138
|
+
if (!other) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
if (!DiffUtility.isObjectDeepEquals(this.synth(), other.synth())) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
if (this.isMarkedDeleted() !== other.isMarkedDeleted()) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
const selfDependencies = Object.values(this.getParents()).flat();
|
|
148
|
+
const otherDependencies = Object.values(other.getParents()).flat();
|
|
149
|
+
return selfDependencies.every((sd) => {
|
|
150
|
+
const od = otherDependencies.find((od) => od.isEqual(sd));
|
|
151
|
+
if (!DiffUtility.isObjectDeepEquals(sd.synth(), od?.synth() || {})) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
const sdPd = sd.to.getDependency(sd.from, DependencyRelationship.PARENT);
|
|
155
|
+
const odPd = od.to.getDependency(od.from, DependencyRelationship.PARENT);
|
|
156
|
+
return DiffUtility.isObjectDeepEquals(sdPd.synth(), odPd.synth());
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* To check if self is marked as deleted.
|
|
161
|
+
* A deleted node will be removed from the graph after the transaction.
|
|
162
|
+
*/
|
|
163
|
+
isMarkedDeleted() {
|
|
164
|
+
return this._deleteMarker;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* To mark self as deleted.
|
|
168
|
+
* A deleted node will be removed from the graph after the transaction.
|
|
169
|
+
* - A node cannot be deleted if it has dependencies.
|
|
170
|
+
*
|
|
171
|
+
* @throws {@link Error} If node contains dependencies to other nodes.
|
|
172
|
+
*/
|
|
173
|
+
remove() {
|
|
174
|
+
const dependencies = this.getDependencies();
|
|
175
|
+
// Verify resource can be removed.
|
|
176
|
+
if (dependencies.some((d) => d.isParentRelationship())) {
|
|
177
|
+
throw new Error('Cannot remove resource until dependent nodes exist!');
|
|
178
|
+
}
|
|
179
|
+
// Removing all dependencies that points to this.
|
|
180
|
+
for (const dependency of dependencies) {
|
|
181
|
+
const index = dependency.to.getDependencies().findIndex((d) => d.to.getContext() === this.getContext());
|
|
182
|
+
dependency.to.removeDependency(index);
|
|
183
|
+
}
|
|
184
|
+
this._deleteMarker = true;
|
|
185
|
+
}
|
|
52
186
|
setContext() {
|
|
53
|
-
return `${this.
|
|
187
|
+
return `${this.NODE_NAME}=${this.resourceId}`;
|
|
54
188
|
}
|
|
55
189
|
synth() {
|
|
56
190
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.abstract.js","sourceRoot":"","sources":["../../src/resources/resource.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"resource.abstract.js","sourceRoot":"","sources":["../../src/resources/resource.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAmB,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAI3D,MAAM,OAAgB,SAAa,SAAQ,KAAmB;IAQ5D,YACW,UAAmC,EACnC,UAAmC,EAC5C,OAA0B;QAE1B,KAAK,EAAE,CAAC;QAJC,eAAU,GAAV,UAAU,CAAyB;QACnC,eAAU,GAAV,UAAU,CAAyB;QAR5B,cAAS,GAAa,QAAQ,CAAC,QAAQ,CAAC;QAElD,kBAAa,GAAG,KAAK,CAAC;QAErB,aAAQ,GAA0B,EAAE,CAAC;QAS5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAEQ,eAAe;QACtB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,cAAiB,EACjB,mBAAqE;QAErE,MAAM,QAAQ,GAAc;YAC1B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACjE,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SAC9D,CAAC;QAEF,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACzC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;aACvC,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,EAAsB,CAAC,UAAU,CAAC,CACpD,CAAC;QAEF,MAAM,oBAAoB,GAAG,cAAc,CAAC,WAAkB,CAAC;QAC/D,OAAO,oBAAoB,CAAC,OAAO,CAAC,oBAAoB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAC9G,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,cAA+B,EAC/B,mBAAqE;QAErE,qCAAqC;QACrC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;aACjD,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAqB,CAAC,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,yEAAyE;QACzE,MAAM,+BAA+B,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1F,oCAAoC;QACpC,KAAK,MAAM,6BAA6B,IAAI,+BAA+B,EAAE,CAAC;YAC5E,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAE,6BAA6B,CAAC,EAAsB,CAAC,UAAU,CAAC,CAAC;YAC3G,MAAM,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;YAE/G,6CAA6C;YAC7C,KAAK,MAAM,CAAC,IAAI,6BAA6B,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC;gBAChE,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YACrF,CAAC;YAED,yCAAyC;YACzC,MAAM,6BAA6B,GAAG,6BAA6B,CAAC,EAAE,CAAC,aAAa,CAClF,6BAA6B,CAAC,IAAI,EAClC,sBAAsB,CAAC,MAAM,CAC7B,CAAC;YACH,KAAK,MAAM,CAAC,IAAI,6BAA6B,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC;gBAChE,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QAED,mBAAmB;QACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,gFAAgF;IACvE,KAAK,CAAC,IAAI,CAAC,QAAgC;QAClD,MAAM,KAAK,GAAW,EAAE,CAAC;QAEzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QAE7B,gBAAgB;QAChB,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAE,QAAuC,CAAC,UAAU,EAAE,CAAC;aACzF,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;aACpD,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CACjF,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAClF,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAU,EAAE,mBAAqE;QACjG,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;oBACtC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;gBAC/E,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;oBACxE,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAuB,EAAE,mBAAmB,CAAC,CAAC;gBACrF,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBAC3E,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;oBACxE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAoC,CAAC;oBACzD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzE,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;gBAC/E,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAE,IAAI,CAAC,IAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAE,IAAI,CAAC,IAAwB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChG,CAAC;gBACD,OAAO;YACT,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,QAAgC;QAC5D,OAAO,WAAW,CAAC,UAAU,CAAC,QAAsC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5F,CAAC;IAED,iBAAiB;QACf,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9E,MAAM,wBAAwB,GAAG,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,KAAK,QAAQ,CAAC,eAAe,CAAC,CAAC;QAChH,OAAO,wBAAwB,EAAE,EAAwB,CAAC;IAC5D,CAAC;IAED,YAAY,CAAC,KAAuB;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YACjE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;YACnC,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACnE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAE,CAAC;YAC1E,MAAM,IAAI,GAAG,EAAG,CAAC,EAAE,CAAC,aAAa,CAAC,EAAG,CAAC,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAE,CAAC;YAC5E,OAAO,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,MAAM;QACJ,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE5C,kCAAkC;QAClC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,iDAAiD;QACjD,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACxG,UAAU,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEQ,UAAU;QACjB,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;IAChD,CAAC;IAEQ,KAAK;QACZ,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,oBAAyB,EACzB,QAAmB,EACnB,iBAA2B,EAC3B,mBAAqE;QAErE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChG,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NodeType } from '../app.type.js';
|
|
2
2
|
import type { Diff } from '../functions/diff/diff.js';
|
|
3
3
|
import { AResource } from './resource.abstract.js';
|
|
4
4
|
export declare abstract class ASharedResource<T> extends AResource<T> {
|
|
5
|
-
readonly
|
|
5
|
+
readonly NODE_TYPE: NodeType;
|
|
6
6
|
diff(): Promise<Diff[]>;
|
|
7
7
|
findParentsByProperty(filters: {
|
|
8
8
|
key: keyof AResource<T>['properties'];
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NodeType } from '../app.type.js';
|
|
2
2
|
import { AResource } from './resource.abstract.js';
|
|
3
3
|
export class ASharedResource extends AResource {
|
|
4
|
-
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this.NODE_TYPE = NodeType.SHARED_RESOURCE;
|
|
7
|
+
}
|
|
5
8
|
async diff() {
|
|
6
9
|
return [];
|
|
7
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-resource.abstract.js","sourceRoot":"","sources":["../../src/resources/shared-resource.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"shared-resource.abstract.js","sourceRoot":"","sources":["../../src/resources/shared-resource.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,OAAgB,eAAmB,SAAQ,SAAY;IAA7D;;QACoB,cAAS,GAAa,QAAQ,CAAC,eAAe,CAAC;IA+CnE,CAAC;IA7CU,KAAK,CAAC,IAAI;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qBAAqB,CAAC,OAAgE;QACpF,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAkB,CAAC;YACtC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEQ,iBAAiB;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,sBAA0C;QAC9C,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEvF,KAAK,MAAM,GAAG,IAAI,sBAAsB,CAAC,UAAU,EAAE,CAAC;YACpD,IAAI,sBAAsB,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YAClD,IAAI,sBAAsB,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,MAAM,yCAAyC,GAAG,oBAAoB;aACnE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;aACjE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtB,KAAK,MAAM,MAAM,IAAI,yCAAyC,EAAE,CAAC;YAC/D,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -2,10 +2,9 @@ import { AResource } from '../../resources/resource.abstract.js';
|
|
|
2
2
|
export declare class CaptureService {
|
|
3
3
|
private readonly captures;
|
|
4
4
|
getCapture<T extends AResource<T>>(resourceId: string): {
|
|
5
|
-
properties: Partial<T['properties']>;
|
|
6
5
|
response: Partial<T['response']>;
|
|
7
6
|
} | undefined;
|
|
8
|
-
registerCapture<T extends AResource<T>>(resourceId: T['resourceId'],
|
|
7
|
+
registerCapture<T extends AResource<T>>(resourceId: T['resourceId'], response: Partial<T['response']>): void;
|
|
9
8
|
}
|
|
10
9
|
export declare class CaptureServiceFactory {
|
|
11
10
|
private static instance;
|
|
@@ -6,16 +6,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { Factory } from '../../decorators/factory.decorator.js';
|
|
8
8
|
export class CaptureService {
|
|
9
|
-
|
|
9
|
+
constructor() {
|
|
10
|
+
this.captures = {};
|
|
11
|
+
}
|
|
10
12
|
getCapture(resourceId) {
|
|
11
13
|
return this.captures[resourceId];
|
|
12
14
|
}
|
|
13
|
-
registerCapture(resourceId,
|
|
14
|
-
this.captures[resourceId] = {
|
|
15
|
+
registerCapture(resourceId, response) {
|
|
16
|
+
this.captures[resourceId] = { response };
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
19
|
let CaptureServiceFactory = class CaptureServiceFactory {
|
|
18
|
-
static instance;
|
|
19
20
|
static async create() {
|
|
20
21
|
if (!this.instance) {
|
|
21
22
|
this.instance = new CaptureService();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.service.js","sourceRoot":"","sources":["../../../src/services/capture/capture.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAIhE,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"capture.service.js","sourceRoot":"","sources":["../../../src/services/capture/capture.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAIhE,MAAM,OAAO,cAAc;IAA3B;QACmB,aAAQ,GAErB,EAAE,CAAC;IAST,CAAC;IAPC,UAAU,CAAyB,UAAkB;QACnD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,eAAe,CAAyB,UAA2B,EAAE,QAAgC;QACnG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;IAC3C,CAAC;CACF;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAGhC,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AATY,qBAAqB;IADjC,OAAO,CAAiB,cAAc,CAAC;GAC3B,qBAAqB,CASjC"}
|
|
@@ -5,16 +5,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { EventEmitter } from 'events';
|
|
8
|
-
import { Container } from '../../
|
|
8
|
+
import { Container } from '../../functions/container/container.js';
|
|
9
9
|
import { Factory } from '../../decorators/factory.decorator.js';
|
|
10
10
|
export class EventService {
|
|
11
|
-
EVENT_BUFFER_SIZE = 50;
|
|
12
|
-
emitter = new EventEmitter();
|
|
13
|
-
eventBuffer = {};
|
|
14
|
-
static instance;
|
|
15
|
-
listeners = {};
|
|
16
11
|
constructor() {
|
|
12
|
+
this.EVENT_BUFFER_SIZE = 50;
|
|
13
|
+
this.emitter = new EventEmitter();
|
|
14
|
+
this.eventBuffer = {};
|
|
15
|
+
this.listeners = {};
|
|
17
16
|
this.emitter.on('*', (event) => {
|
|
17
|
+
// Save event to EventBuffer.
|
|
18
18
|
if (!this.eventBuffer[event.constructor.name]) {
|
|
19
19
|
this.eventBuffer[event.constructor.name] = { eventClass: Object.getPrototypeOf(event).constructor, events: [] };
|
|
20
20
|
}
|
|
@@ -22,6 +22,7 @@ export class EventService {
|
|
|
22
22
|
this.eventBuffer[event.constructor.name].events.shift();
|
|
23
23
|
}
|
|
24
24
|
this.eventBuffer[event.constructor.name].events.push(event);
|
|
25
|
+
// Forward event to matching listeners.
|
|
25
26
|
this.forwardEvent(event);
|
|
26
27
|
});
|
|
27
28
|
}
|
|
@@ -58,12 +59,14 @@ export class EventService {
|
|
|
58
59
|
if (!this.listeners[eventClass.name]) {
|
|
59
60
|
this.listeners[eventClass.name] = { eventClass, eventListeners: [] };
|
|
60
61
|
}
|
|
62
|
+
// Register this listener.
|
|
61
63
|
const originalMethod = descriptor.value;
|
|
62
64
|
descriptor.value = async function (...args) {
|
|
63
65
|
const listener = await Container.get(target.constructor.name);
|
|
64
66
|
return await originalMethod.apply(listener, args);
|
|
65
67
|
};
|
|
66
68
|
this.listeners[eventClass.name].eventListeners.push(descriptor.value);
|
|
69
|
+
// Replay all previous events that were emitted before this listener was registered.
|
|
67
70
|
const currentTimestamp = Date.now();
|
|
68
71
|
for (const previousEventClassName of Object.keys(this.eventBuffer)) {
|
|
69
72
|
const previousEventClass = this.eventBuffer[previousEventClassName].eventClass;
|