@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
@@ -1,4 +1,9 @@
1
1
  import type { IModelReference } from '../model.interface.js';
2
+ /**
3
+ * {@link Execution} model interface.
4
+ *
5
+ * @group Model Interfaces
6
+ */
2
7
  export interface IExecution {
3
8
  deployment: IModelReference;
4
9
  environment: IModelReference;
@@ -1,16 +1,37 @@
1
1
  import type { UnknownModel } from '../../app.type.js';
2
- import type { Diff } from '../../functions/diff/diff.js';
3
2
  import { Deployment } from '../deployment/deployment.model.js';
4
3
  import { Environment } from '../environment/environment.model.js';
5
4
  import { AModel } from '../model.abstract.js';
6
5
  import { Subnet } from '../subnet/subnet.model.js';
7
6
  import type { IExecution } from './execution.interface.js';
7
+ /**
8
+ * An Execution model is the combination of a {@link Deployment}, an {@link Environment}, and a {@link Subnet}.
9
+ * It represents a physical server, running the deployment code, in the given environment, placed in the given subnet.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const deployment = new Deployment('v0.0.1');
14
+ * const environment = new Environment('qa');
15
+ * const subnet = new Subnet(region, 'private');
16
+ * const execution = new Execution(deployment, environment, subnet);
17
+ * ```
18
+ * @group Models
19
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
20
+ */
8
21
  export declare class Execution extends AModel<IExecution, Execution> {
9
- readonly MODEL_NAME: string;
22
+ readonly NODE_NAME: string;
23
+ /**
24
+ * A set of environment variables to be passed to the Docker container.
25
+ * It represents setting the [--env](https://docs.docker.com/compose/environment-variables/set-environment-variables/)
26
+ * option while running a Docker container.
27
+ */
10
28
  readonly environmentVariables: Map<string, string>;
11
29
  constructor(deployment: Deployment, environment: Environment, subnet: Subnet);
30
+ /**
31
+ * An `executionId` is a unique identifier for this execution.
32
+ * - Format of executionId is `{serverKey}-{deploymentTag}-{regionId}-{environmentName}-{subnetName}`
33
+ */
12
34
  get executionId(): string;
13
- diffProperties(previous: Execution): Promise<Diff[]>;
14
35
  setContext(): string;
15
36
  synth(): IExecution;
16
37
  static unSynth(execution: IExecution, deReferenceContext: (context: string) => Promise<UnknownModel>): Promise<Execution>;
@@ -9,17 +9,37 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  var Execution_1;
11
11
  import { Model } from '../../decorators/model.decorator.js';
12
- import { DiffUtility } from '../../functions/diff/diff.utility.js';
12
+ import { Validate } from '../../decorators/validate.decorator.js';
13
13
  import { ArrayUtility } from '../../utilities/array/array.utility.js';
14
14
  import { Deployment } from '../deployment/deployment.model.js';
15
15
  import { Environment } from '../environment/environment.model.js';
16
16
  import { AModel } from '../model.abstract.js';
17
17
  import { Subnet } from '../subnet/subnet.model.js';
18
+ /**
19
+ * An Execution model is the combination of a {@link Deployment}, an {@link Environment}, and a {@link Subnet}.
20
+ * It represents a physical server, running the deployment code, in the given environment, placed in the given subnet.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const deployment = new Deployment('v0.0.1');
25
+ * const environment = new Environment('qa');
26
+ * const subnet = new Subnet(region, 'private');
27
+ * const execution = new Execution(deployment, environment, subnet);
28
+ * ```
29
+ * @group Models
30
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
31
+ */
18
32
  let Execution = Execution_1 = class Execution extends AModel {
19
- MODEL_NAME = 'execution';
20
- environmentVariables = new Map();
21
33
  constructor(deployment, environment, subnet) {
22
34
  super();
35
+ this.NODE_NAME = 'execution';
36
+ /**
37
+ * A set of environment variables to be passed to the Docker container.
38
+ * It represents setting the [--env](https://docs.docker.com/compose/environment-variables/set-environment-variables/)
39
+ * option while running a Docker container.
40
+ */
41
+ this.environmentVariables = new Map();
42
+ // Check if execution can be placed in this subnet.
23
43
  const environmentRegions = environment.getParents('region')['region'] || [];
24
44
  const subnetRegions = subnet.getParents('region')['region'] || [];
25
45
  if (environmentRegions.length > 0 &&
@@ -27,6 +47,7 @@ let Execution = Execution_1 = class Execution extends AModel {
27
47
  environmentRegions[0].to.regionId !== subnetRegions[0].to.regionId) {
28
48
  throw new Error('Environment and Subnet must be in the same region!');
29
49
  }
50
+ // Check for duplicates.
30
51
  const deploymentExecutions = (deployment.getChildren('execution')['execution'] || []).map((d) => d.to);
31
52
  const environmentExecutions = (environment.getChildren('execution')['execution'] || []).map((d) => d.to);
32
53
  const subnetExecutions = (subnet.getChildren('execution')['execution'] || []).map((d) => d.to);
@@ -35,10 +56,16 @@ let Execution = Execution_1 = class Execution extends AModel {
35
56
  }, deploymentExecutions, environmentExecutions, subnetExecutions).length > 0) {
36
57
  throw new Error('Execution already exists!');
37
58
  }
59
+ // In order for this execution to properly have defined its parent-child relationship, all parents
60
+ // must claim it as their child. Doing it here, prevents the confusion.
38
61
  deployment.addChild('deploymentTag', this, 'executionId');
39
62
  environment.addChild('environmentName', this, 'executionId');
40
63
  subnet.addChild('subnetId', this, 'executionId');
41
64
  }
65
+ /**
66
+ * An `executionId` is a unique identifier for this execution.
67
+ * - Format of executionId is `{serverKey}-{deploymentTag}-{regionId}-{environmentName}-{subnetName}`
68
+ */
42
69
  get executionId() {
43
70
  const parents = this.getParents();
44
71
  const deployment = parents['deployment'][0].to;
@@ -54,16 +81,13 @@ let Execution = Execution_1 = class Execution extends AModel {
54
81
  subnet.subnetName,
55
82
  ].join('-');
56
83
  }
57
- async diffProperties(previous) {
58
- return DiffUtility.diffMap(previous, this, 'environmentVariables');
59
- }
60
84
  setContext() {
61
85
  const parents = this.getParents();
62
86
  const deployment = parents['deployment'][0]['to'];
63
87
  const environment = parents['environment'][0]['to'];
64
88
  const subnet = parents['subnet'][0]['to'];
65
89
  return [
66
- `${this.MODEL_NAME}=${this.executionId}`,
90
+ `${this.NODE_NAME}=${this.executionId}`,
67
91
  deployment.getContext(),
68
92
  environment.getContext(),
69
93
  subnet.getContext(),
@@ -94,6 +118,15 @@ let Execution = Execution_1 = class Execution extends AModel {
94
118
  return newExecution;
95
119
  }
96
120
  };
121
+ __decorate([
122
+ Validate({
123
+ destruct: (value) => {
124
+ return Array.from(value.keys());
125
+ },
126
+ options: { maxLength: 64, minLength: 2, regex: /^[a-zA-Z][\w-]*[a-zA-Z0-9]$/ },
127
+ }),
128
+ __metadata("design:type", Map)
129
+ ], Execution.prototype, "environmentVariables", void 0);
97
130
  Execution = Execution_1 = __decorate([
98
131
  Model(),
99
132
  __metadata("design:paramtypes", [Deployment, Environment, Subnet])
@@ -1 +1 @@
1
- {"version":3,"file":"execution.model.js","sourceRoot":"","sources":["../../../src/models/execution/execution.model.ts"],"names":[],"mappings":";;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAI5C,IAAM,SAAS,iBAAf,MAAM,SAAU,SAAQ,MAA6B;IACjD,UAAU,GAAW,WAAW,CAAC;IAEjC,oBAAoB,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE/D,YAAY,UAAsB,EAAE,WAAwB,EAAE,MAAc;QAC1E,KAAK,EAAE,CAAC;QAGR,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5E,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClE,IACE,kBAAkB,CAAC,MAAM,GAAG,CAAC;YAC7B,aAAa,CAAC,MAAM,GAAG,CAAC;YACvB,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAa,CAAC,QAAQ,KAAM,aAAa,CAAC,CAAC,CAAC,CAAC,EAAa,CAAC,QAAQ,EAC1F,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAGD,MAAM,oBAAoB,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CACvF,CAAC,CAAC,EAAa,EAAE,CAAC,CAAC,CAAC,EAAe,CACpC,CAAC;QACF,MAAM,qBAAqB,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CACzF,CAAC,CAAC,EAAa,EAAE,CAAC,CAAC,CAAC,EAAe,CACpC,CAAC;QACF,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAC/E,CAAC,CAAC,EAAa,EAAE,CAAC,CAAC,CAAC,EAAe,CACpC,CAAC;QAEF,IACE,YAAY,CAAC,SAAS,CACpB,CAAC,CAAY,EAAE,CAAY,EAAW,EAAE;YACtC,OAAO,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC;QACzC,CAAC,EACD,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,CACjB,CAAC,MAAM,GAAG,CAAC,EACZ,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAID,UAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC1D,WAAW,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,WAAW;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAgB,CAAC;QAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAY,CAAC;QACjE,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAiB,CAAC;QAChE,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAY,CAAC;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAY,CAAC;QACjD,OAAO;YACL,MAAM,CAAC,SAAS;YAChB,UAAU,CAAC,aAAa;YACxB,MAAM,CAAC,QAAQ;YACf,WAAW,CAAC,eAAe;YAC3B,MAAM,CAAC,UAAU;SAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,QAAmB;QAC/C,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,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAe,CAAC;QAChE,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAgB,CAAC;QACnE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAW,CAAC;QACpD,OAAO;YACL,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;YACxC,UAAU,CAAC,UAAU,EAAE;YACvB,WAAW,CAAC,UAAU,EAAE;YACxB,MAAM,CAAC,UAAU,EAAE;SACpB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAEQ,KAAK;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAe,CAAC;QAChE,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAgB,CAAC;QACnE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAW,CAAC;QAEpD,OAAO;YACL,UAAU,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,EAAE;YAChD,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,EAAE;YAClD,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,GAAG,EAAE,CAAC;YAChF,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE;SACzC,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,SAAqB,EACrB,kBAA8D;QAE9D,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3D,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;YAChD,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC;YACjD,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAsC,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,WAAS,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAEpE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC1E,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF,CAAA;AAlHY,SAAS;IADrB,KAAK,EAAE;qCAMkB,UAAU,EAAe,WAAW,EAAU,MAAM;GALjE,SAAS,CAkHrB"}
1
+ {"version":3,"file":"execution.model.js","sourceRoot":"","sources":["../../../src/models/execution/execution.model.ts"],"names":[],"mappings":";;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAGnD;;;;;;;;;;;;;GAaG;AAEI,IAAM,SAAS,iBAAf,MAAM,SAAU,SAAQ,MAA6B;IAgB1D,YAAY,UAAsB,EAAE,WAAwB,EAAE,MAAc;QAC1E,KAAK,EAAE,CAAC;QAhBD,cAAS,GAAW,WAAW,CAAC;QAEzC;;;;WAIG;QAOM,yBAAoB,GAAwB,IAAI,GAAG,EAAE,CAAC;QAK7D,mDAAmD;QACnD,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5E,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClE,IACE,kBAAkB,CAAC,MAAM,GAAG,CAAC;YAC7B,aAAa,CAAC,MAAM,GAAG,CAAC;YACvB,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAa,CAAC,QAAQ,KAAM,aAAa,CAAC,CAAC,CAAC,CAAC,EAAa,CAAC,QAAQ,EAC1F,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,wBAAwB;QACxB,MAAM,oBAAoB,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CACvF,CAAC,CAAC,EAAa,EAAE,CAAC,CAAC,CAAC,EAAe,CACpC,CAAC;QACF,MAAM,qBAAqB,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CACzF,CAAC,CAAC,EAAa,EAAE,CAAC,CAAC,CAAC,EAAe,CACpC,CAAC;QACF,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAC/E,CAAC,CAAC,EAAa,EAAE,CAAC,CAAC,CAAC,EAAe,CACpC,CAAC;QAEF,IACE,YAAY,CAAC,SAAS,CACpB,CAAC,CAAY,EAAE,CAAY,EAAW,EAAE;YACtC,OAAO,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC;QACzC,CAAC,EACD,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,CACjB,CAAC,MAAM,GAAG,CAAC,EACZ,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,kGAAkG;QAClG,uEAAuE;QACvE,UAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC1D,WAAW,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAgB,CAAC;QAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAY,CAAC;QACjE,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAiB,CAAC;QAChE,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAY,CAAC;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAY,CAAC;QACjD,OAAO;YACL,MAAM,CAAC,SAAS;YAChB,UAAU,CAAC,aAAa;YACxB,MAAM,CAAC,QAAQ;YACf,WAAW,CAAC,eAAe;YAC3B,MAAM,CAAC,UAAU;SAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAEQ,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAe,CAAC;QAChE,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAgB,CAAC;QACnE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAW,CAAC;QACpD,OAAO;YACL,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE;YACvC,UAAU,CAAC,UAAU,EAAE;YACvB,WAAW,CAAC,UAAU,EAAE;YACxB,MAAM,CAAC,UAAU,EAAE;SACpB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAEQ,KAAK;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAe,CAAC;QAChE,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAgB,CAAC;QACnE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAW,CAAC;QAEpD,OAAO;YACL,UAAU,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,EAAE;YAChD,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,EAAE;YAClD,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,GAAG,EAAE,CAAC;YAChF,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE;SACzC,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,SAAqB,EACrB,kBAA8D;QAE9D,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3D,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;YAChD,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC;YACjD,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAsC,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,WAAS,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAEpE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC1E,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF,CAAA;AA/GU;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;uDAA6B;AAdpD,SAAS;IADrB,KAAK,EAAE;qCAiBkB,UAAU,EAAe,WAAW,EAAU,MAAM;GAhBjE,SAAS,CA6HrB"}
@@ -1,4 +1,9 @@
1
1
  import type { Image } from './image.model.js';
2
+ /**
3
+ * {@link Image} model interface.
4
+ *
5
+ * @group Model Interfaces
6
+ */
2
7
  export interface IImage {
3
8
  dockerOptions: Image['dockerOptions'];
4
9
  imageId: Image['imageId'];
@@ -1,22 +1,55 @@
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 { IImage } from './image.interface.js';
4
+ /**
5
+ * Options passed to the Docker engine while building the image.
6
+ */
5
7
  export interface IImageDockerOptions {
8
+ /**
9
+ * Absolute path of the Dockerfile.
10
+ */
6
11
  dockerfilePath: string;
12
+ /**
13
+ * Build arguments, same as [--build-arg](https://docs.docker.com/build/guide/build-args/) option.
14
+ */
7
15
  buildArgs?: {
8
16
  [key: string]: string;
9
17
  };
18
+ /**
19
+ * To suppress Docker output, same as [--quiet](https://docs.docker.com/reference/cli/docker/container/run/) option.
20
+ */
10
21
  quiet?: boolean;
11
22
  }
23
+ /**
24
+ * An Image model represents a Docker image, to either build, or run, your microservices.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * const image = new Image('nginx', '2.4', { dockerfilePath: './Dockerfile' });
29
+ *
30
+ * const image = new Image('docker/hello-world', '1.0', { dockerfilePath: './Dockerfile' });
31
+ * ```
32
+ * @group Models
33
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
34
+ */
12
35
  export declare class Image extends AModel<IImage, Image> {
13
- readonly MODEL_NAME: string;
36
+ readonly NODE_NAME: string;
14
37
  readonly dockerOptions: IImageDockerOptions;
38
+ /**
39
+ * An imageId is the unique identifier for this image.
40
+ * - Format of imageId is `{imageName}:{imageTag}`
41
+ */
15
42
  readonly imageId: string;
43
+ /**
44
+ * The name of the image, same as [namespace in Docker](https://docs.docker.com/reference/cli/docker/image/tag/).
45
+ */
16
46
  readonly imageName: string;
47
+ /**
48
+ * The tag of the image, same as [tag in Docker](https://docs.docker.com/reference/cli/docker/image/tag/).
49
+ * - Unlike Docker, `imageTag` is mandatory in Octo.
50
+ */
17
51
  readonly imageTag: string;
18
52
  constructor(imageName: string, imageTag: string, options: IImageDockerOptions);
19
- diffProperties(): Promise<Diff[]>;
20
53
  setContext(): string;
21
54
  synth(): IImage;
22
55
  static unSynth(image: IImage, deReferenceContext: (context: string) => Promise<UnknownModel>): Promise<Image>;
@@ -8,30 +8,37 @@ 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 Image_1;
11
+ import { strict as assert } from 'assert';
11
12
  import { resolve } from 'path';
12
13
  import { Model } from '../../decorators/model.decorator.js';
14
+ import { Validate } from '../../decorators/validate.decorator.js';
13
15
  import { AModel } from '../model.abstract.js';
16
+ /**
17
+ * An Image model represents a Docker image, to either build, or run, your microservices.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const image = new Image('nginx', '2.4', { dockerfilePath: './Dockerfile' });
22
+ *
23
+ * const image = new Image('docker/hello-world', '1.0', { dockerfilePath: './Dockerfile' });
24
+ * ```
25
+ * @group Models
26
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
27
+ */
14
28
  let Image = Image_1 = class Image extends AModel {
15
- MODEL_NAME = 'image';
16
- dockerOptions;
17
- imageId;
18
- imageName;
19
- imageTag;
20
29
  constructor(imageName, imageTag, options) {
21
30
  super();
31
+ this.NODE_NAME = 'image';
22
32
  this.imageId = `${imageName}:${imageTag}`;
23
33
  this.imageName = imageName;
24
34
  this.imageTag = imageTag;
25
35
  options.dockerfilePath = resolve(options.dockerfilePath);
26
36
  this.dockerOptions = options;
27
37
  }
28
- async diffProperties() {
29
- return [];
30
- }
31
38
  setContext() {
32
39
  const parents = this.getParents();
33
40
  const app = parents['app'][0].to;
34
- return [`${this.MODEL_NAME}=${this.imageId}`, app.getContext()].join(',');
41
+ return [`${this.NODE_NAME}=${this.imageId}`, app.getContext()].join(',');
35
42
  }
36
43
  synth() {
37
44
  return {
@@ -42,11 +49,20 @@ let Image = Image_1 = class Image extends AModel {
42
49
  };
43
50
  }
44
51
  static async unSynth(image, deReferenceContext) {
52
+ assert(!!deReferenceContext);
45
53
  return new Image_1(image.imageName, image.imageTag, {
46
54
  ...image.dockerOptions,
47
55
  });
48
56
  }
49
57
  };
58
+ __decorate([
59
+ Validate({ options: { maxLength: 32, minLength: 2, regex: /^[a-zA-Z@][\w\-\/]*[a-zA-Z0-9]$/ } }),
60
+ __metadata("design:type", String)
61
+ ], Image.prototype, "imageName", void 0);
62
+ __decorate([
63
+ Validate({ options: { maxLength: 32, minLength: 2, regex: /^[a-zA-Z0-9][\w.-]*[a-zA-Z0-9]$/ } }),
64
+ __metadata("design:type", String)
65
+ ], Image.prototype, "imageTag", void 0);
50
66
  Image = Image_1 = __decorate([
51
67
  Model(),
52
68
  __metadata("design:paramtypes", [String, String, Object])
@@ -1 +1 @@
1
- {"version":3,"file":"image.model.js","sourceRoot":"","sources":["../../../src/models/image/image.model.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAUvC,IAAM,KAAK,aAAX,MAAM,KAAM,SAAQ,MAAqB;IACrC,UAAU,GAAW,OAAO,CAAC;IAE7B,aAAa,CAAsB;IAEnC,OAAO,CAAS;IAEhB,SAAS,CAAS;IAElB,QAAQ,CAAS;IAE1B,YAAY,SAAiB,EAAE,QAAgB,EAAE,OAA4B;QAC3E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IAEQ,KAAK,CAAC,cAAc;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5E,CAAC;IAEQ,KAAK;QACZ,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7D,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,KAAa,EAEb,kBAA8D;QAE9D,OAAO,IAAI,OAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE;YAChD,GAAG,KAAK,CAAC,aAAa;SACvB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAjDY,KAAK;IADjB,KAAK,EAAE;;GACK,KAAK,CAiDjB"}
1
+ {"version":3,"file":"image.model.js","sourceRoot":"","sources":["../../../src/models/image/image.model.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAuB9C;;;;;;;;;;;GAWG;AAEI,IAAM,KAAK,aAAX,MAAM,KAAM,SAAQ,MAAqB;IAwB9C,YAAY,SAAiB,EAAE,QAAgB,EAAE,OAA4B;QAC3E,KAAK,EAAE,CAAC;QAxBD,cAAS,GAAW,OAAO,CAAC;QAyBnC,IAAI,CAAC,OAAO,GAAG,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IAEQ,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;IAEQ,KAAK;QACZ,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7D,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,KAAa,EACb,kBAA8D;QAE9D,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAE7B,OAAO,IAAI,OAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE;YAChD,GAAG,KAAK,CAAC,aAAa;SACvB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA5CU;IADR,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,CAAC;;wCACtE;AAOlB;IADR,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,CAAC;;uCACvE;AAtBf,KAAK;IADjB,KAAK,EAAE;;GACK,KAAK,CA2DjB"}
@@ -1,9 +1,26 @@
1
1
  import type { ActionInputs, ActionOutputs } from '../app.type.js';
2
2
  import type { Diff } from '../functions/diff/diff.js';
3
+ /**
4
+ * Model Actions are translation functions between Diff and underlying resources.
5
+ * These actions can translate a specific type of Diff into individual resources.
6
+ */
3
7
  export interface IModelAction {
8
+ /**
9
+ * The name of the action.
10
+ * It can be used to easily identify an action and its purpose.
11
+ */
4
12
  readonly ACTION_NAME: string;
13
+ /**
14
+ * This function contains the list of inputs to ask before processing the diff.
15
+ * A missing input key will not be populated in the inputs provided to the action.
16
+ */
5
17
  collectInput(diff: Diff): Extract<keyof ActionInputs, string>[];
18
+ /**
19
+ * This function determines if the handle is applicable to the diff.
20
+ */
6
21
  filter(diff: Diff): boolean;
22
+ /**
23
+ * This function contains the logic to apply the diff(s) to the underlying infrastructure.
24
+ */
7
25
  handle(diff: Diff, actionInputs: ActionInputs, actionOutputs: ActionOutputs): Promise<ActionOutputs>;
8
- revert(diff: Diff, actionInputs: ActionInputs, actionOutputs: ActionOutputs): Promise<ActionOutputs>;
9
26
  }
@@ -1,59 +1,24 @@
1
- import { ModelType, type UnknownModel } from '../app.type.js';
2
- import { Dependency, type DependencyRelationship } from '../functions/dependency/dependency.js';
1
+ import { NodeType, type UnknownModel } from '../app.type.js';
3
2
  import { Diff } from '../functions/diff/diff.js';
3
+ import { ANode } from '../functions/node/node.abstract.js';
4
4
  import type { AAnchor } from '../overlays/anchor.abstract.js';
5
5
  import type { IModel } from './model.interface.js';
6
- export declare abstract class AModel<I, T> implements IModel<I, T> {
7
- abstract readonly MODEL_NAME: string;
8
- readonly MODEL_TYPE: ModelType;
9
- private _deleteMarker;
6
+ export declare abstract class AModel<I, T> extends ANode<I, T> implements IModel<I, T> {
7
+ abstract readonly NODE_NAME: string;
8
+ readonly NODE_TYPE: NodeType;
10
9
  private readonly anchors;
11
- private context;
12
- private readonly dependencies;
13
10
  addAnchor(anchor: AAnchor): void;
14
- addChild(onField: keyof T | string, child: UnknownModel, toField: string): {
15
- childToParentDependency: Dependency;
16
- parentToChildDependency: Dependency;
17
- };
18
- addRelationship(to: UnknownModel): {
19
- thatToThisDependency: Dependency;
20
- thisToThatDependency: Dependency;
21
- };
22
11
  deriveDependencyField(): string | undefined;
23
- diff(previous?: T): Promise<Diff[]>;
24
- abstract diffProperties(previous: T): Promise<Diff[]>;
25
- getAncestors(): UnknownModel[];
12
+ diff(): Promise<Diff[]>;
13
+ diffProperties(): Promise<Diff[]>;
26
14
  getAnchor(anchorId: string, parent?: UnknownModel): AAnchor | undefined;
27
15
  getAnchorIndex(anchorId: string, parent?: UnknownModel): number;
28
16
  getAnchors(filters?: {
29
17
  key: string;
30
18
  value: any;
31
19
  }[]): AAnchor[];
32
- getBoundaryMembers(): UnknownModel[];
33
- getChild(modelName: string, filters?: {
34
- key: string;
35
- value: any;
36
- }[]): UnknownModel | undefined;
37
- getChildren(modelName?: string): {
38
- [key: string]: Dependency[];
39
- };
40
- getContext(): string;
41
- getDependencies(to?: UnknownModel): Dependency[];
42
- getDependency(to: UnknownModel, relationship: DependencyRelationship): Dependency | undefined;
43
- getDependencyIndex(to: UnknownModel, relationship: DependencyRelationship): number;
44
- getParents(modelName?: string): {
45
- [key: string]: Dependency[];
46
- };
47
- getSiblings(modelName?: string): {
48
- [key: string]: Dependency[];
49
- };
50
- hasAncestor(model: UnknownModel): boolean;
51
- isMarkedDeleted(): boolean;
52
- remove(ignoreDirectRelationships?: boolean): void;
53
20
  removeAllAnchors(): void;
54
21
  removeAnchor(anchor: AAnchor): void;
55
- removeDependency(dependencyIndex: number): void;
56
- removeRelationship(model: UnknownModel): void;
57
22
  abstract setContext(): string;
58
23
  abstract synth(): I;
59
24
  static unSynth(...args: unknown[]): Promise<UnknownModel>;