@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
package/dist/main.js
CHANGED
|
@@ -8,10 +8,11 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import { strict as assert } from 'assert';
|
|
11
|
-
import { Container } from './
|
|
11
|
+
import { Container } from './functions/container/container.js';
|
|
12
12
|
import { EnableHook } from './decorators/enable-hook.decorator.js';
|
|
13
13
|
import { App } from './models/app/app.model.js';
|
|
14
14
|
import { ModuleContainer } from './modules/module.container.js';
|
|
15
|
+
import { OverlayDataRepository } from './overlays/overlay-data.repository.js';
|
|
15
16
|
import { ResourceDataRepository } from './resources/resource-data.repository.js';
|
|
16
17
|
import { CaptureService } from './services/capture/capture.service.js';
|
|
17
18
|
import { InputService } from './services/input/input.service.js';
|
|
@@ -19,56 +20,88 @@ import { ModelSerializationService } from './services/serialization/model/model-
|
|
|
19
20
|
import { ResourceSerializationService } from './services/serialization/resource/resource-serialization.service.js';
|
|
20
21
|
import { StateManagementService } from './services/state-management/state-management.service.js';
|
|
21
22
|
import { TransactionService } from './services/transaction/transaction.service.js';
|
|
23
|
+
import { ValidationService } from './services/validation/validation.service.js';
|
|
22
24
|
export class Octo {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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 || {});
|
|
25
|
+
constructor() {
|
|
26
|
+
this.modelStateFileName = 'models.json';
|
|
27
|
+
this.actualResourceStateFileName = 'resources-actual.json';
|
|
28
|
+
this.oldResourceStateFileName = 'resources-old.json';
|
|
36
29
|
}
|
|
37
|
-
async
|
|
30
|
+
async *beginTransaction(app, { enableResourceCapture = false, yieldModelDiffs = false, yieldModelTransaction = false, yieldResourceDiffs = false, yieldResourceTransaction = false, } = {}) {
|
|
31
|
+
const diffs = await app.diff();
|
|
32
|
+
const transaction = await this.transactionService.beginTransaction(diffs, {
|
|
33
|
+
enableResourceCapture,
|
|
34
|
+
yieldModelDiffs,
|
|
35
|
+
yieldModelTransaction: true,
|
|
36
|
+
yieldResourceDiffs,
|
|
37
|
+
yieldResourceTransaction: true,
|
|
38
|
+
});
|
|
39
|
+
if (yieldModelDiffs) {
|
|
40
|
+
yield (await transaction.next()).value;
|
|
41
|
+
}
|
|
42
|
+
const modelTransaction = (await transaction.next()).value;
|
|
43
|
+
if (yieldModelTransaction) {
|
|
44
|
+
yield modelTransaction;
|
|
45
|
+
}
|
|
46
|
+
let resourceTransaction = [];
|
|
47
|
+
try {
|
|
48
|
+
if (yieldResourceDiffs) {
|
|
49
|
+
yield (await transaction.next()).value;
|
|
50
|
+
}
|
|
51
|
+
resourceTransaction = (await transaction.next()).value;
|
|
52
|
+
if (yieldResourceTransaction) {
|
|
53
|
+
yield resourceTransaction;
|
|
54
|
+
}
|
|
55
|
+
return (await transaction.next()).value;
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
await this.commitTransaction(app, modelTransaction, resourceTransaction);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async commitTransaction(app, modelTransaction, resourceTransaction = []) {
|
|
62
|
+
// `modelTransaction` is used by hooks of type CommitHook.
|
|
38
63
|
assert(!!modelTransaction);
|
|
64
|
+
assert(!!resourceTransaction);
|
|
65
|
+
// Save the state of the new app and its resources.
|
|
39
66
|
await this.saveModelState(app);
|
|
40
67
|
await this.saveResourceState();
|
|
68
|
+
// Reset the runtime environment with the latest state.
|
|
41
69
|
await this.retrieveResourceState();
|
|
42
|
-
this.previousApp = await this.retrieveModelState();
|
|
43
70
|
}
|
|
44
71
|
async compose() {
|
|
45
|
-
|
|
46
|
-
|
|
72
|
+
await this.moduleContainer.apply();
|
|
73
|
+
const result = this.validationService.validate();
|
|
74
|
+
if (!result.pass) {
|
|
75
|
+
throw new Error('Validation error!');
|
|
76
|
+
}
|
|
47
77
|
}
|
|
48
78
|
getAllResources() {
|
|
49
|
-
return this.resourceDataRepository.
|
|
79
|
+
return this.resourceDataRepository.getNewResourcesByProperties();
|
|
50
80
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return moduleContainer.getOutput(module);
|
|
81
|
+
getModuleOutput(module) {
|
|
82
|
+
return this.moduleContainer.getOutput(module);
|
|
54
83
|
}
|
|
55
84
|
async initialize(stateProvider, initializeInContainer = [], excludeInContainer = []) {
|
|
56
85
|
[
|
|
57
86
|
this.captureService,
|
|
58
87
|
this.inputService,
|
|
59
88
|
this.modelSerializationService,
|
|
89
|
+
this.moduleContainer,
|
|
60
90
|
this.resourceDataRepository,
|
|
61
91
|
this.resourceSerializationService,
|
|
62
92
|
this.stateManagementService,
|
|
63
93
|
this.transactionService,
|
|
94
|
+
this.validationService,
|
|
64
95
|
] = await Promise.all([
|
|
65
96
|
Container.get(CaptureService),
|
|
66
97
|
Container.get(InputService),
|
|
67
98
|
Container.get(ModelSerializationService),
|
|
99
|
+
Container.get(ModuleContainer),
|
|
68
100
|
Container.get(ResourceDataRepository),
|
|
69
101
|
Container.get(ResourceSerializationService),
|
|
70
|
-
Container.get(StateManagementService, { args: [stateProvider] }),
|
|
102
|
+
Container.get(StateManagementService, { args: [true, stateProvider] }),
|
|
71
103
|
Container.get(TransactionService),
|
|
104
|
+
Container.get(ValidationService),
|
|
72
105
|
]);
|
|
73
106
|
for (const exclude of excludeInContainer) {
|
|
74
107
|
Container.unRegisterFactory(exclude.type);
|
|
@@ -76,34 +109,40 @@ export class Octo {
|
|
|
76
109
|
for (const initialize of initializeInContainer) {
|
|
77
110
|
await Container.get(initialize.type, initialize.options);
|
|
78
111
|
}
|
|
112
|
+
// Reset the runtime environment with the latest state.
|
|
79
113
|
await this.retrieveResourceState();
|
|
80
|
-
this.previousApp = await this.retrieveModelState();
|
|
81
114
|
}
|
|
82
|
-
|
|
83
|
-
|
|
115
|
+
loadModules(modules) {
|
|
116
|
+
for (const module of modules) {
|
|
117
|
+
this.moduleContainer.load(module);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
registerCapture(resourceId, response) {
|
|
121
|
+
this.captureService.registerCapture(resourceId, response);
|
|
84
122
|
}
|
|
85
123
|
registerInputs(inputs) {
|
|
86
124
|
this.inputService.registerInputs(inputs);
|
|
87
125
|
}
|
|
88
|
-
async retrieveModelState() {
|
|
89
|
-
const { data: modelSerializedOutput } = await this.stateManagementService.getModelState(this.modelStateFileName);
|
|
90
|
-
return Object.keys(modelSerializedOutput.models).length > 0
|
|
91
|
-
? (await this.modelSerializationService.deserialize(modelSerializedOutput))
|
|
92
|
-
: undefined;
|
|
93
|
-
}
|
|
94
126
|
async retrieveResourceState() {
|
|
95
|
-
const { data:
|
|
96
|
-
await this.
|
|
127
|
+
const { data: actualSerializedOutput } = await this.stateManagementService.getResourceState(this.actualResourceStateFileName);
|
|
128
|
+
const { data: oldSerializedOutput } = await this.stateManagementService.getResourceState(this.oldResourceStateFileName);
|
|
129
|
+
// Initialize previous resource state.
|
|
130
|
+
await this.resourceSerializationService.deserialize(actualSerializedOutput, oldSerializedOutput);
|
|
97
131
|
}
|
|
98
132
|
async saveModelState(app) {
|
|
99
133
|
const modelSerializedOutput = await this.modelSerializationService.serialize(app);
|
|
100
134
|
await this.stateManagementService.saveModelState(this.modelStateFileName, modelSerializedOutput, {
|
|
101
135
|
version: 1,
|
|
102
136
|
});
|
|
137
|
+
await Container.get(OverlayDataRepository, { args: [true] });
|
|
103
138
|
}
|
|
104
139
|
async saveResourceState() {
|
|
105
|
-
const
|
|
106
|
-
await this.stateManagementService.saveResourceState(this.
|
|
140
|
+
const actualSerializedOutput = await this.resourceSerializationService.serializeActualResources();
|
|
141
|
+
await this.stateManagementService.saveResourceState(this.actualResourceStateFileName, actualSerializedOutput, {
|
|
142
|
+
version: 1,
|
|
143
|
+
});
|
|
144
|
+
const oldSerializedOutput = await this.resourceSerializationService.serializeNewResources();
|
|
145
|
+
await this.stateManagementService.saveResourceState(this.oldResourceStateFileName, oldSerializedOutput, {
|
|
107
146
|
version: 1,
|
|
108
147
|
});
|
|
109
148
|
}
|
|
@@ -111,7 +150,7 @@ export class Octo {
|
|
|
111
150
|
__decorate([
|
|
112
151
|
EnableHook('CommitHook'),
|
|
113
152
|
__metadata("design:type", Function),
|
|
114
|
-
__metadata("design:paramtypes", [App, Array]),
|
|
153
|
+
__metadata("design:paramtypes", [App, Array, Array]),
|
|
115
154
|
__metadata("design:returntype", Promise)
|
|
116
155
|
], Octo.prototype, "commitTransaction", null);
|
|
117
156
|
//# sourceMappingURL=main.js.map
|
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,
|
|
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,oCAAoC,CAAC;AAC/D,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,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,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;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,MAAM,OAAO,IAAI;IAAjB;QACmB,uBAAkB,GAAW,aAAa,CAAC;QAC3C,gCAA2B,GAAW,uBAAuB,CAAC;QAC9D,6BAAwB,GAAW,oBAAoB,CAAC;IAqL3E,CAAC;IAzKC,KAAK,CAAC,CAAC,gBAAgB,CACrB,GAAQ,EACR,EACE,qBAAqB,GAAG,KAAK,EAC7B,eAAe,GAAG,KAAK,EACvB,qBAAqB,GAAG,KAAK,EAC7B,kBAAkB,GAAG,KAAK,EAC1B,wBAAwB,GAAG,KAAK,MACV,EAAE;QAE1B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACxE,qBAAqB;YACrB,eAAe;YACf,qBAAqB,EAAE,IAAI;YAC3B,kBAAkB;YAClB,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAC;QAEH,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;QACzC,CAAC;QAED,MAAM,gBAAgB,GAAG,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;QAC1D,IAAI,qBAAqB,EAAE,CAAC;YAC1B,MAAM,gBAAgB,CAAC;QACzB,CAAC;QAED,IAAI,mBAAmB,GAAqB,EAAE,CAAC;QAC/C,IAAI,CAAC;YACH,IAAI,kBAAkB,EAAE,CAAC;gBACvB,MAAM,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;YACzC,CAAC;YAED,mBAAmB,GAAG,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;YACvD,IAAI,wBAAwB,EAAE,CAAC;gBAC7B,MAAM,mBAAmB,CAAC;YAC5B,CAAC;YAED,OAAO,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;QAC1C,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAGa,AAAN,KAAK,CAAC,iBAAiB,CAC7B,GAAQ,EACR,gBAAkC,EAClC,sBAAwC,EAAE;QAE1C,0DAA0D;QAC1D,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAE9B,mDAAmD;QACnD,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,uDAAuD;QACvD,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAEnC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC;IACnE,CAAC;IAED,eAAe,CAAI,MAA0C;QAC3D,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,UAAU,CACd,aAA6B,EAC7B,wBAGM,EAAE,EACR,qBAEM,EAAE;QAER;YACE,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,yBAAyB;YAC9B,IAAI,CAAC,eAAe;YACpB,IAAI,CAAC,sBAAsB;YAC3B,IAAI,CAAC,4BAA4B;YACjC,IAAI,CAAC,sBAAsB;YAC3B,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,iBAAiB;SACvB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;YAC7B,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;YAC3B,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC;YACxC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;YAC9B,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC;YACrC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC;YAC3C,SAAS,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC;YACtE,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACjC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;SACjC,CAAC,CAAC;QAEH,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,qBAAqB,EAAE,CAAC;YAC/C,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;QAED,uDAAuD;QACvD,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,OAAsC;QAChD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,eAAe,CAAyB,UAA2B,EAAE,QAAgC;QACnG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,cAAc,CAAC,MAAoB;QACjC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CACzF,IAAI,CAAC,2BAA2B,CACjC,CAAC;QACF,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CACtF,IAAI,CAAC,wBAAwB,CAC9B,CAAC;QAEF,sCAAsC;QACtC,MAAM,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;IACnG,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAAQ;QACnC,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClF,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,qBAAqB,EAAE;YAC/F,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,wBAAwB,EAAE,CAAC;QAClG,MAAM,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,2BAA2B,EAAE,sBAAsB,EAAE;YAC5G,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,qBAAqB,EAAE,CAAC;QAC5F,MAAM,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,EAAE;YACtG,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;IACL,CAAC;CACF;AA3He;IADb,UAAU,CAAC,YAAY,CAAC;;qCAElB,GAAG;;6CAcT"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { UnknownModel } from '../../app.type.js';
|
|
2
|
-
import type { Diff } from '../../functions/diff/diff.js';
|
|
3
2
|
import { Image } from '../image/image.model.js';
|
|
4
3
|
import { AModel } from '../model.abstract.js';
|
|
5
4
|
import { Pipeline } from '../pipeline/pipeline.model.js';
|
|
@@ -7,15 +6,43 @@ import { Region } from '../region/region.model.js';
|
|
|
7
6
|
import { Server } from '../server/server.model.js';
|
|
8
7
|
import { Service } from '../service/service.model.js';
|
|
9
8
|
import type { IApp } from './app.interface.js';
|
|
9
|
+
/**
|
|
10
|
+
* An App model is the parent of all other models.
|
|
11
|
+
* It represents the main app for whom the infrastructure is being created.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const app = new App('MyApp');
|
|
16
|
+
* ```
|
|
17
|
+
* @group Models
|
|
18
|
+
* @see Definition of [Default Models](/docs/fundamentals/models#default-models).
|
|
19
|
+
*/
|
|
10
20
|
export declare class App extends AModel<IApp, App> {
|
|
11
|
-
readonly
|
|
21
|
+
readonly NODE_NAME: string;
|
|
22
|
+
/**
|
|
23
|
+
* The name of the app.
|
|
24
|
+
*/
|
|
12
25
|
readonly name: string;
|
|
13
26
|
constructor(name: string);
|
|
14
|
-
|
|
27
|
+
/**
|
|
28
|
+
* To add an {@link Image}.
|
|
29
|
+
*/
|
|
15
30
|
addImage(image: Image): void;
|
|
31
|
+
/**
|
|
32
|
+
* To add a {@link Pipeline}.
|
|
33
|
+
*/
|
|
16
34
|
addPipeline(pipeline: Pipeline): void;
|
|
35
|
+
/**
|
|
36
|
+
* To add a {@link Region}.
|
|
37
|
+
*/
|
|
17
38
|
addRegion(region: Region): void;
|
|
39
|
+
/**
|
|
40
|
+
* To add a {@link Server}.
|
|
41
|
+
*/
|
|
18
42
|
addServer(server: Server): void;
|
|
43
|
+
/**
|
|
44
|
+
* To add a {@link Service}.
|
|
45
|
+
*/
|
|
19
46
|
addService(service: Service): void;
|
|
20
47
|
setContext(): string;
|
|
21
48
|
synth(): IApp;
|
|
@@ -8,62 +8,91 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
var App_1;
|
|
11
|
+
import { strict as assert } from 'assert';
|
|
11
12
|
import { Model } from '../../decorators/model.decorator.js';
|
|
13
|
+
import { Validate } from '../../decorators/validate.decorator.js';
|
|
12
14
|
import { AModel } from '../model.abstract.js';
|
|
15
|
+
/**
|
|
16
|
+
* An App model is the parent of all other models.
|
|
17
|
+
* It represents the main app for whom the infrastructure is being created.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const app = new App('MyApp');
|
|
22
|
+
* ```
|
|
23
|
+
* @group Models
|
|
24
|
+
* @see Definition of [Default Models](/docs/fundamentals/models#default-models).
|
|
25
|
+
*/
|
|
13
26
|
let App = App_1 = class App extends AModel {
|
|
14
|
-
MODEL_NAME = 'app';
|
|
15
|
-
name;
|
|
16
27
|
constructor(name) {
|
|
17
28
|
super();
|
|
29
|
+
this.NODE_NAME = 'app';
|
|
18
30
|
this.name = name;
|
|
19
31
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
32
|
+
/**
|
|
33
|
+
* To add an {@link Image}.
|
|
34
|
+
*/
|
|
23
35
|
addImage(image) {
|
|
24
36
|
const childrenDependencies = this.getChildren('image');
|
|
25
37
|
if (!childrenDependencies['image'])
|
|
26
38
|
childrenDependencies['image'] = [];
|
|
39
|
+
// Check for duplicates.
|
|
27
40
|
const images = childrenDependencies['image'].map((d) => d.to);
|
|
28
41
|
if (images.find((i) => i.imageId === image.imageId)) {
|
|
29
42
|
throw new Error('Image already exists!');
|
|
30
43
|
}
|
|
31
44
|
this.addChild('name', image, 'imageId');
|
|
32
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* To add a {@link Pipeline}.
|
|
48
|
+
*/
|
|
33
49
|
addPipeline(pipeline) {
|
|
34
50
|
const childrenDependencies = this.getChildren('pipeline');
|
|
35
51
|
if (!childrenDependencies['pipeline'])
|
|
36
52
|
childrenDependencies['pipeline'] = [];
|
|
53
|
+
// Check for duplicates.
|
|
37
54
|
const pipelines = childrenDependencies['pipeline'].map((d) => d.to);
|
|
38
55
|
if (pipelines.find((p) => p.pipelineName === pipeline.pipelineName)) {
|
|
39
56
|
throw new Error('Pipeline already exists!');
|
|
40
57
|
}
|
|
41
58
|
this.addChild('name', pipeline, 'pipelineName');
|
|
42
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* To add a {@link Region}.
|
|
62
|
+
*/
|
|
43
63
|
addRegion(region) {
|
|
44
64
|
const childrenDependencies = this.getChildren('region');
|
|
45
65
|
if (!childrenDependencies['region'])
|
|
46
66
|
childrenDependencies['region'] = [];
|
|
67
|
+
// Check for duplicates.
|
|
47
68
|
const regions = childrenDependencies['region'].map((d) => d.to);
|
|
48
69
|
if (regions.find((r) => r.regionId === region.regionId)) {
|
|
49
70
|
throw new Error('Region already exists!');
|
|
50
71
|
}
|
|
51
72
|
this.addChild('name', region, 'regionId');
|
|
52
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* To add a {@link Server}.
|
|
76
|
+
*/
|
|
53
77
|
addServer(server) {
|
|
54
78
|
const childrenDependencies = this.getChildren('server');
|
|
55
79
|
if (!childrenDependencies['server'])
|
|
56
80
|
childrenDependencies['server'] = [];
|
|
81
|
+
// Check for duplicates.
|
|
57
82
|
const servers = childrenDependencies['server'].map((d) => d.to);
|
|
58
83
|
if (servers.find((s) => s.serverKey === server.serverKey)) {
|
|
59
84
|
throw new Error('Server already exists!');
|
|
60
85
|
}
|
|
61
86
|
this.addChild('name', server, 'serverKey');
|
|
62
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* To add a {@link Service}.
|
|
90
|
+
*/
|
|
63
91
|
addService(service) {
|
|
64
92
|
const childrenDependencies = this.getChildren('service');
|
|
65
93
|
if (!childrenDependencies['service'])
|
|
66
94
|
childrenDependencies['service'] = [];
|
|
95
|
+
// Check for duplicates.
|
|
67
96
|
const services = childrenDependencies['service'].map((d) => d.to);
|
|
68
97
|
if (services.find((s) => s.serviceId === service.serviceId)) {
|
|
69
98
|
throw new Error('Service already exists!');
|
|
@@ -71,7 +100,7 @@ let App = App_1 = class App extends AModel {
|
|
|
71
100
|
this.addChild('name', service, 'serviceId');
|
|
72
101
|
}
|
|
73
102
|
setContext() {
|
|
74
|
-
return `${this.
|
|
103
|
+
return `${this.NODE_NAME}=${this.name}`;
|
|
75
104
|
}
|
|
76
105
|
synth() {
|
|
77
106
|
return {
|
|
@@ -79,9 +108,14 @@ let App = App_1 = class App extends AModel {
|
|
|
79
108
|
};
|
|
80
109
|
}
|
|
81
110
|
static async unSynth(app, deReferenceContext) {
|
|
111
|
+
assert(!!deReferenceContext);
|
|
82
112
|
return new App_1(app.name);
|
|
83
113
|
}
|
|
84
114
|
};
|
|
115
|
+
__decorate([
|
|
116
|
+
Validate({ options: { maxLength: 64, minLength: 2, regex: /^[a-zA-Z][\w-]*[a-zA-Z0-9]$/ } }),
|
|
117
|
+
__metadata("design:type", String)
|
|
118
|
+
], App.prototype, "name", void 0);
|
|
85
119
|
App = App_1 = __decorate([
|
|
86
120
|
Model(),
|
|
87
121
|
__metadata("design:paramtypes", [String])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.model.js","sourceRoot":"","sources":["../../../src/models/app/app.model.ts"],"names":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"app.model.js","sourceRoot":"","sources":["../../../src/models/app/app.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import type { UnknownModel } from '../../app.type.js';
|
|
2
|
-
import type { Diff } from '../../functions/diff/diff.js';
|
|
3
2
|
import { AModel } from '../model.abstract.js';
|
|
4
3
|
import type { IDeployment } from './deployment.interface.js';
|
|
4
|
+
/**
|
|
5
|
+
* A deployment model is an instance of server's code at a specific point in time.
|
|
6
|
+
* Every change/commit in server code should generate a new deployment.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const deployment = new Deployment('v0.0.1');
|
|
11
|
+
* ```
|
|
12
|
+
* @group Models
|
|
13
|
+
* @see Definition of [Default Models](/docs/fundamentals/models#default-models).
|
|
14
|
+
*/
|
|
5
15
|
export declare class Deployment extends AModel<IDeployment, Deployment> {
|
|
6
|
-
readonly
|
|
16
|
+
readonly NODE_NAME: string;
|
|
17
|
+
/**
|
|
18
|
+
* The identifying tag that can point to the server's code at a specific point in time.
|
|
19
|
+
* Could be a version number or a commit hash.
|
|
20
|
+
*/
|
|
7
21
|
readonly deploymentTag: string;
|
|
8
22
|
constructor(deploymentTag: string);
|
|
9
|
-
diffProperties(): Promise<Diff[]>;
|
|
10
23
|
setContext(): string;
|
|
11
24
|
synth(): IDeployment;
|
|
12
25
|
static unSynth(deployment: IDeployment, deReferenceContext: (context: string) => Promise<UnknownModel>): Promise<Deployment>;
|
|
@@ -8,22 +8,31 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
var Deployment_1;
|
|
11
|
+
import { strict as assert } from 'assert';
|
|
11
12
|
import { Model } from '../../decorators/model.decorator.js';
|
|
13
|
+
import { Validate } from '../../decorators/validate.decorator.js';
|
|
12
14
|
import { AModel } from '../model.abstract.js';
|
|
15
|
+
/**
|
|
16
|
+
* A deployment model is an instance of server's code at a specific point in time.
|
|
17
|
+
* Every change/commit in server code should generate a new deployment.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const deployment = new Deployment('v0.0.1');
|
|
22
|
+
* ```
|
|
23
|
+
* @group Models
|
|
24
|
+
* @see Definition of [Default Models](/docs/fundamentals/models#default-models).
|
|
25
|
+
*/
|
|
13
26
|
let Deployment = Deployment_1 = class Deployment extends AModel {
|
|
14
|
-
MODEL_NAME = 'deployment';
|
|
15
|
-
deploymentTag;
|
|
16
27
|
constructor(deploymentTag) {
|
|
17
28
|
super();
|
|
29
|
+
this.NODE_NAME = 'deployment';
|
|
18
30
|
this.deploymentTag = deploymentTag;
|
|
19
31
|
}
|
|
20
|
-
async diffProperties() {
|
|
21
|
-
return [];
|
|
22
|
-
}
|
|
23
32
|
setContext() {
|
|
24
33
|
const parents = this.getParents();
|
|
25
34
|
const parent = parents['server'][0].to;
|
|
26
|
-
return [`${this.
|
|
35
|
+
return [`${this.NODE_NAME}=${this.deploymentTag}`, parent.getContext()].join(',');
|
|
27
36
|
}
|
|
28
37
|
synth() {
|
|
29
38
|
return {
|
|
@@ -31,9 +40,14 @@ let Deployment = Deployment_1 = class Deployment extends AModel {
|
|
|
31
40
|
};
|
|
32
41
|
}
|
|
33
42
|
static async unSynth(deployment, deReferenceContext) {
|
|
43
|
+
assert(!!deReferenceContext);
|
|
34
44
|
return new Deployment_1(deployment.deploymentTag);
|
|
35
45
|
}
|
|
36
46
|
};
|
|
47
|
+
__decorate([
|
|
48
|
+
Validate({ options: { maxLength: 32, minLength: 2, regex: /^[a-zA-Z0-9][\w.-]*[a-zA-Z0-9]$/ } }),
|
|
49
|
+
__metadata("design:type", String)
|
|
50
|
+
], Deployment.prototype, "deploymentTag", void 0);
|
|
37
51
|
Deployment = Deployment_1 = __decorate([
|
|
38
52
|
Model(),
|
|
39
53
|
__metadata("design:paramtypes", [String])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.model.js","sourceRoot":"","sources":["../../../src/models/deployment/deployment.model.ts"],"names":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"deployment.model.js","sourceRoot":"","sources":["../../../src/models/deployment/deployment.model.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C;;;;;;;;;;GAUG;AAEI,IAAM,UAAU,kBAAhB,MAAM,UAAW,SAAQ,MAA+B;IAU7D,YAAY,aAAqB;QAC/B,KAAK,EAAE,CAAC;QAVD,cAAS,GAAW,YAAY,CAAC;QAWxC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEQ,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpF,CAAC;IAEQ,KAAK;QACZ,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,UAAuB,EACvB,kBAA8D;QAE9D,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAE7B,OAAO,IAAI,YAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AA3BU;IADR,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,CAAC;;iDAClE;AARpB,UAAU;IADtB,KAAK,EAAE;;GACK,UAAU,CAmCtB"}
|
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
import type { UnknownModel } from '../../app.type.js';
|
|
2
|
-
import type { Diff } from '../../functions/diff/diff.js';
|
|
3
2
|
import { AModel } from '../model.abstract.js';
|
|
4
3
|
import type { IEnvironment } from './environment.interface.js';
|
|
4
|
+
/**
|
|
5
|
+
* An Environment model is the logical sub-section of a Region which isolates one runtime environment from another.
|
|
6
|
+
* E.g. qa, staging, production, etc.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const environment = new Environment('qa');
|
|
11
|
+
* ```
|
|
12
|
+
* @group Models
|
|
13
|
+
* @see Definition of [Default Models](/docs/fundamentals/models#default-models).
|
|
14
|
+
*/
|
|
5
15
|
export declare class Environment extends AModel<IEnvironment, Environment> {
|
|
6
|
-
readonly
|
|
16
|
+
readonly NODE_NAME: string;
|
|
17
|
+
/**
|
|
18
|
+
* The name of the environment.
|
|
19
|
+
* An environment must be unique within a Region. But multiple Regions can share the same environment name.
|
|
20
|
+
*/
|
|
7
21
|
readonly environmentName: string;
|
|
22
|
+
/**
|
|
23
|
+
* A set of environment variables to be passed to any {@link Execution} running in this environment.
|
|
24
|
+
*/
|
|
8
25
|
readonly environmentVariables: Map<string, string>;
|
|
9
26
|
constructor(environmentName: string);
|
|
10
|
-
diffProperties(previous: Environment): Promise<Diff[]>;
|
|
11
27
|
setContext(): string;
|
|
12
28
|
synth(): IEnvironment;
|
|
13
29
|
static unSynth(environment: IEnvironment, deReferenceContext: (context: string) => Promise<UnknownModel>): Promise<Environment>;
|
|
@@ -8,24 +8,35 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
var Environment_1;
|
|
11
|
+
import { strict as assert } from 'assert';
|
|
11
12
|
import { Model } from '../../decorators/model.decorator.js';
|
|
12
|
-
import {
|
|
13
|
+
import { Validate } from '../../decorators/validate.decorator.js';
|
|
13
14
|
import { AModel } from '../model.abstract.js';
|
|
15
|
+
/**
|
|
16
|
+
* An Environment model is the logical sub-section of a Region which isolates one runtime environment from another.
|
|
17
|
+
* E.g. qa, staging, production, etc.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const environment = new Environment('qa');
|
|
22
|
+
* ```
|
|
23
|
+
* @group Models
|
|
24
|
+
* @see Definition of [Default Models](/docs/fundamentals/models#default-models).
|
|
25
|
+
*/
|
|
14
26
|
let Environment = Environment_1 = class Environment extends AModel {
|
|
15
|
-
MODEL_NAME = 'environment';
|
|
16
|
-
environmentName;
|
|
17
|
-
environmentVariables = new Map();
|
|
18
27
|
constructor(environmentName) {
|
|
19
28
|
super();
|
|
29
|
+
this.NODE_NAME = 'environment';
|
|
30
|
+
/**
|
|
31
|
+
* A set of environment variables to be passed to any {@link Execution} running in this environment.
|
|
32
|
+
*/
|
|
33
|
+
this.environmentVariables = new Map();
|
|
20
34
|
this.environmentName = environmentName;
|
|
21
35
|
}
|
|
22
|
-
async diffProperties(previous) {
|
|
23
|
-
return DiffUtility.diffMap(previous, this, 'environmentVariables');
|
|
24
|
-
}
|
|
25
36
|
setContext() {
|
|
26
37
|
const parents = this.getParents();
|
|
27
38
|
const region = parents['region'][0].to;
|
|
28
|
-
return [`${this.
|
|
39
|
+
return [`${this.NODE_NAME}=${this.environmentName}`, region.getContext()].join(',');
|
|
29
40
|
}
|
|
30
41
|
synth() {
|
|
31
42
|
return {
|
|
@@ -34,6 +45,7 @@ let Environment = Environment_1 = class Environment extends AModel {
|
|
|
34
45
|
};
|
|
35
46
|
}
|
|
36
47
|
static async unSynth(environment, deReferenceContext) {
|
|
48
|
+
assert(!!deReferenceContext);
|
|
37
49
|
const newEnvironment = new Environment_1(environment.environmentName);
|
|
38
50
|
for (const key in environment.environmentVariables) {
|
|
39
51
|
newEnvironment.environmentVariables.set(key, environment.environmentVariables[key]);
|
|
@@ -41,6 +53,19 @@ let Environment = Environment_1 = class Environment extends AModel {
|
|
|
41
53
|
return newEnvironment;
|
|
42
54
|
}
|
|
43
55
|
};
|
|
56
|
+
__decorate([
|
|
57
|
+
Validate({ options: { maxLength: 32, minLength: 2, regex: /^[a-zA-Z][\w-]*[a-zA-Z0-9]$/ } }),
|
|
58
|
+
__metadata("design:type", String)
|
|
59
|
+
], Environment.prototype, "environmentName", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
Validate({
|
|
62
|
+
destruct: (value) => {
|
|
63
|
+
return Array.from(value.keys());
|
|
64
|
+
},
|
|
65
|
+
options: { maxLength: 64, minLength: 2, regex: /^[a-zA-Z][\w-]*[a-zA-Z0-9]$/ },
|
|
66
|
+
}),
|
|
67
|
+
__metadata("design:type", Map)
|
|
68
|
+
], Environment.prototype, "environmentVariables", void 0);
|
|
44
69
|
Environment = Environment_1 = __decorate([
|
|
45
70
|
Model(),
|
|
46
71
|
__metadata("design:paramtypes", [String])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.model.js","sourceRoot":"","sources":["../../../src/models/environment/environment.model.ts"],"names":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"environment.model.js","sourceRoot":"","sources":["../../../src/models/environment/environment.model.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C;;;;;;;;;;GAUG;AAEI,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,MAAiC;IAqBhE,YAAY,eAAuB;QACjC,KAAK,EAAE,CAAC;QArBD,cAAS,GAAW,aAAa,CAAC;QAS3C;;WAEG;QAOM,yBAAoB,GAAwB,IAAI,GAAG,EAAE,CAAC;QAI7D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEQ,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtF,CAAC;IAEQ,KAAK;QACZ,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,GAAG,EAAE,CAAC;SACjF,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,WAAyB,EACzB,kBAA8D;QAE9D,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAE7B,MAAM,cAAc,GAAG,IAAI,aAAW,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACpE,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,oBAAoB,EAAE,CAAC;YACnD,cAAc,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;CACF,CAAA;AA3CU;IADR,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,CAAC;;oDAC5D;AAWxB;IANR,QAAQ,CAAC;QACR,QAAQ,EAAE,CAAC,KAA0B,EAAY,EAAE;YACjD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE;KAC/E,CAAC;8BAC6B,GAAG;yDAA6B;AAnBpD,WAAW;IADvB,KAAK,EAAE;;GACK,WAAW,CAmDvB"}
|