@quadnix/octo 0.0.19 → 0.0.21
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 +5 -0
- package/dist/app.type.js +6 -0
- package/dist/app.type.js.map +1 -1
- package/dist/decorators/action.decorator.d.ts +17 -0
- package/dist/decorators/action.decorator.js +26 -1
- package/dist/decorators/action.decorator.js.map +1 -1
- package/dist/decorators/anchor.decorator.d.ts +13 -0
- package/dist/decorators/anchor.decorator.js +16 -1
- package/dist/decorators/anchor.decorator.js.map +1 -1
- package/dist/decorators/container.d.ts +61 -0
- package/dist/decorators/container.js +68 -3
- package/dist/decorators/container.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 +18 -0
- package/dist/decorators/event-source.decorator.js +22 -0
- package/dist/decorators/event-source.decorator.js.map +1 -0
- package/dist/decorators/factory.decorator.d.ts +30 -0
- package/dist/decorators/factory.decorator.js +30 -0
- package/dist/decorators/factory.decorator.js.map +1 -1
- package/dist/decorators/model.decorator.d.ts +13 -0
- package/dist/decorators/model.decorator.js +16 -1
- package/dist/decorators/model.decorator.js.map +1 -1
- package/dist/decorators/module.decorator.d.ts +52 -0
- package/dist/decorators/module.decorator.js +60 -1
- package/dist/decorators/module.decorator.js.map +1 -1
- package/dist/decorators/on-event.decorator.d.ts +20 -0
- package/dist/decorators/on-event.decorator.js +24 -0
- package/dist/decorators/on-event.decorator.js.map +1 -0
- package/dist/decorators/overlay.decorator.d.ts +13 -0
- package/dist/decorators/overlay.decorator.js +16 -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 +16 -1
- package/dist/decorators/resource.decorator.js.map +1 -1
- package/dist/decorators/test-container.d.ts +52 -0
- package/dist/decorators/test-container.js +54 -2
- package/dist/decorators/test-container.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 +35 -0
- package/dist/events/error.event.js +36 -0
- package/dist/events/error.event.js.map +1 -0
- package/dist/events/event.model.d.ts +37 -0
- package/dist/events/event.model.js +43 -0
- package/dist/events/event.model.js.map +1 -0
- package/dist/events/hook.event.d.ts +194 -0
- package/dist/events/hook.event.js +195 -0
- package/dist/events/hook.event.js.map +1 -0
- package/dist/events/module.event.d.ts +15 -0
- package/dist/events/module.event.js +16 -0
- package/dist/events/module.event.js.map +1 -0
- package/dist/events/registration.event.d.ts +112 -0
- package/dist/events/registration.event.js +170 -0
- package/dist/events/registration.event.js.map +1 -0
- package/dist/events/serialization.event.d.ts +72 -0
- package/dist/events/serialization.event.js +73 -0
- package/dist/events/serialization.event.js.map +1 -0
- package/dist/events/transaction.event.d.ts +48 -0
- package/dist/events/transaction.event.js +49 -0
- package/dist/events/transaction.event.js.map +1 -0
- 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 +3 -0
- package/dist/functions/diff/diff-metadata.js +5 -10
- package/dist/functions/diff/diff-metadata.js.map +1 -1
- package/dist/functions/diff/diff.d.ts +3 -0
- package/dist/functions/diff/diff.js +3 -4
- package/dist/functions/diff/diff.js.map +1 -1
- package/dist/functions/diff/diff.utility.d.ts +32 -0
- package/dist/functions/diff/diff.utility.js +49 -0
- package/dist/functions/diff/diff.utility.js.map +1 -1
- package/dist/functions/hook/commit.hook.js +11 -3
- package/dist/functions/hook/commit.hook.js.map +1 -1
- package/dist/functions/hook/model-action.hook.js +11 -3
- package/dist/functions/hook/model-action.hook.js.map +1 -1
- package/dist/functions/hook/resource-action.hook.js +11 -3
- package/dist/functions/hook/resource-action.hook.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +11 -2
- package/dist/main.js +34 -16
- 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 +29 -0
- package/dist/models/app/app.model.js +40 -3
- 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 +15 -0
- package/dist/models/deployment/deployment.model.js +20 -3
- 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 +18 -0
- package/dist/models/environment/environment.model.js +33 -4
- 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 +23 -0
- package/dist/models/execution/execution.model.js +39 -2
- 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 +35 -0
- package/dist/models/image/image.model.js +25 -6
- package/dist/models/image/image.model.js.map +1 -1
- package/dist/models/model-action.interface.d.ts +21 -0
- package/dist/models/model.abstract.d.ts +265 -0
- package/dist/models/model.abstract.js +274 -5
- package/dist/models/model.abstract.js.map +1 -1
- package/dist/models/model.interface.d.ts +25 -0
- package/dist/models/pipeline/pipeline.interface.d.ts +5 -0
- package/dist/models/pipeline/pipeline.model.d.ts +15 -0
- package/dist/models/pipeline/pipeline.model.js +25 -4
- 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 +18 -0
- package/dist/models/region/region.model.js +29 -3
- 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 +17 -0
- package/dist/models/server/server.model.js +24 -3
- 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 +15 -0
- package/dist/models/service/service.model.js +19 -2
- 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 +48 -0
- package/dist/models/subnet/subnet.model.js +52 -7
- package/dist/models/subnet/subnet.model.js.map +1 -1
- package/dist/modules/module.container.d.ts +2 -0
- package/dist/modules/module.container.js +22 -10
- package/dist/modules/module.container.js.map +1 -1
- package/dist/modules/test-module.container.d.ts +4 -3
- package/dist/modules/test-module.container.js +13 -10
- 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.js +0 -3
- package/dist/overlays/overlay-data.repository.js.map +1 -1
- package/dist/overlays/overlay.abstract.js +3 -3
- package/dist/overlays/overlay.abstract.js.map +1 -1
- package/dist/overlays/overlay.service.js +0 -2
- package/dist/overlays/overlay.service.js.map +1 -1
- package/dist/resources/resource-data.repository.js +6 -3
- package/dist/resources/resource-data.repository.js.map +1 -1
- package/dist/resources/resource.abstract.js +4 -4
- package/dist/resources/resource.abstract.js.map +1 -1
- package/dist/resources/shared-resource.abstract.js +4 -1
- package/dist/resources/shared-resource.abstract.js.map +1 -1
- package/dist/services/capture/capture.service.js +3 -2
- package/dist/services/capture/capture.service.js.map +1 -1
- package/dist/services/event/event.service.d.ts +17 -0
- package/dist/services/event/event.service.js +92 -0
- package/dist/services/event/event.service.js.map +1 -0
- package/dist/services/input/input.service.js +1 -3
- package/dist/services/input/input.service.js.map +1 -1
- package/dist/services/serialization/model/model-serialization.service.d.ts +1 -1
- package/dist/services/serialization/model/model-serialization.service.js +28 -5
- package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
- package/dist/services/serialization/resource/resource-serialization.service.js +32 -4
- 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.js +0 -2
- 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 +4 -0
- package/dist/services/transaction/transaction.service.js +69 -9
- 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
|
@@ -13,16 +13,25 @@ export class DiffUtility {
|
|
|
13
13
|
diff.push(new Diff(model, DiffAction.DELETE, field, model[field]));
|
|
14
14
|
return diff;
|
|
15
15
|
}
|
|
16
|
+
// Source: https://stackoverflow.com/a/32922084/1834562
|
|
16
17
|
static isObjectDeepEquals(x, y) {
|
|
17
18
|
const ok = Object.keys, tx = typeof x, ty = typeof y;
|
|
18
19
|
return x && y && tx === 'object' && tx === ty
|
|
19
20
|
? ok(x).length === ok(y).length && ok(x).every((key) => this.isObjectDeepEquals(x[key], y[key]))
|
|
20
21
|
: x === y;
|
|
21
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Generate a deep diff of an array of basic types from the previous model vs the latest model.
|
|
25
|
+
* @param a previous model.
|
|
26
|
+
* @param b latest model.
|
|
27
|
+
* @param field string representing the field parent uses to reference the array.
|
|
28
|
+
*/
|
|
22
29
|
static diffArray(a, b, field) {
|
|
23
30
|
const diff = [];
|
|
24
31
|
const aSet = new Set(a[field]);
|
|
25
32
|
const bSet = new Set(b[field]);
|
|
33
|
+
// Iterate elements of previous (a). If found in latest (b), consider it an UPDATE.
|
|
34
|
+
// If not found in latest (b), consider it a DELETE.
|
|
26
35
|
for (const element of aSet) {
|
|
27
36
|
if (bSet.has(element)) {
|
|
28
37
|
diff.push(new Diff(b, DiffAction.UPDATE, field, element));
|
|
@@ -31,6 +40,7 @@ export class DiffUtility {
|
|
|
31
40
|
diff.push(new Diff(a, DiffAction.DELETE, field, element));
|
|
32
41
|
}
|
|
33
42
|
}
|
|
43
|
+
// Iterate elements of latest (b). If not found in previous (a), consider it an ADD.
|
|
34
44
|
for (const element of bSet) {
|
|
35
45
|
if (!aSet.has(element)) {
|
|
36
46
|
diff.push(new Diff(b, DiffAction.ADD, field, element));
|
|
@@ -38,8 +48,17 @@ export class DiffUtility {
|
|
|
38
48
|
}
|
|
39
49
|
return diff;
|
|
40
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Generate a deep diff of an array of objects from the previous model vs the latest model.
|
|
53
|
+
* @param a previous model.
|
|
54
|
+
* @param b latest model.
|
|
55
|
+
* @param field string representing the field parent uses to reference the array.
|
|
56
|
+
* @param compare function to check if two objects are equal.
|
|
57
|
+
*/
|
|
41
58
|
static diffArrayOfObjects(a, b, field, compare) {
|
|
42
59
|
const diff = [];
|
|
60
|
+
// Iterate elements of previous (a). If found in latest (b), consider it an UPDATE.
|
|
61
|
+
// If not found in latest (b), consider it a DELETE.
|
|
43
62
|
for (const aObject of a[field]) {
|
|
44
63
|
if (b[field].some((bObject) => compare(aObject, bObject))) {
|
|
45
64
|
diff.push(new Diff(b, DiffAction.UPDATE, field, aObject));
|
|
@@ -48,6 +67,7 @@ export class DiffUtility {
|
|
|
48
67
|
diff.push(new Diff(a, DiffAction.DELETE, field, aObject));
|
|
49
68
|
}
|
|
50
69
|
}
|
|
70
|
+
// Iterate elements of latest (b). If not found in previous (a), consider it an ADD.
|
|
51
71
|
for (const bObject of b[field]) {
|
|
52
72
|
if (!a[field].some((aObject) => compare(aObject, bObject))) {
|
|
53
73
|
diff.push(new Diff(b, DiffAction.ADD, field, bObject));
|
|
@@ -55,8 +75,16 @@ export class DiffUtility {
|
|
|
55
75
|
}
|
|
56
76
|
return diff;
|
|
57
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Generate a deep diff of a map of basic types from the previous model vs the latest model.
|
|
80
|
+
* @param a previous model.
|
|
81
|
+
* @param b latest model.
|
|
82
|
+
* @param field string representing the field parent uses to reference the map.
|
|
83
|
+
*/
|
|
58
84
|
static diffMap(a, b, field) {
|
|
59
85
|
const diff = [];
|
|
86
|
+
// Iterate fields of previous (a). If found in latest (b), consider it an UPDATE.
|
|
87
|
+
// If not found in latest (b), consider it a DELETE.
|
|
60
88
|
for (const [key, value] of a[field]) {
|
|
61
89
|
if (b[field].has(key)) {
|
|
62
90
|
if (b[field].get(key) !== value) {
|
|
@@ -67,6 +95,7 @@ export class DiffUtility {
|
|
|
67
95
|
diff.push(new Diff(a, DiffAction.DELETE, field, { key, value }));
|
|
68
96
|
}
|
|
69
97
|
}
|
|
98
|
+
// Iterate fields of latest (b). If not found in previous (a), consider it an ADD.
|
|
70
99
|
for (const [key, value] of b[field]) {
|
|
71
100
|
if (!a[field].has(key)) {
|
|
72
101
|
diff.push(new Diff(b, DiffAction.ADD, field, { key, value }));
|
|
@@ -74,8 +103,17 @@ export class DiffUtility {
|
|
|
74
103
|
}
|
|
75
104
|
return diff;
|
|
76
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Generate a deep diff of an array of previous models vs latest models.
|
|
108
|
+
* The diff is generated recursively, i.e. all children of the model are included in the diff.
|
|
109
|
+
* @param a array of previous models.
|
|
110
|
+
* @param b array of latest models.
|
|
111
|
+
* @param field string representing the unique identifier of the model.
|
|
112
|
+
*/
|
|
77
113
|
static async diffModels(a, b, field) {
|
|
78
114
|
const diff = [];
|
|
115
|
+
// Iterate fields of previous (a). If found in latest (b), get recursive diff of children of b vs a.
|
|
116
|
+
// If not found in latest (b), consider it a DELETE.
|
|
79
117
|
for (const x of a) {
|
|
80
118
|
const y = b.find((i) => i.getContext() === x.getContext());
|
|
81
119
|
if (y) {
|
|
@@ -86,6 +124,8 @@ export class DiffUtility {
|
|
|
86
124
|
diff.push(...DiffUtility.generateDeleteDiff(x, field));
|
|
87
125
|
}
|
|
88
126
|
}
|
|
127
|
+
// Iterate fields of latest (b). If not found in previous (a), consider it an ADD.
|
|
128
|
+
// Recursively add all children of b.
|
|
89
129
|
for (const y of b) {
|
|
90
130
|
if (!a.find((i) => i.getContext() === y.getContext())) {
|
|
91
131
|
const pDiff = await y.diff();
|
|
@@ -94,8 +134,16 @@ export class DiffUtility {
|
|
|
94
134
|
}
|
|
95
135
|
return diff;
|
|
96
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Generate a deep diff of an object from the previous model vs the latest model.
|
|
139
|
+
* @param a previous model.
|
|
140
|
+
* @param b latest model.
|
|
141
|
+
* @param field string representing the field parent uses to reference the object.
|
|
142
|
+
*/
|
|
97
143
|
static diffObject(a, b, field) {
|
|
98
144
|
const diff = [];
|
|
145
|
+
// Iterate fields of previous (a). If found in latest (b), consider it an UPDATE.
|
|
146
|
+
// If not found in latest (b), consider it a DELETE.
|
|
99
147
|
for (const [key, value] of Object.entries(a[field])) {
|
|
100
148
|
if (b[field].hasOwnProperty(key)) {
|
|
101
149
|
if (typeof b[field][key] === 'object') {
|
|
@@ -113,6 +161,7 @@ export class DiffUtility {
|
|
|
113
161
|
diff.push(new Diff(a, DiffAction.DELETE, field, { key, value }));
|
|
114
162
|
}
|
|
115
163
|
}
|
|
164
|
+
// Iterate fields of latest (b). If not found in previous (a), consider it an ADD.
|
|
116
165
|
for (const [key, value] of Object.entries(b[field])) {
|
|
117
166
|
if (!a[field].hasOwnProperty(key)) {
|
|
118
167
|
diff.push(new Diff(b, DiffAction.ADD, field, { key, value }));
|
|
@@ -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,WAAW,CAAC;AAE7C,MAAM,OAAO,WAAW;IACd,MAAM,CAAC,kBAAkB,CAAC,KAAmB,EAAE,KAAa;QAClE,MAAM,IAAI,GAAW,EAAE,CAAC;QAExB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,EAAG,CAAC,OAAO,CAAC;gBACzD,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;
|
|
1
|
+
{"version":3,"file":"diff.utility.js","sourceRoot":"","sources":["../../../src/functions/diff/diff.utility.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { CommitHookCallbackDoneEvent, PostCommitHookCallbackDoneEvent, PreCommitHookCallbackDoneEvent, } from '../../events/hook.event.js';
|
|
2
|
+
import { EventService } from '../../services/event/event.service.js';
|
|
1
3
|
export class CommitHook {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
constructor() {
|
|
5
|
+
this.postCommitHooks = [];
|
|
6
|
+
this.preCommitHooks = [];
|
|
7
|
+
}
|
|
5
8
|
collectHooks(registeredModules) {
|
|
6
9
|
for (const m of registeredModules) {
|
|
7
10
|
for (const { callback } of m.properties.postCommitHooks || []) {
|
|
@@ -19,15 +22,20 @@ export class CommitHook {
|
|
|
19
22
|
return this.instance;
|
|
20
23
|
}
|
|
21
24
|
registrar(descriptor) {
|
|
25
|
+
// `self` here references this class, vs `this` references the original method.
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
22
27
|
const self = this;
|
|
23
28
|
const originalMethod = descriptor.value;
|
|
24
29
|
descriptor.value = async function (...args) {
|
|
25
30
|
for (const callback of self.preCommitHooks) {
|
|
26
31
|
await callback.apply(this, args);
|
|
32
|
+
EventService.getInstance().emit(new PreCommitHookCallbackDoneEvent());
|
|
27
33
|
}
|
|
28
34
|
await originalMethod.apply(this, args);
|
|
35
|
+
EventService.getInstance().emit(new CommitHookCallbackDoneEvent());
|
|
29
36
|
for (const callback of self.postCommitHooks) {
|
|
30
37
|
await callback.apply(this, args);
|
|
38
|
+
EventService.getInstance().emit(new PostCommitHookCallbackDoneEvent());
|
|
31
39
|
}
|
|
32
40
|
};
|
|
33
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.hook.js","sourceRoot":"","sources":["../../../src/functions/hook/commit.hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commit.hook.js","sourceRoot":"","sources":["../../../src/functions/hook/commit.hook.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAIrE,MAAM,OAAO,UAAU;IAAvB;QAGmB,oBAAe,GAAgC,EAAE,CAAC;QAClD,mBAAc,GAAgC,EAAE,CAAC;IAgDpE,CAAC;IA9CC,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;QACtC,+EAA+E;QAC/E,4DAA4D;QAC5D,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;gBACjC,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,8BAA8B,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,2BAA2B,EAAE,CAAC,CAAC;YAEnE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5C,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACjC,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,+BAA+B,EAAE,CAAC,CAAC;YACzE,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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { Container } from '../../decorators/container.js';
|
|
2
|
+
import { ModelActionHookCallbackDoneEvent, PostModelActionHookCallbackDoneEvent, PreModelActionHookCallbackDoneEvent, } from '../../events/hook.event.js';
|
|
3
|
+
import { EventService } from '../../services/event/event.service.js';
|
|
2
4
|
import { InputService } from '../../services/input/input.service.js';
|
|
3
5
|
export class ModelActionHook {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
constructor() {
|
|
7
|
+
this.postModelActionHooks = {};
|
|
8
|
+
this.preModelActionHooks = {};
|
|
9
|
+
}
|
|
7
10
|
collectHooks(registeredModules) {
|
|
8
11
|
for (const m of registeredModules) {
|
|
9
12
|
for (const { ACTION_NAME, collectInput, handle } of m.properties.postModelActionHooks || []) {
|
|
@@ -27,6 +30,8 @@ export class ModelActionHook {
|
|
|
27
30
|
return this.instance;
|
|
28
31
|
}
|
|
29
32
|
registrar(modelAction) {
|
|
33
|
+
// `self` here references this class, vs `this` references the original method.
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
30
35
|
const self = this;
|
|
31
36
|
const originalHandleMethod = modelAction.handle;
|
|
32
37
|
modelAction.handle = async function (...args) {
|
|
@@ -42,8 +47,10 @@ export class ModelActionHook {
|
|
|
42
47
|
return accumulator;
|
|
43
48
|
}, {});
|
|
44
49
|
output = await handle.apply(this, [args[0], resolvedInputs, output]);
|
|
50
|
+
EventService.getInstance().emit(new PreModelActionHookCallbackDoneEvent());
|
|
45
51
|
}
|
|
46
52
|
output = await originalHandleMethod.apply(this, [args[0], args[1], output]);
|
|
53
|
+
EventService.getInstance().emit(new ModelActionHookCallbackDoneEvent());
|
|
47
54
|
for (const { collectInput, handle } of self.postModelActionHooks[modelAction.ACTION_NAME] || []) {
|
|
48
55
|
const inputs = collectInput ? collectInput(args[0]) : [];
|
|
49
56
|
const resolvedInputs = inputs.reduce((accumulator, currentValue) => {
|
|
@@ -54,6 +61,7 @@ export class ModelActionHook {
|
|
|
54
61
|
return accumulator;
|
|
55
62
|
}, {});
|
|
56
63
|
output = await handle.apply(this, [args[0], resolvedInputs, output]);
|
|
64
|
+
EventService.getInstance().emit(new PostModelActionHookCallbackDoneEvent());
|
|
57
65
|
}
|
|
58
66
|
return output;
|
|
59
67
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-action.hook.js","sourceRoot":"","sources":["../../../src/functions/hook/model-action.hook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"model-action.hook.js","sourceRoot":"","sources":["../../../src/functions/hook/model-action.hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { PostResourceActionHookCallbackDoneEvent, PreResourceActionHookCallbackDoneEvent, ResourceActionHookCallbackDoneEvent, } from '../../events/hook.event.js';
|
|
2
|
+
import { EventService } from '../../services/event/event.service.js';
|
|
1
3
|
export class ResourceActionHook {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
constructor() {
|
|
5
|
+
this.postResourceActionHooks = {};
|
|
6
|
+
this.preResourceActionHooks = {};
|
|
7
|
+
}
|
|
5
8
|
collectHooks(registeredModules) {
|
|
6
9
|
for (const m of registeredModules) {
|
|
7
10
|
for (const { ACTION_NAME, handle } of m.properties.postResourceActionHooks || []) {
|
|
@@ -25,15 +28,20 @@ export class ResourceActionHook {
|
|
|
25
28
|
return this.instance;
|
|
26
29
|
}
|
|
27
30
|
registrar(resourceAction) {
|
|
31
|
+
// `self` here references this class, vs `this` references the original method.
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
28
33
|
const self = this;
|
|
29
34
|
const originalHandleMethod = resourceAction.handle;
|
|
30
35
|
resourceAction.handle = async function (...args) {
|
|
31
36
|
for (const { handle } of self.preResourceActionHooks[resourceAction.ACTION_NAME] || []) {
|
|
32
37
|
await handle.apply(this, args);
|
|
38
|
+
EventService.getInstance().emit(new PreResourceActionHookCallbackDoneEvent());
|
|
33
39
|
}
|
|
34
40
|
await originalHandleMethod.apply(this, args);
|
|
41
|
+
EventService.getInstance().emit(new ResourceActionHookCallbackDoneEvent());
|
|
35
42
|
for (const { handle } of self.postResourceActionHooks[resourceAction.ACTION_NAME] || []) {
|
|
36
43
|
await handle.apply(this, args);
|
|
44
|
+
EventService.getInstance().emit(new PostResourceActionHookCallbackDoneEvent());
|
|
37
45
|
}
|
|
38
46
|
};
|
|
39
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-action.hook.js","sourceRoot":"","sources":["../../../src/functions/hook/resource-action.hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resource-action.hook.js","sourceRoot":"","sources":["../../../src/functions/hook/resource-action.hook.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,13 +5,22 @@ export { EnableHook } from './decorators/enable-hook.decorator.js';
|
|
|
5
5
|
export { Factory } from './decorators/factory.decorator.js';
|
|
6
6
|
export { Model } from './decorators/model.decorator.js';
|
|
7
7
|
export { Module } from './decorators/module.decorator.js';
|
|
8
|
+
export { OnEvent } from './decorators/on-event.decorator.js';
|
|
8
9
|
export { Overlay } from './decorators/overlay.decorator.js';
|
|
9
10
|
export { Resource } from './decorators/resource.decorator.js';
|
|
10
11
|
export { IPackageMock, TestContainer } from './decorators/test-container.js';
|
|
12
|
+
export { Validate } from './decorators/validate.decorator.js';
|
|
11
13
|
export { DependencyRelationship } from './functions/dependency/dependency.js';
|
|
12
14
|
export { Diff, DiffAction } from './functions/diff/diff.js';
|
|
13
15
|
export { DiffUtility } from './functions/diff/diff.utility.js';
|
|
14
16
|
export { DiffMetadata } from './functions/diff/diff-metadata.js';
|
|
17
|
+
export { ErrorEvent, RegistrationErrorEvent } from './events/error.event.js';
|
|
18
|
+
export { Event } from './events/event.model.js';
|
|
19
|
+
export { CommitHookCallbackDoneEvent, CommitHookEvent, HookEvent, ModelActionHookCallbackDoneEvent, ModelActionHookEvent, PostCommitHookCallbackDoneEvent, PostModelActionHookCallbackDoneEvent, PostResourceActionHookCallbackDoneEvent, PreCommitHookCallbackDoneEvent, PreModelActionHookCallbackDoneEvent, PreResourceActionHookCallbackDoneEvent, ResourceActionHookCallbackDoneEvent, ResourceActionHookEvent, } from './events/hook.event.js';
|
|
20
|
+
export { ModuleEvent } from './events/module.event.js';
|
|
21
|
+
export { AnchorRegistrationEvent, ModelActionRegistrationEvent, ModelRegistrationEvent, OverlayRegistrationEvent, RegistrationEvent, ResourceActionRegistrationEvent, ResourceRegistrationEvent, } from './events/registration.event.js';
|
|
22
|
+
export { ModelDeserializedEvent, ModelSerializedEvent, ResourceDeserializedEvent, ResourceSerializedEvent, SerializationEvent, } from './events/serialization.event.js';
|
|
23
|
+
export { ModelActionTransactionEvent, ResourceActionTransactionEvent, TransactionEvent, } from './events/transaction.event.js';
|
|
15
24
|
export { type IApp } from './models/app/app.interface.js';
|
|
16
25
|
export { App } from './models/app/app.model.js';
|
|
17
26
|
export { type IDeployment } from './models/deployment/deployment.interface.js';
|
package/dist/index.js
CHANGED
|
@@ -5,13 +5,22 @@ export { EnableHook } from './decorators/enable-hook.decorator.js';
|
|
|
5
5
|
export { Factory } from './decorators/factory.decorator.js';
|
|
6
6
|
export { Model } from './decorators/model.decorator.js';
|
|
7
7
|
export { Module } from './decorators/module.decorator.js';
|
|
8
|
+
export { OnEvent } from './decorators/on-event.decorator.js';
|
|
8
9
|
export { Overlay } from './decorators/overlay.decorator.js';
|
|
9
10
|
export { Resource } from './decorators/resource.decorator.js';
|
|
10
11
|
export { TestContainer } from './decorators/test-container.js';
|
|
12
|
+
export { Validate } from './decorators/validate.decorator.js';
|
|
11
13
|
export { DependencyRelationship } from './functions/dependency/dependency.js';
|
|
12
14
|
export { Diff, DiffAction } from './functions/diff/diff.js';
|
|
13
15
|
export { DiffUtility } from './functions/diff/diff.utility.js';
|
|
14
16
|
export { DiffMetadata } from './functions/diff/diff-metadata.js';
|
|
17
|
+
export { ErrorEvent, RegistrationErrorEvent } from './events/error.event.js';
|
|
18
|
+
export { Event } from './events/event.model.js';
|
|
19
|
+
export { CommitHookCallbackDoneEvent, CommitHookEvent, HookEvent, ModelActionHookCallbackDoneEvent, ModelActionHookEvent, PostCommitHookCallbackDoneEvent, PostModelActionHookCallbackDoneEvent, PostResourceActionHookCallbackDoneEvent, PreCommitHookCallbackDoneEvent, PreModelActionHookCallbackDoneEvent, PreResourceActionHookCallbackDoneEvent, ResourceActionHookCallbackDoneEvent, ResourceActionHookEvent, } from './events/hook.event.js';
|
|
20
|
+
export { ModuleEvent } from './events/module.event.js';
|
|
21
|
+
export { AnchorRegistrationEvent, ModelActionRegistrationEvent, ModelRegistrationEvent, OverlayRegistrationEvent, RegistrationEvent, ResourceActionRegistrationEvent, ResourceRegistrationEvent, } from './events/registration.event.js';
|
|
22
|
+
export { ModelDeserializedEvent, ModelSerializedEvent, ResourceDeserializedEvent, ResourceSerializedEvent, SerializationEvent, } from './events/serialization.event.js';
|
|
23
|
+
export { ModelActionTransactionEvent, ResourceActionTransactionEvent, TransactionEvent, } from './events/transaction.event.js';
|
|
15
24
|
export { App } from './models/app/app.model.js';
|
|
16
25
|
export { Deployment } from './models/deployment/deployment.model.js';
|
|
17
26
|
export { Environment } from './models/environment/environment.model.js';
|
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,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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/main.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ActionInputs, Constructable, TransactionOptions, UnknownResource } from './app.type.js';
|
|
2
|
+
import { Container } from './decorators/container.js';
|
|
2
3
|
import { DiffMetadata } from './functions/diff/diff-metadata.js';
|
|
3
4
|
import { App } from './models/app/app.model.js';
|
|
4
5
|
import { IModule } from './modules/module.interface.js';
|
|
@@ -12,16 +13,24 @@ export declare class Octo {
|
|
|
12
13
|
private captureService;
|
|
13
14
|
private inputService;
|
|
14
15
|
private modelSerializationService;
|
|
16
|
+
private moduleContainer;
|
|
15
17
|
private resourceDataRepository;
|
|
16
18
|
private resourceSerializationService;
|
|
17
19
|
private stateManagementService;
|
|
18
20
|
private transactionService;
|
|
21
|
+
private validationService;
|
|
19
22
|
beginTransaction(app: App, options?: TransactionOptions): Promise<ReturnType<TransactionService['beginTransaction']>>;
|
|
20
23
|
commitTransaction(app: App, modelTransaction: DiffMetadata[][]): Promise<void>;
|
|
21
24
|
compose(): Promise<void>;
|
|
22
25
|
getAllResources(): UnknownResource[];
|
|
23
|
-
getModuleOutput<T>(module: Constructable<IModule<T>> | string):
|
|
24
|
-
initialize(stateProvider: IStateProvider
|
|
26
|
+
getModuleOutput<T>(module: Constructable<IModule<T>> | string): T | undefined;
|
|
27
|
+
initialize(stateProvider: IStateProvider, initializeInContainer?: {
|
|
28
|
+
type: Parameters<typeof Container.get>[0];
|
|
29
|
+
options: Parameters<typeof Container.get>[1];
|
|
30
|
+
}[], excludeInContainer?: {
|
|
31
|
+
type: Parameters<typeof Container.unRegisterFactory>[0];
|
|
32
|
+
}[]): Promise<void>;
|
|
33
|
+
loadModules(modules: Constructable<IModule<any>>[]): void;
|
|
25
34
|
registerCapture<T extends AResource<T>>(resourceId: T['resourceId'], properties: Partial<T['properties']>, response: Partial<T['response']>): void;
|
|
26
35
|
registerInputs(inputs: ActionInputs): void;
|
|
27
36
|
private retrieveModelState;
|
package/dist/main.js
CHANGED
|
@@ -19,60 +19,76 @@ import { ModelSerializationService } from './services/serialization/model/model-
|
|
|
19
19
|
import { ResourceSerializationService } from './services/serialization/resource/resource-serialization.service.js';
|
|
20
20
|
import { StateManagementService } from './services/state-management/state-management.service.js';
|
|
21
21
|
import { TransactionService } from './services/transaction/transaction.service.js';
|
|
22
|
+
import { ValidationService } from './services/validation/validation.service.js';
|
|
22
23
|
export class Octo {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
inputService;
|
|
28
|
-
modelSerializationService;
|
|
29
|
-
resourceDataRepository;
|
|
30
|
-
resourceSerializationService;
|
|
31
|
-
stateManagementService;
|
|
32
|
-
transactionService;
|
|
24
|
+
constructor() {
|
|
25
|
+
this.modelStateFileName = 'models.json';
|
|
26
|
+
this.resourceStateFileName = 'resources.json';
|
|
27
|
+
}
|
|
33
28
|
async beginTransaction(app, options) {
|
|
34
29
|
const diffs = await app.diff(this.previousApp);
|
|
35
30
|
return this.transactionService.beginTransaction(diffs, options || {});
|
|
36
31
|
}
|
|
37
32
|
async commitTransaction(app, modelTransaction) {
|
|
33
|
+
// `modelTransaction` is used by hooks of type CommitHook.
|
|
38
34
|
assert(!!modelTransaction);
|
|
35
|
+
// Save the state of the new app and its resources.
|
|
39
36
|
await this.saveModelState(app);
|
|
40
37
|
await this.saveResourceState();
|
|
38
|
+
// Reset the runtime environment with the latest state.
|
|
41
39
|
await this.retrieveResourceState();
|
|
42
40
|
this.previousApp = await this.retrieveModelState();
|
|
43
41
|
}
|
|
44
42
|
async compose() {
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
await this.moduleContainer.apply();
|
|
44
|
+
const result = this.validationService.validate();
|
|
45
|
+
if (!result.pass) {
|
|
46
|
+
throw new Error('Validation error!');
|
|
47
|
+
}
|
|
47
48
|
}
|
|
48
49
|
getAllResources() {
|
|
49
50
|
return this.resourceDataRepository.getByProperties();
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return moduleContainer.getOutput(module);
|
|
52
|
+
getModuleOutput(module) {
|
|
53
|
+
return this.moduleContainer.getOutput(module);
|
|
54
54
|
}
|
|
55
|
-
async initialize(stateProvider) {
|
|
55
|
+
async initialize(stateProvider, initializeInContainer = [], excludeInContainer = []) {
|
|
56
56
|
[
|
|
57
57
|
this.captureService,
|
|
58
58
|
this.inputService,
|
|
59
59
|
this.modelSerializationService,
|
|
60
|
+
this.moduleContainer,
|
|
60
61
|
this.resourceDataRepository,
|
|
61
62
|
this.resourceSerializationService,
|
|
62
63
|
this.stateManagementService,
|
|
63
64
|
this.transactionService,
|
|
65
|
+
this.validationService,
|
|
64
66
|
] = await Promise.all([
|
|
65
67
|
Container.get(CaptureService),
|
|
66
68
|
Container.get(InputService),
|
|
67
69
|
Container.get(ModelSerializationService),
|
|
70
|
+
Container.get(ModuleContainer),
|
|
68
71
|
Container.get(ResourceDataRepository),
|
|
69
72
|
Container.get(ResourceSerializationService),
|
|
70
73
|
Container.get(StateManagementService, { args: [stateProvider] }),
|
|
71
74
|
Container.get(TransactionService),
|
|
75
|
+
Container.get(ValidationService),
|
|
72
76
|
]);
|
|
77
|
+
for (const exclude of excludeInContainer) {
|
|
78
|
+
Container.unRegisterFactory(exclude.type);
|
|
79
|
+
}
|
|
80
|
+
for (const initialize of initializeInContainer) {
|
|
81
|
+
await Container.get(initialize.type, initialize.options);
|
|
82
|
+
}
|
|
83
|
+
// Reset the runtime environment with the latest state.
|
|
73
84
|
await this.retrieveResourceState();
|
|
74
85
|
this.previousApp = await this.retrieveModelState();
|
|
75
86
|
}
|
|
87
|
+
loadModules(modules) {
|
|
88
|
+
for (const module of modules) {
|
|
89
|
+
this.moduleContainer.load(module);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
76
92
|
registerCapture(resourceId, properties, response) {
|
|
77
93
|
this.captureService.registerCapture(resourceId, properties, response);
|
|
78
94
|
}
|
|
@@ -81,12 +97,14 @@ export class Octo {
|
|
|
81
97
|
}
|
|
82
98
|
async retrieveModelState() {
|
|
83
99
|
const { data: modelSerializedOutput } = await this.stateManagementService.getModelState(this.modelStateFileName);
|
|
100
|
+
// Initialize previous model state.
|
|
84
101
|
return Object.keys(modelSerializedOutput.models).length > 0
|
|
85
102
|
? (await this.modelSerializationService.deserialize(modelSerializedOutput))
|
|
86
103
|
: undefined;
|
|
87
104
|
}
|
|
88
105
|
async retrieveResourceState() {
|
|
89
106
|
const { data: resourceSerializedOutput } = await this.stateManagementService.getResourceState(this.resourceStateFileName);
|
|
107
|
+
// Initialize previous resource state.
|
|
90
108
|
await this.resourceSerializationService.deserialize(resourceSerializedOutput);
|
|
91
109
|
}
|
|
92
110
|
async saveModelState(app) {
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEnE,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+DAA+D,CAAC;AAC1G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qEAAqE,CAAC;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yDAAyD,CAAC;AAEjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,15 +7,44 @@ import { Region } from '../region/region.model.js';
|
|
|
7
7
|
import { Server } from '../server/server.model.js';
|
|
8
8
|
import { Service } from '../service/service.model.js';
|
|
9
9
|
import type { IApp } from './app.interface.js';
|
|
10
|
+
/**
|
|
11
|
+
* An App model is the parent of all other models.
|
|
12
|
+
* It represents the main app for whom the infrastructure is being created.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const app = new App('MyApp');
|
|
17
|
+
* ```
|
|
18
|
+
* @group Models
|
|
19
|
+
* @see Definition of [Default Models](/docs/fundamentals/models#default-models).
|
|
20
|
+
*/
|
|
10
21
|
export declare class App extends AModel<IApp, App> {
|
|
11
22
|
readonly MODEL_NAME: string;
|
|
23
|
+
/**
|
|
24
|
+
* The name of the app.
|
|
25
|
+
*/
|
|
12
26
|
readonly name: string;
|
|
13
27
|
constructor(name: string);
|
|
14
28
|
diffProperties(): Promise<Diff[]>;
|
|
29
|
+
/**
|
|
30
|
+
* To add an {@link Image}.
|
|
31
|
+
*/
|
|
15
32
|
addImage(image: Image): void;
|
|
33
|
+
/**
|
|
34
|
+
* To add a {@link Pipeline}.
|
|
35
|
+
*/
|
|
16
36
|
addPipeline(pipeline: Pipeline): void;
|
|
37
|
+
/**
|
|
38
|
+
* To add a {@link Region}.
|
|
39
|
+
*/
|
|
17
40
|
addRegion(region: Region): void;
|
|
41
|
+
/**
|
|
42
|
+
* To add a {@link Server}.
|
|
43
|
+
*/
|
|
18
44
|
addServer(server: Server): void;
|
|
45
|
+
/**
|
|
46
|
+
* To add a {@link Service}.
|
|
47
|
+
*/
|
|
19
48
|
addService(service: Service): void;
|
|
20
49
|
setContext(): string;
|
|
21
50
|
synth(): IApp;
|