@quadnix/octo 0.0.22 → 0.0.24

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