@quadnix/octo 0.0.1 → 0.0.3

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 (173) hide show
  1. package/dist/app.type.d.ts +70 -0
  2. package/dist/app.type.js +8 -0
  3. package/dist/app.type.js.map +1 -0
  4. package/dist/decorators/action.decorator.d.ts +2 -0
  5. package/dist/decorators/action.decorator.js +25 -0
  6. package/dist/decorators/action.decorator.js.map +1 -0
  7. package/dist/decorators/anchor.decorator.d.ts +1 -0
  8. package/dist/decorators/anchor.decorator.js +10 -0
  9. package/dist/decorators/anchor.decorator.js.map +1 -0
  10. package/dist/decorators/container.d.ts +23 -0
  11. package/dist/decorators/container.js +93 -0
  12. package/dist/decorators/container.js.map +1 -0
  13. package/dist/decorators/factory.decorator.d.ts +8 -0
  14. package/dist/decorators/factory.decorator.js +7 -0
  15. package/dist/decorators/factory.decorator.js.map +1 -0
  16. package/dist/decorators/model.decorator.d.ts +1 -0
  17. package/dist/decorators/model.decorator.js +10 -0
  18. package/dist/decorators/model.decorator.js.map +1 -0
  19. package/dist/decorators/module.decorator.d.ts +1 -0
  20. package/dist/decorators/module.decorator.js +12 -0
  21. package/dist/decorators/module.decorator.js.map +1 -0
  22. package/dist/decorators/overlay.decorator.d.ts +1 -0
  23. package/dist/decorators/overlay.decorator.js +10 -0
  24. package/dist/decorators/overlay.decorator.js.map +1 -0
  25. package/dist/decorators/resource.decorator.d.ts +1 -0
  26. package/dist/decorators/resource.decorator.js +10 -0
  27. package/dist/decorators/resource.decorator.js.map +1 -0
  28. package/dist/decorators/test-container.d.ts +16 -0
  29. package/dist/decorators/test-container.js +37 -0
  30. package/dist/decorators/test-container.js.map +1 -0
  31. package/dist/functions/dependency/dependency.model.d.ts +53 -0
  32. package/dist/functions/dependency/dependency.model.js +125 -0
  33. package/dist/functions/dependency/dependency.model.js.map +1 -0
  34. package/dist/functions/diff/diff-metadata.model.d.ts +20 -0
  35. package/dist/functions/diff/diff-metadata.model.js +39 -0
  36. package/dist/functions/diff/diff-metadata.model.js.map +1 -0
  37. package/dist/functions/diff/diff.model.d.ts +15 -0
  38. package/dist/functions/diff/diff.model.js +27 -0
  39. package/dist/functions/diff/diff.model.js.map +1 -0
  40. package/dist/functions/diff/diff.utility.d.ts +10 -0
  41. package/dist/functions/diff/diff.utility.js +99 -0
  42. package/dist/functions/diff/diff.utility.js.map +1 -0
  43. package/dist/functions/module/module.abstract.d.ts +12 -0
  44. package/dist/functions/module/module.abstract.js +39 -0
  45. package/dist/functions/module/module.abstract.js.map +1 -0
  46. package/dist/functions/module/module.interface.d.ts +4 -0
  47. package/dist/functions/module/module.interface.js +2 -0
  48. package/dist/functions/module/module.interface.js.map +1 -0
  49. package/dist/index.d.ts +53 -0
  50. package/dist/index.js +36 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/models/action.interface.d.ts +9 -0
  53. package/dist/models/action.interface.js +2 -0
  54. package/dist/models/action.interface.js.map +1 -0
  55. package/dist/models/app/app.interface.d.ts +4 -0
  56. package/dist/models/app/app.interface.js +2 -0
  57. package/dist/models/app/app.interface.js.map +1 -0
  58. package/dist/models/app/app.model.d.ts +23 -0
  59. package/dist/models/app/app.model.js +97 -0
  60. package/dist/models/app/app.model.js.map +1 -0
  61. package/dist/models/deployment/deployment.interface.d.ts +4 -0
  62. package/dist/models/deployment/deployment.interface.js +2 -0
  63. package/dist/models/deployment/deployment.interface.js.map +1 -0
  64. package/dist/models/deployment/deployment.model.d.ts +11 -0
  65. package/dist/models/deployment/deployment.model.js +39 -0
  66. package/dist/models/deployment/deployment.model.js.map +1 -0
  67. package/dist/models/environment/environment.interface.d.ts +7 -0
  68. package/dist/models/environment/environment.interface.js +2 -0
  69. package/dist/models/environment/environment.interface.js.map +1 -0
  70. package/dist/models/environment/environment.model.d.ts +14 -0
  71. package/dist/models/environment/environment.model.js +49 -0
  72. package/dist/models/environment/environment.model.js.map +1 -0
  73. package/dist/models/execution/execution.interface.d.ts +9 -0
  74. package/dist/models/execution/execution.interface.js +2 -0
  75. package/dist/models/execution/execution.interface.js.map +1 -0
  76. package/dist/models/execution/execution.model.d.ts +18 -0
  77. package/dist/models/execution/execution.model.js +70 -0
  78. package/dist/models/execution/execution.model.js.map +1 -0
  79. package/dist/models/image/image.interface.d.ts +7 -0
  80. package/dist/models/image/image.interface.js +2 -0
  81. package/dist/models/image/image.interface.js.map +1 -0
  82. package/dist/models/image/image.model.d.ts +21 -0
  83. package/dist/models/image/image.model.js +56 -0
  84. package/dist/models/image/image.model.js.map +1 -0
  85. package/dist/models/model.abstract.d.ts +34 -0
  86. package/dist/models/model.abstract.js +245 -0
  87. package/dist/models/model.abstract.js.map +1 -0
  88. package/dist/models/model.interface.d.ts +12 -0
  89. package/dist/models/model.interface.js +2 -0
  90. package/dist/models/model.interface.js.map +1 -0
  91. package/dist/models/pipeline/pipeline.interface.d.ts +5 -0
  92. package/dist/models/pipeline/pipeline.interface.js +2 -0
  93. package/dist/models/pipeline/pipeline.interface.js.map +1 -0
  94. package/dist/models/pipeline/pipeline.model.d.ts +14 -0
  95. package/dist/models/pipeline/pipeline.model.js +47 -0
  96. package/dist/models/pipeline/pipeline.model.js.map +1 -0
  97. package/dist/models/region/region.interface.d.ts +4 -0
  98. package/dist/models/region/region.interface.js +2 -0
  99. package/dist/models/region/region.interface.js.map +1 -0
  100. package/dist/models/region/region.model.d.ts +13 -0
  101. package/dist/models/region/region.model.js +49 -0
  102. package/dist/models/region/region.model.js.map +1 -0
  103. package/dist/models/server/server.interface.d.ts +6 -0
  104. package/dist/models/server/server.interface.js +2 -0
  105. package/dist/models/server/server.interface.js.map +1 -0
  106. package/dist/models/server/server.model.d.ts +15 -0
  107. package/dist/models/server/server.model.js +55 -0
  108. package/dist/models/server/server.model.js.map +1 -0
  109. package/dist/models/service/service.interface.d.ts +4 -0
  110. package/dist/models/service/service.interface.js +2 -0
  111. package/dist/models/service/service.interface.js.map +1 -0
  112. package/dist/models/service/service.model.d.ts +9 -0
  113. package/dist/models/service/service.model.js +33 -0
  114. package/dist/models/service/service.model.js.map +1 -0
  115. package/dist/models/support/support.interface.d.ts +5 -0
  116. package/dist/models/support/support.interface.js +2 -0
  117. package/dist/models/support/support.interface.js.map +1 -0
  118. package/dist/models/support/support.model.d.ts +14 -0
  119. package/dist/models/support/support.model.js +52 -0
  120. package/dist/models/support/support.model.js.map +1 -0
  121. package/dist/overlays/anchor.abstract.d.ts +11 -0
  122. package/dist/overlays/anchor.abstract.js +35 -0
  123. package/dist/overlays/anchor.abstract.js.map +1 -0
  124. package/dist/overlays/anchor.interface.d.ts +6 -0
  125. package/dist/overlays/anchor.interface.js +2 -0
  126. package/dist/overlays/anchor.interface.js.map +1 -0
  127. package/dist/overlays/overlay-data.repository.d.ts +20 -0
  128. package/dist/overlays/overlay-data.repository.js +69 -0
  129. package/dist/overlays/overlay-data.repository.js.map +1 -0
  130. package/dist/overlays/overlay.abstract.d.ts +16 -0
  131. package/dist/overlays/overlay.abstract.js +43 -0
  132. package/dist/overlays/overlay.abstract.js.map +1 -0
  133. package/dist/overlays/overlay.interface.d.ts +8 -0
  134. package/dist/overlays/overlay.interface.js +2 -0
  135. package/dist/overlays/overlay.interface.js.map +1 -0
  136. package/dist/overlays/overlay.service.d.ts +14 -0
  137. package/dist/overlays/overlay.service.js +41 -0
  138. package/dist/overlays/overlay.service.js.map +1 -0
  139. package/dist/resources/resource-action.interface.d.ts +6 -0
  140. package/dist/resources/resource-action.interface.js +2 -0
  141. package/dist/resources/resource-action.interface.js.map +1 -0
  142. package/dist/resources/resource-data.repository.d.ts +20 -0
  143. package/dist/resources/resource-data.repository.js +80 -0
  144. package/dist/resources/resource-data.repository.js.map +1 -0
  145. package/dist/resources/resource.abstract.d.ts +22 -0
  146. package/dist/resources/resource.abstract.js +71 -0
  147. package/dist/resources/resource.abstract.js.map +1 -0
  148. package/dist/resources/resource.interface.d.ts +9 -0
  149. package/dist/resources/resource.interface.js +2 -0
  150. package/dist/resources/resource.interface.js.map +1 -0
  151. package/dist/resources/shared-resource.abstract.d.ts +13 -0
  152. package/dist/resources/shared-resource.abstract.js +44 -0
  153. package/dist/resources/shared-resource.abstract.js.map +1 -0
  154. package/dist/services/serialization/model/model-serialization.service.d.ts +15 -0
  155. package/dist/services/serialization/model/model-serialization.service.js +138 -0
  156. package/dist/services/serialization/model/model-serialization.service.js.map +1 -0
  157. package/dist/services/serialization/resource/resource-serialization.service.d.ts +14 -0
  158. package/dist/services/serialization/resource/resource-serialization.service.js +132 -0
  159. package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -0
  160. package/dist/services/state-management/local.state-provider.d.ts +8 -0
  161. package/dist/services/state-management/local.state-provider.js +18 -0
  162. package/dist/services/state-management/local.state-provider.js.map +1 -0
  163. package/dist/services/state-management/state-management.service.d.ts +12 -0
  164. package/dist/services/state-management/state-management.service.js +47 -0
  165. package/dist/services/state-management/state-management.service.js.map +1 -0
  166. package/dist/services/state-management/state-provider.interface.d.ts +5 -0
  167. package/dist/services/state-management/state-provider.interface.js +2 -0
  168. package/dist/services/state-management/state-provider.interface.js.map +1 -0
  169. package/dist/services/transaction/transaction.service.d.ts +26 -0
  170. package/dist/services/transaction/transaction.service.js +254 -0
  171. package/dist/services/transaction/transaction.service.js.map +1 -0
  172. package/package.json +56 -15
  173. package/index.js +0 -5
@@ -0,0 +1,132 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Container } from '../../../decorators/container.js';
8
+ import { Factory } from '../../../decorators/factory.decorator.js';
9
+ import { ResourceDataRepository } from '../../../resources/resource-data.repository.js';
10
+ export class ResourceSerializationService {
11
+ RESOURCE_DESERIALIZATION_TIMEOUT_IN_MS = 5000;
12
+ classMapping = {};
13
+ async _deserialize(serializedOutput) {
14
+ const deReferencePromises = {};
15
+ const parents = {};
16
+ const seen = {};
17
+ const deReferenceResource = async (resourceId) => {
18
+ if (!seen[resourceId]) {
19
+ if (deReferencePromises[resourceId]) {
20
+ await deReferencePromises[resourceId][0];
21
+ }
22
+ else {
23
+ deReferencePromises[resourceId] = [];
24
+ const promise = new Promise((resolve, reject) => {
25
+ deReferencePromises[resourceId][1] = resolve;
26
+ deReferencePromises[resourceId][2] = reject;
27
+ });
28
+ deReferencePromises[resourceId][0] = promise;
29
+ deReferencePromises[resourceId][3] = setTimeout(() => {
30
+ deReferencePromises[resourceId][2](new Error('DeReferencing resource operation timed out!'));
31
+ }, this.RESOURCE_DESERIALIZATION_TIMEOUT_IN_MS);
32
+ await promise;
33
+ }
34
+ }
35
+ return seen[resourceId];
36
+ };
37
+ const deserializeResource = async (resourceId, parents, isSharedResource) => {
38
+ const { className, resource } = isSharedResource
39
+ ? serializedOutput.sharedResources[resourceId]
40
+ : serializedOutput.resources[resourceId];
41
+ const deserializationClass = this.classMapping[className];
42
+ const deserializedResource = await deserializationClass.unSynth(deserializationClass, resource, parents || [], deReferenceResource);
43
+ seen[resourceId] = deserializedResource;
44
+ if (deReferencePromises[resourceId]) {
45
+ deReferencePromises[resourceId][1](true);
46
+ clearTimeout(deReferencePromises[resourceId][3]);
47
+ }
48
+ return deserializedResource;
49
+ };
50
+ for (const d of serializedOutput.dependencies) {
51
+ const fromResourceId = d.from.split('=')[1];
52
+ const toResourceId = d.to.split('=')[1];
53
+ if (!parents[fromResourceId]) {
54
+ parents[fromResourceId] = [];
55
+ }
56
+ if (!parents[toResourceId]) {
57
+ parents[toResourceId] = [];
58
+ }
59
+ if (d.relationship?.type === 'child' && !parents[fromResourceId].includes(toResourceId)) {
60
+ parents[fromResourceId].push(toResourceId);
61
+ }
62
+ else if (d.relationship?.type === 'parent' && !parents[toResourceId].includes(fromResourceId)) {
63
+ parents[toResourceId].push(fromResourceId);
64
+ }
65
+ }
66
+ const promiseToDeserializeResources = [];
67
+ for (const resourceId in serializedOutput.resources) {
68
+ promiseToDeserializeResources.push(deserializeResource(resourceId, parents[resourceId], false));
69
+ }
70
+ await Promise.all(promiseToDeserializeResources);
71
+ const promiseToDeserializeSharedResources = [];
72
+ for (const resourceId in serializedOutput.sharedResources) {
73
+ promiseToDeserializeSharedResources.push(deserializeResource(resourceId, parents[resourceId], true));
74
+ }
75
+ await Promise.all(promiseToDeserializeSharedResources);
76
+ return seen;
77
+ }
78
+ async deserialize(serializedOutput) {
79
+ const deserializedOutput = await this._deserialize(serializedOutput);
80
+ const deserializedOutputCopy = await this._deserialize(serializedOutput);
81
+ await Container.get(ResourceDataRepository, {
82
+ args: [true, Object.values(deserializedOutput), Object.values(deserializedOutputCopy)],
83
+ });
84
+ }
85
+ registerClass(className, deserializationClass) {
86
+ this.classMapping[className] = deserializationClass;
87
+ }
88
+ async serialize() {
89
+ const resourceDataRepository = await Container.get(ResourceDataRepository);
90
+ const resources = resourceDataRepository.getByProperties();
91
+ const dependencies = [];
92
+ const serializedResources = {};
93
+ const sharedSerializedResources = {};
94
+ for (const resource of resources) {
95
+ if (resource.isMarkedDeleted()) {
96
+ continue;
97
+ }
98
+ const resourceDependencies = resource['dependencies'].map((d) => d.synth());
99
+ dependencies.push(...resourceDependencies);
100
+ if (resource.MODEL_TYPE === 'shared-resource') {
101
+ sharedSerializedResources[resource.resourceId] = {
102
+ className: resource.constructor.name,
103
+ resource: resource.synth(),
104
+ };
105
+ }
106
+ else {
107
+ serializedResources[resource.resourceId] = {
108
+ className: resource.constructor.name,
109
+ resource: resource.synth(),
110
+ };
111
+ }
112
+ }
113
+ return { dependencies, resources: serializedResources, sharedResources: sharedSerializedResources };
114
+ }
115
+ setResourceDeserializationTimeout(timeoutInMs) {
116
+ this.RESOURCE_DESERIALIZATION_TIMEOUT_IN_MS = timeoutInMs;
117
+ }
118
+ }
119
+ let ResourceSerializationServiceFactory = class ResourceSerializationServiceFactory {
120
+ static instance;
121
+ static async create() {
122
+ if (!this.instance) {
123
+ this.instance = new ResourceSerializationService();
124
+ }
125
+ return this.instance;
126
+ }
127
+ };
128
+ ResourceSerializationServiceFactory = __decorate([
129
+ Factory(ResourceSerializationService)
130
+ ], ResourceSerializationServiceFactory);
131
+ export { ResourceSerializationServiceFactory };
132
+ //# sourceMappingURL=resource-serialization.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-serialization.service.js","sourceRoot":"","sources":["../../../../src/services/serialization/resource/resource-serialization.service.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAC;AAEnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAExF,MAAM,OAAO,4BAA4B;IAC/B,sCAAsC,GAAG,IAAI,CAAC;IAErC,YAAY,GAA2B,EAAE,CAAC;IAEnD,KAAK,CAAC,YAAY,CAAC,gBAA0C;QACnE,MAAM,mBAAmB,GAErB,EAAE,CAAC;QACP,MAAM,OAAO,GAA8B,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAkB,EAAE,CAAC;QAE/B,MAAM,mBAAmB,GAAG,KAAK,EAAE,UAAkB,EAA4B,EAAE;YACjF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACrB,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE;oBACnC,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1C;qBAAM;oBACL,mBAAmB,CAAC,UAAU,CAAC,GAAG,EAAS,CAAC;oBAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACvD,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;wBAC7C,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;oBAC9C,CAAC,CAAC,CAAC;oBACH,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;oBAE7C,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE;wBACnD,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAC;oBAC/F,CAAC,EAAE,IAAI,CAAC,sCAAsC,CAAC,CAAC;oBAChD,MAAM,OAAO,CAAC;iBACf;aACF;YAED,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,UAAkB,EAClB,OAAiB,EACjB,gBAAyB,EACC,EAAE;YAC5B,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,gBAAgB;gBAC9C,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC;gBAC9C,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAE1D,MAAM,oBAAoB,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAC7D,oBAAoB,EACpB,QAAQ,EACR,OAAO,IAAI,EAAE,EACb,mBAAmB,CACpB,CAAC;YAEF,IAAI,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC;YACxC,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE;gBACnC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzC,YAAY,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAClD;YAED,OAAO,oBAAoB,CAAC;QAC9B,CAAC,CAAC;QAGF,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,YAAY,EAAE;YAC7C,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAExC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;gBAC5B,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;aAC9B;YACD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBAC1B,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;aAC5B;YAGD,IAAI,CAAC,CAAC,YAAY,EAAE,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBACvF,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAC5C;iBAAM,IAAI,CAAC,CAAC,YAAY,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBAC/F,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC5C;SACF;QAGD,MAAM,6BAA6B,GAA+B,EAAE,CAAC;QACrE,KAAK,MAAM,UAAU,IAAI,gBAAgB,CAAC,SAAS,EAAE;YACnD,6BAA6B,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SACjG;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAGjD,MAAM,mCAAmC,GAA+B,EAAE,CAAC;QAC3E,KAAK,MAAM,UAAU,IAAI,gBAAgB,CAAC,eAAe,EAAE;YACzD,mCAAmC,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;SACtG;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,gBAA0C;QAC1D,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACrE,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAGzE,MAAM,SAAS,CAAC,GAAG,CAAC,sBAAsB,EAAE;YAC1C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;SACvF,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,SAAiB,EAAE,oBAAyB;QACxD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,oBAAoB,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,sBAAsB,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,sBAAsB,CAAC,eAAe,EAAE,CAAC;QAE3D,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,MAAM,mBAAmB,GAA0C,EAAE,CAAC;QACtE,MAAM,yBAAyB,GAAgD,EAAE,CAAC;QAElF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAEhC,IAAI,QAAQ,CAAC,eAAe,EAAE,EAAE;gBAC9B,SAAS;aACV;YAED,MAAM,oBAAoB,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5E,YAAY,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;YAE3C,IAAI,QAAQ,CAAC,UAAU,KAAK,iBAAiB,EAAE;gBAC7C,yBAAyB,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG;oBAC/C,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI;oBACpC,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE;iBAC3B,CAAC;aACH;iBAAM;gBACL,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG;oBACzC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI;oBACpC,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE;iBAC3B,CAAC;aACH;SACF;QAED,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,eAAe,EAAE,yBAAyB,EAAE,CAAC;IACtG,CAAC;IAED,iCAAiC,CAAC,WAAmB;QACnD,IAAI,CAAC,sCAAsC,GAAG,WAAW,CAAC;IAC5D,CAAC;CACF;AAGD,IAAa,mCAAmC,GAAhD,MAAa,mCAAmC;IACtC,MAAM,CAAC,QAAQ,CAA+B;IAEtD,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,4BAA4B,EAAE,CAAC;SACpD;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AATY,mCAAmC;IAD/C,OAAO,CAA+B,4BAA4B,CAAC;GACvD,mCAAmC,CAS/C;SATY,mCAAmC"}
@@ -0,0 +1,8 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { IStateProvider } from './state-provider.interface.js';
3
+ export declare class LocalStateProvider implements IStateProvider {
4
+ private readonly localStateDirectoryPath;
5
+ constructor(localStateDirectoryPath: string);
6
+ getState(stateFileName: string): Promise<Buffer>;
7
+ saveState(stateFileName: string, data: Buffer): Promise<void>;
8
+ }
@@ -0,0 +1,18 @@
1
+ import { readFile, writeFile } from 'fs';
2
+ import { join, resolve } from 'path';
3
+ import { promisify } from 'util';
4
+ const readFileAsync = promisify(readFile);
5
+ const writeFileAsync = promisify(writeFile);
6
+ export class LocalStateProvider {
7
+ localStateDirectoryPath;
8
+ constructor(localStateDirectoryPath) {
9
+ this.localStateDirectoryPath = resolve(localStateDirectoryPath);
10
+ }
11
+ async getState(stateFileName) {
12
+ return readFileAsync(join(this.localStateDirectoryPath, stateFileName));
13
+ }
14
+ async saveState(stateFileName, data) {
15
+ await writeFileAsync(join(this.localStateDirectoryPath, stateFileName), data);
16
+ }
17
+ }
18
+ //# sourceMappingURL=local.state-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.state-provider.js","sourceRoot":"","sources":["../../../src/services/state-management/local.state-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGjC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AAE5C,MAAM,OAAO,kBAAkB;IACZ,uBAAuB,CAAS;IAEjD,YAAY,uBAA+B;QACzC,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,aAAqB;QAClC,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,aAAqB,EAAE,IAAY;QACjD,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { IStateProvider } from './state-provider.interface.js';
3
+ export declare class StateManagementService {
4
+ private readonly stateProvider;
5
+ constructor(stateProvider: IStateProvider);
6
+ getState(stateFileName: string, defaultValue?: any): Promise<Buffer>;
7
+ saveState(stateFileName: string, data: Buffer): Promise<void>;
8
+ }
9
+ export declare class StateManagementServiceFactory {
10
+ private static instance;
11
+ static create(stateProvider: IStateProvider): Promise<StateManagementService>;
12
+ }
@@ -0,0 +1,47 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Factory } from '../../decorators/factory.decorator.js';
8
+ export class StateManagementService {
9
+ stateProvider;
10
+ constructor(stateProvider) {
11
+ this.stateProvider = stateProvider;
12
+ }
13
+ async getState(stateFileName, defaultValue) {
14
+ try {
15
+ return await this.stateProvider.getState(stateFileName);
16
+ }
17
+ catch (error) {
18
+ if (error.code === 'ENOENT' && defaultValue) {
19
+ return defaultValue;
20
+ }
21
+ else {
22
+ throw error;
23
+ }
24
+ }
25
+ }
26
+ async saveState(stateFileName, data) {
27
+ return this.stateProvider.saveState(stateFileName, data);
28
+ }
29
+ }
30
+ let StateManagementServiceFactory = class StateManagementServiceFactory {
31
+ static instance;
32
+ static async create(stateProvider) {
33
+ if (this.instance) {
34
+ return this.instance;
35
+ }
36
+ if (!stateProvider) {
37
+ throw new Error(`Failed to create instance of ${StateManagementService.name} due to insufficient arguments!`);
38
+ }
39
+ this.instance = new StateManagementService(stateProvider);
40
+ return this.instance;
41
+ }
42
+ };
43
+ StateManagementServiceFactory = __decorate([
44
+ Factory(StateManagementService)
45
+ ], StateManagementServiceFactory);
46
+ export { StateManagementServiceFactory };
47
+ //# sourceMappingURL=state-management.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-management.service.js","sourceRoot":"","sources":["../../../src/services/state-management/state-management.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAGhE,MAAM,OAAO,sBAAsB;IAChB,aAAa,CAAiB;IAE/C,YAAY,aAA6B;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,aAAqB,EAAE,YAAkB;QACtD,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;SACzD;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,EAAE;gBAC3C,OAAO,YAAY,CAAC;aACrB;iBAAM;gBACL,MAAM,KAAK,CAAC;aACb;SACF;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,aAAqB,EAAE,IAAY;QACjD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;CACF;AAGD,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAChC,MAAM,CAAC,QAAQ,CAAyB;IAEhD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAA6B;QAC/C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QAED,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,gCAAgC,sBAAsB,CAAC,IAAI,iCAAiC,CAAC,CAAC;SAC/G;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AAdY,6BAA6B;IADzC,OAAO,CAAyB,sBAAsB,CAAC;GAC3C,6BAA6B,CAczC;SAdY,6BAA6B"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ export interface IStateProvider {
3
+ getState(stateFileName: string): Promise<Buffer>;
4
+ saveState(stateFileName: string, data: Buffer): Promise<void>;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=state-provider.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-provider.interface.js","sourceRoot":"","sources":["../../../src/services/state-management/state-provider.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import { ActionInputs, ActionOutputs, TransactionOptions, UnknownResource } from '../../app.type.js';
2
+ import { DiffMetadata } from '../../functions/diff/diff-metadata.model.js';
3
+ import { Diff } from '../../functions/diff/diff.model.js';
4
+ import { IAction } from '../../models/action.interface.js';
5
+ import { IResourceAction } from '../../resources/resource-action.interface.js';
6
+ export declare class TransactionService {
7
+ private readonly inputs;
8
+ private readonly modelActions;
9
+ private readonly overlayActions;
10
+ private readonly resourceActions;
11
+ private applyModels;
12
+ private applyResources;
13
+ private getDuplicateDiffs;
14
+ private getMatchingDiffs;
15
+ private setApplyOrder;
16
+ beginTransaction(diffs: Diff[], options?: TransactionOptions): AsyncGenerator<DiffMetadata[][] | UnknownResource[], DiffMetadata[][]>;
17
+ registerModelActions(actions: IAction<ActionInputs, ActionOutputs>[]): void;
18
+ registerOverlayActions(actions: IAction<ActionInputs, ActionOutputs>[]): void;
19
+ registerResourceActions(actions: IResourceAction[]): void;
20
+ registerInputs(inputs: ActionInputs): void;
21
+ rollbackTransaction(modelTransaction: DiffMetadata[][], options?: TransactionOptions): AsyncGenerator<DiffMetadata[][], DiffMetadata[][]>;
22
+ }
23
+ export declare class TransactionServiceFactory {
24
+ private static instance;
25
+ static create(): Promise<TransactionService>;
26
+ }
@@ -0,0 +1,254 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { ModelType, } from '../../app.type.js';
8
+ import { Container } from '../../decorators/container.js';
9
+ import { Factory } from '../../decorators/factory.decorator.js';
10
+ import { DiffMetadata } from '../../functions/diff/diff-metadata.model.js';
11
+ import { DiffAction } from '../../functions/diff/diff.model.js';
12
+ import { OverlayDataRepository } from '../../overlays/overlay-data.repository.js';
13
+ import { ResourceDataRepository } from '../../resources/resource-data.repository.js';
14
+ export class TransactionService {
15
+ inputs = {};
16
+ modelActions = [];
17
+ overlayActions = [];
18
+ resourceActions = [];
19
+ async applyModels(diffs, resourceDataRepository) {
20
+ const transaction = [];
21
+ let currentApplyOrder = 0;
22
+ let processed = 0;
23
+ while (processed < diffs.length) {
24
+ const diffsInSameLevel = diffs.filter((d) => d.applyOrder === currentApplyOrder);
25
+ const diffsProcessedInSameLevel = [];
26
+ const promiseToApplyActions = [];
27
+ for (const diff of diffsInSameLevel) {
28
+ if (diff.applied) {
29
+ continue;
30
+ }
31
+ const duplicateDiffs = this.getDuplicateDiffs(diff, diffsInSameLevel);
32
+ const diffToProcess = duplicateDiffs[0].diff;
33
+ for (const a of diff.actions) {
34
+ const inputs = {};
35
+ const inputKeys = a.collectInput(diffToProcess);
36
+ inputKeys.map((k) => {
37
+ if (k.startsWith('resource')) {
38
+ const resourceId = k.substring('resource.'.length);
39
+ inputs[k] = resourceDataRepository.getById(resourceId);
40
+ }
41
+ else {
42
+ inputs[k] = this.inputs[k];
43
+ }
44
+ if (!inputs[k]) {
45
+ throw new Error('No matching input found to process action!');
46
+ }
47
+ });
48
+ const promiseToApplyAction = a.handle(diffToProcess, inputs).then((outputs) => {
49
+ duplicateDiffs.forEach((d) => {
50
+ d.updateInputs(inputs);
51
+ d.updateOutputs(outputs);
52
+ });
53
+ return outputs;
54
+ });
55
+ promiseToApplyActions.push(promiseToApplyAction);
56
+ }
57
+ diffsProcessedInSameLevel.push(duplicateDiffs[0]);
58
+ duplicateDiffs.forEach((d) => (d.applied = true));
59
+ }
60
+ const actionsOutputs = await Promise.all(promiseToApplyActions);
61
+ for (const outputs of actionsOutputs) {
62
+ for (const [resourceId, resource] of Object.entries(outputs)) {
63
+ const previousResource = resourceDataRepository.getById(resourceId);
64
+ if (resource.MODEL_TYPE === 'shared-resource' && previousResource) {
65
+ resourceDataRepository.add(resource.merge(previousResource));
66
+ }
67
+ else {
68
+ resourceDataRepository.add(resource);
69
+ }
70
+ }
71
+ }
72
+ transaction.push(diffsProcessedInSameLevel);
73
+ processed += diffsInSameLevel.length;
74
+ currentApplyOrder += 1;
75
+ }
76
+ return transaction;
77
+ }
78
+ async applyResources(diffs) {
79
+ const transaction = [];
80
+ let currentApplyOrder = 0;
81
+ let processed = 0;
82
+ while (processed < diffs.length) {
83
+ const diffsInSameLevel = diffs.filter((d) => d.applyOrder === currentApplyOrder);
84
+ const diffsProcessedInSameLevel = [];
85
+ const promiseToApplyActions = [];
86
+ for (const diff of diffsInSameLevel) {
87
+ if (diff.applied) {
88
+ continue;
89
+ }
90
+ const duplicateDiffs = this.getDuplicateDiffs(diff, diffsInSameLevel);
91
+ const diffToProcess = duplicateDiffs[0].diff;
92
+ for (const a of diff.actions) {
93
+ promiseToApplyActions.push(a.handle(diffToProcess));
94
+ }
95
+ diffsProcessedInSameLevel.push(duplicateDiffs[0]);
96
+ duplicateDiffs.forEach((d) => (d.applied = true));
97
+ }
98
+ await Promise.all(promiseToApplyActions);
99
+ transaction.push(diffsProcessedInSameLevel);
100
+ processed += diffsInSameLevel.length;
101
+ currentApplyOrder += 1;
102
+ }
103
+ return transaction;
104
+ }
105
+ getDuplicateDiffs(diff, diffs) {
106
+ return diffs.filter((d) => d.model.getContext() === diff.model.getContext() &&
107
+ d.field === diff.field &&
108
+ d.action === diff.action &&
109
+ d.value === diff.value);
110
+ }
111
+ getMatchingDiffs(diff, diffs) {
112
+ return diffs.filter((d) => d.model.getContext() === diff.model.getContext());
113
+ }
114
+ setApplyOrder(diff, diffs, seen = []) {
115
+ if (this.getDuplicateDiffs(diff, seen).length > 0) {
116
+ throw new Error('Found circular dependencies!');
117
+ }
118
+ const matchingDiffs = this.getMatchingDiffs(diff, diffs);
119
+ const diffActions = matchingDiffs.reduce((accumulator, currentValue) => {
120
+ accumulator[currentValue.action] = true;
121
+ return accumulator;
122
+ }, {});
123
+ if ((diffActions[DiffAction.ADD] && diffActions[DiffAction.UPDATE]) ||
124
+ (diffActions[DiffAction.ADD] && diffActions[DiffAction.DELETE]) ||
125
+ (diffActions[DiffAction.DELETE] && diffActions[DiffAction.UPDATE])) {
126
+ throw new Error('Found conflicting actions in same transaction!');
127
+ }
128
+ if (diff.applyOrder >= 0) {
129
+ return;
130
+ }
131
+ const dependencies = diff.model['dependencies'];
132
+ const dependencyApplyOrders = [-1];
133
+ for (const dependency of dependencies) {
134
+ const matchingParentDiffs = diffs.filter((d) => d.model.getContext() === dependency.to.getContext() &&
135
+ dependency.hasMatchingBehavior(diff.field, diff.action, d.field, d.action));
136
+ for (const matchingParentDiff of matchingParentDiffs) {
137
+ this.setApplyOrder(matchingParentDiff, diffs, [...seen, diff]);
138
+ dependencyApplyOrders.push(matchingParentDiff.applyOrder);
139
+ }
140
+ }
141
+ diff.applyOrder = Math.max(...dependencyApplyOrders) + 1;
142
+ }
143
+ async *beginTransaction(diffs, options = {
144
+ yieldModelTransaction: false,
145
+ yieldNewResources: false,
146
+ yieldResourceDiffs: false,
147
+ yieldResourceTransaction: false,
148
+ }) {
149
+ const overlayDataRepository = await Container.get(OverlayDataRepository);
150
+ const resourceDataRepository = await Container.get(ResourceDataRepository);
151
+ diffs.push(...overlayDataRepository.diff());
152
+ const modelDiffs = diffs.map((d) => {
153
+ if (d.model.MODEL_TYPE === ModelType.OVERLAY) {
154
+ return new DiffMetadata(d, this.overlayActions.filter((a) => a.filter(d)));
155
+ }
156
+ else {
157
+ return new DiffMetadata(d, this.modelActions.filter((a) => a.filter(d)));
158
+ }
159
+ });
160
+ for (const diff of modelDiffs) {
161
+ this.setApplyOrder(diff, modelDiffs);
162
+ }
163
+ const modelTransaction = await this.applyModels(modelDiffs, resourceDataRepository);
164
+ if (options.yieldModelTransaction) {
165
+ yield modelTransaction;
166
+ }
167
+ if (options.yieldNewResources) {
168
+ yield resourceDataRepository.getByProperties();
169
+ }
170
+ diffs = await resourceDataRepository.diff();
171
+ const resourceDiffs = diffs.map((d) => new DiffMetadata(d, this.resourceActions.filter((a) => a.filter(d))));
172
+ for (const diff of resourceDiffs) {
173
+ this.setApplyOrder(diff, resourceDiffs);
174
+ }
175
+ if (options.yieldResourceDiffs) {
176
+ yield [resourceDiffs];
177
+ }
178
+ const resourceTransaction = await this.applyResources(resourceDiffs);
179
+ if (options.yieldResourceTransaction) {
180
+ yield resourceTransaction;
181
+ }
182
+ return modelTransaction;
183
+ }
184
+ registerModelActions(actions) {
185
+ for (const action of actions) {
186
+ if (!this.modelActions.find((a) => a.ACTION_NAME === action.ACTION_NAME)) {
187
+ this.modelActions.push(action);
188
+ }
189
+ }
190
+ }
191
+ registerOverlayActions(actions) {
192
+ for (const action of actions) {
193
+ if (!this.overlayActions.find((a) => a.ACTION_NAME === action.ACTION_NAME)) {
194
+ this.overlayActions.push(action);
195
+ }
196
+ }
197
+ }
198
+ registerResourceActions(actions) {
199
+ for (const action of actions) {
200
+ if (!this.resourceActions.find((a) => a.ACTION_NAME === action.ACTION_NAME)) {
201
+ this.resourceActions.push(action);
202
+ }
203
+ }
204
+ }
205
+ registerInputs(inputs) {
206
+ for (const key in inputs) {
207
+ this.inputs[key] = inputs[key];
208
+ }
209
+ }
210
+ async *rollbackTransaction(modelTransaction, options = {
211
+ yieldResourceDiffs: false,
212
+ yieldResourceTransaction: false,
213
+ }) {
214
+ const resourceDataRepository = await Container.get(ResourceDataRepository);
215
+ for (let i = modelTransaction.length - 1; i >= 0; i--) {
216
+ const diffsProcessedInSameLevel = modelTransaction[i];
217
+ for (const diff of diffsProcessedInSameLevel) {
218
+ for (const a of diff.actions) {
219
+ const outputs = a.revert(diff.diff, diff.inputs, diff.outputs);
220
+ for (const outputKey in outputs) {
221
+ resourceDataRepository.add(outputs[outputKey]);
222
+ }
223
+ }
224
+ }
225
+ }
226
+ const diffs = await resourceDataRepository.diff();
227
+ const resourceDiffs = diffs.map((d) => new DiffMetadata(d, this.resourceActions.filter((a) => a.filter(d))));
228
+ for (const diff of resourceDiffs) {
229
+ this.setApplyOrder(diff, resourceDiffs);
230
+ }
231
+ if (options.yieldResourceDiffs) {
232
+ yield [resourceDiffs];
233
+ }
234
+ const resourceTransaction = await this.applyResources(resourceDiffs);
235
+ if (options.yieldResourceTransaction) {
236
+ yield resourceTransaction;
237
+ }
238
+ return resourceTransaction;
239
+ }
240
+ }
241
+ let TransactionServiceFactory = class TransactionServiceFactory {
242
+ static instance;
243
+ static async create() {
244
+ if (!this.instance) {
245
+ this.instance = new TransactionService();
246
+ }
247
+ return this.instance;
248
+ }
249
+ };
250
+ TransactionServiceFactory = __decorate([
251
+ Factory(TransactionService)
252
+ ], TransactionServiceFactory);
253
+ export { TransactionServiceFactory };
254
+ //# sourceMappingURL=transaction.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.service.js","sourceRoot":"","sources":["../../../src/services/transaction/transaction.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,21 +1,62 @@
1
1
  {
2
- "description": "The open-source infrastructure management and CICD tool.",
3
- "name": "@quadnix/octo",
4
- "version": "0.0.1",
5
- "bugs": {
6
- "url": "https://github.com/quadnix/octo/issues"
2
+ "dependencies": {},
3
+ "description": "Octo is an opinionated interface of a cloud infrastructure.",
4
+ "devDependencies": {},
5
+ "engines": {
6
+ "node": ">=16"
7
7
  },
8
- "homepage": "https://github.com/quadnix/octo#readme",
9
- "keywords": [
10
- "cicd",
11
- "infrastructure"
8
+ "exports": "./dist/index.js",
9
+ "files": [
10
+ "dist",
11
+ "!dist/tsconfig.build.tsbuildinfo",
12
+ "package.json"
12
13
  ],
13
- "main": "index.js",
14
- "repository": {
15
- "type": "git",
16
- "url": "git+https://github.com/quadnix/octo.git"
14
+ "jest": {
15
+ "coverageDirectory": "./coverage",
16
+ "extensionsToTreatAsEsm": [
17
+ ".ts"
18
+ ],
19
+ "moduleFileExtensions": [
20
+ "js",
21
+ "json",
22
+ "ts"
23
+ ],
24
+ "moduleNameMapper": {
25
+ "(.+)\\.js": "$1"
26
+ },
27
+ "preset": "ts-jest/presets/default-esm",
28
+ "rootDir": ".",
29
+ "testEnvironment": "node",
30
+ "testRegex": ".*spec\\.ts$",
31
+ "transform": {
32
+ "^.+\\.ts$": [
33
+ "ts-jest",
34
+ {
35
+ "useESM": true
36
+ }
37
+ ]
38
+ }
39
+ },
40
+ "main": "./dist/index.js",
41
+ "name": "@quadnix/octo",
42
+ "nx": {
43
+ "tags": [
44
+ "scope:octo"
45
+ ]
17
46
  },
18
47
  "scripts": {
19
- "test": "npm test"
20
- }
48
+ "build": "rimraf dist && tsc -p tsconfig.build.json",
49
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
50
+ "lint": "eslint .",
51
+ "lint:fix": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
52
+ "test": "NODE_OPTIONS=--experimental-vm-modules jest --testRegex=\"\\.spec.ts$\"",
53
+ "test:cov": "jest --coverage --testRegex=\"\\.spec.ts$\"",
54
+ "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
55
+ "test:e2e": "jest --testRegex=\"\\.e2e-spec.ts$\"",
56
+ "test:integration": "jest --testRegex=\"\\.ispec.ts$\"",
57
+ "test:watch": "jest --watch"
58
+ },
59
+ "type": "module",
60
+ "types": "./dist/index.d.ts",
61
+ "version": "0.0.3"
21
62
  }
package/index.js DELETED
@@ -1,5 +0,0 @@
1
- function sayHello () {
2
- return 'Hello World!'
3
- }
4
-
5
- module.exports = sayHello