@quadnix/octo 0.0.22 → 0.0.23

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 (347) hide show
  1. package/dist/app.type.d.ts +121 -26
  2. package/dist/app.type.js +71 -1
  3. package/dist/app.type.js.map +1 -1
  4. package/dist/decorators/action.decorator.d.ts +4 -5
  5. package/dist/decorators/action.decorator.js +42 -41
  6. package/dist/decorators/action.decorator.js.map +1 -1
  7. package/dist/decorators/anchor.decorator.d.ts +2 -2
  8. package/dist/decorators/anchor.decorator.js +16 -11
  9. package/dist/decorators/anchor.decorator.js.map +1 -1
  10. package/dist/decorators/enable-hook.decorator.js +2 -2
  11. package/dist/decorators/enable-hook.decorator.js.map +1 -1
  12. package/dist/decorators/event-source.decorator.d.ts +1 -1
  13. package/dist/decorators/event-source.decorator.js +7 -2
  14. package/dist/decorators/event-source.decorator.js.map +1 -1
  15. package/dist/decorators/factory.decorator.d.ts +14 -2
  16. package/dist/decorators/factory.decorator.js +12 -3
  17. package/dist/decorators/factory.decorator.js.map +1 -1
  18. package/dist/decorators/model.decorator.d.ts +3 -2
  19. package/dist/decorators/model.decorator.js +24 -11
  20. package/dist/decorators/model.decorator.js.map +1 -1
  21. package/dist/decorators/module.decorator.d.ts +4 -75
  22. package/dist/decorators/module.decorator.js +18 -58
  23. package/dist/decorators/module.decorator.js.map +1 -1
  24. package/dist/decorators/on-event.decorator.d.ts +1 -1
  25. package/dist/decorators/on-event.decorator.js +7 -2
  26. package/dist/decorators/on-event.decorator.js.map +1 -1
  27. package/dist/decorators/overlay.decorator.d.ts +3 -2
  28. package/dist/decorators/overlay.decorator.js +23 -11
  29. package/dist/decorators/overlay.decorator.js.map +1 -1
  30. package/dist/decorators/resource.decorator.d.ts +3 -2
  31. package/dist/decorators/resource.decorator.js +23 -11
  32. package/dist/decorators/resource.decorator.js.map +1 -1
  33. package/dist/decorators/validate.decorator.d.ts +4 -4
  34. package/dist/decorators/validate.decorator.js +16 -2
  35. package/dist/decorators/validate.decorator.js.map +1 -1
  36. package/dist/errors/container.error.d.ts +11 -0
  37. package/dist/errors/container.error.js +20 -0
  38. package/dist/errors/container.error.js.map +1 -0
  39. package/dist/errors/index.d.ts +6 -0
  40. package/dist/errors/index.js +7 -0
  41. package/dist/errors/index.js.map +1 -0
  42. package/dist/errors/input.error.d.ts +11 -0
  43. package/dist/errors/input.error.js +21 -0
  44. package/dist/errors/input.error.js.map +1 -0
  45. package/dist/errors/module.error.d.ts +4 -0
  46. package/dist/errors/module.error.js +8 -0
  47. package/dist/errors/module.error.js.map +1 -0
  48. package/dist/errors/node.error.d.ts +36 -0
  49. package/dist/errors/node.error.js +60 -0
  50. package/dist/errors/node.error.js.map +1 -0
  51. package/dist/errors/schema.error.d.ts +4 -0
  52. package/dist/errors/schema.error.js +8 -0
  53. package/dist/errors/schema.error.js.map +1 -0
  54. package/dist/errors/transaction.error.d.ts +35 -0
  55. package/dist/errors/transaction.error.js +58 -0
  56. package/dist/errors/transaction.error.js.map +1 -0
  57. package/dist/events/action.event.d.ts +13 -0
  58. package/dist/events/action.event.js +11 -0
  59. package/dist/events/action.event.js.map +1 -0
  60. package/dist/events/event.model.d.ts +6 -12
  61. package/dist/events/event.model.js +5 -11
  62. package/dist/events/event.model.js.map +1 -1
  63. package/dist/events/hook/commit.hook.event.d.ts +25 -0
  64. package/dist/events/hook/commit.hook.event.js +26 -0
  65. package/dist/events/hook/commit.hook.event.js.map +1 -0
  66. package/dist/events/hook/hook.event.d.ts +9 -0
  67. package/dist/events/hook/hook.event.js +10 -0
  68. package/dist/events/hook/hook.event.js.map +1 -0
  69. package/dist/events/hook/index.d.ts +4 -0
  70. package/dist/events/hook/index.js +5 -0
  71. package/dist/events/hook/index.js.map +1 -0
  72. package/dist/events/hook/model.hook.event.d.ts +25 -0
  73. package/dist/events/hook/model.hook.event.js +26 -0
  74. package/dist/events/hook/model.hook.event.js.map +1 -0
  75. package/dist/events/hook/resource.hook.event.d.ts +25 -0
  76. package/dist/events/hook/resource.hook.event.js +26 -0
  77. package/dist/events/hook/resource.hook.event.js.map +1 -0
  78. package/dist/events/index.d.ts +7 -0
  79. package/dist/events/index.js +8 -0
  80. package/dist/events/index.js.map +1 -0
  81. package/dist/events/module.event.d.ts +1 -6
  82. package/dist/events/module.event.js +0 -5
  83. package/dist/events/module.event.js.map +1 -1
  84. package/dist/events/registration.event.d.ts +9 -51
  85. package/dist/events/registration.event.js +16 -64
  86. package/dist/events/registration.event.js.map +1 -1
  87. package/dist/events/serialization.event.d.ts +24 -37
  88. package/dist/events/serialization.event.js +49 -33
  89. package/dist/events/serialization.event.js.map +1 -1
  90. package/dist/events/transaction.event.d.ts +45 -26
  91. package/dist/events/transaction.event.js +43 -25
  92. package/dist/events/transaction.event.js.map +1 -1
  93. package/dist/functions/container/container.d.ts +54 -9
  94. package/dist/functions/container/container.js +106 -19
  95. package/dist/functions/container/container.js.map +1 -1
  96. package/dist/functions/container/test-container.d.ts +9 -13
  97. package/dist/functions/container/test-container.js +33 -38
  98. package/dist/functions/container/test-container.js.map +1 -1
  99. package/dist/functions/dependency/dependency.js +4 -3
  100. package/dist/functions/dependency/dependency.js.map +1 -1
  101. package/dist/functions/diff/diff-metadata.d.ts +3 -5
  102. package/dist/functions/diff/diff-metadata.js +3 -2
  103. package/dist/functions/diff/diff-metadata.js.map +1 -1
  104. package/dist/functions/diff/diff.d.ts +10 -5
  105. package/dist/functions/diff/diff.js +5 -4
  106. package/dist/functions/diff/diff.js.map +1 -1
  107. package/dist/functions/diff/diff.utility.d.ts +2 -2
  108. package/dist/functions/diff/diff.utility.js +23 -2
  109. package/dist/functions/diff/diff.utility.js.map +1 -1
  110. package/dist/functions/hook/commit.hook.d.ts +14 -3
  111. package/dist/functions/hook/commit.hook.js +16 -16
  112. package/dist/functions/hook/commit.hook.js.map +1 -1
  113. package/dist/functions/hook/hook.interface.d.ts +7 -6
  114. package/dist/functions/hook/model-action.hook.d.ts +17 -5
  115. package/dist/functions/hook/model-action.hook.js +20 -39
  116. package/dist/functions/hook/model-action.hook.js.map +1 -1
  117. package/dist/functions/hook/resource-action.hook.d.ts +17 -5
  118. package/dist/functions/hook/resource-action.hook.js +18 -18
  119. package/dist/functions/hook/resource-action.hook.js.map +1 -1
  120. package/dist/functions/node/node-action.abstract.d.ts +7 -0
  121. package/dist/functions/node/node-action.abstract.js +20 -0
  122. package/dist/functions/node/node-action.abstract.js.map +1 -0
  123. package/dist/functions/node/node.abstract.d.ts +18 -9
  124. package/dist/functions/node/node.abstract.js +99 -32
  125. package/dist/functions/node/node.abstract.js.map +1 -1
  126. package/dist/functions/node/node.interface.d.ts +18 -18
  127. package/dist/functions/schema/schema.d.ts +4 -0
  128. package/dist/functions/schema/schema.js +38 -0
  129. package/dist/functions/schema/schema.js.map +1 -0
  130. package/dist/index.d.ts +31 -32
  131. package/dist/index.js +29 -12
  132. package/dist/index.js.map +1 -1
  133. package/dist/main.d.ts +29 -15
  134. package/dist/main.js +62 -50
  135. package/dist/main.js.map +1 -1
  136. package/dist/models/account/account.model.d.ts +23 -0
  137. package/dist/models/account/account.model.js +67 -0
  138. package/dist/models/account/account.model.js.map +1 -0
  139. package/dist/models/account/account.schema.d.ts +7 -0
  140. package/dist/models/account/account.schema.js +12 -0
  141. package/dist/models/account/account.schema.js.map +1 -0
  142. package/dist/models/app/app.model.d.ts +6 -13
  143. package/dist/models/app/app.model.js +24 -26
  144. package/dist/models/app/app.model.js.map +1 -1
  145. package/dist/models/app/app.schema.d.ts +3 -0
  146. package/dist/models/app/app.schema.js +21 -0
  147. package/dist/models/app/app.schema.js.map +1 -0
  148. package/dist/models/deployment/deployment.model.d.ts +6 -11
  149. package/dist/models/deployment/deployment.model.js +8 -10
  150. package/dist/models/deployment/deployment.model.js.map +1 -1
  151. package/dist/models/deployment/deployment.schema.d.ts +7 -0
  152. package/dist/models/deployment/deployment.schema.js +25 -0
  153. package/dist/models/deployment/deployment.schema.js.map +1 -0
  154. package/dist/models/environment/environment.model.d.ts +5 -13
  155. package/dist/models/environment/environment.model.js +7 -21
  156. package/dist/models/environment/environment.model.js.map +1 -1
  157. package/dist/models/environment/environment.schema.d.ts +13 -0
  158. package/dist/models/environment/environment.schema.js +38 -0
  159. package/dist/models/environment/environment.schema.js.map +1 -0
  160. package/dist/models/execution/execution.model.d.ts +6 -12
  161. package/dist/models/execution/execution.model.js +15 -24
  162. package/dist/models/execution/execution.model.js.map +1 -1
  163. package/dist/models/execution/execution.schema.d.ts +14 -0
  164. package/dist/models/execution/execution.schema.js +34 -0
  165. package/dist/models/execution/execution.schema.js.map +1 -0
  166. package/dist/models/filesystem/filesystem.model.d.ts +10 -0
  167. package/dist/models/filesystem/filesystem.model.js +43 -0
  168. package/dist/models/filesystem/filesystem.model.js.map +1 -0
  169. package/dist/models/filesystem/filesystem.schema.d.ts +3 -0
  170. package/dist/models/filesystem/filesystem.schema.js +21 -0
  171. package/dist/models/filesystem/filesystem.schema.js.map +1 -0
  172. package/dist/models/image/image.model.d.ts +7 -39
  173. package/dist/models/image/image.model.js +14 -26
  174. package/dist/models/image/image.model.js.map +1 -1
  175. package/dist/models/image/image.schema.d.ts +9 -0
  176. package/dist/models/image/image.schema.js +31 -0
  177. package/dist/models/image/image.schema.js.map +1 -0
  178. package/dist/models/model-action.interface.d.ts +3 -13
  179. package/dist/models/model.abstract.d.ts +25 -13
  180. package/dist/models/model.abstract.js +176 -13
  181. package/dist/models/model.abstract.js.map +1 -1
  182. package/dist/models/model.interface.d.ts +12 -6
  183. package/dist/models/pipeline/pipeline.model.d.ts +5 -6
  184. package/dist/models/pipeline/pipeline.model.js +7 -9
  185. package/dist/models/pipeline/pipeline.model.js.map +1 -1
  186. package/dist/models/pipeline/pipeline.schema.d.ts +4 -0
  187. package/dist/models/pipeline/pipeline.schema.js +22 -0
  188. package/dist/models/pipeline/pipeline.schema.js.map +1 -0
  189. package/dist/models/region/region.model.d.ts +8 -7
  190. package/dist/models/region/region.model.js +22 -11
  191. package/dist/models/region/region.model.js.map +1 -1
  192. package/dist/models/region/region.schema.d.ts +3 -0
  193. package/dist/models/region/region.schema.js +21 -0
  194. package/dist/models/region/region.schema.js.map +1 -0
  195. package/dist/models/server/server.model.d.ts +5 -9
  196. package/dist/models/server/server.model.js +10 -10
  197. package/dist/models/server/server.model.js.map +1 -1
  198. package/dist/models/server/server.schema.d.ts +6 -0
  199. package/dist/models/server/server.schema.js +24 -0
  200. package/dist/models/server/server.schema.js.map +1 -0
  201. package/dist/models/service/service.model.d.ts +4 -8
  202. package/dist/models/service/service.model.js +12 -12
  203. package/dist/models/service/service.model.js.map +1 -1
  204. package/dist/models/service/service.schema.d.ts +6 -0
  205. package/dist/models/service/service.schema.js +24 -0
  206. package/dist/models/service/service.schema.js.map +1 -0
  207. package/dist/models/subnet/subnet.model.d.ts +8 -32
  208. package/dist/models/subnet/subnet.model.js +11 -33
  209. package/dist/models/subnet/subnet.model.js.map +1 -1
  210. package/dist/models/subnet/subnet.schema.d.ts +33 -0
  211. package/dist/models/subnet/subnet.schema.js +48 -0
  212. package/dist/models/subnet/subnet.schema.js.map +1 -0
  213. package/dist/modules/module.abstract.d.ts +21 -0
  214. package/dist/modules/module.abstract.js +14 -0
  215. package/dist/modules/module.abstract.js.map +1 -0
  216. package/dist/modules/module.container.d.ts +32 -18
  217. package/dist/modules/module.container.js +134 -81
  218. package/dist/modules/module.container.js.map +1 -1
  219. package/dist/modules/module.interface.d.ts +15 -2
  220. package/dist/modules/test-module.container.d.ts +33 -15
  221. package/dist/modules/test-module.container.js +257 -26
  222. package/dist/modules/test-module.container.js.map +1 -1
  223. package/dist/overlays/anchor.abstract.d.ts +13 -8
  224. package/dist/overlays/anchor.abstract.js.map +1 -1
  225. package/dist/overlays/anchor.interface.d.ts +5 -8
  226. package/dist/overlays/anchor.schema.d.ts +8 -0
  227. package/dist/overlays/anchor.schema.js +9 -0
  228. package/dist/overlays/anchor.schema.js.map +1 -0
  229. package/dist/overlays/overlay-data.repository.d.ts +3 -4
  230. package/dist/overlays/overlay-data.repository.js +14 -10
  231. package/dist/overlays/overlay-data.repository.js.map +1 -1
  232. package/dist/overlays/overlay.abstract.d.ts +12 -13
  233. package/dist/overlays/overlay.abstract.js +16 -8
  234. package/dist/overlays/overlay.abstract.js.map +1 -1
  235. package/dist/overlays/overlay.interface.d.ts +3 -7
  236. package/dist/overlays/overlay.schema.d.ts +8 -0
  237. package/dist/overlays/overlay.schema.js +9 -0
  238. package/dist/overlays/overlay.schema.js.map +1 -0
  239. package/dist/resources/resource-action.interface.d.ts +4 -3
  240. package/dist/resources/resource-data.repository.d.ts +2 -3
  241. package/dist/resources/resource-data.repository.js +58 -82
  242. package/dist/resources/resource-data.repository.js.map +1 -1
  243. package/dist/resources/resource.abstract.d.ts +50 -27
  244. package/dist/resources/resource.abstract.js +230 -57
  245. package/dist/resources/resource.abstract.js.map +1 -1
  246. package/dist/resources/resource.interface.d.ts +39 -8
  247. package/dist/resources/resource.schema.d.ts +14 -0
  248. package/dist/resources/resource.schema.js +11 -0
  249. package/dist/resources/resource.schema.js.map +1 -0
  250. package/dist/services/capture/capture.service.d.ts +6 -6
  251. package/dist/services/capture/capture.service.js +8 -5
  252. package/dist/services/capture/capture.service.js.map +1 -1
  253. package/dist/services/event/event.service.d.ts +3 -4
  254. package/dist/services/event/event.service.js +7 -9
  255. package/dist/services/event/event.service.js.map +1 -1
  256. package/dist/services/input/input.service.d.ts +62 -6
  257. package/dist/services/input/input.service.js +290 -14
  258. package/dist/services/input/input.service.js.map +1 -1
  259. package/dist/services/schema-translation/schema-translation.service.d.ts +13 -0
  260. package/dist/services/schema-translation/schema-translation.service.js +42 -0
  261. package/dist/services/schema-translation/schema-translation.service.js.map +1 -0
  262. package/dist/services/serialization/model/model-serialization.service.d.ts +1 -4
  263. package/dist/services/serialization/model/model-serialization.service.js +36 -25
  264. package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
  265. package/dist/services/serialization/resource/resource-serialization.service.d.ts +1 -1
  266. package/dist/services/serialization/resource/resource-serialization.service.js +58 -80
  267. package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
  268. package/dist/services/state-management/local.state-provider.d.ts +0 -1
  269. package/dist/services/state-management/local.state-provider.js +5 -7
  270. package/dist/services/state-management/local.state-provider.js.map +1 -1
  271. package/dist/services/state-management/state-management.service.d.ts +2 -3
  272. package/dist/services/state-management/state-management.service.js +19 -8
  273. package/dist/services/state-management/state-management.service.js.map +1 -1
  274. package/dist/services/state-management/state-provider.interface.d.ts +0 -1
  275. package/dist/services/state-management/test.state-provider.d.ts +0 -1
  276. package/dist/services/state-management/test.state-provider.js +2 -1
  277. package/dist/services/state-management/test.state-provider.js.map +1 -1
  278. package/dist/services/transaction/transaction.service.d.ts +16 -11
  279. package/dist/services/transaction/transaction.service.js +197 -66
  280. package/dist/services/transaction/transaction.service.js.map +1 -1
  281. package/dist/services/validation/validation.service.d.ts +2 -3
  282. package/dist/services/validation/validation.service.js +27 -12
  283. package/dist/services/validation/validation.service.js.map +1 -1
  284. package/dist/utilities/node/node.utility.d.ts +4 -0
  285. package/dist/utilities/node/node.utility.js +22 -0
  286. package/dist/utilities/node/node.utility.js.map +1 -0
  287. package/dist/utilities/object/object.utility.d.ts +3 -0
  288. package/dist/utilities/object/object.utility.js +33 -0
  289. package/dist/utilities/object/object.utility.js.map +1 -1
  290. package/dist/utilities/test-helpers/test-classes.d.ts +57 -0
  291. package/dist/utilities/test-helpers/test-classes.js +76 -0
  292. package/dist/utilities/test-helpers/test-classes.js.map +1 -0
  293. package/dist/utilities/test-helpers/test-models.d.ts +41 -0
  294. package/dist/utilities/test-helpers/test-models.js +224 -0
  295. package/dist/utilities/test-helpers/test-models.js.map +1 -0
  296. package/dist/utilities/test-helpers/test-overlays.d.ts +10 -0
  297. package/dist/utilities/test-helpers/test-overlays.js +53 -0
  298. package/dist/utilities/test-helpers/test-overlays.js.map +1 -0
  299. package/dist/utilities/test-helpers/test-resources.d.ts +22 -0
  300. package/dist/utilities/test-helpers/test-resources.js +162 -0
  301. package/dist/utilities/test-helpers/test-resources.js.map +1 -0
  302. package/dist/utilities/validation/validation.utility.d.ts +31 -3
  303. package/dist/utilities/validation/validation.utility.js +121 -2
  304. package/dist/utilities/validation/validation.utility.js.map +1 -1
  305. package/package.json +6 -6
  306. package/dist/events/error.event.d.ts +0 -35
  307. package/dist/events/error.event.js +0 -36
  308. package/dist/events/error.event.js.map +0 -1
  309. package/dist/events/hook.event.d.ts +0 -194
  310. package/dist/events/hook.event.js +0 -195
  311. package/dist/events/hook.event.js.map +0 -1
  312. package/dist/models/app/app.interface.d.ts +0 -9
  313. package/dist/models/app/app.interface.js +0 -2
  314. package/dist/models/app/app.interface.js.map +0 -1
  315. package/dist/models/deployment/deployment.interface.d.ts +0 -9
  316. package/dist/models/deployment/deployment.interface.js +0 -2
  317. package/dist/models/deployment/deployment.interface.js.map +0 -1
  318. package/dist/models/environment/environment.interface.d.ts +0 -12
  319. package/dist/models/environment/environment.interface.js +0 -2
  320. package/dist/models/environment/environment.interface.js.map +0 -1
  321. package/dist/models/execution/execution.interface.d.ts +0 -14
  322. package/dist/models/execution/execution.interface.js +0 -2
  323. package/dist/models/execution/execution.interface.js.map +0 -1
  324. package/dist/models/image/image.interface.d.ts +0 -12
  325. package/dist/models/image/image.interface.js +0 -2
  326. package/dist/models/image/image.interface.js.map +0 -1
  327. package/dist/models/pipeline/pipeline.interface.d.ts +0 -10
  328. package/dist/models/pipeline/pipeline.interface.js +0 -2
  329. package/dist/models/pipeline/pipeline.interface.js.map +0 -1
  330. package/dist/models/region/region.interface.d.ts +0 -9
  331. package/dist/models/region/region.interface.js +0 -2
  332. package/dist/models/region/region.interface.js.map +0 -1
  333. package/dist/models/server/server.interface.d.ts +0 -9
  334. package/dist/models/server/server.interface.js +0 -2
  335. package/dist/models/server/server.interface.js.map +0 -1
  336. package/dist/models/service/service.interface.d.ts +0 -9
  337. package/dist/models/service/service.interface.js +0 -2
  338. package/dist/models/service/service.interface.js.map +0 -1
  339. package/dist/models/subnet/subnet.interface.d.ts +0 -13
  340. package/dist/models/subnet/subnet.interface.js +0 -2
  341. package/dist/models/subnet/subnet.interface.js.map +0 -1
  342. package/dist/overlays/overlay.service.d.ts +0 -17
  343. package/dist/overlays/overlay.service.js +0 -41
  344. package/dist/overlays/overlay.service.js.map +0 -1
  345. package/dist/resources/shared-resource.abstract.d.ts +0 -13
  346. package/dist/resources/shared-resource.abstract.js +0 -47
  347. package/dist/resources/shared-resource.abstract.js.map +0 -1
@@ -1,34 +1,60 @@
1
- import { NodeType } from '../app.type.js';
1
+ import { MatchingResource } from '../app.type.js';
2
+ import { DiffInverseResourceError, RemoveResourceError, ResourceError } from '../errors/index.js';
2
3
  import { DependencyRelationship } from '../functions/dependency/dependency.js';
3
4
  import { Diff, DiffAction } from '../functions/diff/diff.js';
4
5
  import { DiffUtility } from '../functions/diff/diff.utility.js';
5
6
  import { ANode } from '../functions/node/node.abstract.js';
7
+ import { ObjectUtility } from '../utilities/object/object.utility.js';
6
8
  export class AResource extends ANode {
7
- constructor(resourceId, properties, parents) {
9
+ constructor(resourceId, properties, parents = []) {
8
10
  super();
9
11
  this.resourceId = resourceId;
10
12
  this.properties = properties;
11
- this.NODE_TYPE = NodeType.RESOURCE;
12
13
  this._deleteMarker = false;
14
+ this.parents = [];
13
15
  this.response = {};
16
+ this.tags = {};
14
17
  for (const parent of parents) {
15
- parent.addChild('resourceId', this, 'resourceId');
18
+ if (parent instanceof MatchingResource) {
19
+ parent.addChild('resourceId', this, 'resourceId');
20
+ }
21
+ else {
22
+ parent.addChild('resourceId', this, 'resourceId');
23
+ }
24
+ }
25
+ }
26
+ addChild(onField, child, toField) {
27
+ const result = super.addChild(onField, child, toField);
28
+ if (child.parents.findIndex((p) => p instanceof MatchingResource
29
+ ? p.getActual().getContext() === this.getContext()
30
+ : p.getContext() === this.getContext()) === -1) {
31
+ child.parents.push(this);
16
32
  }
33
+ return result;
17
34
  }
35
+ /**
36
+ * @deprecated Field dependencies are not supported in resources!
37
+ */
38
+ addFieldDependency() {
39
+ throw new ResourceError('Field dependencies are not supported in resources!', this);
40
+ }
41
+ /**
42
+ * @deprecated Relationships are not supported in resources!
43
+ */
18
44
  addRelationship() {
19
- throw new Error('Relationships are not supported in resources!');
45
+ throw new ResourceError('Relationships are not supported in resources!', this);
46
+ }
47
+ clonePropertiesInPlace(sourceResource) {
48
+ for (const key of Object.keys(this.properties)) {
49
+ delete this.properties[key];
50
+ }
51
+ for (const key of Object.keys(sourceResource.properties)) {
52
+ this.properties[key] = JSON.parse(JSON.stringify(sourceResource.properties[key]));
53
+ }
20
54
  }
21
55
  static async cloneResource(sourceResource, deReferenceResource) {
22
- const resource = {
23
- properties: JSON.parse(JSON.stringify(sourceResource.properties)),
24
- resourceId: sourceResource.resourceId,
25
- response: JSON.parse(JSON.stringify(sourceResource.response)),
26
- };
27
- const parentResourceIds = await Promise.all(Object.values(sourceResource.getParents())
28
- .flat()
29
- .map((d) => d.to.resourceId));
30
56
  const deserializationClass = sourceResource.constructor;
31
- return deserializationClass.unSynth(deserializationClass, resource, parentResourceIds, deReferenceResource);
57
+ return deserializationClass.unSynth(deserializationClass, sourceResource.synth(), deReferenceResource);
32
58
  }
33
59
  async cloneResourceInPlace(sourceResource, deReferenceResource) {
34
60
  // Remove all dependencies from self.
@@ -38,36 +64,54 @@ export class AResource extends ANode {
38
64
  for (const parent of selfParents) {
39
65
  this.removeRelationship(parent);
40
66
  }
41
- // From source resource, get all dependencies from source to its parents.
42
- const sourceChildToParentDependencies = Object.values(sourceResource.getParents()).flat();
43
- // Clone each of those dependencies.
44
- for (const sourceChildToParentDependency of sourceChildToParentDependencies) {
45
- const parent = await deReferenceResource(sourceChildToParentDependency.to.resourceId);
46
- const { childToParentDependency, parentToChildDependency } = parent.addChild('resourceId', this, 'resourceId');
67
+ // Empty inline parents.
68
+ this.parents.splice(0, this.parents.length);
69
+ // From source resource, copy all parents.
70
+ for (const sourceParent of sourceResource.parents) {
71
+ const sourceParentActual = sourceParent instanceof MatchingResource ? sourceParent.getActual() : sourceParent;
72
+ const parent = await deReferenceResource(sourceParentActual.getContext());
73
+ const parentMatching = sourceParent instanceof MatchingResource ? new MatchingResource(parent, sourceParent.schemaTranslator) : parent;
74
+ const { childToParentDependency, parentToChildDependency } = parentMatching.addChild('resourceId', this, 'resourceId');
47
75
  // Clone behaviors from source to its parent.
76
+ const sourceChildToParentDependency = sourceResource.getDependency(sourceParentActual, DependencyRelationship.CHILD);
48
77
  for (const b of sourceChildToParentDependency.synth().behaviors) {
49
78
  childToParentDependency.addBehavior(b.onField, b.onAction, b.toField, b.forAction);
50
79
  }
51
80
  // Clone behaviors from parent to source.
52
- const sourceParentToChildDependency = sourceChildToParentDependency.to.getDependency(sourceChildToParentDependency.from, DependencyRelationship.PARENT);
81
+ const sourceParentToChildDependency = sourceParentActual.getDependency(sourceResource, DependencyRelationship.PARENT);
53
82
  for (const b of sourceParentToChildDependency.synth().behaviors) {
54
83
  parentToChildDependency.addBehavior(b.onField, b.onAction, b.toField, b.forAction);
55
84
  }
56
85
  }
57
- // Clone properties.
58
- for (const key of Object.keys(sourceResource.properties)) {
59
- this.properties[key] = JSON.parse(JSON.stringify(sourceResource.properties[key]));
86
+ // Replace properties.
87
+ this.clonePropertiesInPlace(sourceResource);
88
+ // Replace responses.
89
+ this.cloneResponseInPlace(sourceResource);
90
+ // Replace tags.
91
+ this.cloneTagsInPlace(sourceResource);
92
+ }
93
+ cloneResponseInPlace(sourceResource) {
94
+ for (const key of Object.keys(this.response)) {
95
+ delete this.response[key];
60
96
  }
61
- // Clone responses.
62
97
  for (const key of Object.keys(sourceResource.response)) {
63
98
  this.response[key] = JSON.parse(JSON.stringify(sourceResource.response[key]));
64
99
  }
65
100
  }
66
- // @ts-expect-error since this overridden diff() is always called with previous.
101
+ cloneTagsInPlace(sourceResource) {
102
+ for (const key of Object.keys(this.tags)) {
103
+ delete this.tags[key];
104
+ }
105
+ for (const key of Object.keys(sourceResource.tags)) {
106
+ this.tags[key] = sourceResource.tags[key];
107
+ }
108
+ }
67
109
  async diff(previous) {
68
110
  const diffs = [];
69
111
  const propertyDiffs = await this.diffProperties(previous);
70
112
  diffs.push(...propertyDiffs);
113
+ const tagDiffs = await this.diffTags(previous);
114
+ diffs.push(...tagDiffs);
71
115
  // Parent diffs.
72
116
  const previousParents = Object.values(previous.getParents())
73
117
  .flat()
@@ -83,16 +127,22 @@ export class AResource extends ANode {
83
127
  for (const parent of newParents) {
84
128
  diffs.push(new Diff(this, DiffAction.ADD, 'parent', parent));
85
129
  }
130
+ for (const currentParent of currentParents) {
131
+ const previousParent = previousParents.find((p) => p.getContext() === currentParent.getContext());
132
+ if (previousParent && !DiffUtility.isObjectDeepEquals(currentParent, previousParent, ['tags'])) {
133
+ diffs.push(new Diff(this, DiffAction.UPDATE, 'parent', currentParent));
134
+ }
135
+ }
86
136
  return diffs;
87
137
  }
88
138
  async diffInverse(diff, deReferenceResource) {
89
139
  switch (diff.field) {
90
140
  case 'resourceId': {
91
141
  if (diff.action === DiffAction.DELETE) {
92
- this.remove();
142
+ this.remove(true);
93
143
  }
94
144
  else {
95
- throw new Error('Unknown action on "resourceId" field during diff inverse!');
145
+ throw new DiffInverseResourceError('Unknown action on "resourceId" field during diff inverse!', this, diff);
96
146
  }
97
147
  return;
98
148
  }
@@ -100,8 +150,12 @@ export class AResource extends ANode {
100
150
  if (diff.action === DiffAction.ADD || diff.action === DiffAction.DELETE) {
101
151
  await this.cloneResourceInPlace(diff.node, deReferenceResource);
102
152
  }
153
+ else if (diff.action === DiffAction.UPDATE) {
154
+ // Do nothing, since the parent of this resource has been updated,
155
+ // but this resource has no changes relevant to the parent.
156
+ }
103
157
  else {
104
- throw new Error('Unknown action on "parent" field during diff inverse!');
158
+ throw new DiffInverseResourceError('Unknown action on "parent" field during diff inverse!', this, diff);
105
159
  }
106
160
  return;
107
161
  }
@@ -111,28 +165,106 @@ export class AResource extends ANode {
111
165
  this.properties[change.key] = JSON.parse(JSON.stringify(change.value));
112
166
  }
113
167
  else if (diff.action === DiffAction.DELETE) {
114
- delete this.properties[diff.field];
168
+ const change = diff.value;
169
+ delete this.properties[change.key];
115
170
  }
116
171
  else {
117
- throw new Error('Unknown action on "properties" field during diff inverse!');
172
+ throw new DiffInverseResourceError('Unknown action on "properties" field during diff inverse!', this, diff);
173
+ }
174
+ // Replace response.
175
+ this.cloneResponseInPlace(diff.node);
176
+ return;
177
+ }
178
+ case 'tags': {
179
+ if (diff.action === DiffAction.UPDATE) {
180
+ const diffValue = diff.value;
181
+ if (diffValue.delete) {
182
+ for (const key of diffValue.delete) {
183
+ delete this.tags[key];
184
+ }
185
+ }
186
+ if (diffValue.add) {
187
+ for (const [key, value] of Object.entries(diffValue.add)) {
188
+ this.tags[key] = value;
189
+ }
190
+ }
191
+ if (diffValue.update) {
192
+ for (const [key, value] of Object.entries(diffValue.update)) {
193
+ this.tags[key] = value;
194
+ }
195
+ }
118
196
  }
119
- for (const key of Object.keys(diff.node.response)) {
120
- this.response[key] = JSON.parse(JSON.stringify(diff.node.response[key]));
197
+ else {
198
+ throw new DiffInverseResourceError('Unknown action on "tags" field during diff inverse!', this, diff);
121
199
  }
122
200
  return;
123
201
  }
124
202
  default: {
125
- throw new Error('Unknown field during diff inverse!');
203
+ throw new DiffInverseResourceError('Unknown field during diff inverse!', this, diff);
126
204
  }
127
205
  }
128
206
  }
129
207
  async diffProperties(previous) {
130
208
  return DiffUtility.diffObject(previous, this, 'properties');
131
209
  }
132
- getSharedResource() {
133
- const sameNodeDependencies = this.getChildren(this.NODE_NAME)[this.NODE_NAME];
134
- const sharedResourceDependency = sameNodeDependencies?.find((d) => d.to.NODE_TYPE === NodeType.SHARED_RESOURCE);
135
- return sharedResourceDependency?.to;
210
+ async diffTags(previous) {
211
+ const tagsToAdd = {};
212
+ const tagsToDelete = [];
213
+ const tagsToUpdate = {};
214
+ for (const [key, value] of Object.entries(previous.tags)) {
215
+ if (!this.tags.hasOwnProperty(key)) {
216
+ tagsToDelete.push(key);
217
+ }
218
+ else if (this.tags[key] !== value) {
219
+ tagsToUpdate[key] = this.tags[key];
220
+ }
221
+ }
222
+ for (const [key, value] of Object.entries(this.tags)) {
223
+ if (!previous.tags.hasOwnProperty(key)) {
224
+ tagsToAdd[key] = value;
225
+ }
226
+ }
227
+ if (Object.keys(tagsToAdd).length === 0 && tagsToDelete.length === 0 && Object.keys(tagsToUpdate).length === 0) {
228
+ return [];
229
+ }
230
+ return [new Diff(this, DiffAction.UPDATE, 'tags', { add: tagsToAdd, delete: tagsToDelete, update: tagsToUpdate })];
231
+ }
232
+ diffUnpack(diff) {
233
+ return [diff];
234
+ }
235
+ findParentsByProperty(filters) {
236
+ const parents = [];
237
+ const dependencies = Object.values(this.getParents()).flat();
238
+ for (const d of dependencies) {
239
+ const resource = d.to;
240
+ if (filters.every((c) => resource.properties[c.key] === c.value)) {
241
+ parents.push(resource);
242
+ }
243
+ }
244
+ return parents;
245
+ }
246
+ findParentsByTag(filters) {
247
+ const parents = [];
248
+ const dependencies = Object.values(this.getParents()).flat();
249
+ for (const d of dependencies) {
250
+ const resource = d.to;
251
+ if (filters.every((c) => resource.tags[c.key] === c.value)) {
252
+ parents.push(resource);
253
+ }
254
+ }
255
+ return parents;
256
+ }
257
+ /**
258
+ * @deprecated Boundary is not supported in resources!
259
+ */
260
+ getBoundaryMembers() {
261
+ throw new ResourceError('Boundary is not supported in resources!', this);
262
+ }
263
+ /**
264
+ * @deprecated Siblings are not supported in resources!
265
+ */
266
+ getSiblings() {
267
+ throw new ResourceError('Siblings are not supported in resources!', this);
136
268
  }
137
269
  isDeepEquals(other) {
138
270
  if (!other) {
@@ -156,25 +288,38 @@ export class AResource extends ANode {
156
288
  return DiffUtility.isObjectDeepEquals(sdPd.synth(), odPd.synth());
157
289
  });
158
290
  }
159
- /**
160
- * To check if self is marked as deleted.
161
- * A deleted node will be removed from the graph after the transaction.
162
- */
163
291
  isMarkedDeleted() {
164
292
  return this._deleteMarker;
165
293
  }
166
- /**
167
- * To mark self as deleted.
168
- * A deleted node will be removed from the graph after the transaction.
169
- * - A node cannot be deleted if it has dependencies.
170
- *
171
- * @throws {@link Error} If node contains dependencies to other nodes.
172
- */
173
- remove() {
294
+ merge(previous) {
295
+ const currentDependencies = this.getDependencies();
296
+ const previousDependencies = previous.getDependencies();
297
+ ObjectUtility.deepMergeInPlace(previous.properties, this.properties);
298
+ ObjectUtility.deepMergeInPlace(previous.response, this.response);
299
+ ObjectUtility.deepMergeInPlace(previous.tags, this.tags);
300
+ const currentDependenciesNotInPreviousResource = currentDependencies.filter((cd) => !previousDependencies.find((pd) => pd.isEqual(cd)));
301
+ for (const dependency of currentDependenciesNotInPreviousResource) {
302
+ if (dependency.isChildRelationship()) {
303
+ dependency.to.addChild('resourceId', previous, 'resourceId');
304
+ }
305
+ else if (dependency.isParentRelationship()) {
306
+ previous.addChild('resourceId', dependency.to, 'resourceId');
307
+ }
308
+ else {
309
+ throw new ResourceError('Unknown dependency found in merge!', this);
310
+ }
311
+ }
312
+ Object.assign(this, previous);
313
+ return previous;
314
+ }
315
+ remove(force = false) {
174
316
  const dependencies = this.getDependencies();
175
317
  // Verify resource can be removed.
176
- if (dependencies.some((d) => d.isParentRelationship())) {
177
- throw new Error('Cannot remove resource until dependent nodes exist!');
318
+ if (!force) {
319
+ const children = dependencies.filter((d) => d.isParentRelationship()).map((d) => d.to);
320
+ if (children.length > 0) {
321
+ throw new RemoveResourceError('Cannot remove resource until dependent nodes exist!', this, children);
322
+ }
178
323
  }
179
324
  // Removing all dependencies that points to this.
180
325
  for (const dependency of dependencies) {
@@ -184,21 +329,49 @@ export class AResource extends ANode {
184
329
  this._deleteMarker = true;
185
330
  }
186
331
  setContext() {
187
- return `${this.NODE_NAME}=${this.resourceId}`;
332
+ const nodePackage = this.constructor.NODE_PACKAGE;
333
+ const nodeName = this.constructor.NODE_NAME;
334
+ return `${nodePackage}/${nodeName}=${this.resourceId}`;
188
335
  }
189
336
  synth() {
190
- return {
337
+ const resourceSynth = {
338
+ parents: this.parents.map((p) => {
339
+ const parentReference = {
340
+ context: p instanceof MatchingResource ? p.getActual().getContext() : p.getContext(),
341
+ };
342
+ if (p instanceof MatchingResource) {
343
+ parentReference.parentSchemaTranslator = p.hasSchemaTranslator()
344
+ ? p.schemaTranslator.toString()
345
+ : ((synth) => synth).toString();
346
+ }
347
+ return parentReference;
348
+ }),
191
349
  properties: JSON.parse(JSON.stringify(this.properties)),
192
350
  resourceId: this.resourceId,
193
351
  response: JSON.parse(JSON.stringify(this.response)),
352
+ tags: JSON.parse(JSON.stringify(this.tags)),
194
353
  };
354
+ return resourceSynth;
195
355
  }
196
- static async unSynth(deserializationClass, resource, parentResourceIds, deReferenceResource) {
197
- const parents = await Promise.all(parentResourceIds.map((p) => deReferenceResource(p)));
198
- const newResource = new deserializationClass(resource.resourceId, resource.properties, parents);
356
+ static async unSynth(deserializationClass, resource, deReferenceResource) {
357
+ const parents = await Promise.all(resource.parents.map((p) => deReferenceResource(p.context)));
358
+ const resourceInlineParents = parents.map((p) => {
359
+ const parentMetadata = resource.parents.find((pm) => pm.context === p.getContext());
360
+ if (parentMetadata.parentSchemaTranslator) {
361
+ const parentSchemaTranslator = new Function('return ' + parentMetadata.parentSchemaTranslator)();
362
+ return new MatchingResource(p, parentSchemaTranslator);
363
+ }
364
+ else {
365
+ return p;
366
+ }
367
+ });
368
+ const newResource = new deserializationClass(resource.resourceId, resource.properties, resourceInlineParents);
199
369
  for (const key of Object.keys(resource.response)) {
200
370
  newResource.response[key] = resource.response[key];
201
371
  }
372
+ for (const key of Object.keys(resource.tags)) {
373
+ newResource.tags[key] = resource.tags[key];
374
+ }
202
375
  return newResource;
203
376
  }
204
377
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resource.abstract.js","sourceRoot":"","sources":["../../src/resources/resource.abstract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.abstract.js","sourceRoot":"","sources":["../../src/resources/resource.abstract.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,40 @@
1
- export interface IResource {
2
- properties: {
3
- [key: string]: unknown;
4
- };
5
- resourceId: string;
6
- response: {
7
- [key: string]: unknown;
8
- };
1
+ import type { UnknownResource } from '../app.type.js';
2
+ import type { Diff } from '../functions/diff/diff.js';
3
+ import type { INode, INodeReference } from '../functions/node/node.interface.js';
4
+ import type { AResource } from './resource.abstract.js';
5
+ import type { BaseResourceSchema } from './resource.schema.js';
6
+ export interface IResource<S extends BaseResourceSchema, T extends UnknownResource> extends INode<S, T> {
7
+ clonePropertiesInPlace(sourceResource: T): void;
8
+ cloneResourceInPlace(sourceResource: T, deReferenceResource: (context: string) => Promise<UnknownResource>): Promise<void>;
9
+ cloneResponseInPlace(sourceResource: T): void;
10
+ cloneTagsInPlace(sourceResource: T): void;
11
+ diffInverse(diff: Diff, deReferenceResource: (context: string) => Promise<UnknownResource>): Promise<void>;
12
+ diffTags(previous: T): Promise<Diff[]>;
13
+ diffUnpack(diff: Diff): Diff[];
14
+ findParentsByProperty(filters: {
15
+ key: string;
16
+ value: unknown;
17
+ }[]): UnknownResource[];
18
+ findParentsByTag(filters: {
19
+ key: string;
20
+ value: string;
21
+ }[]): UnknownResource[];
22
+ isDeepEquals(other?: UnknownResource): boolean;
23
+ /**
24
+ * To check if self is marked as deleted.
25
+ * A deleted node will be removed from the graph after the transaction.
26
+ */
27
+ isMarkedDeleted(): boolean;
28
+ merge(previous: AResource<S, T>): AResource<S, T>;
29
+ /**
30
+ * To mark self as deleted.
31
+ * A deleted node will be removed from the graph after the transaction.
32
+ * - A node cannot be deleted if it has dependencies.
33
+ *
34
+ * @throws {@link RemoveResourceError} If node contains dependencies to other nodes.
35
+ */
36
+ remove(): void;
37
+ }
38
+ export interface IResourceReference extends INodeReference {
39
+ parentSchemaTranslator?: string;
9
40
  }
@@ -0,0 +1,14 @@
1
+ import type { IResourceReference } from './resource.interface.js';
2
+ export declare class BaseResourceSchema {
3
+ parents: IResourceReference[];
4
+ properties: {
5
+ [key: string]: unknown;
6
+ };
7
+ resourceId: string;
8
+ response: {
9
+ [key: string]: unknown;
10
+ };
11
+ tags: {
12
+ [key: string]: string;
13
+ };
14
+ }
@@ -0,0 +1,11 @@
1
+ import { Schema } from '../functions/schema/schema.js';
2
+ export class BaseResourceSchema {
3
+ constructor() {
4
+ this.parents = Schema();
5
+ this.properties = Schema();
6
+ this.resourceId = Schema();
7
+ this.response = Schema();
8
+ this.tags = Schema();
9
+ }
10
+ }
11
+ //# sourceMappingURL=resource.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.schema.js","sourceRoot":"","sources":["../../src/resources/resource.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAGvD,MAAM,OAAO,kBAAkB;IAA/B;QACE,YAAO,GAAG,MAAM,EAAwB,CAAC;QAEzC,eAAU,GAAG,MAAM,EAA8B,CAAC;QAElD,eAAU,GAAG,MAAM,EAAU,CAAC;QAE9B,aAAQ,GAAG,MAAM,EAA8B,CAAC;QAEhD,SAAI,GAAG,MAAM,EAA6B,CAAC;IAC7C,CAAC;CAAA"}
@@ -1,12 +1,12 @@
1
- import { AResource } from '../../resources/resource.abstract.js';
1
+ import type { BaseResourceSchema } from '../../resources/resource.schema.js';
2
2
  export declare class CaptureService {
3
- private readonly captures;
4
- getCapture<T extends AResource<T>>(resourceId: string): {
5
- response: Partial<T['response']>;
3
+ private captures;
4
+ getCapture<S extends BaseResourceSchema>(context: string): {
5
+ response: Partial<S['response']>;
6
6
  } | undefined;
7
- registerCapture<T extends AResource<T>>(resourceId: T['resourceId'], response: Partial<T['response']>): void;
7
+ registerCapture<S extends BaseResourceSchema>(resourceContext: string, response: Partial<S['response']>): void;
8
8
  }
9
9
  export declare class CaptureServiceFactory {
10
10
  private static instance;
11
- static create(): Promise<CaptureService>;
11
+ static create(forceNew?: boolean): Promise<CaptureService>;
12
12
  }
@@ -9,18 +9,21 @@ export class CaptureService {
9
9
  constructor() {
10
10
  this.captures = {};
11
11
  }
12
- getCapture(resourceId) {
13
- return this.captures[resourceId];
12
+ getCapture(context) {
13
+ return this.captures[context];
14
14
  }
15
- registerCapture(resourceId, response) {
16
- this.captures[resourceId] = { response };
15
+ registerCapture(resourceContext, response) {
16
+ this.captures[resourceContext] = { response };
17
17
  }
18
18
  }
19
19
  let CaptureServiceFactory = class CaptureServiceFactory {
20
- static async create() {
20
+ static async create(forceNew = false) {
21
21
  if (!this.instance) {
22
22
  this.instance = new CaptureService();
23
23
  }
24
+ if (forceNew) {
25
+ this.instance['captures'] = {};
26
+ }
24
27
  return this.instance;
25
28
  }
26
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"capture.service.js","sourceRoot":"","sources":["../../../src/services/capture/capture.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAIhE,MAAM,OAAO,cAAc;IAA3B;QACmB,aAAQ,GAErB,EAAE,CAAC;IAST,CAAC;IAPC,UAAU,CAAyB,UAAkB;QACnD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,eAAe,CAAyB,UAA2B,EAAE,QAAgC;QACnG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;IAC3C,CAAC;CACF;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAGhC,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AATY,qBAAqB;IADjC,OAAO,CAAiB,cAAc,CAAC;GAC3B,qBAAqB,CASjC"}
1
+ {"version":3,"file":"capture.service.js","sourceRoot":"","sources":["../../../src/services/capture/capture.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAGhE,MAAM,OAAO,cAAc;IAA3B;QACU,aAAQ,GAEZ,EAAE,CAAC;IAST,CAAC;IAPC,UAAU,CAA+B,OAAe;QACtD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,eAAe,CAA+B,eAAuB,EAAE,QAAgC;QACrG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChD,CAAC;CACF;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAGhC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAoB,KAAK;QAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACvC,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACjC,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AAdY,qBAAqB;IADjC,OAAO,CAAiB,cAAc,CAAC;GAC3B,qBAAqB,CAcjC"}
@@ -1,17 +1,16 @@
1
- import { Constructable } from '../../app.type.js';
2
- import { Event } from '../../events/event.model.js';
1
+ import type { Constructable } from '../../app.type.js';
2
+ import { Event } from '../../events/index.js';
3
3
  export declare class EventService {
4
4
  private readonly EVENT_BUFFER_SIZE;
5
5
  private readonly emitter;
6
6
  private readonly eventBuffer;
7
- private static instance;
8
7
  private readonly listeners;
9
8
  constructor();
10
9
  emit(event: Event<unknown>): void;
11
10
  forwardEvent(event: Event<unknown>, listeners?: ((event: Event<unknown>) => Promise<any>)[]): void;
12
- static getInstance(): EventService;
13
11
  registerListeners(eventClass: Constructable<Event<unknown>>, target: any, descriptor: PropertyDescriptor): void;
14
12
  }
15
13
  export declare class EventServiceFactory {
14
+ private static instance;
16
15
  static create(): Promise<EventService>;
17
16
  }