@quadnix/octo 0.0.16 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/app.type.d.ts +14 -16
- package/dist/app.type.js.map +1 -1
- package/dist/decorators/action.decorator.js +29 -15
- package/dist/decorators/action.decorator.js.map +1 -1
- package/dist/decorators/anchor.decorator.js +5 -1
- package/dist/decorators/anchor.decorator.js.map +1 -1
- package/dist/decorators/container.d.ts +1 -1
- package/dist/decorators/enable-hook.decorator.d.ts +3 -0
- package/dist/decorators/enable-hook.decorator.js +13 -0
- package/dist/decorators/enable-hook.decorator.js.map +1 -0
- package/dist/decorators/factory.decorator.d.ts +1 -1
- package/dist/decorators/model.decorator.js +5 -1
- package/dist/decorators/model.decorator.js.map +1 -1
- package/dist/decorators/module.decorator.d.ts +36 -1
- package/dist/decorators/module.decorator.js +15 -5
- package/dist/decorators/module.decorator.js.map +1 -1
- package/dist/decorators/overlay.decorator.js +5 -1
- package/dist/decorators/overlay.decorator.js.map +1 -1
- package/dist/decorators/resource.decorator.js +5 -1
- package/dist/decorators/resource.decorator.js.map +1 -1
- package/dist/decorators/test-container.d.ts +13 -2
- package/dist/decorators/test-container.js +18 -3
- package/dist/decorators/test-container.js.map +1 -1
- package/dist/functions/dependency/{dependency.model.d.ts → dependency.d.ts} +2 -3
- package/dist/functions/dependency/{dependency.model.js → dependency.js} +1 -17
- package/dist/functions/dependency/dependency.js.map +1 -0
- package/dist/functions/diff/diff-metadata.d.ts +20 -0
- package/dist/functions/diff/{diff-metadata.model.js → diff-metadata.js} +2 -6
- package/dist/functions/diff/diff-metadata.js.map +1 -0
- package/dist/functions/diff/{diff.model.d.ts → diff.d.ts} +2 -2
- package/dist/functions/diff/{diff.model.js → diff.js} +16 -2
- package/dist/functions/diff/diff.js.map +1 -0
- package/dist/functions/diff/diff.utility.d.ts +3 -2
- package/dist/functions/diff/diff.utility.js +30 -5
- package/dist/functions/diff/diff.utility.js.map +1 -1
- package/dist/functions/hook/commit.hook.d.ts +11 -0
- package/dist/functions/hook/commit.hook.js +39 -0
- package/dist/functions/hook/commit.hook.js.map +1 -0
- package/dist/functions/hook/hook.interface.d.ts +8 -0
- package/dist/functions/hook/hook.interface.js +2 -0
- package/dist/functions/hook/hook.interface.js.map +1 -0
- package/dist/functions/hook/model-action.hook.d.ts +12 -0
- package/dist/functions/hook/model-action.hook.js +70 -0
- package/dist/functions/hook/model-action.hook.js.map +1 -0
- package/dist/functions/hook/resource-action.hook.d.ts +12 -0
- package/dist/functions/hook/resource-action.hook.js +49 -0
- package/dist/functions/hook/resource-action.hook.js.map +1 -0
- package/dist/index.d.ts +29 -28
- package/dist/index.js +9 -8
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +31 -0
- package/dist/main.js +111 -0
- package/dist/main.js.map +1 -0
- package/dist/models/app/app.interface.d.ts +1 -1
- package/dist/models/app/app.model.d.ts +5 -5
- package/dist/models/app/app.model.js +4 -11
- package/dist/models/app/app.model.js.map +1 -1
- package/dist/models/deployment/deployment.interface.d.ts +1 -1
- package/dist/models/deployment/deployment.model.d.ts +5 -3
- package/dist/models/deployment/deployment.model.js +5 -2
- package/dist/models/deployment/deployment.model.js.map +1 -1
- package/dist/models/environment/environment.interface.d.ts +1 -1
- package/dist/models/environment/environment.model.d.ts +5 -5
- package/dist/models/environment/environment.model.js +3 -3
- package/dist/models/environment/environment.model.js.map +1 -1
- package/dist/models/execution/execution.interface.d.ts +2 -2
- package/dist/models/execution/execution.model.d.ts +8 -9
- package/dist/models/execution/execution.model.js +53 -21
- package/dist/models/execution/execution.model.js.map +1 -1
- package/dist/models/image/image.interface.d.ts +1 -1
- package/dist/models/image/image.model.d.ts +5 -3
- package/dist/models/image/image.model.js +5 -6
- package/dist/models/image/image.model.js.map +1 -1
- package/dist/models/model-action.interface.d.ts +9 -0
- package/dist/models/model-action.interface.js +2 -0
- package/dist/models/model-action.interface.js.map +1 -0
- package/dist/models/model.abstract.d.ts +40 -14
- package/dist/models/model.abstract.js +167 -57
- package/dist/models/model.abstract.js.map +1 -1
- package/dist/models/model.interface.d.ts +4 -3
- package/dist/models/pipeline/pipeline.interface.d.ts +1 -1
- package/dist/models/pipeline/pipeline.model.d.ts +5 -5
- package/dist/models/pipeline/pipeline.model.js +4 -4
- package/dist/models/pipeline/pipeline.model.js.map +1 -1
- package/dist/models/region/region.interface.d.ts +1 -1
- package/dist/models/region/region.model.d.ts +7 -3
- package/dist/models/region/region.model.js +14 -1
- package/dist/models/region/region.model.js.map +1 -1
- package/dist/models/server/server.interface.d.ts +1 -3
- package/dist/models/server/server.model.d.ts +6 -6
- package/dist/models/server/server.model.js +7 -10
- package/dist/models/server/server.model.js.map +1 -1
- package/dist/models/service/service.interface.d.ts +1 -1
- package/dist/models/service/service.model.d.ts +4 -2
- package/dist/models/service/service.model.js +4 -1
- package/dist/models/service/service.model.js.map +1 -1
- package/dist/models/subnet/subnet.interface.d.ts +8 -0
- package/dist/models/subnet/subnet.interface.js +2 -0
- package/dist/models/subnet/subnet.interface.js.map +1 -0
- package/dist/models/subnet/subnet.model.d.ts +25 -0
- package/dist/models/subnet/subnet.model.js +98 -0
- package/dist/models/subnet/subnet.model.js.map +1 -0
- package/dist/modules/module.container.d.ts +25 -0
- package/dist/modules/module.container.js +122 -0
- package/dist/modules/module.container.js.map +1 -0
- package/dist/modules/module.interface.d.ts +3 -0
- package/dist/modules/module.interface.js.map +1 -0
- package/dist/modules/test-module.container.d.ts +28 -0
- package/dist/modules/test-module.container.js +67 -0
- package/dist/modules/test-module.container.js.map +1 -0
- package/dist/overlays/anchor.abstract.d.ts +4 -4
- package/dist/overlays/anchor.abstract.js +8 -11
- package/dist/overlays/anchor.abstract.js.map +1 -1
- package/dist/overlays/anchor.interface.d.ts +5 -2
- package/dist/overlays/overlay-data.repository.d.ts +7 -7
- package/dist/overlays/overlay-data.repository.js +19 -7
- package/dist/overlays/overlay-data.repository.js.map +1 -1
- package/dist/overlays/overlay.abstract.d.ts +15 -8
- package/dist/overlays/overlay.abstract.js +78 -12
- package/dist/overlays/overlay.abstract.js.map +1 -1
- package/dist/overlays/overlay.interface.d.ts +1 -1
- package/dist/overlays/overlay.service.d.ts +10 -6
- package/dist/overlays/overlay.service.js +19 -13
- package/dist/overlays/overlay.service.js.map +1 -1
- package/dist/resources/resource-action.interface.d.ts +2 -1
- package/dist/resources/resource-data.repository.d.ts +8 -8
- package/dist/resources/resource-data.repository.js +52 -34
- package/dist/resources/resource-data.repository.js.map +1 -1
- package/dist/resources/resource.abstract.d.ts +15 -12
- package/dist/resources/resource.abstract.js +34 -34
- package/dist/resources/resource.abstract.js.map +1 -1
- package/dist/resources/shared-resource.abstract.d.ts +1 -1
- package/dist/resources/shared-resource.abstract.js.map +1 -1
- package/dist/services/capture/capture.service.d.ts +13 -0
- package/dist/services/capture/capture.service.js +30 -0
- package/dist/services/capture/capture.service.js.map +1 -0
- package/dist/services/input/input.service.d.ts +13 -0
- package/dist/services/input/input.service.js +45 -0
- package/dist/services/input/input.service.js.map +1 -0
- package/dist/services/serialization/model/model-serialization.service.d.ts +9 -5
- package/dist/services/serialization/model/model-serialization.service.js +65 -44
- package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
- package/dist/services/serialization/resource/resource-serialization.service.d.ts +8 -3
- package/dist/services/serialization/resource/resource-serialization.service.js +29 -11
- package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
- package/dist/services/state-management/local.state-provider.d.ts +1 -1
- package/dist/services/state-management/local.state-provider.js +9 -1
- package/dist/services/state-management/local.state-provider.js.map +1 -1
- package/dist/services/state-management/state-management.service.d.ts +16 -1
- package/dist/services/state-management/state-management.service.js +52 -1
- package/dist/services/state-management/state-management.service.js.map +1 -1
- package/dist/services/state-management/test.state-provider.d.ts +7 -0
- package/dist/services/state-management/test.state-provider.js +13 -0
- package/dist/services/state-management/test.state-provider.js.map +1 -0
- package/dist/services/transaction/transaction.service.d.ts +18 -11
- package/dist/services/transaction/transaction.service.js +57 -40
- package/dist/services/transaction/transaction.service.js.map +1 -1
- package/dist/utilities/array/array.utility.d.ts +3 -0
- package/dist/utilities/array/array.utility.js +24 -0
- package/dist/utilities/array/array.utility.js.map +1 -0
- package/dist/utilities/cidr/cidr.utility.d.ts +7 -0
- package/dist/utilities/cidr/cidr.utility.js +48 -0
- package/dist/utilities/cidr/cidr.utility.js.map +1 -0
- package/dist/utilities/object/object.utility.d.ts +3 -0
- package/dist/utilities/object/object.utility.js +9 -0
- package/dist/utilities/object/object.utility.js.map +1 -0
- package/package.json +5 -1
- package/dist/functions/dependency/dependency.model.js.map +0 -1
- package/dist/functions/diff/diff-metadata.model.d.ts +0 -20
- package/dist/functions/diff/diff-metadata.model.js.map +0 -1
- package/dist/functions/diff/diff.model.js.map +0 -1
- package/dist/functions/module/module.abstract.d.ts +0 -12
- package/dist/functions/module/module.abstract.js +0 -39
- package/dist/functions/module/module.abstract.js.map +0 -1
- package/dist/functions/module/module.interface.d.ts +0 -4
- package/dist/functions/module/module.interface.js.map +0 -1
- package/dist/models/action.interface.d.ts +0 -9
- package/dist/models/action.interface.js +0 -2
- package/dist/models/action.interface.js.map +0 -1
- package/dist/models/support/support.interface.d.ts +0 -5
- package/dist/models/support/support.interface.js +0 -2
- package/dist/models/support/support.interface.js.map +0 -1
- package/dist/models/support/support.model.d.ts +0 -14
- package/dist/models/support/support.model.js +0 -52
- package/dist/models/support/support.model.js.map +0 -1
- /package/dist/{functions/module → modules}/module.interface.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Diff, DiffAction } from './diff.
|
|
1
|
+
import { Diff, DiffAction } from './diff.js';
|
|
2
2
|
export class DiffUtility {
|
|
3
3
|
static generateDeleteDiff(model, field) {
|
|
4
4
|
const diff = [];
|
|
@@ -45,7 +45,7 @@ export class DiffUtility {
|
|
|
45
45
|
diff.push(new Diff(b, DiffAction.UPDATE, field, aObject));
|
|
46
46
|
}
|
|
47
47
|
else {
|
|
48
|
-
diff.push(
|
|
48
|
+
diff.push(new Diff(a, DiffAction.DELETE, field, aObject));
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
for (const bObject of b[field]) {
|
|
@@ -77,7 +77,7 @@ export class DiffUtility {
|
|
|
77
77
|
static async diffModels(a, b, field) {
|
|
78
78
|
const diff = [];
|
|
79
79
|
for (const x of a) {
|
|
80
|
-
const y = b.find((i) => i
|
|
80
|
+
const y = b.find((i) => i.getContext() === x.getContext());
|
|
81
81
|
if (y) {
|
|
82
82
|
const pDiff = await y.diff(x);
|
|
83
83
|
diff.push(...pDiff);
|
|
@@ -87,13 +87,38 @@ export class DiffUtility {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
for (const y of b) {
|
|
90
|
-
if (!a.find((i) => i
|
|
91
|
-
diff.push(new Diff(y, DiffAction.ADD, field, y[field]));
|
|
90
|
+
if (!a.find((i) => i.getContext() === y.getContext())) {
|
|
92
91
|
const pDiff = await y.diff();
|
|
93
92
|
diff.push(...pDiff);
|
|
94
93
|
}
|
|
95
94
|
}
|
|
96
95
|
return diff;
|
|
97
96
|
}
|
|
97
|
+
static diffObject(a, b, field) {
|
|
98
|
+
const diff = [];
|
|
99
|
+
for (const [key, value] of Object.entries(a[field])) {
|
|
100
|
+
if (b[field].hasOwnProperty(key)) {
|
|
101
|
+
if (typeof b[field][key] === 'object') {
|
|
102
|
+
if (!DiffUtility.isObjectDeepEquals(b[field][key], value)) {
|
|
103
|
+
diff.push(new Diff(b, DiffAction.UPDATE, field, { key, value: b[field][key] }));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
if (b[field][key] !== value) {
|
|
108
|
+
diff.push(new Diff(b, DiffAction.UPDATE, field, { key, value: b[field][key] }));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
diff.push(new Diff(a, DiffAction.DELETE, field, { key, value }));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
for (const [key, value] of Object.entries(b[field])) {
|
|
117
|
+
if (!a[field].hasOwnProperty(key)) {
|
|
118
|
+
diff.push(new Diff(b, DiffAction.ADD, field, { key, value }));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return diff;
|
|
122
|
+
}
|
|
98
123
|
}
|
|
99
124
|
//# sourceMappingURL=diff.utility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.utility.js","sourceRoot":"","sources":["../../../src/functions/diff/diff.utility.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"diff.utility.js","sourceRoot":"","sources":["../../../src/functions/diff/diff.utility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ModuleContainer } from '../../modules/module.container.js';
|
|
2
|
+
import type { IHook } from './hook.interface.js';
|
|
3
|
+
export declare class CommitHook implements IHook {
|
|
4
|
+
private static instance;
|
|
5
|
+
private readonly postCommitHooks;
|
|
6
|
+
private readonly preCommitHooks;
|
|
7
|
+
collectHooks(registeredModules: ModuleContainer['modules']): void;
|
|
8
|
+
static getInstance(): CommitHook;
|
|
9
|
+
registrar(descriptor: PropertyDescriptor): void;
|
|
10
|
+
reset(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export class CommitHook {
|
|
2
|
+
static instance;
|
|
3
|
+
postCommitHooks = [];
|
|
4
|
+
preCommitHooks = [];
|
|
5
|
+
collectHooks(registeredModules) {
|
|
6
|
+
for (const m of registeredModules) {
|
|
7
|
+
for (const { callback } of m.properties.postCommitHooks || []) {
|
|
8
|
+
this.postCommitHooks.push(callback);
|
|
9
|
+
}
|
|
10
|
+
for (const { callback } of m.properties.preCommitHooks || []) {
|
|
11
|
+
this.preCommitHooks.push(callback);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
static getInstance() {
|
|
16
|
+
if (!this.instance) {
|
|
17
|
+
this.instance = new CommitHook();
|
|
18
|
+
}
|
|
19
|
+
return this.instance;
|
|
20
|
+
}
|
|
21
|
+
registrar(descriptor) {
|
|
22
|
+
const self = this;
|
|
23
|
+
const originalMethod = descriptor.value;
|
|
24
|
+
descriptor.value = async function (...args) {
|
|
25
|
+
for (const callback of self.preCommitHooks) {
|
|
26
|
+
await callback.apply(this, args);
|
|
27
|
+
}
|
|
28
|
+
await originalMethod.apply(this, args);
|
|
29
|
+
for (const callback of self.postCommitHooks) {
|
|
30
|
+
await callback.apply(this, args);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
reset() {
|
|
35
|
+
this.postCommitHooks.splice(0, this.postCommitHooks.length);
|
|
36
|
+
this.preCommitHooks.splice(0, this.preCommitHooks.length);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=commit.hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit.hook.js","sourceRoot":"","sources":["../../../src/functions/hook/commit.hook.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,UAAU;IACb,MAAM,CAAC,QAAQ,CAAa;IAEnB,eAAe,GAAgC,EAAE,CAAC;IAClD,cAAc,GAAgC,EAAE,CAAC;IAElE,YAAY,CAAC,iBAA6C;QACxD,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;gBAC9D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;YAED,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;gBAC7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,UAA8B;QAGtC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAA6B;YACjE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC3C,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEvC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5C,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IModelAction } from '../../models/model-action.interface.js';
|
|
2
|
+
import type { ModuleContainer } from '../../modules/module.container.js';
|
|
3
|
+
import type { IResourceAction } from '../../resources/resource-action.interface.js';
|
|
4
|
+
export interface IHook {
|
|
5
|
+
collectHooks(registeredModules: ModuleContainer['modules']): void;
|
|
6
|
+
registrar(arg: IModelAction | IResourceAction | PropertyDescriptor): void;
|
|
7
|
+
reset(): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.interface.js","sourceRoot":"","sources":["../../../src/functions/hook/hook.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IModelAction } from '../../models/model-action.interface.js';
|
|
2
|
+
import type { ModuleContainer } from '../../modules/module.container.js';
|
|
3
|
+
import type { IHook } from './hook.interface.js';
|
|
4
|
+
export declare class ModelActionHook implements IHook {
|
|
5
|
+
private static instance;
|
|
6
|
+
private readonly postModelActionHooks;
|
|
7
|
+
private readonly preModelActionHooks;
|
|
8
|
+
collectHooks(registeredModules: ModuleContainer['modules']): void;
|
|
9
|
+
static getInstance(): ModelActionHook;
|
|
10
|
+
registrar(modelAction: IModelAction): void;
|
|
11
|
+
reset(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Container } from '../../decorators/container.js';
|
|
2
|
+
import { InputService } from '../../services/input/input.service.js';
|
|
3
|
+
export class ModelActionHook {
|
|
4
|
+
static instance;
|
|
5
|
+
postModelActionHooks = {};
|
|
6
|
+
preModelActionHooks = {};
|
|
7
|
+
collectHooks(registeredModules) {
|
|
8
|
+
for (const m of registeredModules) {
|
|
9
|
+
for (const { ACTION_NAME, collectInput, handle } of m.properties.postModelActionHooks || []) {
|
|
10
|
+
if (!this.postModelActionHooks[ACTION_NAME]) {
|
|
11
|
+
this.postModelActionHooks[ACTION_NAME] = [];
|
|
12
|
+
}
|
|
13
|
+
this.postModelActionHooks[ACTION_NAME].push({ collectInput, handle });
|
|
14
|
+
}
|
|
15
|
+
for (const { ACTION_NAME, collectInput, handle } of m.properties.preModelActionHooks || []) {
|
|
16
|
+
if (!this.preModelActionHooks[ACTION_NAME]) {
|
|
17
|
+
this.preModelActionHooks[ACTION_NAME] = [];
|
|
18
|
+
}
|
|
19
|
+
this.preModelActionHooks[ACTION_NAME].push({ collectInput, handle });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
static getInstance() {
|
|
24
|
+
if (!this.instance) {
|
|
25
|
+
this.instance = new ModelActionHook();
|
|
26
|
+
}
|
|
27
|
+
return this.instance;
|
|
28
|
+
}
|
|
29
|
+
registrar(modelAction) {
|
|
30
|
+
const self = this;
|
|
31
|
+
const originalHandleMethod = modelAction.handle;
|
|
32
|
+
modelAction.handle = async function (...args) {
|
|
33
|
+
const inputService = await Container.get(InputService);
|
|
34
|
+
let output = args[2] || {};
|
|
35
|
+
for (const { collectInput, handle } of self.preModelActionHooks[modelAction.ACTION_NAME] || []) {
|
|
36
|
+
const inputs = collectInput ? collectInput(args[0]) : [];
|
|
37
|
+
const resolvedInputs = inputs.reduce((accumulator, currentValue) => {
|
|
38
|
+
accumulator[currentValue] = inputService.getInput(currentValue);
|
|
39
|
+
if (!accumulator[currentValue]) {
|
|
40
|
+
throw new Error('No matching input found to process module!');
|
|
41
|
+
}
|
|
42
|
+
return accumulator;
|
|
43
|
+
}, {});
|
|
44
|
+
output = await handle.apply(this, [args[0], resolvedInputs, output]);
|
|
45
|
+
}
|
|
46
|
+
output = await originalHandleMethod.apply(this, [args[0], args[1], output]);
|
|
47
|
+
for (const { collectInput, handle } of self.postModelActionHooks[modelAction.ACTION_NAME] || []) {
|
|
48
|
+
const inputs = collectInput ? collectInput(args[0]) : [];
|
|
49
|
+
const resolvedInputs = inputs.reduce((accumulator, currentValue) => {
|
|
50
|
+
accumulator[currentValue] = inputService.getInput(currentValue);
|
|
51
|
+
if (!accumulator[currentValue]) {
|
|
52
|
+
throw new Error('No matching input found to process module!');
|
|
53
|
+
}
|
|
54
|
+
return accumulator;
|
|
55
|
+
}, {});
|
|
56
|
+
output = await handle.apply(this, [args[0], resolvedInputs, output]);
|
|
57
|
+
}
|
|
58
|
+
return output;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
reset() {
|
|
62
|
+
for (const name in this.postModelActionHooks) {
|
|
63
|
+
delete this.postModelActionHooks[name];
|
|
64
|
+
}
|
|
65
|
+
for (const name in this.preModelActionHooks) {
|
|
66
|
+
delete this.preModelActionHooks[name];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=model-action.hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-action.hook.js","sourceRoot":"","sources":["../../../src/functions/hook/model-action.hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ModuleContainer } from '../../modules/module.container.js';
|
|
2
|
+
import type { IResourceAction } from '../../resources/resource-action.interface.js';
|
|
3
|
+
import type { IHook } from './hook.interface.js';
|
|
4
|
+
export declare class ResourceActionHook implements IHook {
|
|
5
|
+
private static instance;
|
|
6
|
+
private readonly postResourceActionHooks;
|
|
7
|
+
private readonly preResourceActionHooks;
|
|
8
|
+
collectHooks(registeredModules: ModuleContainer['modules']): void;
|
|
9
|
+
static getInstance(): ResourceActionHook;
|
|
10
|
+
registrar(resourceAction: IResourceAction): void;
|
|
11
|
+
reset(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export class ResourceActionHook {
|
|
2
|
+
static instance;
|
|
3
|
+
postResourceActionHooks = {};
|
|
4
|
+
preResourceActionHooks = {};
|
|
5
|
+
collectHooks(registeredModules) {
|
|
6
|
+
for (const m of registeredModules) {
|
|
7
|
+
for (const { ACTION_NAME, handle } of m.properties.postResourceActionHooks || []) {
|
|
8
|
+
if (!this.postResourceActionHooks[ACTION_NAME]) {
|
|
9
|
+
this.postResourceActionHooks[ACTION_NAME] = [];
|
|
10
|
+
}
|
|
11
|
+
this.postResourceActionHooks[ACTION_NAME].push({ handle });
|
|
12
|
+
}
|
|
13
|
+
for (const { ACTION_NAME, handle } of m.properties.preResourceActionHooks || []) {
|
|
14
|
+
if (!this.preResourceActionHooks[ACTION_NAME]) {
|
|
15
|
+
this.preResourceActionHooks[ACTION_NAME] = [];
|
|
16
|
+
}
|
|
17
|
+
this.preResourceActionHooks[ACTION_NAME].push({ handle });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
static getInstance() {
|
|
22
|
+
if (!this.instance) {
|
|
23
|
+
this.instance = new ResourceActionHook();
|
|
24
|
+
}
|
|
25
|
+
return this.instance;
|
|
26
|
+
}
|
|
27
|
+
registrar(resourceAction) {
|
|
28
|
+
const self = this;
|
|
29
|
+
const originalHandleMethod = resourceAction.handle;
|
|
30
|
+
resourceAction.handle = async function (...args) {
|
|
31
|
+
for (const { handle } of self.preResourceActionHooks[resourceAction.ACTION_NAME] || []) {
|
|
32
|
+
await handle.apply(this, args);
|
|
33
|
+
}
|
|
34
|
+
await originalHandleMethod.apply(this, args);
|
|
35
|
+
for (const { handle } of self.postResourceActionHooks[resourceAction.ACTION_NAME] || []) {
|
|
36
|
+
await handle.apply(this, args);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
reset() {
|
|
41
|
+
for (const name in this.postResourceActionHooks) {
|
|
42
|
+
delete this.postResourceActionHooks[name];
|
|
43
|
+
}
|
|
44
|
+
for (const name in this.preResourceActionHooks) {
|
|
45
|
+
delete this.preResourceActionHooks[name];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=resource-action.hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-action.hook.js","sourceRoot":"","sources":["../../../src/functions/hook/resource-action.hook.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAC,QAAQ,CAAqB;IAE3B,uBAAuB,GAEpC,EAAE,CAAC;IACU,sBAAsB,GAEnC,EAAE,CAAC;IAEP,YAAY,CAAC,iBAA6C;QACxD,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,KAAK,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,uBAAuB,IAAI,EAAE,EAAE,CAAC;gBACjF,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/C,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;gBACjD,CAAC;gBACD,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,KAAK,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,sBAAsB,IAAI,EAAE,EAAE,CAAC;gBAChF,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;gBAChD,CAAC;gBACD,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,cAA+B;QAGvC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAAC;QAEnD,cAAc,CAAC,MAAM,GAAG,KAAK,WAAW,GAAG,IAAY;YACrD,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvF,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAE7C,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxF,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,KAAK;QACH,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,53 +1,54 @@
|
|
|
1
|
-
export { Anchor } from './decorators/anchor.decorator.js';
|
|
2
1
|
export { Action } from './decorators/action.decorator.js';
|
|
2
|
+
export { Anchor } from './decorators/anchor.decorator.js';
|
|
3
3
|
export { Container } from './decorators/container.js';
|
|
4
|
+
export { EnableHook } from './decorators/enable-hook.decorator.js';
|
|
4
5
|
export { Factory } from './decorators/factory.decorator.js';
|
|
5
6
|
export { Model } from './decorators/model.decorator.js';
|
|
6
7
|
export { Module } from './decorators/module.decorator.js';
|
|
7
8
|
export { Overlay } from './decorators/overlay.decorator.js';
|
|
8
9
|
export { Resource } from './decorators/resource.decorator.js';
|
|
9
|
-
export { TestContainer } from './decorators/test-container.js';
|
|
10
|
-
export {
|
|
10
|
+
export { IPackageMock, TestContainer } from './decorators/test-container.js';
|
|
11
|
+
export { DependencyRelationship } from './functions/dependency/dependency.js';
|
|
12
|
+
export { Diff, DiffAction } from './functions/diff/diff.js';
|
|
11
13
|
export { DiffUtility } from './functions/diff/diff.utility.js';
|
|
12
|
-
export { DiffMetadata } from './functions/diff/diff-metadata.
|
|
13
|
-
export {
|
|
14
|
-
export { IModule } from './functions/module/module.interface.js';
|
|
14
|
+
export { DiffMetadata } from './functions/diff/diff-metadata.js';
|
|
15
|
+
export { type IApp } from './models/app/app.interface.js';
|
|
15
16
|
export { App } from './models/app/app.model.js';
|
|
16
|
-
export {
|
|
17
|
+
export { type IDeployment } from './models/deployment/deployment.interface.js';
|
|
17
18
|
export { Deployment } from './models/deployment/deployment.model.js';
|
|
18
|
-
export {
|
|
19
|
+
export { type IEnvironment } from './models/environment/environment.interface.js';
|
|
19
20
|
export { Environment } from './models/environment/environment.model.js';
|
|
20
|
-
export {
|
|
21
|
+
export { type IExecution } from './models/execution/execution.interface.js';
|
|
21
22
|
export { Execution } from './models/execution/execution.model.js';
|
|
22
|
-
export {
|
|
23
|
-
export { IImageDockerOptions, Image } from './models/image/image.model.js';
|
|
24
|
-
export {
|
|
23
|
+
export { type IImage } from './models/image/image.interface.js';
|
|
24
|
+
export { type IImageDockerOptions, Image } from './models/image/image.model.js';
|
|
25
|
+
export { type IPipeline } from './models/pipeline/pipeline.interface.js';
|
|
25
26
|
export { Pipeline } from './models/pipeline/pipeline.model.js';
|
|
26
|
-
export {
|
|
27
|
+
export { type IRegion } from './models/region/region.interface.js';
|
|
27
28
|
export { Region } from './models/region/region.model.js';
|
|
28
|
-
export {
|
|
29
|
+
export { type IServer } from './models/server/server.interface.js';
|
|
29
30
|
export { Server } from './models/server/server.model.js';
|
|
30
|
-
export {
|
|
31
|
+
export { type IService } from './models/service/service.interface.js';
|
|
31
32
|
export { Service } from './models/service/service.model.js';
|
|
32
|
-
export {
|
|
33
|
-
export {
|
|
34
|
-
export { ISupport } from './models/support/support.interface.js';
|
|
35
|
-
export { IAction } from './models/action.interface.js';
|
|
33
|
+
export { type ISubnet } from './models/subnet/subnet.interface.js';
|
|
34
|
+
export { Subnet, SubnetType } from './models/subnet/subnet.model.js';
|
|
36
35
|
export { AModel } from './models/model.abstract.js';
|
|
37
|
-
export { IModel, IModelReference } from './models/model.interface.js';
|
|
36
|
+
export { type IModel, type IModelReference } from './models/model.interface.js';
|
|
37
|
+
export { type IModelAction } from './models/model-action.interface.js';
|
|
38
|
+
export { type IModule } from './modules/module.interface.js';
|
|
39
|
+
export { TestModuleContainer } from './modules/test-module.container.js';
|
|
38
40
|
export { AAnchor } from './overlays/anchor.abstract.js';
|
|
39
|
-
export { IAnchor } from './overlays/anchor.interface.js';
|
|
41
|
+
export { type IAnchor } from './overlays/anchor.interface.js';
|
|
40
42
|
export { AOverlay } from './overlays/overlay.abstract.js';
|
|
41
|
-
export { IOverlay } from './overlays/overlay.interface.js';
|
|
43
|
+
export { type IOverlay } from './overlays/overlay.interface.js';
|
|
42
44
|
export { OverlayService } from './overlays/overlay.service.js';
|
|
43
45
|
export { AResource } from './resources/resource.abstract.js';
|
|
44
|
-
export { IResource } from './resources/resource.interface.js';
|
|
45
|
-
export { IResourceAction } from './resources/resource-action.interface.js';
|
|
46
|
+
export { type IResource } from './resources/resource.interface.js';
|
|
47
|
+
export { type IResourceAction } from './resources/resource-action.interface.js';
|
|
46
48
|
export { ASharedResource } from './resources/shared-resource.abstract.js';
|
|
47
|
-
export { ModelSerializationService } from './services/serialization/model/model-serialization.service.js';
|
|
48
|
-
export { ResourceSerializationService } from './services/serialization/resource/resource-serialization.service.js';
|
|
49
49
|
export { LocalStateProvider } from './services/state-management/local.state-provider.js';
|
|
50
50
|
export { StateManagementService } from './services/state-management/state-management.service.js';
|
|
51
|
-
export { IStateProvider } from './services/state-management/state-provider.interface.js';
|
|
52
|
-
export {
|
|
51
|
+
export { type IStateProvider } from './services/state-management/state-provider.interface.js';
|
|
52
|
+
export { TestStateProvider } from './services/state-management/test.state-provider.js';
|
|
53
53
|
export * from './app.type.js';
|
|
54
|
+
export { Octo } from './main.js';
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
export { Anchor } from './decorators/anchor.decorator.js';
|
|
2
1
|
export { Action } from './decorators/action.decorator.js';
|
|
2
|
+
export { Anchor } from './decorators/anchor.decorator.js';
|
|
3
3
|
export { Container } from './decorators/container.js';
|
|
4
|
+
export { EnableHook } from './decorators/enable-hook.decorator.js';
|
|
4
5
|
export { Factory } from './decorators/factory.decorator.js';
|
|
5
6
|
export { Model } from './decorators/model.decorator.js';
|
|
6
7
|
export { Module } from './decorators/module.decorator.js';
|
|
7
8
|
export { Overlay } from './decorators/overlay.decorator.js';
|
|
8
9
|
export { Resource } from './decorators/resource.decorator.js';
|
|
9
10
|
export { TestContainer } from './decorators/test-container.js';
|
|
10
|
-
export {
|
|
11
|
+
export { DependencyRelationship } from './functions/dependency/dependency.js';
|
|
12
|
+
export { Diff, DiffAction } from './functions/diff/diff.js';
|
|
11
13
|
export { DiffUtility } from './functions/diff/diff.utility.js';
|
|
12
|
-
export { DiffMetadata } from './functions/diff/diff-metadata.
|
|
13
|
-
export { AModule } from './functions/module/module.abstract.js';
|
|
14
|
+
export { DiffMetadata } from './functions/diff/diff-metadata.js';
|
|
14
15
|
export { App } from './models/app/app.model.js';
|
|
15
16
|
export { Deployment } from './models/deployment/deployment.model.js';
|
|
16
17
|
export { Environment } from './models/environment/environment.model.js';
|
|
@@ -20,17 +21,17 @@ export { Pipeline } from './models/pipeline/pipeline.model.js';
|
|
|
20
21
|
export { Region } from './models/region/region.model.js';
|
|
21
22
|
export { Server } from './models/server/server.model.js';
|
|
22
23
|
export { Service } from './models/service/service.model.js';
|
|
23
|
-
export {
|
|
24
|
+
export { Subnet, SubnetType } from './models/subnet/subnet.model.js';
|
|
24
25
|
export { AModel } from './models/model.abstract.js';
|
|
26
|
+
export { TestModuleContainer } from './modules/test-module.container.js';
|
|
25
27
|
export { AAnchor } from './overlays/anchor.abstract.js';
|
|
26
28
|
export { AOverlay } from './overlays/overlay.abstract.js';
|
|
27
29
|
export { OverlayService } from './overlays/overlay.service.js';
|
|
28
30
|
export { AResource } from './resources/resource.abstract.js';
|
|
29
31
|
export { ASharedResource } from './resources/shared-resource.abstract.js';
|
|
30
|
-
export { ModelSerializationService } from './services/serialization/model/model-serialization.service.js';
|
|
31
|
-
export { ResourceSerializationService } from './services/serialization/resource/resource-serialization.service.js';
|
|
32
32
|
export { LocalStateProvider } from './services/state-management/local.state-provider.js';
|
|
33
33
|
export { StateManagementService } from './services/state-management/state-management.service.js';
|
|
34
|
-
export {
|
|
34
|
+
export { TestStateProvider } from './services/state-management/test.state-provider.js';
|
|
35
35
|
export * from './app.type.js';
|
|
36
|
+
export { Octo } from './main.js';
|
|
36
37
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAgB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE,OAAO,EAA4B,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAKpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yDAAyD,CAAC;AAEjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AAEvF,cAAc,eAAe,CAAC;AAE9B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ActionInputs, Constructable, TransactionOptions, UnknownResource } from './app.type.js';
|
|
2
|
+
import { DiffMetadata } from './functions/diff/diff-metadata.js';
|
|
3
|
+
import { App } from './models/app/app.model.js';
|
|
4
|
+
import { IModule } from './modules/module.interface.js';
|
|
5
|
+
import { AResource } from './resources/resource.abstract.js';
|
|
6
|
+
import { IStateProvider } from './services/state-management/state-provider.interface.js';
|
|
7
|
+
import { TransactionService } from './services/transaction/transaction.service.js';
|
|
8
|
+
export declare class Octo {
|
|
9
|
+
private readonly modelStateFileName;
|
|
10
|
+
private readonly resourceStateFileName;
|
|
11
|
+
private previousApp;
|
|
12
|
+
private captureService;
|
|
13
|
+
private inputService;
|
|
14
|
+
private modelSerializationService;
|
|
15
|
+
private resourceDataRepository;
|
|
16
|
+
private resourceSerializationService;
|
|
17
|
+
private stateManagementService;
|
|
18
|
+
private transactionService;
|
|
19
|
+
beginTransaction(app: App, options?: TransactionOptions): Promise<ReturnType<TransactionService['beginTransaction']>>;
|
|
20
|
+
commitTransaction(app: App, modelTransaction: DiffMetadata[][]): Promise<void>;
|
|
21
|
+
compose(): Promise<void>;
|
|
22
|
+
getAllResources(): UnknownResource[];
|
|
23
|
+
getModuleOutput<T>(module: Constructable<IModule<T>> | string): Promise<T | undefined>;
|
|
24
|
+
initialize(stateProvider: IStateProvider): Promise<void>;
|
|
25
|
+
registerCapture<T extends AResource<T>>(resourceId: T['resourceId'], properties: Partial<T['properties']>, response: Partial<T['response']>): void;
|
|
26
|
+
registerInputs(inputs: ActionInputs): void;
|
|
27
|
+
private retrieveModelState;
|
|
28
|
+
private retrieveResourceState;
|
|
29
|
+
private saveModelState;
|
|
30
|
+
private saveResourceState;
|
|
31
|
+
}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { strict as assert } from 'assert';
|
|
11
|
+
import { Container } from './decorators/container.js';
|
|
12
|
+
import { EnableHook } from './decorators/enable-hook.decorator.js';
|
|
13
|
+
import { App } from './models/app/app.model.js';
|
|
14
|
+
import { ModuleContainer } from './modules/module.container.js';
|
|
15
|
+
import { ResourceDataRepository } from './resources/resource-data.repository.js';
|
|
16
|
+
import { CaptureService } from './services/capture/capture.service.js';
|
|
17
|
+
import { InputService } from './services/input/input.service.js';
|
|
18
|
+
import { ModelSerializationService } from './services/serialization/model/model-serialization.service.js';
|
|
19
|
+
import { ResourceSerializationService } from './services/serialization/resource/resource-serialization.service.js';
|
|
20
|
+
import { StateManagementService } from './services/state-management/state-management.service.js';
|
|
21
|
+
import { TransactionService } from './services/transaction/transaction.service.js';
|
|
22
|
+
export class Octo {
|
|
23
|
+
modelStateFileName = 'models.json';
|
|
24
|
+
resourceStateFileName = 'resources.json';
|
|
25
|
+
previousApp;
|
|
26
|
+
captureService;
|
|
27
|
+
inputService;
|
|
28
|
+
modelSerializationService;
|
|
29
|
+
resourceDataRepository;
|
|
30
|
+
resourceSerializationService;
|
|
31
|
+
stateManagementService;
|
|
32
|
+
transactionService;
|
|
33
|
+
async beginTransaction(app, options) {
|
|
34
|
+
const diffs = await app.diff(this.previousApp);
|
|
35
|
+
return this.transactionService.beginTransaction(diffs, options || {});
|
|
36
|
+
}
|
|
37
|
+
async commitTransaction(app, modelTransaction) {
|
|
38
|
+
assert(!!modelTransaction);
|
|
39
|
+
await this.saveModelState(app);
|
|
40
|
+
await this.saveResourceState();
|
|
41
|
+
await this.retrieveResourceState();
|
|
42
|
+
this.previousApp = await this.retrieveModelState();
|
|
43
|
+
}
|
|
44
|
+
async compose() {
|
|
45
|
+
const moduleContainer = await Container.get(ModuleContainer);
|
|
46
|
+
await moduleContainer.apply();
|
|
47
|
+
}
|
|
48
|
+
getAllResources() {
|
|
49
|
+
return this.resourceDataRepository.getByProperties();
|
|
50
|
+
}
|
|
51
|
+
async getModuleOutput(module) {
|
|
52
|
+
const moduleContainer = await Container.get(ModuleContainer);
|
|
53
|
+
return moduleContainer.getOutput(module);
|
|
54
|
+
}
|
|
55
|
+
async initialize(stateProvider) {
|
|
56
|
+
[
|
|
57
|
+
this.captureService,
|
|
58
|
+
this.inputService,
|
|
59
|
+
this.modelSerializationService,
|
|
60
|
+
this.resourceDataRepository,
|
|
61
|
+
this.resourceSerializationService,
|
|
62
|
+
this.stateManagementService,
|
|
63
|
+
this.transactionService,
|
|
64
|
+
] = await Promise.all([
|
|
65
|
+
Container.get(CaptureService),
|
|
66
|
+
Container.get(InputService),
|
|
67
|
+
Container.get(ModelSerializationService),
|
|
68
|
+
Container.get(ResourceDataRepository),
|
|
69
|
+
Container.get(ResourceSerializationService),
|
|
70
|
+
Container.get(StateManagementService, { args: [stateProvider] }),
|
|
71
|
+
Container.get(TransactionService),
|
|
72
|
+
]);
|
|
73
|
+
await this.retrieveResourceState();
|
|
74
|
+
this.previousApp = await this.retrieveModelState();
|
|
75
|
+
}
|
|
76
|
+
registerCapture(resourceId, properties, response) {
|
|
77
|
+
this.captureService.registerCapture(resourceId, properties, response);
|
|
78
|
+
}
|
|
79
|
+
registerInputs(inputs) {
|
|
80
|
+
this.inputService.registerInputs(inputs);
|
|
81
|
+
}
|
|
82
|
+
async retrieveModelState() {
|
|
83
|
+
const { data: modelSerializedOutput } = await this.stateManagementService.getModelState(this.modelStateFileName);
|
|
84
|
+
return Object.keys(modelSerializedOutput.models).length > 0
|
|
85
|
+
? (await this.modelSerializationService.deserialize(modelSerializedOutput))
|
|
86
|
+
: undefined;
|
|
87
|
+
}
|
|
88
|
+
async retrieveResourceState() {
|
|
89
|
+
const { data: resourceSerializedOutput } = await this.stateManagementService.getResourceState(this.resourceStateFileName);
|
|
90
|
+
await this.resourceSerializationService.deserialize(resourceSerializedOutput);
|
|
91
|
+
}
|
|
92
|
+
async saveModelState(app) {
|
|
93
|
+
const modelSerializedOutput = await this.modelSerializationService.serialize(app);
|
|
94
|
+
await this.stateManagementService.saveModelState(this.modelStateFileName, modelSerializedOutput, {
|
|
95
|
+
version: 1,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
async saveResourceState() {
|
|
99
|
+
const resourceSerializedOutput = await this.resourceSerializationService.serialize();
|
|
100
|
+
await this.stateManagementService.saveResourceState(this.resourceStateFileName, resourceSerializedOutput, {
|
|
101
|
+
version: 1,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
__decorate([
|
|
106
|
+
EnableHook('CommitHook'),
|
|
107
|
+
__metadata("design:type", Function),
|
|
108
|
+
__metadata("design:paramtypes", [App, Array]),
|
|
109
|
+
__metadata("design:returntype", Promise)
|
|
110
|
+
], Octo.prototype, "commitTransaction", null);
|
|
111
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|