@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
@@ -9,61 +9,92 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  var App_1;
11
11
  import { Model } from '../../decorators/model.decorator.js';
12
+ import { Validate } from '../../decorators/validate.decorator.js';
12
13
  import { AModel } from '../model.abstract.js';
14
+ /**
15
+ * An App model is the parent of all other models.
16
+ * It represents the main app for whom the infrastructure is being created.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const app = new App('MyApp');
21
+ * ```
22
+ * @group Models
23
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
24
+ */
13
25
  let App = App_1 = class App extends AModel {
14
- MODEL_NAME = 'app';
15
- name;
16
26
  constructor(name) {
17
27
  super();
28
+ this.MODEL_NAME = 'app';
18
29
  this.name = name;
19
30
  }
20
31
  async diffProperties() {
21
32
  return [];
22
33
  }
34
+ /**
35
+ * To add an {@link Image}.
36
+ */
23
37
  addImage(image) {
24
38
  const childrenDependencies = this.getChildren('image');
25
39
  if (!childrenDependencies['image'])
26
40
  childrenDependencies['image'] = [];
41
+ // Check for duplicates.
27
42
  const images = childrenDependencies['image'].map((d) => d.to);
28
43
  if (images.find((i) => i.imageId === image.imageId)) {
29
44
  throw new Error('Image already exists!');
30
45
  }
31
46
  this.addChild('name', image, 'imageId');
32
47
  }
48
+ /**
49
+ * To add a {@link Pipeline}.
50
+ */
33
51
  addPipeline(pipeline) {
34
52
  const childrenDependencies = this.getChildren('pipeline');
35
53
  if (!childrenDependencies['pipeline'])
36
54
  childrenDependencies['pipeline'] = [];
55
+ // Check for duplicates.
37
56
  const pipelines = childrenDependencies['pipeline'].map((d) => d.to);
38
57
  if (pipelines.find((p) => p.pipelineName === pipeline.pipelineName)) {
39
58
  throw new Error('Pipeline already exists!');
40
59
  }
41
60
  this.addChild('name', pipeline, 'pipelineName');
42
61
  }
62
+ /**
63
+ * To add a {@link Region}.
64
+ */
43
65
  addRegion(region) {
44
66
  const childrenDependencies = this.getChildren('region');
45
67
  if (!childrenDependencies['region'])
46
68
  childrenDependencies['region'] = [];
69
+ // Check for duplicates.
47
70
  const regions = childrenDependencies['region'].map((d) => d.to);
48
71
  if (regions.find((r) => r.regionId === region.regionId)) {
49
72
  throw new Error('Region already exists!');
50
73
  }
51
74
  this.addChild('name', region, 'regionId');
52
75
  }
76
+ /**
77
+ * To add a {@link Server}.
78
+ */
53
79
  addServer(server) {
54
80
  const childrenDependencies = this.getChildren('server');
55
81
  if (!childrenDependencies['server'])
56
82
  childrenDependencies['server'] = [];
83
+ // Check for duplicates.
57
84
  const servers = childrenDependencies['server'].map((d) => d.to);
58
85
  if (servers.find((s) => s.serverKey === server.serverKey)) {
59
86
  throw new Error('Server already exists!');
60
87
  }
61
88
  this.addChild('name', server, 'serverKey');
62
89
  }
90
+ /**
91
+ * To add a {@link Service}.
92
+ */
63
93
  addService(service) {
64
94
  const childrenDependencies = this.getChildren('service');
65
95
  if (!childrenDependencies['service'])
66
96
  childrenDependencies['service'] = [];
97
+ // Check for duplicates.
67
98
  const services = childrenDependencies['service'].map((d) => d.to);
68
99
  if (services.find((s) => s.serviceId === service.serviceId)) {
69
100
  throw new Error('Service already exists!');
@@ -78,10 +109,16 @@ let App = App_1 = class App extends AModel {
78
109
  name: this.name,
79
110
  };
80
111
  }
81
- static async unSynth(app, deReferenceContext) {
112
+ static async unSynth(app,
113
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
114
+ deReferenceContext) {
82
115
  return new App_1(app.name);
83
116
  }
84
117
  };
118
+ __decorate([
119
+ Validate({ options: { maxLength: 64, minLength: 2, regex: /^[a-zA-Z][\w-]*[a-zA-Z0-9]$/ } }),
120
+ __metadata("design:type", String)
121
+ ], App.prototype, "name", void 0);
85
122
  App = App_1 = __decorate([
86
123
  Model(),
87
124
  __metadata("design:paramtypes", [String])
@@ -1 +1 @@
1
- {"version":3,"file":"app.model.js","sourceRoot":"","sources":["../../../src/models/app/app.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.model.js","sourceRoot":"","sources":["../../../src/models/app/app.model.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  import type { Deployment } from './deployment.model.js';
2
+ /**
3
+ * {@link Deployment} model interface.
4
+ *
5
+ * @group Model Interfaces
6
+ */
2
7
  export interface IDeployment {
3
8
  deploymentTag: Deployment['deploymentTag'];
4
9
  }
@@ -2,8 +2,23 @@ import type { UnknownModel } from '../../app.type.js';
2
2
  import type { Diff } from '../../functions/diff/diff.js';
3
3
  import { AModel } from '../model.abstract.js';
4
4
  import type { IDeployment } from './deployment.interface.js';
5
+ /**
6
+ * A deployment model is an instance of server's code at a specific point in time.
7
+ * Every change/commit in server code should generate a new deployment.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const deployment = new Deployment('v0.0.1');
12
+ * ```
13
+ * @group Models
14
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
15
+ */
5
16
  export declare class Deployment extends AModel<IDeployment, Deployment> {
6
17
  readonly MODEL_NAME: string;
18
+ /**
19
+ * The identifying tag that can point to the server's code at a specific point in time.
20
+ * Could be a version number or a commit hash.
21
+ */
7
22
  readonly deploymentTag: string;
8
23
  constructor(deploymentTag: string);
9
24
  diffProperties(): Promise<Diff[]>;
@@ -9,12 +9,23 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  var Deployment_1;
11
11
  import { Model } from '../../decorators/model.decorator.js';
12
+ import { Validate } from '../../decorators/validate.decorator.js';
12
13
  import { AModel } from '../model.abstract.js';
14
+ /**
15
+ * A deployment model is an instance of server's code at a specific point in time.
16
+ * Every change/commit in server code should generate a new deployment.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const deployment = new Deployment('v0.0.1');
21
+ * ```
22
+ * @group Models
23
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
24
+ */
13
25
  let Deployment = Deployment_1 = class Deployment extends AModel {
14
- MODEL_NAME = 'deployment';
15
- deploymentTag;
16
26
  constructor(deploymentTag) {
17
27
  super();
28
+ this.MODEL_NAME = 'deployment';
18
29
  this.deploymentTag = deploymentTag;
19
30
  }
20
31
  async diffProperties() {
@@ -30,10 +41,16 @@ let Deployment = Deployment_1 = class Deployment extends AModel {
30
41
  deploymentTag: this.deploymentTag,
31
42
  };
32
43
  }
33
- static async unSynth(deployment, deReferenceContext) {
44
+ static async unSynth(deployment,
45
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
46
+ deReferenceContext) {
34
47
  return new Deployment_1(deployment.deploymentTag);
35
48
  }
36
49
  };
50
+ __decorate([
51
+ Validate({ options: { maxLength: 32, minLength: 2, regex: /^[a-zA-Z0-9][\w.-]*[a-zA-Z0-9]$/ } }),
52
+ __metadata("design:type", String)
53
+ ], Deployment.prototype, "deploymentTag", void 0);
37
54
  Deployment = Deployment_1 = __decorate([
38
55
  Model(),
39
56
  __metadata("design:paramtypes", [String])
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.model.js","sourceRoot":"","sources":["../../../src/models/deployment/deployment.model.ts"],"names":[],"mappings":";;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIvC,IAAM,UAAU,kBAAhB,MAAM,UAAW,SAAQ,MAA+B;IACpD,UAAU,GAAW,YAAY,CAAC;IAElC,aAAa,CAAS;IAE/B,YAAY,aAAqB;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEQ,KAAK,CAAC,cAAc;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IAEQ,KAAK;QACZ,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,UAAuB,EAEvB,kBAA8D;QAE9D,OAAO,IAAI,YAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AAjCY,UAAU;IADtB,KAAK,EAAE;;GACK,UAAU,CAiCtB"}
1
+ {"version":3,"file":"deployment.model.js","sourceRoot":"","sources":["../../../src/models/deployment/deployment.model.ts"],"names":[],"mappings":";;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C;;;;;;;;;;GAUG;AAEI,IAAM,UAAU,kBAAhB,MAAM,UAAW,SAAQ,MAA+B;IAU7D,YAAY,aAAqB;QAC/B,KAAK,EAAE,CAAC;QAVD,eAAU,GAAW,YAAY,CAAC;QAWzC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEQ,KAAK,CAAC,cAAc;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IAEQ,KAAK;QACZ,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,UAAuB;IACvB,6DAA6D;IAC7D,kBAA8D;QAE9D,OAAO,IAAI,YAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AA9BU;IADR,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,CAAC;;iDAClE;AARpB,UAAU;IADtB,KAAK,EAAE;;GACK,UAAU,CAsCtB"}
@@ -1,4 +1,9 @@
1
1
  import type { Environment } from './environment.model.js';
2
+ /**
3
+ * {@link Environment} model interface.
4
+ *
5
+ * @group Model Interfaces
6
+ */
2
7
  export interface IEnvironment {
3
8
  environmentName: Environment['environmentName'];
4
9
  environmentVariables: {
@@ -2,9 +2,27 @@ import type { UnknownModel } from '../../app.type.js';
2
2
  import type { Diff } from '../../functions/diff/diff.js';
3
3
  import { AModel } from '../model.abstract.js';
4
4
  import type { IEnvironment } from './environment.interface.js';
5
+ /**
6
+ * An Environment model is the logical sub-section of a Region which isolates one runtime environment from another.
7
+ * E.g. qa, staging, production, etc.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const environment = new Environment('qa');
12
+ * ```
13
+ * @group Models
14
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
15
+ */
5
16
  export declare class Environment extends AModel<IEnvironment, Environment> {
6
17
  readonly MODEL_NAME: string;
18
+ /**
19
+ * The name of the environment.
20
+ * An environment must be unique within a Region. But multiple Regions can share the same environment name.
21
+ */
7
22
  readonly environmentName: string;
23
+ /**
24
+ * A set of environment variables to be passed to any {@link Execution} running in this environment.
25
+ */
8
26
  readonly environmentVariables: Map<string, string>;
9
27
  constructor(environmentName: string);
10
28
  diffProperties(previous: Environment): Promise<Diff[]>;
@@ -9,14 +9,28 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  var Environment_1;
11
11
  import { Model } from '../../decorators/model.decorator.js';
12
+ import { Validate } from '../../decorators/validate.decorator.js';
12
13
  import { DiffUtility } from '../../functions/diff/diff.utility.js';
13
14
  import { AModel } from '../model.abstract.js';
15
+ /**
16
+ * An Environment model is the logical sub-section of a Region which isolates one runtime environment from another.
17
+ * E.g. qa, staging, production, etc.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const environment = new Environment('qa');
22
+ * ```
23
+ * @group Models
24
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
25
+ */
14
26
  let Environment = Environment_1 = class Environment extends AModel {
15
- MODEL_NAME = 'environment';
16
- environmentName;
17
- environmentVariables = new Map();
18
27
  constructor(environmentName) {
19
28
  super();
29
+ this.MODEL_NAME = 'environment';
30
+ /**
31
+ * A set of environment variables to be passed to any {@link Execution} running in this environment.
32
+ */
33
+ this.environmentVariables = new Map();
20
34
  this.environmentName = environmentName;
21
35
  }
22
36
  async diffProperties(previous) {
@@ -33,7 +47,9 @@ let Environment = Environment_1 = class Environment extends AModel {
33
47
  environmentVariables: Object.fromEntries(this.environmentVariables || new Map()),
34
48
  };
35
49
  }
36
- static async unSynth(environment, deReferenceContext) {
50
+ static async unSynth(environment,
51
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
52
+ deReferenceContext) {
37
53
  const newEnvironment = new Environment_1(environment.environmentName);
38
54
  for (const key in environment.environmentVariables) {
39
55
  newEnvironment.environmentVariables.set(key, environment.environmentVariables[key]);
@@ -41,6 +57,19 @@ let Environment = Environment_1 = class Environment extends AModel {
41
57
  return newEnvironment;
42
58
  }
43
59
  };
60
+ __decorate([
61
+ Validate({ options: { maxLength: 32, minLength: 2, regex: /^[a-zA-Z][\w-]*[a-zA-Z0-9]$/ } }),
62
+ __metadata("design:type", String)
63
+ ], Environment.prototype, "environmentName", void 0);
64
+ __decorate([
65
+ Validate({
66
+ destruct: (value) => {
67
+ return Array.from(value.keys());
68
+ },
69
+ options: { maxLength: 64, minLength: 2, regex: /^[a-zA-Z][\w-]*[a-zA-Z0-9]$/ },
70
+ }),
71
+ __metadata("design:type", Map)
72
+ ], Environment.prototype, "environmentVariables", void 0);
44
73
  Environment = Environment_1 = __decorate([
45
74
  Model(),
46
75
  __metadata("design:paramtypes", [String])
@@ -1 +1 @@
1
- {"version":3,"file":"environment.model.js","sourceRoot":"","sources":["../../../src/models/environment/environment.model.ts"],"names":[],"mappings":";;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIvC,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,MAAiC;IACvD,UAAU,GAAW,aAAa,CAAC;IAEnC,eAAe,CAAS;IAExB,oBAAoB,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE/D,YAAY,eAAuB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,QAAqB;QACjD,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACrE,CAAC;IAEQ,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;IAEQ,KAAK;QACZ,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,GAAG,EAAE,CAAC;SACjF,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,WAAyB,EAEzB,kBAA8D;QAE9D,MAAM,cAAc,GAAG,IAAI,aAAW,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAEpE,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,oBAAoB,EAAE,CAAC;YACnD,cAAc,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;CACF,CAAA;AA1CY,WAAW;IADvB,KAAK,EAAE;;GACK,WAAW,CA0CvB"}
1
+ {"version":3,"file":"environment.model.js","sourceRoot":"","sources":["../../../src/models/environment/environment.model.ts"],"names":[],"mappings":";;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C;;;;;;;;;;GAUG;AAEI,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,MAAiC;IAqBhE,YAAY,eAAuB;QACjC,KAAK,EAAE,CAAC;QArBD,eAAU,GAAW,aAAa,CAAC;QAS5C;;WAEG;QAOM,yBAAoB,GAAwB,IAAI,GAAG,EAAE,CAAC;QAI7D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,QAAqB;QACjD,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACrE,CAAC;IAEQ,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;IAEQ,KAAK;QACZ,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,GAAG,EAAE,CAAC;SACjF,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,OAAO,CAC3B,WAAyB;IACzB,6DAA6D;IAC7D,kBAA8D;QAE9D,MAAM,cAAc,GAAG,IAAI,aAAW,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAEpE,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,oBAAoB,EAAE,CAAC;YACnD,cAAc,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;CACF,CAAA;AAhDU;IADR,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,CAAC;;oDAC5D;AAWxB;IANR,QAAQ,CAAC;QACR,QAAQ,EAAE,CAAC,KAA0B,EAAY,EAAE;YACjD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE;KAC/E,CAAC;8BAC6B,GAAG;yDAA6B;AAnBpD,WAAW;IADvB,KAAK,EAAE;;GACK,WAAW,CAwDvB"}
@@ -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;
@@ -5,10 +5,33 @@ import { Environment } from '../environment/environment.model.js';
5
5
  import { AModel } from '../model.abstract.js';
6
6
  import { Subnet } from '../subnet/subnet.model.js';
7
7
  import type { IExecution } from './execution.interface.js';
8
+ /**
9
+ * An Execution model is the combination of a {@link Deployment}, an {@link Environment}, and a {@link Subnet}.
10
+ * It represents a physical server, running the deployment code, in the given environment, placed in the given subnet.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const deployment = new Deployment('v0.0.1');
15
+ * const environment = new Environment('qa');
16
+ * const subnet = new Subnet(region, 'private');
17
+ * const execution = new Execution(deployment, environment, subnet);
18
+ * ```
19
+ * @group Models
20
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
21
+ */
8
22
  export declare class Execution extends AModel<IExecution, Execution> {
9
23
  readonly MODEL_NAME: string;
24
+ /**
25
+ * A set of environment variables to be passed to the Docker container.
26
+ * It represents setting the [--env](https://docs.docker.com/compose/environment-variables/set-environment-variables/)
27
+ * option while running a Docker container.
28
+ */
10
29
  readonly environmentVariables: Map<string, string>;
11
30
  constructor(deployment: Deployment, environment: Environment, subnet: Subnet);
31
+ /**
32
+ * An `executionId` is a unique identifier for this execution.
33
+ * - Format of executionId is `{serverKey}-{deploymentTag}-{regionId}-{environmentName}-{subnetName}`
34
+ */
12
35
  get executionId(): string;
13
36
  diffProperties(previous: Execution): Promise<Diff[]>;
14
37
  setContext(): string;
@@ -9,17 +9,38 @@ 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 { Validate } from '../../decorators/validate.decorator.js';
12
13
  import { DiffUtility } from '../../functions/diff/diff.utility.js';
13
14
  import { ArrayUtility } from '../../utilities/array/array.utility.js';
14
15
  import { Deployment } from '../deployment/deployment.model.js';
15
16
  import { Environment } from '../environment/environment.model.js';
16
17
  import { AModel } from '../model.abstract.js';
17
18
  import { Subnet } from '../subnet/subnet.model.js';
19
+ /**
20
+ * An Execution model is the combination of a {@link Deployment}, an {@link Environment}, and a {@link Subnet}.
21
+ * It represents a physical server, running the deployment code, in the given environment, placed in the given subnet.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const deployment = new Deployment('v0.0.1');
26
+ * const environment = new Environment('qa');
27
+ * const subnet = new Subnet(region, 'private');
28
+ * const execution = new Execution(deployment, environment, subnet);
29
+ * ```
30
+ * @group Models
31
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
32
+ */
18
33
  let Execution = Execution_1 = class Execution extends AModel {
19
- MODEL_NAME = 'execution';
20
- environmentVariables = new Map();
21
34
  constructor(deployment, environment, subnet) {
22
35
  super();
36
+ this.MODEL_NAME = 'execution';
37
+ /**
38
+ * A set of environment variables to be passed to the Docker container.
39
+ * It represents setting the [--env](https://docs.docker.com/compose/environment-variables/set-environment-variables/)
40
+ * option while running a Docker container.
41
+ */
42
+ this.environmentVariables = new Map();
43
+ // Check if execution can be placed in this subnet.
23
44
  const environmentRegions = environment.getParents('region')['region'] || [];
24
45
  const subnetRegions = subnet.getParents('region')['region'] || [];
25
46
  if (environmentRegions.length > 0 &&
@@ -27,6 +48,7 @@ let Execution = Execution_1 = class Execution extends AModel {
27
48
  environmentRegions[0].to.regionId !== subnetRegions[0].to.regionId) {
28
49
  throw new Error('Environment and Subnet must be in the same region!');
29
50
  }
51
+ // Check for duplicates.
30
52
  const deploymentExecutions = (deployment.getChildren('execution')['execution'] || []).map((d) => d.to);
31
53
  const environmentExecutions = (environment.getChildren('execution')['execution'] || []).map((d) => d.to);
32
54
  const subnetExecutions = (subnet.getChildren('execution')['execution'] || []).map((d) => d.to);
@@ -35,10 +57,16 @@ let Execution = Execution_1 = class Execution extends AModel {
35
57
  }, deploymentExecutions, environmentExecutions, subnetExecutions).length > 0) {
36
58
  throw new Error('Execution already exists!');
37
59
  }
60
+ // In order for this execution to properly have defined its parent-child relationship, all parents
61
+ // must claim it as their child. Doing it here, prevents the confusion.
38
62
  deployment.addChild('deploymentTag', this, 'executionId');
39
63
  environment.addChild('environmentName', this, 'executionId');
40
64
  subnet.addChild('subnetId', this, 'executionId');
41
65
  }
66
+ /**
67
+ * An `executionId` is a unique identifier for this execution.
68
+ * - Format of executionId is `{serverKey}-{deploymentTag}-{regionId}-{environmentName}-{subnetName}`
69
+ */
42
70
  get executionId() {
43
71
  const parents = this.getParents();
44
72
  const deployment = parents['deployment'][0].to;
@@ -94,6 +122,15 @@ let Execution = Execution_1 = class Execution extends AModel {
94
122
  return newExecution;
95
123
  }
96
124
  };
125
+ __decorate([
126
+ Validate({
127
+ destruct: (value) => {
128
+ return Array.from(value.keys());
129
+ },
130
+ options: { maxLength: 64, minLength: 2, regex: /^[a-zA-Z][\w-]*[a-zA-Z0-9]$/ },
131
+ }),
132
+ __metadata("design:type", Map)
133
+ ], Execution.prototype, "environmentVariables", void 0);
97
134
  Execution = Execution_1 = __decorate([
98
135
  Model(),
99
136
  __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":"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"}
1
+ {"version":3,"file":"execution.model.js","sourceRoot":"","sources":["../../../src/models/execution/execution.model.ts"],"names":[],"mappings":"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"}
@@ -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'];
@@ -2,18 +2,53 @@ import type { UnknownModel } from '../../app.type.js';
2
2
  import type { Diff } from '../../functions/diff/diff.js';
3
3
  import { AModel } from '../model.abstract.js';
4
4
  import type { IImage } from './image.interface.js';
5
+ /**
6
+ * Options passed to the Docker engine while building the image.
7
+ */
5
8
  export interface IImageDockerOptions {
9
+ /**
10
+ * Absolute path of the Dockerfile.
11
+ */
6
12
  dockerfilePath: string;
13
+ /**
14
+ * Build arguments, same as [--build-arg](https://docs.docker.com/build/guide/build-args/) option.
15
+ */
7
16
  buildArgs?: {
8
17
  [key: string]: string;
9
18
  };
19
+ /**
20
+ * To suppress Docker output, same as [--quiet](https://docs.docker.com/reference/cli/docker/container/run/) option.
21
+ */
10
22
  quiet?: boolean;
11
23
  }
24
+ /**
25
+ * An Image model represents a Docker image, to either build, or run, your microservices.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const image = new Image('nginx', '2.4', { dockerfilePath: './Dockerfile' });
30
+ *
31
+ * const image = new Image('docker/hello-world', '1.0', { dockerfilePath: './Dockerfile' });
32
+ * ```
33
+ * @group Models
34
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
35
+ */
12
36
  export declare class Image extends AModel<IImage, Image> {
13
37
  readonly MODEL_NAME: string;
14
38
  readonly dockerOptions: IImageDockerOptions;
39
+ /**
40
+ * An imageId is the unique identifier for this image.
41
+ * - Format of imageId is `{imageName}:{imageTag}`
42
+ */
15
43
  readonly imageId: string;
44
+ /**
45
+ * The name of the image, same as [namespace in Docker](https://docs.docker.com/reference/cli/docker/image/tag/).
46
+ */
16
47
  readonly imageName: string;
48
+ /**
49
+ * The tag of the image, same as [tag in Docker](https://docs.docker.com/reference/cli/docker/image/tag/).
50
+ * - Unlike Docker, `imageTag` is mandatory in Octo.
51
+ */
17
52
  readonly imageTag: string;
18
53
  constructor(imageName: string, imageTag: string, options: IImageDockerOptions);
19
54
  diffProperties(): Promise<Diff[]>;
@@ -10,15 +10,24 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  var Image_1;
11
11
  import { resolve } from 'path';
12
12
  import { Model } from '../../decorators/model.decorator.js';
13
+ import { Validate } from '../../decorators/validate.decorator.js';
13
14
  import { AModel } from '../model.abstract.js';
15
+ /**
16
+ * An Image model represents a Docker image, to either build, or run, your microservices.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const image = new Image('nginx', '2.4', { dockerfilePath: './Dockerfile' });
21
+ *
22
+ * const image = new Image('docker/hello-world', '1.0', { dockerfilePath: './Dockerfile' });
23
+ * ```
24
+ * @group Models
25
+ * @see Definition of [Default Models](/docs/fundamentals/models#default-models).
26
+ */
14
27
  let Image = Image_1 = class Image extends AModel {
15
- MODEL_NAME = 'image';
16
- dockerOptions;
17
- imageId;
18
- imageName;
19
- imageTag;
20
28
  constructor(imageName, imageTag, options) {
21
29
  super();
30
+ this.MODEL_NAME = 'image';
22
31
  this.imageId = `${imageName}:${imageTag}`;
23
32
  this.imageName = imageName;
24
33
  this.imageTag = imageTag;
@@ -41,12 +50,22 @@ let Image = Image_1 = class Image extends AModel {
41
50
  imageTag: this.imageTag,
42
51
  };
43
52
  }
44
- static async unSynth(image, deReferenceContext) {
53
+ static async unSynth(image,
54
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
55
+ deReferenceContext) {
45
56
  return new Image_1(image.imageName, image.imageTag, {
46
57
  ...image.dockerOptions,
47
58
  });
48
59
  }
49
60
  };
61
+ __decorate([
62
+ Validate({ options: { maxLength: 32, minLength: 2, regex: /^[a-zA-Z@][\w\-\/]*[a-zA-Z0-9]$/ } }),
63
+ __metadata("design:type", String)
64
+ ], Image.prototype, "imageName", void 0);
65
+ __decorate([
66
+ Validate({ options: { maxLength: 32, minLength: 2, regex: /^[a-zA-Z0-9][\w.-]*[a-zA-Z0-9]$/ } }),
67
+ __metadata("design:type", String)
68
+ ], Image.prototype, "imageTag", void 0);
50
69
  Image = Image_1 = __decorate([
51
70
  Model(),
52
71
  __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,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAElE,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,eAAU,GAAW,OAAO,CAAC;QAyBpC,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;IACb,6DAA6D;IAC7D,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;AA/CU;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,CA8DjB"}
@@ -1,9 +1,30 @@
1
1
  import type { ActionInputs, ActionOutputs } from '../app.type.js';
2
2
  import type { Diff } from '../functions/diff/diff.js';
3
+ /**
4
+ * Actions are translation functions between Diff and underlying infrastructure.
5
+ * An action can translate a specific type of Diff into underlying infrastructure, and can revert it back.
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>;
26
+ /**
27
+ * This function contains the logic to revert the diff(s) from the underlying infrastructure.
28
+ */
8
29
  revert(diff: Diff, actionInputs: ActionInputs, actionOutputs: ActionOutputs): Promise<ActionOutputs>;
9
30
  }