@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.
Files changed (181) hide show
  1. package/dist/app.type.d.ts +5 -0
  2. package/dist/app.type.js +6 -0
  3. package/dist/app.type.js.map +1 -1
  4. package/dist/decorators/action.decorator.d.ts +17 -0
  5. package/dist/decorators/action.decorator.js +26 -1
  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 +16 -1
  9. package/dist/decorators/anchor.decorator.js.map +1 -1
  10. package/dist/decorators/container.d.ts +61 -0
  11. package/dist/decorators/container.js +68 -3
  12. package/dist/decorators/container.js.map +1 -1
  13. package/dist/decorators/enable-hook.decorator.d.ts +14 -0
  14. package/dist/decorators/enable-hook.decorator.js +14 -0
  15. package/dist/decorators/enable-hook.decorator.js.map +1 -1
  16. package/dist/decorators/event-source.decorator.d.ts +18 -0
  17. package/dist/decorators/event-source.decorator.js +22 -0
  18. package/dist/decorators/event-source.decorator.js.map +1 -0
  19. package/dist/decorators/factory.decorator.d.ts +30 -0
  20. package/dist/decorators/factory.decorator.js +30 -0
  21. package/dist/decorators/factory.decorator.js.map +1 -1
  22. package/dist/decorators/model.decorator.d.ts +13 -0
  23. package/dist/decorators/model.decorator.js +16 -1
  24. package/dist/decorators/model.decorator.js.map +1 -1
  25. package/dist/decorators/module.decorator.d.ts +52 -0
  26. package/dist/decorators/module.decorator.js +60 -1
  27. package/dist/decorators/module.decorator.js.map +1 -1
  28. package/dist/decorators/on-event.decorator.d.ts +20 -0
  29. package/dist/decorators/on-event.decorator.js +24 -0
  30. package/dist/decorators/on-event.decorator.js.map +1 -0
  31. package/dist/decorators/overlay.decorator.d.ts +13 -0
  32. package/dist/decorators/overlay.decorator.js +16 -1
  33. package/dist/decorators/overlay.decorator.js.map +1 -1
  34. package/dist/decorators/resource.decorator.d.ts +13 -0
  35. package/dist/decorators/resource.decorator.js +16 -1
  36. package/dist/decorators/resource.decorator.js.map +1 -1
  37. package/dist/decorators/test-container.d.ts +52 -0
  38. package/dist/decorators/test-container.js +54 -2
  39. package/dist/decorators/test-container.js.map +1 -1
  40. package/dist/decorators/validate.decorator.d.ts +9 -0
  41. package/dist/decorators/validate.decorator.js +23 -0
  42. package/dist/decorators/validate.decorator.js.map +1 -0
  43. package/dist/events/error.event.d.ts +35 -0
  44. package/dist/events/error.event.js +36 -0
  45. package/dist/events/error.event.js.map +1 -0
  46. package/dist/events/event.model.d.ts +37 -0
  47. package/dist/events/event.model.js +43 -0
  48. package/dist/events/event.model.js.map +1 -0
  49. package/dist/events/hook.event.d.ts +194 -0
  50. package/dist/events/hook.event.js +195 -0
  51. package/dist/events/hook.event.js.map +1 -0
  52. package/dist/events/module.event.d.ts +15 -0
  53. package/dist/events/module.event.js +16 -0
  54. package/dist/events/module.event.js.map +1 -0
  55. package/dist/events/registration.event.d.ts +112 -0
  56. package/dist/events/registration.event.js +170 -0
  57. package/dist/events/registration.event.js.map +1 -0
  58. package/dist/events/serialization.event.d.ts +72 -0
  59. package/dist/events/serialization.event.js +73 -0
  60. package/dist/events/serialization.event.js.map +1 -0
  61. package/dist/events/transaction.event.d.ts +48 -0
  62. package/dist/events/transaction.event.js +49 -0
  63. package/dist/events/transaction.event.js.map +1 -0
  64. package/dist/functions/dependency/dependency.js +1 -8
  65. package/dist/functions/dependency/dependency.js.map +1 -1
  66. package/dist/functions/diff/diff-metadata.d.ts +3 -0
  67. package/dist/functions/diff/diff-metadata.js +5 -10
  68. package/dist/functions/diff/diff-metadata.js.map +1 -1
  69. package/dist/functions/diff/diff.d.ts +3 -0
  70. package/dist/functions/diff/diff.js +3 -4
  71. package/dist/functions/diff/diff.js.map +1 -1
  72. package/dist/functions/diff/diff.utility.d.ts +32 -0
  73. package/dist/functions/diff/diff.utility.js +49 -0
  74. package/dist/functions/diff/diff.utility.js.map +1 -1
  75. package/dist/functions/hook/commit.hook.js +11 -3
  76. package/dist/functions/hook/commit.hook.js.map +1 -1
  77. package/dist/functions/hook/model-action.hook.js +11 -3
  78. package/dist/functions/hook/model-action.hook.js.map +1 -1
  79. package/dist/functions/hook/resource-action.hook.js +11 -3
  80. package/dist/functions/hook/resource-action.hook.js.map +1 -1
  81. package/dist/index.d.ts +9 -0
  82. package/dist/index.js +9 -0
  83. package/dist/index.js.map +1 -1
  84. package/dist/main.d.ts +11 -2
  85. package/dist/main.js +34 -16
  86. package/dist/main.js.map +1 -1
  87. package/dist/models/app/app.interface.d.ts +5 -0
  88. package/dist/models/app/app.model.d.ts +29 -0
  89. package/dist/models/app/app.model.js +40 -3
  90. package/dist/models/app/app.model.js.map +1 -1
  91. package/dist/models/deployment/deployment.interface.d.ts +5 -0
  92. package/dist/models/deployment/deployment.model.d.ts +15 -0
  93. package/dist/models/deployment/deployment.model.js +20 -3
  94. package/dist/models/deployment/deployment.model.js.map +1 -1
  95. package/dist/models/environment/environment.interface.d.ts +5 -0
  96. package/dist/models/environment/environment.model.d.ts +18 -0
  97. package/dist/models/environment/environment.model.js +33 -4
  98. package/dist/models/environment/environment.model.js.map +1 -1
  99. package/dist/models/execution/execution.interface.d.ts +5 -0
  100. package/dist/models/execution/execution.model.d.ts +23 -0
  101. package/dist/models/execution/execution.model.js +39 -2
  102. package/dist/models/execution/execution.model.js.map +1 -1
  103. package/dist/models/image/image.interface.d.ts +5 -0
  104. package/dist/models/image/image.model.d.ts +35 -0
  105. package/dist/models/image/image.model.js +25 -6
  106. package/dist/models/image/image.model.js.map +1 -1
  107. package/dist/models/model-action.interface.d.ts +21 -0
  108. package/dist/models/model.abstract.d.ts +265 -0
  109. package/dist/models/model.abstract.js +274 -5
  110. package/dist/models/model.abstract.js.map +1 -1
  111. package/dist/models/model.interface.d.ts +25 -0
  112. package/dist/models/pipeline/pipeline.interface.d.ts +5 -0
  113. package/dist/models/pipeline/pipeline.model.d.ts +15 -0
  114. package/dist/models/pipeline/pipeline.model.js +25 -4
  115. package/dist/models/pipeline/pipeline.model.js.map +1 -1
  116. package/dist/models/region/region.interface.d.ts +5 -0
  117. package/dist/models/region/region.model.d.ts +18 -0
  118. package/dist/models/region/region.model.js +29 -3
  119. package/dist/models/region/region.model.js.map +1 -1
  120. package/dist/models/server/server.interface.d.ts +5 -0
  121. package/dist/models/server/server.model.d.ts +17 -0
  122. package/dist/models/server/server.model.js +24 -3
  123. package/dist/models/server/server.model.js.map +1 -1
  124. package/dist/models/service/service.interface.d.ts +5 -0
  125. package/dist/models/service/service.model.d.ts +15 -0
  126. package/dist/models/service/service.model.js +19 -2
  127. package/dist/models/service/service.model.js.map +1 -1
  128. package/dist/models/subnet/subnet.interface.d.ts +5 -0
  129. package/dist/models/subnet/subnet.model.d.ts +48 -0
  130. package/dist/models/subnet/subnet.model.js +52 -7
  131. package/dist/models/subnet/subnet.model.js.map +1 -1
  132. package/dist/modules/module.container.d.ts +2 -0
  133. package/dist/modules/module.container.js +22 -10
  134. package/dist/modules/module.container.js.map +1 -1
  135. package/dist/modules/test-module.container.d.ts +4 -3
  136. package/dist/modules/test-module.container.js +13 -10
  137. package/dist/modules/test-module.container.js.map +1 -1
  138. package/dist/overlays/anchor.abstract.js +0 -3
  139. package/dist/overlays/anchor.abstract.js.map +1 -1
  140. package/dist/overlays/overlay-data.repository.js +0 -3
  141. package/dist/overlays/overlay-data.repository.js.map +1 -1
  142. package/dist/overlays/overlay.abstract.js +3 -3
  143. package/dist/overlays/overlay.abstract.js.map +1 -1
  144. package/dist/overlays/overlay.service.js +0 -2
  145. package/dist/overlays/overlay.service.js.map +1 -1
  146. package/dist/resources/resource-data.repository.js +6 -3
  147. package/dist/resources/resource-data.repository.js.map +1 -1
  148. package/dist/resources/resource.abstract.js +4 -4
  149. package/dist/resources/resource.abstract.js.map +1 -1
  150. package/dist/resources/shared-resource.abstract.js +4 -1
  151. package/dist/resources/shared-resource.abstract.js.map +1 -1
  152. package/dist/services/capture/capture.service.js +3 -2
  153. package/dist/services/capture/capture.service.js.map +1 -1
  154. package/dist/services/event/event.service.d.ts +17 -0
  155. package/dist/services/event/event.service.js +92 -0
  156. package/dist/services/event/event.service.js.map +1 -0
  157. package/dist/services/input/input.service.js +1 -3
  158. package/dist/services/input/input.service.js.map +1 -1
  159. package/dist/services/serialization/model/model-serialization.service.d.ts +1 -1
  160. package/dist/services/serialization/model/model-serialization.service.js +28 -5
  161. package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
  162. package/dist/services/serialization/resource/resource-serialization.service.js +32 -4
  163. package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
  164. package/dist/services/state-management/local.state-provider.js +0 -1
  165. package/dist/services/state-management/local.state-provider.js.map +1 -1
  166. package/dist/services/state-management/state-management.service.js +0 -2
  167. package/dist/services/state-management/state-management.service.js.map +1 -1
  168. package/dist/services/state-management/test.state-provider.js +3 -1
  169. package/dist/services/state-management/test.state-provider.js.map +1 -1
  170. package/dist/services/transaction/transaction.service.d.ts +4 -0
  171. package/dist/services/transaction/transaction.service.js +69 -9
  172. package/dist/services/transaction/transaction.service.js.map +1 -1
  173. package/dist/services/validation/validation.service.d.ts +19 -0
  174. package/dist/services/validation/validation.service.js +66 -0
  175. package/dist/services/validation/validation.service.js.map +1 -0
  176. package/dist/utilities/object/object.utility.js +1 -0
  177. package/dist/utilities/object/object.utility.js.map +1 -1
  178. package/dist/utilities/validation/validation.utility.d.ts +5 -0
  179. package/dist/utilities/validation/validation.utility.js +12 -0
  180. package/dist/utilities/validation/validation.utility.js.map +1 -0
  181. package/package.json +1 -1
@@ -2,18 +2,62 @@ import { ModelType } from '../app.type.js';
2
2
  import { Dependency } from '../functions/dependency/dependency.js';
3
3
  import { Diff, DiffAction } from '../functions/diff/diff.js';
4
4
  import { DiffUtility } from '../functions/diff/diff.utility.js';
5
+ /**
6
+ * This is Octo's base class, and all other classes extend from it.
7
+ * It helps provide a common set of methods and properties that is core to Octo.
8
+ *
9
+ * Octo is built as a graph, and this base class can be considered as a generic node.
10
+ * Nodes can have children, and siblings, but only if connected via an edge, called {@link Dependency} here.
11
+ *
12
+ * From this base class, three more base classes are derived,
13
+ * - [Models](/docs/fundamentals/models)
14
+ * - [Resources](/docs/fundamentals/resources)
15
+ * - [Overlays](/docs/fundamentals/overlay-and-anchor)
16
+ *
17
+ * Each of these derived base classes, using the base methods of this class,
18
+ * define their own specific rules on how their graphs should be constructed.
19
+ */
5
20
  export class AModel {
6
- MODEL_TYPE = ModelType.MODEL;
7
- _deleteMarker = false;
8
- anchors = [];
9
- context;
10
- dependencies = [];
21
+ constructor() {
22
+ this.MODEL_TYPE = ModelType.MODEL;
23
+ this._deleteMarker = false;
24
+ this.anchors = [];
25
+ this.dependencies = [];
26
+ }
27
+ /**
28
+ * To add an {@link Anchor}.
29
+ *
30
+ * Each node can store multiple anchors for reference.
31
+ * These anchors don't necessarily need to be parented by self, but must be unique,
32
+ * i.e. an anchor, identified by it's parent, cannot be added twice to self's list of anchors.
33
+ */
11
34
  addAnchor(anchor) {
12
35
  const existingAnchor = this.getAnchor(anchor.anchorId, anchor.getParent());
13
36
  if (!existingAnchor) {
14
37
  this.anchors.push(anchor);
15
38
  }
16
39
  }
40
+ /**
41
+ * To add another node as a child of self.
42
+ *
43
+ * Every node must have a unique ID against other nodes of the same {@link MODEL_NAME}.
44
+ * This ID is how Octo differentiates similar nodes, and keeps track of them.
45
+ * But because each node is free to define their own fields,
46
+ * the fields containing the ID are a necessary input to this method.
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * const region = new Region('region');
51
+ * const environment = new Environment('qa');
52
+ * region.addChild('regionId', environment, 'environmentName');
53
+ * ```
54
+ * @param onField The field in self which contains the unique ID.
55
+ * @param child The child node.
56
+ * @param toField The field in child which contains the unique ID.
57
+ * @returns
58
+ * - childToParentDependency: The dependency edge from child to self.
59
+ * - parentToChildDependency: The dependency edge from self to child.
60
+ */
17
61
  addChild(onField, child, toField) {
18
62
  const cIndex = child.dependencies.findIndex((d) => Object.is(d.to, this));
19
63
  const pIndex = this.dependencies.findIndex((d) => Object.is(d.to, child));
@@ -31,6 +75,20 @@ export class AModel {
31
75
  this.dependencies.push(parentToChildDependency);
32
76
  return { childToParentDependency, parentToChildDependency };
33
77
  }
78
+ /**
79
+ * To add another node as a sibling of self.
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * const region1 = new Region('region-1');
84
+ * const region2 = new Region('region-2');
85
+ * region1.addSibling(region2);
86
+ * ```
87
+ * @param to The sibling node.
88
+ * @returns
89
+ * - thatToThisDependency: The dependency edge from sibling to self.
90
+ * - thisToThatDependency: The dependency edge from self to sibling.
91
+ */
34
92
  addRelationship(to) {
35
93
  const thisToThatDependency = new Dependency(this, to);
36
94
  this.dependencies.push(thisToThatDependency);
@@ -38,13 +96,29 @@ export class AModel {
38
96
  to.dependencies.push(thatToThisDependency);
39
97
  return { thatToThisDependency, thisToThatDependency };
40
98
  }
99
+ /**
100
+ * To derive the name of the field in self which contains the ID.
101
+ *
102
+ * @remarks This method does a best attempt search of the field name by traversing all dependencies of self.
103
+ * But if the dependencies lack, or have not been added yet, this method might return `undefined`.
104
+ * That does not mean that such a field does not exist,
105
+ * but rather that it wasn't possible to derive the name at that point.
106
+ * @returns The name of the field in self which contains the ID, or `undefined` if not found.
107
+ */
41
108
  deriveDependencyField() {
42
109
  return this.dependencies.find((d) => d.getRelationship() !== undefined)?.getRelationship().onField;
43
110
  }
111
+ /**
112
+ * Compares and calculates the difference between the current version of self node, and the previous version.
113
+ * - Recursively compares self children too.
114
+ *
115
+ * @param previous The previous version of self.
116
+ */
44
117
  async diff(previous) {
45
118
  const diffs = [];
46
119
  const previousChildrenByModels = previous?.getChildren() ?? {};
47
120
  const currentChildrenByModels = this.getChildren();
121
+ // Compare previous children with current children.
48
122
  for (const modelName of Object.keys(previousChildrenByModels)) {
49
123
  const previousChildren = previousChildrenByModels[modelName].map((d) => d.to);
50
124
  const currentChildren = currentChildrenByModels[modelName]?.map((d) => d.to) || [];
@@ -52,6 +126,7 @@ export class AModel {
52
126
  const childrenDiffs = await DiffUtility.diffModels(previousChildren, currentChildren, field);
53
127
  diffs.push(...childrenDiffs);
54
128
  }
129
+ // Add new children not in previous.
55
130
  for (const modelName of Object.keys(currentChildrenByModels)) {
56
131
  if (previousChildrenByModels.hasOwnProperty(modelName)) {
57
132
  continue;
@@ -64,10 +139,12 @@ export class AModel {
64
139
  }
65
140
  const previousSiblingsByModels = previous?.getSiblings() ?? {};
66
141
  const currentSiblingsByModels = this.getSiblings();
142
+ // Compare previous siblings with current siblings.
67
143
  for (const modelName of Object.keys(previousSiblingsByModels)) {
68
144
  const previousSiblings = previousSiblingsByModels[modelName];
69
145
  const currentSiblings = currentSiblingsByModels[modelName] || [];
70
146
  for (const pd of previousSiblings) {
147
+ // Skip OVERLAY sibling, since overlays are diffed separately.
71
148
  if (pd.to.MODEL_TYPE === ModelType.OVERLAY) {
72
149
  continue;
73
150
  }
@@ -76,6 +153,7 @@ export class AModel {
76
153
  }
77
154
  }
78
155
  for (const cd of currentSiblings) {
156
+ // Skip OVERLAY sibling, since overlays are diffed separately.
79
157
  if (cd.to.MODEL_TYPE === ModelType.OVERLAY) {
80
158
  continue;
81
159
  }
@@ -84,12 +162,14 @@ export class AModel {
84
162
  }
85
163
  }
86
164
  }
165
+ // Add new siblings not in previous.
87
166
  for (const modelName of Object.keys(currentSiblingsByModels)) {
88
167
  if (previousSiblingsByModels.hasOwnProperty(modelName)) {
89
168
  continue;
90
169
  }
91
170
  const currentSiblings = currentSiblingsByModels[modelName];
92
171
  for (const cd of currentSiblings) {
172
+ // Skip OVERLAY sibling, since overlays are diffed separately.
93
173
  if (cd.to.MODEL_TYPE === ModelType.OVERLAY) {
94
174
  continue;
95
175
  }
@@ -110,15 +190,23 @@ export class AModel {
110
190
  }
111
191
  return diffs;
112
192
  }
193
+ /**
194
+ * To get all ancestors of self.
195
+ * - Includes parent nodes.
196
+ * - Might include sibling nodes, if they are necessary for self node to exist.
197
+ */
113
198
  getAncestors() {
114
199
  const members = [this];
115
200
  const membersProcessed = [];
116
201
  while (members.length > 0) {
117
202
  const member = members.pop();
203
+ // Skip processing an already processed member.
118
204
  if (membersProcessed.some((m) => m.getContext() === member.getContext())) {
119
205
  continue;
120
206
  }
121
207
  for (const d of member.dependencies) {
208
+ // If in dependency I am not declared a parent, then d.to is either my parent or has a relationship to me.
209
+ // The behavior of that relationship should be that it must exist for me to exist.
122
210
  if (!d.isParentRelationship() &&
123
211
  d.hasMatchingBehavior(undefined, DiffAction.ADD, undefined, DiffAction.ADD) &&
124
212
  !membersProcessed.some((m) => m.getContext() === d.to.getContext())) {
@@ -129,16 +217,41 @@ export class AModel {
129
217
  }
130
218
  return membersProcessed;
131
219
  }
220
+ /**
221
+ * To get an anchor with a given ID and parent.
222
+ *
223
+ * @param anchorId The ID of the anchor.
224
+ * @param parent The parent of the anchor.
225
+ * - If parent is not given, then self is considered the parent of this anchor.
226
+ */
132
227
  getAnchor(anchorId, parent) {
133
228
  const index = this.getAnchorIndex(anchorId, parent);
134
229
  return index > -1 ? this.anchors[index] : undefined;
135
230
  }
231
+ /**
232
+ * To get the index of an anchor with a given ID and parent.
233
+ *
234
+ * @param anchorId The ID of the anchor.
235
+ * @param parent The parent of the anchor.
236
+ * - If parent is not given, then self is considered the parent of this anchor.
237
+ */
136
238
  getAnchorIndex(anchorId, parent) {
137
239
  return this.anchors.findIndex((a) => a.anchorId === anchorId && a.getParent().getContext() === (parent || this).getContext());
138
240
  }
241
+ /**
242
+ * To get all anchors, filtered by anchor properties.
243
+ *
244
+ * @param filters A set of filters, where `key` is the property name and `value` is the value to filter by.
245
+ */
139
246
  getAnchors(filters = []) {
140
247
  return this.anchors.filter((a) => filters.every((c) => a[c.key] === c.value));
141
248
  }
249
+ /**
250
+ * To get a boundary (sub graph) of self.
251
+ * A boundary is a group of nodes that must belong together.
252
+ * The boundary consists of all nodes associated with self,
253
+ * which includes parents, grand parents, children, grand children, and siblings.
254
+ */
142
255
  getBoundaryMembers() {
143
256
  const extenders = [this];
144
257
  const members = [];
@@ -154,10 +267,12 @@ export class AModel {
154
267
  const model = extenders.pop();
155
268
  const ancestors = model.getAncestors();
156
269
  for (const ancestor of ancestors) {
270
+ // Skip processing an already processed ancestor.
157
271
  if (members.some((m) => m.getContext() === ancestor.getContext())) {
158
272
  continue;
159
273
  }
160
274
  members.push(ancestor);
275
+ // Check for circular dependencies on ancestor.
161
276
  for (const d of ancestor.dependencies) {
162
277
  let childContext;
163
278
  let parentContext;
@@ -170,6 +285,7 @@ export class AModel {
170
285
  parentContext = d.to.getContext();
171
286
  }
172
287
  else {
288
+ // A relationship that is neither parent nor child, will not be reported in circular dependency!
173
289
  continue;
174
290
  }
175
291
  const seen = {};
@@ -204,6 +320,14 @@ export class AModel {
204
320
  }
205
321
  return members;
206
322
  }
323
+ /**
324
+ * To get a child of self that matches the given filters.
325
+ *
326
+ * @param modelName The {@link MODEL_NAME} of the child.
327
+ * @param filters A set of filters, to be applied on children,
328
+ * where `key` is the property name and `value` is the value to filter by.
329
+ * @throws {@link Error} If more than one child is found.
330
+ */
207
331
  getChild(modelName, filters = []) {
208
332
  const dependencies = this.getChildren(modelName)[modelName]?.filter((d) => filters.every((c) => d.to[c.key] === c.value));
209
333
  if (!dependencies) {
@@ -214,6 +338,18 @@ export class AModel {
214
338
  }
215
339
  return dependencies[0].to;
216
340
  }
341
+ /**
342
+ * To get all children of self.
343
+ *
344
+ * @example
345
+ * ```ts
346
+ * const children = region.getChildren('environment');
347
+ * const environments = children['environment'].map((d) => d.to);
348
+ * ```
349
+ * @param modelName The {@link MODEL_NAME} of the children.
350
+ * @returns All children as an object with the {@link MODEL_NAME} as the key,
351
+ * and self's dependency to the child as the value.
352
+ */
217
353
  getChildren(modelName) {
218
354
  return this.dependencies
219
355
  .filter((d) => d.isParentRelationship() && (modelName ? d.to.MODEL_NAME === modelName : true))
@@ -225,12 +361,30 @@ export class AModel {
225
361
  return accumulator;
226
362
  }, {});
227
363
  }
364
+ /**
365
+ * To get the context of self.
366
+ * A context is a string representation of self that uniquely identifies self in the graph.
367
+ *
368
+ * @example
369
+ * ```ts
370
+ * const app = new App('my-app');
371
+ * const region = new Region('my-region');
372
+ * app.addRegion(region);
373
+ * const context = region.getContext(); // "region=my-region,app=my-app"
374
+ * ```
375
+ */
228
376
  getContext() {
229
377
  if (!this.context) {
230
378
  this.context = this.setContext();
231
379
  }
232
380
  return this.context;
233
381
  }
382
+ /**
383
+ * To get all dependencies of self.
384
+ * - Can be filtered to just dependencies with a single node.
385
+ *
386
+ * @param to The other node. If present, will only return dependencies of self with this node.
387
+ */
234
388
  getDependencies(to) {
235
389
  const filters = [];
236
390
  if (to) {
@@ -247,16 +401,42 @@ export class AModel {
247
401
  });
248
402
  });
249
403
  }
404
+ /**
405
+ * To get a dependency of self with another node.
406
+ *
407
+ * @param to The other node.
408
+ * @param relationship The relationship between self and the other node.
409
+ * @returns The dependency with the other node having the given relationship, or `undefined` if not found.
410
+ */
250
411
  getDependency(to, relationship) {
251
412
  const index = this.getDependencyIndex(to, relationship);
252
413
  return index > -1 ? this.dependencies[index] : undefined;
253
414
  }
415
+ /**
416
+ * To get the index of a dependency of self with another node.
417
+ *
418
+ * @param to The other node.
419
+ * @param relationship The relationship between self and the other node.
420
+ * @returns The index of the dependency with the other node having the given relationship, or `-1` if not found.
421
+ */
254
422
  getDependencyIndex(to, relationship) {
255
423
  return this.dependencies.findIndex((d) => d.from.getContext() === this.getContext() &&
256
424
  d.to.getContext() === to.getContext() &&
257
425
  d.getRelationship() !== undefined &&
258
426
  d.getRelationship().type === relationship);
259
427
  }
428
+ /**
429
+ * To get all parent of self.
430
+ *
431
+ * @example
432
+ * ```ts
433
+ * const parents = environment.getParents('region');
434
+ * const regions = parents['region'].map((d) => d.to);
435
+ * ```
436
+ * @param modelName The {@link MODEL_NAME} of the parent.
437
+ * @returns All parents as an object with the {@link MODEL_NAME} as the key,
438
+ * and self's dependency to the parent as the value.
439
+ */
260
440
  getParents(modelName) {
261
441
  return this.dependencies
262
442
  .filter((d) => d.isChildRelationship() && (modelName ? d.to.MODEL_NAME === modelName : true))
@@ -268,6 +448,32 @@ export class AModel {
268
448
  return accumulator;
269
449
  }, {});
270
450
  }
451
+ /**
452
+ * To get all siblings of self.
453
+ *
454
+ * :::note Note
455
+ * Two environments, or two regions, etc. are not automatically considered siblings,
456
+ * unless they have a dependency between them.
457
+ *
458
+ * ```ts
459
+ * const environment1 = new Environment('qa');
460
+ * const environment2 = new Environment('prod');
461
+ * const region = new Region('region');
462
+ * region.addEnvironment(environment1);
463
+ * region.addEnvironment(environment2);
464
+ * environment1.getSiblings('environment'); // This won't return a dependency to environment2.
465
+ * ```
466
+ * :::
467
+ *
468
+ * @example
469
+ * ```ts
470
+ * const siblings = environment.getSiblings('image');
471
+ * const images = siblings['image'].map((d) => d.to);
472
+ * ```
473
+ * @param modelName The {@link MODEL_NAME} of the sibling.
474
+ * @returns All siblings as an object with the {@link MODEL_NAME} as the key,
475
+ * and self's dependency to the sibling as the value.
476
+ */
271
477
  getSiblings(modelName) {
272
478
  return this.dependencies
273
479
  .filter((d) => !d.isChildRelationship() && !d.isParentRelationship() && (modelName ? d.to.MODEL_NAME === modelName : true))
@@ -279,6 +485,11 @@ export class AModel {
279
485
  return accumulator;
280
486
  }, {});
281
487
  }
488
+ /**
489
+ * To check if given node is an ancestor of self.
490
+ *
491
+ * @param model The other node.
492
+ */
282
493
  hasAncestor(model) {
283
494
  const modelParts = model
284
495
  .getContext()
@@ -297,22 +508,60 @@ export class AModel {
297
508
  return modelParts.every((p) => ancestorParts[p[0]] === p[1]);
298
509
  });
299
510
  }
511
+ /**
512
+ * To check if self is marked as deleted.
513
+ * A deleted node will be removed from the graph after the transaction.
514
+ */
300
515
  isMarkedDeleted() {
301
516
  return this._deleteMarker;
302
517
  }
518
+ /**
519
+ * To mark self as deleted.
520
+ * A deleted node will be removed from the graph after the transaction.
521
+ * - A node cannot be deleted if it has dependencies.
522
+ * - Unless the dependency is a sibling dependency and `ignoreDirectRelationships` is `true`.
523
+ *
524
+ * @example
525
+ * ```ts
526
+ * const region1 = new Region('region-1');
527
+ * const environment = new Environment('environment');
528
+ * region1.addEnvironment(environment);
529
+ * const region2 = new Region('region-2');
530
+ * region1.addSibling(region2);
531
+ *
532
+ * // Cannot remove region1 because it has dependencies.
533
+ * region1.remove(); // throws.
534
+ *
535
+ * // Still can't remove region1 because it has a sibling dependency.
536
+ * environment.remove(); // ok.
537
+ * region1.remove(); // throws.
538
+ *
539
+ * // But can remove region1 when sibling relationships are ignored.
540
+ * region1.remove(true); // ok.
541
+ * ```
542
+ * @param ignoreDirectRelationships Whether to ignore sibling relationships.
543
+ * @throws {@link Error} If node contains dependencies to other nodes.
544
+ */
303
545
  remove(ignoreDirectRelationships = false) {
546
+ // Verify model can be removed.
304
547
  for (const dependency of this.dependencies) {
548
+ // When direct relationship is not ignored, this model can't be a parent or have direct relationships.
549
+ // When direct relationship is ignored, this model can't be a parent.
305
550
  if ((!ignoreDirectRelationships && !dependency.isChildRelationship()) ||
306
551
  (ignoreDirectRelationships && dependency.isParentRelationship())) {
307
552
  throw new Error('Cannot remove model until dependent models exist!');
308
553
  }
309
554
  }
555
+ // Removing all dependencies that points to this.
310
556
  for (const dependency of this.dependencies) {
311
557
  const index = dependency.to.dependencies.findIndex((d) => d.to.getContext() === this.getContext());
312
558
  dependency.to.dependencies.splice(index, 1);
313
559
  }
314
560
  this._deleteMarker = true;
315
561
  }
562
+ /**
563
+ * To remove all anchors from self.
564
+ */
316
565
  removeAllAnchors() {
317
566
  let anchors = this.getAnchors();
318
567
  while (anchors.length > 0) {
@@ -320,17 +569,32 @@ export class AModel {
320
569
  anchors = this.getAnchors();
321
570
  }
322
571
  }
572
+ /**
573
+ * To remove an anchor from self.
574
+ *
575
+ * @param anchor The anchor to remove.
576
+ */
323
577
  removeAnchor(anchor) {
324
578
  const existingAnchorIndex = this.getAnchorIndex(anchor.anchorId, anchor.getParent());
325
579
  if (existingAnchorIndex !== -1) {
326
580
  this.anchors.splice(existingAnchorIndex, 1);
327
581
  }
328
582
  }
583
+ /**
584
+ * To remove a dependency from self.
585
+ *
586
+ * @param dependencyIndex The index of the dependency to remove.
587
+ */
329
588
  removeDependency(dependencyIndex) {
330
589
  if (dependencyIndex > -1 && dependencyIndex < this.dependencies.length) {
331
590
  this.dependencies.splice(dependencyIndex, 1);
332
591
  }
333
592
  }
593
+ /**
594
+ * To remove ALL dependencies from self for the given node.
595
+ *
596
+ * @param model The other node.
597
+ */
334
598
  removeRelationship(model) {
335
599
  for (let i = this.dependencies.length - 1; i >= 0; i--) {
336
600
  const dependency = this.dependencies[i];
@@ -345,6 +609,11 @@ export class AModel {
345
609
  }
346
610
  }
347
611
  }
612
+ /**
613
+ * To create self given its serialized representation.
614
+ * - First argument is the serialized representation.
615
+ * - Second argument is the `deReferenceContext()` function to resolve other nodes self depends on.
616
+ */
348
617
  static async unSynth(...args) {
349
618
  if (args.length > 4) {
350
619
  throw new Error('Too many args in unSynth()');
@@ -1 +1 @@
1
- {"version":3,"file":"model.abstract.js","sourceRoot":"","sources":["../../src/models/model.abstract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.abstract.js","sourceRoot":"","sources":["../../src/models/model.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAA+B,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAIhE;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAgB,MAAM;IAA5B;QAEW,eAAU,GAAc,SAAS,CAAC,KAAK,CAAC;QAEzC,kBAAa,GAAG,KAAK,CAAC;QAEb,YAAO,GAAc,EAAE,CAAC;QAIxB,iBAAY,GAAiB,EAAE,CAAC;IAqrBnD,CAAC;IAnrBC;;;;;;OAMG;IACH,SAAS,CAAC,MAAe;QACvB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CACN,OAAyB,EACzB,KAAmB,EACnB,OAAe;QAEf,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1E,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,uBAAuB,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5D,uBAAuB,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,OAAiB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QAChG,uBAAuB,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,OAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACnG,uBAAuB,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAiB,CAAC,CAAC;QACzE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEjD,MAAM,uBAAuB,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5D,uBAAuB,CAAC,WAAW,CAAC,OAAiB,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACtG,uBAAuB,CAAC,qBAAqB,CAAC,OAAiB,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEhD,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAgB;QAC9B,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC7C,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACtD,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC3C,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;IACxD,CAAC;IAED;;;;;;;;OAQG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,KAAK,SAAS,CAAC,EAAE,eAAe,EAAG,CAAC,OAAO,CAAC;IACtG,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,QAAY;QACrB,MAAM,KAAK,GAAW,EAAE,CAAC;QAEzB,MAAM,wBAAwB,GAAI,QAAyB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACjF,MAAM,uBAAuB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnD,mDAAmD;QACnD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC9D,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,MAAM,eAAe,GAAG,uBAAuB,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACnF,MAAM,KAAK,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAG,CAAC,OAAO,CAAC;YAChF,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,gBAAgB,EAAE,eAAe,EAAE,KAAe,CAAC,CAAC;YACvG,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QAC/B,CAAC;QAED,oCAAoC;QACpC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC7D,IAAI,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvD,SAAS;YACX,CAAC;YAED,MAAM,gBAAgB,GAAG,EAAE,CAAC;YAC5B,MAAM,eAAe,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAG,CAAC,OAAO,CAAC;YAC/E,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,gBAAgB,EAAE,eAAe,EAAE,KAAe,CAAC,CAAC;YACvG,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,wBAAwB,GAAI,QAAyB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACjF,MAAM,uBAAuB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnD,mDAAmD;QACnD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC9D,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM,eAAe,GAAG,uBAAuB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAEjE,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;gBAClC,8DAA8D;gBAC9D,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;oBAC3C,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;oBAC7E,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;gBACjC,8DAA8D;gBAC9D,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;oBAC3C,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;oBAC9E,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC7D,IAAI,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvD,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAE3D,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;gBACjC,8DAA8D;gBAC9D,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;oBAC3C,SAAS;gBACX,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QACnE,CAAC;aAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAWD;;;;OAIG;IACH,YAAY;QACV,MAAM,OAAO,GAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,gBAAgB,GAAmB,EAAE,CAAC;QAE5C,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAkB,CAAC;YAE7C,+CAA+C;YAC/C,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;gBACzE,SAAS;YACX,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACpC,0GAA0G;gBAC1G,kFAAkF;gBAClF,IACE,CAAC,CAAC,CAAC,oBAAoB,EAAE;oBACzB,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC;oBAC3E,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EACnE,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YAED,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,QAAgB,EAAE,MAAqB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,QAAgB,EAAE,MAAqB;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,UAAU,EAAE,CAC/F,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,UAAyC,EAAE;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,CAAC;IAED;;;;;OAKG;IACH,kBAAkB;QAChB,MAAM,SAAS,GAAmB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAgC,EAAE,CAAC;QAEjD,MAAM,eAAe,GAAG,CAAC,MAAsB,EAAQ,EAAE;YACvD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;oBAChE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAkB,CAAC;YAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAEvC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,iDAAiD;gBACjD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;oBAClE,SAAS;gBACX,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEvB,+CAA+C;gBAC/C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;oBACtC,IAAI,YAAoB,CAAC;oBACzB,IAAI,aAAqB,CAAC;oBAC1B,IAAI,CAAC,CAAC,oBAAoB,EAAE,EAAE,CAAC;wBAC7B,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;wBACjC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACtC,CAAC;yBAAM,IAAI,CAAC,CAAC,mBAAmB,EAAE,EAAE,CAAC;wBACnC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;wBACnC,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,gGAAgG;wBAChG,SAAS;oBACX,CAAC;oBAED,MAAM,IAAI,GAA+B,EAAE,CAAC;oBAC5C,MAAM,SAAS,GAAa,CAAC,aAAa,CAAC,CAAC;oBAC5C,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAY,CAAC;wBAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;4BAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;wBAClD,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;wBACvB,CAAC;wBACD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC/C,CAAC;oBAED,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC5B,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;wBAC5B,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC7C,CAAC;yBAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,EAAE,CAAC;wBACpE,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;gBACjC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY;iBAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;iBACpE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpB,eAAe,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAiB,EAAE,UAAyC,EAAE;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACxE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAC9C,CAAC;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,SAAkB;QAC5B,OAAO,IAAI,CAAC,YAAY;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC7F,MAAM,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,IAAI,WAAW,CAAC,EAAE,CAAC;gBACjD,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAC/C,CAAC;YACD,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,OAAO,WAAW,CAAC;QACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;IAED;;;;;;;;;;;OAWG;IACH,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,EAAiB;QAC/B,MAAM,OAAO,GAAqC,EAAE,CAAC;QACrD,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzB,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;oBACnB,OAAO,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,EAAgB,EAAE,YAAoC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACxD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAgB,EAAE,YAAoC;QACvE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAChC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE;YACrC,CAAC,CAAC,eAAe,EAAE,KAAK,SAAS;YACjC,CAAC,CAAC,eAAe,EAAG,CAAC,IAAI,KAAK,YAAY,CAC7C,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,SAAkB;QAC3B,OAAO,IAAI,CAAC,YAAY;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC5F,MAAM,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,IAAI,WAAW,CAAC,EAAE,CAAC;gBACjD,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAC/C,CAAC;YACD,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,OAAO,WAAW,CAAC;QACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,WAAW,CAAC,SAAkB;QAC5B,OAAO,IAAI,CAAC,YAAY;aACrB,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9G;aACA,MAAM,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,IAAI,WAAW,CAAC,EAAE,CAAC;gBACjD,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAC/C,CAAC;YACD,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,OAAO,WAAW,CAAC;QACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,KAAmB;QAC7B,MAAM,UAAU,GAAG,KAAK;aACrB,UAAU,EAAE;aACZ,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,aAAa,GAAG,CAAC;iBACpB,UAAU,EAAE;iBACZ,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACjB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;YAET,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,MAAM,CAAC,yBAAyB,GAAG,KAAK;QACtC,+BAA+B;QAC/B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,sGAAsG;YACtG,qEAAqE;YACrE,IACE,CAAC,CAAC,yBAAyB,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;gBACjE,CAAC,yBAAyB,IAAI,UAAU,CAAC,oBAAoB,EAAE,CAAC,EAChE,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACnG,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,MAAe;QAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACrF,IAAI,mBAAmB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,eAAuB;QACtC,IAAI,eAAe,GAAG,CAAC,CAAC,IAAI,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACvE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,KAAmB;QACpC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;gBACtD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;gBACrD,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAaD;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAe;QACrC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;CACF"}
@@ -1,13 +1,38 @@
1
1
  import type { ModelType } from '../app.type.js';
2
2
  import type { Diff } from '../functions/diff/diff.js';
3
+ /**
4
+ * {@link AModel} interface.
5
+ */
3
6
  export interface IModel<I, T> {
7
+ /**
8
+ * The unique name of the node.
9
+ * All nodes with same name are of the same category.
10
+ */
4
11
  readonly MODEL_NAME: string;
12
+ /**
13
+ * The type of the node.
14
+ */
5
15
  readonly MODEL_TYPE: ModelType;
16
+ /**
17
+ * {@inheritDoc AModel.diff}
18
+ */
6
19
  diff(previous?: T): Promise<Diff[]>;
20
+ /**
21
+ * {@inheritDoc AModel.diffProperties}
22
+ */
7
23
  diffProperties(previous: T): Promise<Diff[]>;
24
+ /**
25
+ * {@inheritDoc AModel.setContext}
26
+ */
8
27
  setContext(): string;
28
+ /**
29
+ * {@inheritDoc AModel.synth}
30
+ */
9
31
  synth(): I;
10
32
  }
33
+ /**
34
+ * Model Reference encapsulates identification information of self.
35
+ */
11
36
  export interface IModelReference {
12
37
  context: string;
13
38
  }
@@ -1,4 +1,9 @@
1
1
  import type { Pipeline } from './pipeline.model.js';
2
+ /**
3
+ * {@link Pipeline} model interface.
4
+ *
5
+ * @group Model Interfaces
6
+ */
2
7
  export interface IPipeline {
3
8
  instructionSet: Pipeline['instructionSet'];
4
9
  pipelineName: Pipeline['pipelineName'];
@@ -2,6 +2,21 @@ import type { UnknownModel } from '../../app.type.js';
2
2
  import { AModel } from '../model.abstract.js';
3
3
  import type { Diff } from '../../functions/diff/diff.js';
4
4
  import type { IPipeline } from './pipeline.interface.js';
5
+ /**
6
+ * A Pipeline model is a CI/CD pipeline capable of various automations,
7
+ * including building and deploying code, running Octo projects, and more.
8
+ *
9
+ * :::danger Danger
10
+ * `Pipeline` is not yet supported in Octo!
11
+ * :::
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const pipeline = new Pipeline('MyPipeline');
16
+ * ```
17
+ * @group Models
18
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
19
+ */
5
20
  export declare class Pipeline extends AModel<IPipeline, Pipeline> {
6
21
  readonly MODEL_NAME: string;
7
22
  readonly instructionSet: string[];