@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.
Files changed (201) hide show
  1. package/dist/app.type.d.ts +8 -1
  2. package/dist/app.type.js +13 -7
  3. package/dist/app.type.js.map +1 -1
  4. package/dist/decorators/action.decorator.d.ts +19 -2
  5. package/dist/decorators/action.decorator.js +28 -5
  6. package/dist/decorators/action.decorator.js.map +1 -1
  7. package/dist/decorators/anchor.decorator.d.ts +13 -0
  8. package/dist/decorators/anchor.decorator.js +14 -1
  9. package/dist/decorators/anchor.decorator.js.map +1 -1
  10. package/dist/decorators/enable-hook.decorator.d.ts +14 -0
  11. package/dist/decorators/enable-hook.decorator.js +14 -0
  12. package/dist/decorators/enable-hook.decorator.js.map +1 -1
  13. package/dist/decorators/event-source.decorator.d.ts +15 -0
  14. package/dist/decorators/event-source.decorator.js +15 -0
  15. package/dist/decorators/event-source.decorator.js.map +1 -1
  16. package/dist/decorators/factory.decorator.d.ts +54 -5
  17. package/dist/decorators/factory.decorator.js +56 -3
  18. package/dist/decorators/factory.decorator.js.map +1 -1
  19. package/dist/decorators/model.decorator.d.ts +13 -0
  20. package/dist/decorators/model.decorator.js +14 -1
  21. package/dist/decorators/model.decorator.js.map +1 -1
  22. package/dist/decorators/module.decorator.d.ts +61 -5
  23. package/dist/decorators/module.decorator.js +62 -3
  24. package/dist/decorators/module.decorator.js.map +1 -1
  25. package/dist/decorators/on-event.decorator.d.ts +17 -0
  26. package/dist/decorators/on-event.decorator.js +17 -0
  27. package/dist/decorators/on-event.decorator.js.map +1 -1
  28. package/dist/decorators/overlay.decorator.d.ts +13 -0
  29. package/dist/decorators/overlay.decorator.js +14 -1
  30. package/dist/decorators/overlay.decorator.js.map +1 -1
  31. package/dist/decorators/resource.decorator.d.ts +13 -0
  32. package/dist/decorators/resource.decorator.js +14 -1
  33. package/dist/decorators/resource.decorator.js.map +1 -1
  34. package/dist/decorators/validate.decorator.d.ts +9 -0
  35. package/dist/decorators/validate.decorator.js +23 -0
  36. package/dist/decorators/validate.decorator.js.map +1 -0
  37. package/dist/events/error.event.d.ts +30 -0
  38. package/dist/events/error.event.js +30 -0
  39. package/dist/events/error.event.js.map +1 -1
  40. package/dist/events/event.model.d.ts +27 -0
  41. package/dist/events/event.model.js +27 -3
  42. package/dist/events/event.model.js.map +1 -1
  43. package/dist/events/hook.event.d.ts +167 -0
  44. package/dist/events/hook.event.js +167 -0
  45. package/dist/events/hook.event.js.map +1 -1
  46. package/dist/events/module.event.d.ts +12 -0
  47. package/dist/events/module.event.js +12 -0
  48. package/dist/events/module.event.js.map +1 -1
  49. package/dist/events/registration.event.d.ts +90 -0
  50. package/dist/events/registration.event.js +90 -0
  51. package/dist/events/registration.event.js.map +1 -1
  52. package/dist/events/serialization.event.d.ts +61 -0
  53. package/dist/events/serialization.event.js +61 -0
  54. package/dist/events/serialization.event.js.map +1 -1
  55. package/dist/events/transaction.event.d.ts +41 -0
  56. package/dist/events/transaction.event.js +41 -0
  57. package/dist/events/transaction.event.js.map +1 -1
  58. package/dist/functions/container/container.d.ts +53 -0
  59. package/dist/functions/container/container.js +102 -0
  60. package/dist/functions/container/container.js.map +1 -0
  61. package/dist/functions/container/test-container.d.ts +75 -0
  62. package/dist/functions/container/test-container.js +97 -0
  63. package/dist/functions/container/test-container.js.map +1 -0
  64. package/dist/functions/dependency/dependency.d.ts +6 -6
  65. package/dist/functions/dependency/dependency.js +1 -8
  66. package/dist/functions/dependency/dependency.js.map +1 -1
  67. package/dist/functions/diff/diff-metadata.d.ts +5 -2
  68. package/dist/functions/diff/diff-metadata.js +6 -11
  69. package/dist/functions/diff/diff-metadata.js.map +1 -1
  70. package/dist/functions/diff/diff.d.ts +6 -3
  71. package/dist/functions/diff/diff.js +8 -13
  72. package/dist/functions/diff/diff.js.map +1 -1
  73. package/dist/functions/diff/diff.utility.d.ts +38 -6
  74. package/dist/functions/diff/diff.utility.js +55 -6
  75. package/dist/functions/diff/diff.utility.js.map +1 -1
  76. package/dist/functions/hook/commit.hook.js +6 -3
  77. package/dist/functions/hook/commit.hook.js.map +1 -1
  78. package/dist/functions/hook/model-action.hook.js +7 -4
  79. package/dist/functions/hook/model-action.hook.js.map +1 -1
  80. package/dist/functions/hook/resource-action.hook.js +6 -3
  81. package/dist/functions/hook/resource-action.hook.js.map +1 -1
  82. package/dist/functions/node/node.abstract.d.ts +84 -0
  83. package/dist/functions/node/node.abstract.js +275 -0
  84. package/dist/functions/node/node.abstract.js.map +1 -0
  85. package/dist/functions/node/node.interface.d.ts +176 -0
  86. package/dist/functions/node/node.interface.js +2 -0
  87. package/dist/functions/node/node.interface.js.map +1 -0
  88. package/dist/index.d.ts +12 -12
  89. package/dist/index.js +11 -11
  90. package/dist/index.js.map +1 -1
  91. package/dist/main.d.ts +11 -10
  92. package/dist/main.js +76 -37
  93. package/dist/main.js.map +1 -1
  94. package/dist/models/app/app.interface.d.ts +5 -0
  95. package/dist/models/app/app.model.d.ts +30 -3
  96. package/dist/models/app/app.model.js +40 -6
  97. package/dist/models/app/app.model.js.map +1 -1
  98. package/dist/models/deployment/deployment.interface.d.ts +5 -0
  99. package/dist/models/deployment/deployment.model.d.ts +16 -3
  100. package/dist/models/deployment/deployment.model.js +20 -6
  101. package/dist/models/deployment/deployment.model.js.map +1 -1
  102. package/dist/models/environment/environment.interface.d.ts +5 -0
  103. package/dist/models/environment/environment.model.d.ts +19 -3
  104. package/dist/models/environment/environment.model.js +33 -8
  105. package/dist/models/environment/environment.model.js.map +1 -1
  106. package/dist/models/execution/execution.interface.d.ts +5 -0
  107. package/dist/models/execution/execution.model.d.ts +24 -3
  108. package/dist/models/execution/execution.model.js +40 -7
  109. package/dist/models/execution/execution.model.js.map +1 -1
  110. package/dist/models/image/image.interface.d.ts +5 -0
  111. package/dist/models/image/image.model.d.ts +36 -3
  112. package/dist/models/image/image.model.js +25 -9
  113. package/dist/models/image/image.model.js.map +1 -1
  114. package/dist/models/model-action.interface.d.ts +18 -1
  115. package/dist/models/model.abstract.d.ts +7 -42
  116. package/dist/models/model.abstract.js +24 -295
  117. package/dist/models/model.abstract.js.map +1 -1
  118. package/dist/models/model.interface.d.ts +51 -11
  119. package/dist/models/pipeline/pipeline.interface.d.ts +5 -0
  120. package/dist/models/pipeline/pipeline.model.d.ts +16 -3
  121. package/dist/models/pipeline/pipeline.model.js +25 -8
  122. package/dist/models/pipeline/pipeline.model.js.map +1 -1
  123. package/dist/models/region/region.interface.d.ts +5 -0
  124. package/dist/models/region/region.model.d.ts +19 -3
  125. package/dist/models/region/region.model.js +29 -6
  126. package/dist/models/region/region.model.js.map +1 -1
  127. package/dist/models/server/server.interface.d.ts +5 -0
  128. package/dist/models/server/server.model.d.ts +18 -3
  129. package/dist/models/server/server.model.js +24 -6
  130. package/dist/models/server/server.model.js.map +1 -1
  131. package/dist/models/service/service.interface.d.ts +5 -0
  132. package/dist/models/service/service.model.d.ts +16 -3
  133. package/dist/models/service/service.model.js +19 -6
  134. package/dist/models/service/service.model.js.map +1 -1
  135. package/dist/models/subnet/subnet.interface.d.ts +5 -0
  136. package/dist/models/subnet/subnet.model.d.ts +50 -3
  137. package/dist/models/subnet/subnet.model.js +58 -22
  138. package/dist/models/subnet/subnet.model.js.map +1 -1
  139. package/dist/modules/module.container.d.ts +4 -2
  140. package/dist/modules/module.container.js +17 -8
  141. package/dist/modules/module.container.js.map +1 -1
  142. package/dist/modules/test-module.container.d.ts +4 -4
  143. package/dist/modules/test-module.container.js +18 -17
  144. package/dist/modules/test-module.container.js.map +1 -1
  145. package/dist/overlays/anchor.abstract.js +0 -3
  146. package/dist/overlays/anchor.abstract.js.map +1 -1
  147. package/dist/overlays/overlay-data.repository.d.ts +2 -4
  148. package/dist/overlays/overlay-data.repository.js +8 -36
  149. package/dist/overlays/overlay-data.repository.js.map +1 -1
  150. package/dist/overlays/overlay.abstract.d.ts +6 -7
  151. package/dist/overlays/overlay.abstract.js +20 -42
  152. package/dist/overlays/overlay.abstract.js.map +1 -1
  153. package/dist/overlays/overlay.service.d.ts +0 -1
  154. package/dist/overlays/overlay.service.js +1 -7
  155. package/dist/overlays/overlay.service.js.map +1 -1
  156. package/dist/resources/resource-data.repository.d.ts +16 -6
  157. package/dist/resources/resource-data.repository.js +121 -18
  158. package/dist/resources/resource-data.repository.js.map +1 -1
  159. package/dist/resources/resource.abstract.d.ts +23 -6
  160. package/dist/resources/resource.abstract.js +147 -13
  161. package/dist/resources/resource.abstract.js.map +1 -1
  162. package/dist/resources/shared-resource.abstract.d.ts +2 -2
  163. package/dist/resources/shared-resource.abstract.js +5 -2
  164. package/dist/resources/shared-resource.abstract.js.map +1 -1
  165. package/dist/services/capture/capture.service.d.ts +1 -2
  166. package/dist/services/capture/capture.service.js +5 -4
  167. package/dist/services/capture/capture.service.js.map +1 -1
  168. package/dist/services/event/event.service.js +9 -6
  169. package/dist/services/event/event.service.js.map +1 -1
  170. package/dist/services/input/input.service.js +3 -5
  171. package/dist/services/input/input.service.js.map +1 -1
  172. package/dist/services/serialization/model/model-serialization.service.js +13 -14
  173. package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
  174. package/dist/services/serialization/resource/resource-serialization.service.d.ts +4 -4
  175. package/dist/services/serialization/resource/resource-serialization.service.js +23 -13
  176. package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
  177. package/dist/services/state-management/local.state-provider.js +0 -1
  178. package/dist/services/state-management/local.state-provider.js.map +1 -1
  179. package/dist/services/state-management/state-management.service.d.ts +1 -1
  180. package/dist/services/state-management/state-management.service.js +6 -9
  181. package/dist/services/state-management/state-management.service.js.map +1 -1
  182. package/dist/services/state-management/test.state-provider.js +3 -1
  183. package/dist/services/state-management/test.state-provider.js.map +1 -1
  184. package/dist/services/transaction/transaction.service.d.ts +5 -2
  185. package/dist/services/transaction/transaction.service.js +117 -87
  186. package/dist/services/transaction/transaction.service.js.map +1 -1
  187. package/dist/services/validation/validation.service.d.ts +19 -0
  188. package/dist/services/validation/validation.service.js +66 -0
  189. package/dist/services/validation/validation.service.js.map +1 -0
  190. package/dist/utilities/object/object.utility.js +1 -0
  191. package/dist/utilities/object/object.utility.js.map +1 -1
  192. package/dist/utilities/validation/validation.utility.d.ts +5 -0
  193. package/dist/utilities/validation/validation.utility.js +12 -0
  194. package/dist/utilities/validation/validation.utility.js.map +1 -0
  195. package/package.json +1 -1
  196. package/dist/decorators/container.d.ts +0 -24
  197. package/dist/decorators/container.js +0 -96
  198. package/dist/decorators/container.js.map +0 -1
  199. package/dist/decorators/test-container.d.ts +0 -27
  200. package/dist/decorators/test-container.js +0 -52
  201. 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 './decorators/container.js';
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
- 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 || {});
25
+ constructor() {
26
+ this.modelStateFileName = 'models.json';
27
+ this.actualResourceStateFileName = 'resources-actual.json';
28
+ this.oldResourceStateFileName = 'resources-old.json';
36
29
  }
37
- async commitTransaction(app, modelTransaction) {
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
- const moduleContainer = await Container.get(ModuleContainer);
46
- await moduleContainer.apply();
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.getByProperties();
79
+ return this.resourceDataRepository.getNewResourcesByProperties();
50
80
  }
51
- async getModuleOutput(module) {
52
- const moduleContainer = await Container.get(ModuleContainer);
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
- registerCapture(resourceId, properties, response) {
83
- this.captureService.registerCapture(resourceId, properties, response);
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: resourceSerializedOutput } = await this.stateManagementService.getResourceState(this.resourceStateFileName);
96
- await this.resourceSerializationService.deserialize(resourceSerializedOutput);
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 resourceSerializedOutput = await this.resourceSerializationService.serialize();
106
- await this.stateManagementService.saveResourceState(this.resourceStateFileName, resourceSerializedOutput, {
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":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  import type { App } from './app.model.js';
2
+ /**
3
+ * {@link App} model interface.
4
+ *
5
+ * @group Model Interfaces
6
+ */
2
7
  export interface IApp {
3
8
  name: App['name'];
4
9
  }
@@ -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 MODEL_NAME: string;
21
+ readonly NODE_NAME: string;
22
+ /**
23
+ * The name of the app.
24
+ */
12
25
  readonly name: string;
13
26
  constructor(name: string);
14
- diffProperties(): Promise<Diff[]>;
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
- async diffProperties() {
21
- return [];
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.MODEL_NAME}=${this.name}`;
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":"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"}
1
+ {"version":3,"file":"app.model.js","sourceRoot":"","sources":["../../../src/models/app/app.model.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  import type { Deployment } from './deployment.model.js';
2
+ /**
3
+ * {@link Deployment} model interface.
4
+ *
5
+ * @group Model Interfaces
6
+ */
2
7
  export interface IDeployment {
3
8
  deploymentTag: Deployment['deploymentTag'];
4
9
  }
@@ -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 MODEL_NAME: string;
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.MODEL_NAME}=${this.deploymentTag}`, parent.getContext()].join(',');
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":";;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIvC,IAAM,UAAU,kBAAhB,MAAM,UAAW,SAAQ,MAA+B;IACpD,UAAU,GAAW,YAAY,CAAC;IAElC,aAAa,CAAS;IAE/B,YAAY,aAAqB;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEQ,KAAK,CAAC,cAAc;QAC3B,OAAO,EAAE,CAAC;IACZ,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,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IAEQ,KAAK;QACZ,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,UAAuB,EAEvB,kBAA8D;QAE9D,OAAO,IAAI,YAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AAjCY,UAAU;IADtB,KAAK,EAAE;;GACK,UAAU,CAiCtB"}
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,4 +1,9 @@
1
1
  import type { Environment } from './environment.model.js';
2
+ /**
3
+ * {@link Environment} model interface.
4
+ *
5
+ * @group Model Interfaces
6
+ */
2
7
  export interface IEnvironment {
3
8
  environmentName: Environment['environmentName'];
4
9
  environmentVariables: {
@@ -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 MODEL_NAME: string;
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 { DiffUtility } from '../../functions/diff/diff.utility.js';
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.MODEL_NAME}=${this.environmentName}`, region.getContext()].join(',');
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":";;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIvC,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,MAAiC;IACvD,UAAU,GAAW,aAAa,CAAC;IAEnC,eAAe,CAAS;IAExB,oBAAoB,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE/D,YAAY,eAAuB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,QAAqB;QACjD,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACrE,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,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvF,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,EAEzB,kBAA8D;QAE9D,MAAM,cAAc,GAAG,IAAI,aAAW,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAEpE,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;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;CACF,CAAA;AA1CY,WAAW;IADvB,KAAK,EAAE;;GACK,WAAW,CA0CvB"}
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"}