@quadnix/octo 0.0.21 → 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 (352) hide show
  1. package/dist/app.type.d.ts +124 -27
  2. package/dist/app.type.js +77 -7
  3. package/dist/app.type.js.map +1 -1
  4. package/dist/decorators/action.decorator.d.ts +7 -8
  5. package/dist/decorators/action.decorator.js +45 -44
  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 +32 -1
  16. package/dist/decorators/factory.decorator.js +35 -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 -71
  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/{decorators → functions/container}/container.d.ts +45 -31
  94. package/dist/{decorators → functions/container}/container.js +90 -58
  95. package/dist/functions/container/container.js.map +1 -0
  96. package/dist/{decorators → functions/container}/test-container.d.ts +5 -13
  97. package/dist/{decorators → functions/container}/test-container.js +31 -43
  98. package/dist/functions/container/test-container.js.map +1 -0
  99. package/dist/functions/dependency/dependency.d.ts +6 -6
  100. package/dist/functions/dependency/dependency.js +4 -3
  101. package/dist/functions/dependency/dependency.js.map +1 -1
  102. package/dist/functions/diff/diff-metadata.d.ts +4 -6
  103. package/dist/functions/diff/diff-metadata.js +4 -3
  104. package/dist/functions/diff/diff-metadata.js.map +1 -1
  105. package/dist/functions/diff/diff.d.ts +12 -7
  106. package/dist/functions/diff/diff.js +9 -12
  107. package/dist/functions/diff/diff.js.map +1 -1
  108. package/dist/functions/diff/diff.utility.d.ts +24 -24
  109. package/dist/functions/diff/diff.utility.js +46 -25
  110. package/dist/functions/diff/diff.utility.js.map +1 -1
  111. package/dist/functions/hook/commit.hook.d.ts +14 -3
  112. package/dist/functions/hook/commit.hook.js +16 -16
  113. package/dist/functions/hook/commit.hook.js.map +1 -1
  114. package/dist/functions/hook/hook.interface.d.ts +7 -6
  115. package/dist/functions/hook/model-action.hook.d.ts +17 -5
  116. package/dist/functions/hook/model-action.hook.js +20 -39
  117. package/dist/functions/hook/model-action.hook.js.map +1 -1
  118. package/dist/functions/hook/resource-action.hook.d.ts +17 -5
  119. package/dist/functions/hook/resource-action.hook.js +18 -18
  120. package/dist/functions/hook/resource-action.hook.js.map +1 -1
  121. package/dist/functions/node/node-action.abstract.d.ts +7 -0
  122. package/dist/functions/node/node-action.abstract.js +20 -0
  123. package/dist/functions/node/node-action.abstract.js.map +1 -0
  124. package/dist/functions/node/node.abstract.d.ts +93 -0
  125. package/dist/functions/node/node.abstract.js +342 -0
  126. package/dist/functions/node/node.abstract.js.map +1 -0
  127. package/dist/functions/node/node.interface.d.ts +176 -0
  128. package/dist/functions/node/node.interface.js +2 -0
  129. package/dist/functions/node/node.interface.js.map +1 -0
  130. package/dist/functions/schema/schema.d.ts +4 -0
  131. package/dist/functions/schema/schema.js +38 -0
  132. package/dist/functions/schema/schema.js.map +1 -0
  133. package/dist/index.d.ts +31 -33
  134. package/dist/index.js +32 -16
  135. package/dist/index.js.map +1 -1
  136. package/dist/main.d.ts +34 -22
  137. package/dist/main.js +92 -53
  138. package/dist/main.js.map +1 -1
  139. package/dist/models/account/account.model.d.ts +23 -0
  140. package/dist/models/account/account.model.js +67 -0
  141. package/dist/models/account/account.model.js.map +1 -0
  142. package/dist/models/account/account.schema.d.ts +7 -0
  143. package/dist/models/account/account.schema.js +12 -0
  144. package/dist/models/account/account.schema.js.map +1 -0
  145. package/dist/models/app/app.model.d.ts +6 -15
  146. package/dist/models/app/app.model.js +26 -31
  147. package/dist/models/app/app.model.js.map +1 -1
  148. package/dist/models/app/app.schema.d.ts +3 -0
  149. package/dist/models/app/app.schema.js +21 -0
  150. package/dist/models/app/app.schema.js.map +1 -0
  151. package/dist/models/deployment/deployment.model.d.ts +6 -13
  152. package/dist/models/deployment/deployment.model.js +11 -16
  153. package/dist/models/deployment/deployment.model.js.map +1 -1
  154. package/dist/models/deployment/deployment.schema.d.ts +7 -0
  155. package/dist/models/deployment/deployment.schema.js +25 -0
  156. package/dist/models/deployment/deployment.schema.js.map +1 -0
  157. package/dist/models/environment/environment.model.d.ts +5 -15
  158. package/dist/models/environment/environment.model.js +10 -28
  159. package/dist/models/environment/environment.model.js.map +1 -1
  160. package/dist/models/environment/environment.schema.d.ts +13 -0
  161. package/dist/models/environment/environment.schema.js +38 -0
  162. package/dist/models/environment/environment.schema.js.map +1 -0
  163. package/dist/models/execution/execution.model.d.ts +6 -14
  164. package/dist/models/execution/execution.model.js +15 -28
  165. package/dist/models/execution/execution.model.js.map +1 -1
  166. package/dist/models/execution/execution.schema.d.ts +14 -0
  167. package/dist/models/execution/execution.schema.js +34 -0
  168. package/dist/models/execution/execution.schema.js.map +1 -0
  169. package/dist/models/filesystem/filesystem.model.d.ts +10 -0
  170. package/dist/models/filesystem/filesystem.model.js +43 -0
  171. package/dist/models/filesystem/filesystem.model.js.map +1 -0
  172. package/dist/models/filesystem/filesystem.schema.d.ts +3 -0
  173. package/dist/models/filesystem/filesystem.schema.js +21 -0
  174. package/dist/models/filesystem/filesystem.schema.js.map +1 -0
  175. package/dist/models/image/image.model.d.ts +7 -41
  176. package/dist/models/image/image.model.js +17 -32
  177. package/dist/models/image/image.model.js.map +1 -1
  178. package/dist/models/image/image.schema.d.ts +9 -0
  179. package/dist/models/image/image.schema.js +31 -0
  180. package/dist/models/image/image.schema.js.map +1 -0
  181. package/dist/models/model-action.interface.d.ts +5 -19
  182. package/dist/models/model.abstract.d.ts +28 -316
  183. package/dist/models/model.abstract.js +180 -557
  184. package/dist/models/model.abstract.js.map +1 -1
  185. package/dist/models/model.interface.d.ts +42 -21
  186. package/dist/models/pipeline/pipeline.model.d.ts +5 -8
  187. package/dist/models/pipeline/pipeline.model.js +10 -16
  188. package/dist/models/pipeline/pipeline.model.js.map +1 -1
  189. package/dist/models/pipeline/pipeline.schema.d.ts +4 -0
  190. package/dist/models/pipeline/pipeline.schema.js +22 -0
  191. package/dist/models/pipeline/pipeline.schema.js.map +1 -0
  192. package/dist/models/region/region.model.d.ts +8 -9
  193. package/dist/models/region/region.model.js +25 -17
  194. package/dist/models/region/region.model.js.map +1 -1
  195. package/dist/models/region/region.schema.d.ts +3 -0
  196. package/dist/models/region/region.schema.js +21 -0
  197. package/dist/models/region/region.schema.js.map +1 -0
  198. package/dist/models/server/server.model.d.ts +5 -11
  199. package/dist/models/server/server.model.js +13 -16
  200. package/dist/models/server/server.model.js.map +1 -1
  201. package/dist/models/server/server.schema.d.ts +6 -0
  202. package/dist/models/server/server.schema.js +24 -0
  203. package/dist/models/server/server.schema.js.map +1 -0
  204. package/dist/models/service/service.model.d.ts +4 -10
  205. package/dist/models/service/service.model.js +12 -16
  206. package/dist/models/service/service.model.js.map +1 -1
  207. package/dist/models/service/service.schema.d.ts +6 -0
  208. package/dist/models/service/service.schema.js +24 -0
  209. package/dist/models/service/service.schema.js.map +1 -0
  210. package/dist/models/subnet/subnet.model.d.ts +10 -35
  211. package/dist/models/subnet/subnet.model.js +16 -47
  212. package/dist/models/subnet/subnet.model.js.map +1 -1
  213. package/dist/models/subnet/subnet.schema.d.ts +33 -0
  214. package/dist/models/subnet/subnet.schema.js +48 -0
  215. package/dist/models/subnet/subnet.schema.js.map +1 -0
  216. package/dist/modules/module.abstract.d.ts +21 -0
  217. package/dist/modules/module.abstract.js +14 -0
  218. package/dist/modules/module.abstract.js.map +1 -0
  219. package/dist/modules/module.container.d.ts +32 -18
  220. package/dist/modules/module.container.js +134 -81
  221. package/dist/modules/module.container.js.map +1 -1
  222. package/dist/modules/module.interface.d.ts +15 -2
  223. package/dist/modules/test-module.container.d.ts +33 -15
  224. package/dist/modules/test-module.container.js +264 -35
  225. package/dist/modules/test-module.container.js.map +1 -1
  226. package/dist/overlays/anchor.abstract.d.ts +13 -8
  227. package/dist/overlays/anchor.abstract.js.map +1 -1
  228. package/dist/overlays/anchor.interface.d.ts +5 -8
  229. package/dist/overlays/anchor.schema.d.ts +8 -0
  230. package/dist/overlays/anchor.schema.js +9 -0
  231. package/dist/overlays/anchor.schema.js.map +1 -0
  232. package/dist/overlays/overlay-data.repository.d.ts +3 -6
  233. package/dist/overlays/overlay-data.repository.js +17 -38
  234. package/dist/overlays/overlay-data.repository.js.map +1 -1
  235. package/dist/overlays/overlay.abstract.d.ts +15 -17
  236. package/dist/overlays/overlay.abstract.js +30 -44
  237. package/dist/overlays/overlay.abstract.js.map +1 -1
  238. package/dist/overlays/overlay.interface.d.ts +3 -7
  239. package/dist/overlays/overlay.schema.d.ts +8 -0
  240. package/dist/overlays/overlay.schema.js +9 -0
  241. package/dist/overlays/overlay.schema.js.map +1 -0
  242. package/dist/resources/resource-action.interface.d.ts +4 -3
  243. package/dist/resources/resource-data.repository.d.ts +16 -7
  244. package/dist/resources/resource-data.repository.js +118 -42
  245. package/dist/resources/resource-data.repository.js.map +1 -1
  246. package/dist/resources/resource.abstract.d.ts +56 -16
  247. package/dist/resources/resource.abstract.js +326 -19
  248. package/dist/resources/resource.abstract.js.map +1 -1
  249. package/dist/resources/resource.interface.d.ts +39 -8
  250. package/dist/resources/resource.schema.d.ts +14 -0
  251. package/dist/resources/resource.schema.js +11 -0
  252. package/dist/resources/resource.schema.js.map +1 -0
  253. package/dist/services/capture/capture.service.d.ts +6 -7
  254. package/dist/services/capture/capture.service.js +8 -5
  255. package/dist/services/capture/capture.service.js.map +1 -1
  256. package/dist/services/event/event.service.d.ts +3 -4
  257. package/dist/services/event/event.service.js +7 -9
  258. package/dist/services/event/event.service.js.map +1 -1
  259. package/dist/services/input/input.service.d.ts +62 -6
  260. package/dist/services/input/input.service.js +290 -14
  261. package/dist/services/input/input.service.js.map +1 -1
  262. package/dist/services/schema-translation/schema-translation.service.d.ts +13 -0
  263. package/dist/services/schema-translation/schema-translation.service.js +42 -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 +1 -4
  266. package/dist/services/serialization/model/model-serialization.service.js +37 -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 +5 -5
  269. package/dist/services/serialization/resource/resource-serialization.service.js +71 -96
  270. package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
  271. package/dist/services/state-management/local.state-provider.d.ts +0 -1
  272. package/dist/services/state-management/local.state-provider.js +5 -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 +2 -3
  275. package/dist/services/state-management/state-management.service.js +19 -9
  276. package/dist/services/state-management/state-management.service.js.map +1 -1
  277. package/dist/services/state-management/state-provider.interface.d.ts +0 -1
  278. package/dist/services/state-management/test.state-provider.d.ts +0 -1
  279. package/dist/services/state-management/test.state-provider.js +2 -1
  280. package/dist/services/state-management/test.state-provider.js.map +1 -1
  281. package/dist/services/transaction/transaction.service.d.ts +18 -14
  282. package/dist/services/transaction/transaction.service.js +261 -132
  283. package/dist/services/transaction/transaction.service.js.map +1 -1
  284. package/dist/services/validation/validation.service.d.ts +2 -3
  285. package/dist/services/validation/validation.service.js +27 -12
  286. package/dist/services/validation/validation.service.js.map +1 -1
  287. package/dist/utilities/node/node.utility.d.ts +4 -0
  288. package/dist/utilities/node/node.utility.js +22 -0
  289. package/dist/utilities/node/node.utility.js.map +1 -0
  290. package/dist/utilities/object/object.utility.d.ts +3 -0
  291. package/dist/utilities/object/object.utility.js +33 -0
  292. package/dist/utilities/object/object.utility.js.map +1 -1
  293. package/dist/utilities/test-helpers/test-classes.d.ts +57 -0
  294. package/dist/utilities/test-helpers/test-classes.js +76 -0
  295. package/dist/utilities/test-helpers/test-classes.js.map +1 -0
  296. package/dist/utilities/test-helpers/test-models.d.ts +41 -0
  297. package/dist/utilities/test-helpers/test-models.js +224 -0
  298. package/dist/utilities/test-helpers/test-models.js.map +1 -0
  299. package/dist/utilities/test-helpers/test-overlays.d.ts +10 -0
  300. package/dist/utilities/test-helpers/test-overlays.js +53 -0
  301. package/dist/utilities/test-helpers/test-overlays.js.map +1 -0
  302. package/dist/utilities/test-helpers/test-resources.d.ts +22 -0
  303. package/dist/utilities/test-helpers/test-resources.js +162 -0
  304. package/dist/utilities/test-helpers/test-resources.js.map +1 -0
  305. package/dist/utilities/validation/validation.utility.d.ts +31 -3
  306. package/dist/utilities/validation/validation.utility.js +121 -2
  307. package/dist/utilities/validation/validation.utility.js.map +1 -1
  308. package/package.json +6 -6
  309. package/dist/decorators/container.js.map +0 -1
  310. package/dist/decorators/test-container.js.map +0 -1
  311. package/dist/events/error.event.d.ts +0 -35
  312. package/dist/events/error.event.js +0 -36
  313. package/dist/events/error.event.js.map +0 -1
  314. package/dist/events/hook.event.d.ts +0 -194
  315. package/dist/events/hook.event.js +0 -195
  316. package/dist/events/hook.event.js.map +0 -1
  317. package/dist/models/app/app.interface.d.ts +0 -9
  318. package/dist/models/app/app.interface.js +0 -2
  319. package/dist/models/app/app.interface.js.map +0 -1
  320. package/dist/models/deployment/deployment.interface.d.ts +0 -9
  321. package/dist/models/deployment/deployment.interface.js +0 -2
  322. package/dist/models/deployment/deployment.interface.js.map +0 -1
  323. package/dist/models/environment/environment.interface.d.ts +0 -12
  324. package/dist/models/environment/environment.interface.js +0 -2
  325. package/dist/models/environment/environment.interface.js.map +0 -1
  326. package/dist/models/execution/execution.interface.d.ts +0 -14
  327. package/dist/models/execution/execution.interface.js +0 -2
  328. package/dist/models/execution/execution.interface.js.map +0 -1
  329. package/dist/models/image/image.interface.d.ts +0 -12
  330. package/dist/models/image/image.interface.js +0 -2
  331. package/dist/models/image/image.interface.js.map +0 -1
  332. package/dist/models/pipeline/pipeline.interface.d.ts +0 -10
  333. package/dist/models/pipeline/pipeline.interface.js +0 -2
  334. package/dist/models/pipeline/pipeline.interface.js.map +0 -1
  335. package/dist/models/region/region.interface.d.ts +0 -9
  336. package/dist/models/region/region.interface.js +0 -2
  337. package/dist/models/region/region.interface.js.map +0 -1
  338. package/dist/models/server/server.interface.d.ts +0 -9
  339. package/dist/models/server/server.interface.js +0 -2
  340. package/dist/models/server/server.interface.js.map +0 -1
  341. package/dist/models/service/service.interface.d.ts +0 -9
  342. package/dist/models/service/service.interface.js +0 -2
  343. package/dist/models/service/service.interface.js.map +0 -1
  344. package/dist/models/subnet/subnet.interface.d.ts +0 -13
  345. package/dist/models/subnet/subnet.interface.js +0 -2
  346. package/dist/models/subnet/subnet.interface.js.map +0 -1
  347. package/dist/overlays/overlay.service.d.ts +0 -18
  348. package/dist/overlays/overlay.service.js +0 -45
  349. package/dist/overlays/overlay.service.js.map +0 -1
  350. package/dist/resources/shared-resource.abstract.d.ts +0 -13
  351. package/dist/resources/shared-resource.abstract.js +0 -47
  352. package/dist/resources/shared-resource.abstract.js.map +0 -1
@@ -1,13 +1,69 @@
1
- import type { ActionInputs } from '../../app.type.js';
1
+ import type { UnknownModel, UnknownModule, UnknownOverlay, UnknownResource } from '../../app.type.js';
2
+ import { OverlayDataRepository } from '../../overlays/overlay-data.repository.js';
2
3
  import { ResourceDataRepository } from '../../resources/resource-data.repository.js';
3
4
  export declare class InputService {
5
+ private readonly overlayDataRepository;
4
6
  private readonly resourceDataRepository;
5
- private readonly inputs;
6
- constructor(resourceDataRepository: ResourceDataRepository);
7
- getInput(name: string): (typeof this.inputs)[keyof typeof this.inputs];
8
- registerInputs(inputs: ActionInputs): void;
7
+ private inputs;
8
+ private metadata;
9
+ private models;
10
+ private modules;
11
+ private overlays;
12
+ private resources;
13
+ private tags;
14
+ constructor(overlayDataRepository: OverlayDataRepository, resourceDataRepository: ResourceDataRepository);
15
+ getAllNodeKeys(moduleId: string): string[];
16
+ getMetadataKeys(moduleId: string): string[];
17
+ getModule<M extends UnknownModule>(moduleId: string): M | undefined;
18
+ getModuleIdFromModel(model: UnknownModel): string;
19
+ getModuleIdFromOverlay(overlay: UnknownOverlay): string;
20
+ getModuleIdFromResource(resource: UnknownResource): string;
21
+ getModuleResources(moduleId: string): UnknownResource[];
22
+ /**
23
+ * Registers the inputs passed to an instance of module.
24
+ * It maps the input key provided to the module with the input value.
25
+ * The value can be a direct value, or can be a reference "${{var}}" to
26
+ * another input, module, overlay, or resource.
27
+ */
28
+ registerInput(moduleId: string, key: string, value: unknown): void;
29
+ registerMetadata(moduleId: string, key: string, value: unknown): void;
30
+ /**
31
+ * Registers the model generated by an instance of module.
32
+ * The key is a reference to the model generated by the module, and maps directly to the model instance.
33
+ */
34
+ registerModel(moduleId: string, model: UnknownModel): void;
35
+ registerModule(moduleId: string, module: UnknownModule): void;
36
+ /**
37
+ * Registers the overlay generated by an instance of module.
38
+ * The key is a reference to the overlay generated by the module, and maps to the overlay context.
39
+ */
40
+ registerOverlay(moduleId: string, overlay: UnknownOverlay): void;
41
+ /**
42
+ * Registers the resource generated by an instance of module.
43
+ * The key is a reference to the resource generated by the module, and maps to the resource context.
44
+ */
45
+ registerResource(moduleId: string, resource: UnknownResource): void;
46
+ registerTag(scope: true | {
47
+ moduleId: string;
48
+ } | {
49
+ moduleId: string;
50
+ resourceContext: string;
51
+ }, tags: {
52
+ [key: string]: string;
53
+ }): void;
54
+ resolve(key: string): unknown | undefined;
55
+ /**
56
+ * Given an input key, returns the resolved input key.
57
+ * An input key is resolved when the value is not a pointer to another input.
58
+ * Otherwise, an input key could be referencing another input, module, overlay, or resource.
59
+ * E.g. module.input.key = ${{another_module.input.key}}
60
+ * This method traverses the value of the input key recursively until it is resolved.
61
+ */
62
+ private resolveInputKey;
63
+ private resolveInputValue;
64
+ private resolveObjectPath;
9
65
  }
10
66
  export declare class InputServiceFactory {
11
67
  private static instance;
12
- static create(): Promise<InputService>;
68
+ static create(forceNew?: boolean): Promise<InputService>;
13
69
  }
@@ -4,34 +4,310 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { Container } from '../../decorators/container.js';
8
7
  import { Factory } from '../../decorators/factory.decorator.js';
8
+ import { InputRegistrationError, InputResolutionError } from '../../errors/index.js';
9
+ import { Container } from '../../functions/container/container.js';
10
+ import { OverlayDataRepository } from '../../overlays/overlay-data.repository.js';
9
11
  import { ResourceDataRepository } from '../../resources/resource-data.repository.js';
12
+ import { ObjectUtility } from '../../utilities/object/object.utility.js';
10
13
  export class InputService {
11
- constructor(resourceDataRepository) {
14
+ constructor(overlayDataRepository, resourceDataRepository) {
15
+ this.overlayDataRepository = overlayDataRepository;
12
16
  this.resourceDataRepository = resourceDataRepository;
13
17
  this.inputs = {};
18
+ this.metadata = {};
19
+ this.models = {};
20
+ this.modules = {};
21
+ this.overlays = {};
22
+ this.resources = {};
23
+ this.tags = {
24
+ _global: {},
25
+ };
14
26
  }
15
- getInput(name) {
16
- if (name.startsWith('resource')) {
17
- const resourceId = name.substring('resource.'.length);
18
- return this.resourceDataRepository.getById(resourceId);
27
+ getAllNodeKeys(moduleId) {
28
+ const keys = [];
29
+ for (const key of Object.keys(this.models)) {
30
+ if (key.startsWith(`${moduleId}.model`)) {
31
+ keys.push(key);
32
+ }
19
33
  }
20
- else {
21
- return this.inputs[name];
34
+ for (const key of Object.keys(this.overlays)) {
35
+ if (key.startsWith(`${moduleId}.overlay`)) {
36
+ keys.push(key);
37
+ }
22
38
  }
39
+ for (const key of Object.keys(this.resources)) {
40
+ if (key.startsWith(`${moduleId}.resource`)) {
41
+ keys.push(key);
42
+ }
43
+ }
44
+ return keys;
45
+ }
46
+ getMetadataKeys(moduleId) {
47
+ return Object.keys(this.metadata).filter((key) => key.startsWith(`${moduleId}.metadata`));
48
+ }
49
+ getModule(moduleId) {
50
+ const moduleKey = `${moduleId}.module`;
51
+ return this.modules[moduleKey];
52
+ }
53
+ getModuleIdFromModel(model) {
54
+ const modelContext = model.getContext();
55
+ const [key] = Object.entries(this.models).find(([, m]) => m.getContext() === modelContext);
56
+ return key.split('.')[0];
57
+ }
58
+ getModuleIdFromOverlay(overlay) {
59
+ const overlayContext = overlay.getContext();
60
+ const [key] = Object.entries(this.overlays).find(([, o]) => o === overlayContext);
61
+ return key.split('.')[0];
62
+ }
63
+ getModuleIdFromResource(resource) {
64
+ const context = resource.getContext();
65
+ const [key] = Object.entries(this.resources).find(([, r]) => r === context);
66
+ return key.split('.')[0];
67
+ }
68
+ getModuleResources(moduleId) {
69
+ const resourceKeys = [];
70
+ for (const key of Object.keys(this.resources)) {
71
+ if (key.startsWith(`${moduleId}.resource`)) {
72
+ resourceKeys.push(this.resources[key]);
73
+ }
74
+ }
75
+ return resourceKeys.map((r) => this.resourceDataRepository.getNewResourceByContext(r));
76
+ }
77
+ /**
78
+ * Registers the inputs passed to an instance of module.
79
+ * It maps the input key provided to the module with the input value.
80
+ * The value can be a direct value, or can be a reference "${{var}}" to
81
+ * another input, module, overlay, or resource.
82
+ */
83
+ registerInput(moduleId, key, value) {
84
+ const inputKey = `${moduleId}.input.${key}`;
85
+ if (this.inputs.hasOwnProperty(inputKey)) {
86
+ throw new InputRegistrationError('Input has already been registered!', inputKey);
87
+ }
88
+ this.inputs[inputKey] = value;
23
89
  }
24
- registerInputs(inputs) {
25
- for (const key in inputs) {
26
- this.inputs[key] = inputs[key];
90
+ registerMetadata(moduleId, key, value) {
91
+ const metadataKey = `${moduleId}.metadata.${key}`;
92
+ if (this.metadata.hasOwnProperty(metadataKey)) {
93
+ throw new InputRegistrationError('Metadata has already been registered!', metadataKey);
27
94
  }
95
+ this.metadata[metadataKey] = value;
96
+ }
97
+ /**
98
+ * Registers the model generated by an instance of module.
99
+ * The key is a reference to the model generated by the module, and maps directly to the model instance.
100
+ */
101
+ registerModel(moduleId, model) {
102
+ const modelKey = `${moduleId}.model.${model.constructor.NODE_NAME}`;
103
+ if (this.models.hasOwnProperty(modelKey)) {
104
+ throw new InputRegistrationError('Model has already been registered!', modelKey);
105
+ }
106
+ this.models[modelKey] = model;
107
+ }
108
+ registerModule(moduleId, module) {
109
+ const moduleKey = `${moduleId}.module`;
110
+ if (this.modules.hasOwnProperty(moduleKey)) {
111
+ throw new InputRegistrationError('Module has already been registered!', moduleKey);
112
+ }
113
+ this.modules[moduleKey] = module;
114
+ }
115
+ /**
116
+ * Registers the overlay generated by an instance of module.
117
+ * The key is a reference to the overlay generated by the module, and maps to the overlay context.
118
+ */
119
+ registerOverlay(moduleId, overlay) {
120
+ const overlayKey = `${moduleId}.overlay.${overlay.overlayId}`;
121
+ if (this.overlays.hasOwnProperty(overlayKey)) {
122
+ throw new InputRegistrationError('Overlay has already been registered!', overlayKey);
123
+ }
124
+ this.overlays[overlayKey] = overlay.getContext();
125
+ }
126
+ /**
127
+ * Registers the resource generated by an instance of module.
128
+ * The key is a reference to the resource generated by the module, and maps to the resource context.
129
+ */
130
+ registerResource(moduleId, resource) {
131
+ const resourceKey = `${moduleId}.resource.${resource.resourceId}`;
132
+ if (this.resources.hasOwnProperty(resourceKey)) {
133
+ throw new InputRegistrationError('Resource has already been registered!', resourceKey);
134
+ }
135
+ this.resources[resourceKey] = resource.getContext();
136
+ }
137
+ registerTag(scope, tags) {
138
+ const hasResourceContext = (scope) => {
139
+ return scope.hasOwnProperty('resourceContext');
140
+ };
141
+ const moduleId = scope === true ? '_global' : scope.moduleId;
142
+ if (!moduleId) {
143
+ throw new InputRegistrationError('Module not found!', 'undefined');
144
+ }
145
+ if (moduleId !== '_global' && !this.getModule(moduleId)) {
146
+ throw new InputRegistrationError('Module not found!', moduleId);
147
+ }
148
+ if (hasResourceContext(scope)) {
149
+ const moduleResourceContexts = this.getModuleResources(moduleId).map((r) => r.getContext());
150
+ if (!moduleResourceContexts.includes(scope.resourceContext)) {
151
+ throw new InputRegistrationError('Resource not found!', scope.resourceContext);
152
+ }
153
+ }
154
+ if (!this.tags.hasOwnProperty(moduleId)) {
155
+ this.tags[moduleId] = {};
156
+ }
157
+ let scopedTagContainer = this.tags[moduleId];
158
+ if (hasResourceContext(scope)) {
159
+ if (!scopedTagContainer.hasOwnProperty(scope.resourceContext)) {
160
+ scopedTagContainer[scope.resourceContext] = {};
161
+ }
162
+ scopedTagContainer = scopedTagContainer[scope.resourceContext];
163
+ }
164
+ for (const [key, value] of Object.entries(tags)) {
165
+ if (scopedTagContainer.hasOwnProperty(key)) {
166
+ throw new InputRegistrationError('Tag has already been registered!', key);
167
+ }
168
+ scopedTagContainer[key] = value;
169
+ }
170
+ }
171
+ resolve(key) {
172
+ if (!['metadata', 'tag'].includes(key.split('.')[1])) {
173
+ key = this.resolveInputKey(key);
174
+ }
175
+ const keyParts = key.split('.');
176
+ switch (keyParts[1]) {
177
+ case 'input': {
178
+ const input = this.inputs[key];
179
+ if (typeof input === 'object' && input !== null) {
180
+ ObjectUtility.onEveryNestedKey(input, (parent, currentKey, currentValue) => {
181
+ parent[currentKey] = this.resolveInputValue(currentValue);
182
+ });
183
+ }
184
+ return input;
185
+ }
186
+ case 'metadata': {
187
+ return this.metadata[key];
188
+ }
189
+ case 'model': {
190
+ const model = this.models[keyParts.slice(0, 3).join('.')];
191
+ if (!model) {
192
+ return undefined;
193
+ }
194
+ return this.resolveObjectPath(model, keyParts.slice(3).join('.'));
195
+ }
196
+ case 'overlay': {
197
+ const overlayContext = this.overlays[keyParts.slice(0, 3).join('.')];
198
+ const overlay = this.overlayDataRepository.getByContext(overlayContext);
199
+ if (!overlay) {
200
+ return undefined;
201
+ }
202
+ return this.resolveObjectPath(overlay, keyParts.slice(3).join('.'));
203
+ }
204
+ case 'resource': {
205
+ const resourceContext = this.resources[keyParts.slice(0, 3).join('.')];
206
+ const resource = this.resourceDataRepository.getNewResourceByContext(resourceContext);
207
+ if (!resource) {
208
+ return undefined;
209
+ }
210
+ return this.resolveObjectPath(resource, keyParts.slice(3).join('.'));
211
+ }
212
+ case 'tag': {
213
+ const moduleId = keyParts[0];
214
+ const resourceContext = keyParts[2];
215
+ const moduleTags = Object.keys(this.tags[moduleId] || {})
216
+ .filter((t) => typeof this.tags[moduleId][t] === 'string')
217
+ .reduce((accumulator, current) => {
218
+ accumulator[current] = this.tags[moduleId][current];
219
+ return accumulator;
220
+ }, {});
221
+ const resourceTags = resourceContext && typeof this.tags[moduleId]?.[resourceContext] === 'object'
222
+ ? this.tags[moduleId][resourceContext]
223
+ : {};
224
+ const resourceOverriddenTags = {
225
+ ...(this.tags['_global'] || {}),
226
+ ...moduleTags,
227
+ ...resourceTags,
228
+ };
229
+ ObjectUtility.onEveryNestedKey(resourceOverriddenTags, (parent, currentKey, currentValue) => {
230
+ parent[currentKey] = this.resolveInputValue(currentValue);
231
+ });
232
+ for (const [key, value] of Object.entries(resourceOverriddenTags)) {
233
+ if (value === undefined) {
234
+ throw new InputResolutionError('Tag value is undefined!', key);
235
+ }
236
+ else if (typeof value !== 'string') {
237
+ throw new InputResolutionError('Tag value is not a string!', key);
238
+ }
239
+ }
240
+ return resourceOverriddenTags;
241
+ }
242
+ default:
243
+ return undefined;
244
+ }
245
+ }
246
+ /**
247
+ * Given an input key, returns the resolved input key.
248
+ * An input key is resolved when the value is not a pointer to another input.
249
+ * Otherwise, an input key could be referencing another input, module, overlay, or resource.
250
+ * E.g. module.input.key = ${{another_module.input.key}}
251
+ * This method traverses the value of the input key recursively until it is resolved.
252
+ */
253
+ resolveInputKey(inputKey, maxRecursion = 15, originalInputKey) {
254
+ if (maxRecursion === 0) {
255
+ throw new InputResolutionError('Input could not be resolved!', originalInputKey || inputKey);
256
+ }
257
+ const value = this.inputs[inputKey];
258
+ // If an input key is not found, or is not a string, it is either undefined, or is a non-input value.
259
+ // In this case, the value is resolved and the current input key is returned.
260
+ if (!value || typeof value !== 'string') {
261
+ return inputKey;
262
+ }
263
+ // An input key without the ${{var}} pattern is already resolved.
264
+ const pattern = value.match(/^\$\{\{(.+)}}$/);
265
+ if (!pattern) {
266
+ return inputKey;
267
+ }
268
+ return this.resolveInputKey(pattern[1].trim(), maxRecursion - 1, originalInputKey || inputKey);
269
+ }
270
+ resolveInputValue(inputValue, maxRecursion = 15, originalInputValue) {
271
+ if (maxRecursion === 0) {
272
+ throw new InputResolutionError('Input could not be resolved!', (originalInputValue || inputValue));
273
+ }
274
+ // If an input value is not found, or is not a string, it is either undefined, or is a non-input value.
275
+ // In this case, the value is resolved and that current input value is returned.
276
+ if (!inputValue || typeof inputValue !== 'string') {
277
+ return inputValue;
278
+ }
279
+ // An input value without the ${{var}} pattern is already resolved.
280
+ const pattern = inputValue.match(/^\$\{\{(.+)}}$/);
281
+ if (!pattern) {
282
+ return inputValue;
283
+ }
284
+ return this.resolveInputValue(this.resolve(pattern[1].trim()), maxRecursion - 1, originalInputValue || inputValue);
285
+ }
286
+ // https://stackoverflow.com/a/69459511/1834562
287
+ resolveObjectPath(subject, path) {
288
+ if (!path.length) {
289
+ return subject;
290
+ }
291
+ return path.split('.').reduce((obj, key) => obj && obj[key], subject);
28
292
  }
29
293
  }
30
294
  let InputServiceFactory = class InputServiceFactory {
31
- static async create() {
32
- const resourceDataRepository = await Container.get(ResourceDataRepository);
295
+ static async create(forceNew = false) {
296
+ const overlayDataRepository = await Container.getInstance().get(OverlayDataRepository);
297
+ const resourceDataRepository = await Container.getInstance().get(ResourceDataRepository);
33
298
  if (!this.instance) {
34
- this.instance = new InputService(resourceDataRepository);
299
+ this.instance = new InputService(overlayDataRepository, resourceDataRepository);
300
+ }
301
+ if (forceNew) {
302
+ this.instance['inputs'] = {};
303
+ this.instance['metadata'] = {};
304
+ this.instance['models'] = {};
305
+ this.instance['modules'] = {};
306
+ this.instance['overlays'] = {};
307
+ this.instance['resources'] = {};
308
+ this.instance['tags'] = {
309
+ _global: {},
310
+ };
35
311
  }
36
312
  return this.instance;
37
313
  }
@@ -1 +1 @@
1
- {"version":3,"file":"input.service.js","sourceRoot":"","sources":["../../../src/services/input/input.service.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAErF,MAAM,OAAO,YAAY;IAGvB,YAA6B,sBAA8C;QAA9C,2BAAsB,GAAtB,sBAAsB,CAAwB;QAF1D,WAAM,GAAiB,EAAE,CAAC;IAEmC,CAAC;IAE/E,QAAQ,CAAC,IAAY;QACnB,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAE,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,cAAc,CAAC,MAAoB;QACjC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF;AAGM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAG9B,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,sBAAsB,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AAVY,mBAAmB;IAD/B,OAAO,CAAe,YAAY,CAAC;GACvB,mBAAmB,CAU/B"}
1
+ {"version":3,"file":"input.service.js","sourceRoot":"","sources":["../../../src/services/input/input.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Constructable } from '../../app.type.js';
2
+ export declare class SchemaTranslationService {
3
+ private readonly translations;
4
+ getTranslatedSchema<S1, S2>(from: Constructable<S1>): {
5
+ schema: Constructable<S2>;
6
+ translator: (synth: S2) => S1;
7
+ } | undefined;
8
+ registerSchemaTranslation<S1, S2>(from: Constructable<S1>, to: Constructable<S2>, translator: (synth: S2) => S1): void;
9
+ }
10
+ export declare class SchemaTranslationServiceFactory {
11
+ private static instance;
12
+ static create(): Promise<SchemaTranslationService>;
13
+ }
@@ -0,0 +1,42 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Factory } from '../../decorators/factory.decorator.js';
8
+ export class SchemaTranslationService {
9
+ constructor() {
10
+ this.translations = new Map();
11
+ }
12
+ getTranslatedSchema(from) {
13
+ if (!this.translations.has(from)) {
14
+ return undefined;
15
+ }
16
+ const translation = this.translations.get(from);
17
+ const translationKey = translation.keys().next();
18
+ return {
19
+ schema: translationKey.value,
20
+ translator: translation.get(translationKey.value),
21
+ };
22
+ }
23
+ registerSchemaTranslation(from, to, translator) {
24
+ if (!this.translations.has(from)) {
25
+ this.translations.set(from, new Map());
26
+ }
27
+ this.translations.get(from).set(to, translator);
28
+ }
29
+ }
30
+ let SchemaTranslationServiceFactory = class SchemaTranslationServiceFactory {
31
+ static async create() {
32
+ if (!this.instance) {
33
+ this.instance = new SchemaTranslationService();
34
+ }
35
+ return this.instance;
36
+ }
37
+ };
38
+ SchemaTranslationServiceFactory = __decorate([
39
+ Factory(SchemaTranslationService)
40
+ ], SchemaTranslationServiceFactory);
41
+ export { SchemaTranslationServiceFactory };
42
+ //# sourceMappingURL=schema-translation.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-translation.service.js","sourceRoot":"","sources":["../../../src/services/schema-translation/schema-translation.service.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAEhE,MAAM,OAAO,wBAAwB;IAArC;QACmB,iBAAY,GAC3B,IAAI,GAAG,EAAE,CAAC;IA2Bd,CAAC;IAzBC,mBAAmB,CACjB,IAAuB;QAEvB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACjD,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACjD,OAAO;YACL,MAAM,EAAE,cAAc,CAAC,KAAK;YAC5B,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAA+B;SAChF,CAAC;IACJ,CAAC;IAED,yBAAyB,CACvB,IAAuB,EACvB,EAAqB,EACrB,UAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;CACF;AAGM,IAAM,+BAA+B,GAArC,MAAM,+BAA+B;IAG1C,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,wBAAwB,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AATY,+BAA+B;IAD3C,OAAO,CAA2B,wBAAwB,CAAC;GAC/C,+BAA+B,CAS3C"}
@@ -1,10 +1,7 @@
1
1
  import { type ModelSerializedOutput, type UnknownModel } from '../../../app.type.js';
2
- import { OverlayDataRepository } from '../../../overlays/overlay-data.repository.js';
3
2
  export declare class ModelSerializationService {
4
- private readonly overlayDataRepository;
5
3
  private MODEL_DESERIALIZATION_TIMEOUT_IN_MS;
6
4
  private readonly classMapping;
7
- constructor(overlayDataRepository: OverlayDataRepository);
8
5
  private _deserialize;
9
6
  deserialize(serializedOutput: ModelSerializedOutput, { freeze }?: {
10
7
  freeze?: boolean;
@@ -15,5 +12,5 @@ export declare class ModelSerializationService {
15
12
  }
16
13
  export declare class ModelSerializationServiceFactory {
17
14
  private static instance;
18
- static create(forceNew?: boolean): Promise<ModelSerializationService>;
15
+ static create(): Promise<ModelSerializationService>;
19
16
  }
@@ -7,20 +7,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { ModelType, } from '../../../app.type.js';
11
- import { Container } from '../../../decorators/container.js';
10
+ import { NodeType, } from '../../../app.type.js';
12
11
  import { EventSource } from '../../../decorators/event-source.decorator.js';
13
12
  import { Factory } from '../../../decorators/factory.decorator.js';
14
- import { AnchorRegistrationEvent, ModelRegistrationEvent, OverlayRegistrationEvent, } from '../../../events/registration.event.js';
15
- import { ModelDeserializedEvent, ModelSerializedEvent } from '../../../events/serialization.event.js';
13
+ import { AnchorRegistrationEvent, ModelDeserializedEvent, ModelRegistrationEvent, ModelSerializedEvent, OverlayRegistrationEvent, } from '../../../events/index.js';
14
+ import { Container } from '../../../functions/container/container.js';
16
15
  import { Dependency } from '../../../functions/dependency/dependency.js';
17
16
  import { OverlayDataRepository } from '../../../overlays/overlay-data.repository.js';
18
17
  import { ObjectUtility } from '../../../utilities/object/object.utility.js';
19
- import { EventService } from '../../event/event.service.js';
20
18
  export class ModelSerializationService {
21
- constructor(overlayDataRepository) {
22
- this.overlayDataRepository = overlayDataRepository;
23
- this.MODEL_DESERIALIZATION_TIMEOUT_IN_MS = 5000;
19
+ constructor() {
20
+ this.MODEL_DESERIALIZATION_TIMEOUT_IN_MS = 3000;
24
21
  this.classMapping = {};
25
22
  }
26
23
  async _deserialize(serializedOutput, freeze) {
@@ -100,16 +97,15 @@ export class ModelSerializationService {
100
97
  return { overlays, root };
101
98
  }
102
99
  async deserialize(serializedOutput, { freeze = true } = {}) {
103
- const newOverlays = this.overlayDataRepository.getByProperties();
104
100
  const { overlays: oldOverlays, root } = await this._deserialize(serializedOutput, freeze);
105
101
  // Refresh the overlay data repository.
106
- await Container.get(OverlayDataRepository, {
107
- args: [true, oldOverlays, newOverlays],
108
- });
109
- EventService.getInstance().emit(new ModelDeserializedEvent());
102
+ await Container.getInstance().get(OverlayDataRepository, { args: [true, oldOverlays] });
110
103
  return root;
111
104
  }
112
105
  registerClass(className, deserializationClass) {
106
+ if (this.classMapping[className]) {
107
+ throw new Error(`Class "${className}" is already registered!`);
108
+ }
113
109
  this.classMapping[className] = deserializationClass;
114
110
  }
115
111
  async serialize(root) {
@@ -119,13 +115,6 @@ export class ModelSerializationService {
119
115
  const models = {};
120
116
  const overlays = [];
121
117
  for (const model of boundary) {
122
- // Skip serializing models marked as deleted.
123
- if (model.isMarkedDeleted()) {
124
- if (model.MODEL_TYPE === ModelType.OVERLAY) {
125
- this.overlayDataRepository.remove(model);
126
- }
127
- continue;
128
- }
129
118
  for (const d of model.getDependencies()) {
130
119
  // Skip dependencies that are not part of boundary.
131
120
  if (!boundary.some((m) => m.getContext() === d.from.getContext()) ||
@@ -134,26 +123,40 @@ export class ModelSerializationService {
134
123
  }
135
124
  dependencies.push(d.synth());
136
125
  }
137
- if (model.MODEL_TYPE === ModelType.MODEL) {
126
+ if (model.constructor.NODE_TYPE === NodeType.MODEL) {
138
127
  const context = model.getContext();
139
128
  if (!models[context]) {
140
- models[context] = { className: model.constructor.name, model: model.synth() };
129
+ models[context] = {
130
+ className: `${model.constructor.NODE_PACKAGE}/${model.constructor.name}`,
131
+ model: model.synth(),
132
+ };
141
133
  }
142
134
  for (const a of model.getAnchors()) {
143
- anchors.push({ ...a.synth(), className: a.constructor.name });
135
+ anchors.push({
136
+ ...a.synth(),
137
+ className: `${a.constructor.NODE_PACKAGE}/${a.constructor.name}`,
138
+ });
144
139
  }
145
140
  }
146
- else if (model.MODEL_TYPE === ModelType.OVERLAY) {
147
- overlays.push({ className: model.constructor.name, overlay: model.synth() });
141
+ else if (model.constructor.NODE_TYPE === NodeType.OVERLAY) {
142
+ overlays.push({
143
+ className: `${model.constructor.NODE_PACKAGE}/${model.constructor.name}`,
144
+ overlay: model.synth(),
145
+ });
148
146
  }
149
147
  }
150
- EventService.getInstance().emit(new ModelSerializedEvent());
151
148
  return { anchors, dependencies, models, overlays };
152
149
  }
153
150
  setModelDeserializationTimeout(timeoutInMs) {
154
151
  this.MODEL_DESERIALIZATION_TIMEOUT_IN_MS = timeoutInMs;
155
152
  }
156
153
  }
154
+ __decorate([
155
+ EventSource(ModelDeserializedEvent),
156
+ __metadata("design:type", Function),
157
+ __metadata("design:paramtypes", [Object, Object]),
158
+ __metadata("design:returntype", Promise)
159
+ ], ModelSerializationService.prototype, "deserialize", null);
157
160
  __decorate([
158
161
  EventSource(AnchorRegistrationEvent),
159
162
  EventSource(ModelRegistrationEvent),
@@ -162,15 +165,16 @@ __decorate([
162
165
  __metadata("design:paramtypes", [String, Object]),
163
166
  __metadata("design:returntype", void 0)
164
167
  ], ModelSerializationService.prototype, "registerClass", null);
168
+ __decorate([
169
+ EventSource(ModelSerializedEvent),
170
+ __metadata("design:type", Function),
171
+ __metadata("design:paramtypes", [Object]),
172
+ __metadata("design:returntype", Promise)
173
+ ], ModelSerializationService.prototype, "serialize", null);
165
174
  let ModelSerializationServiceFactory = class ModelSerializationServiceFactory {
166
- static async create(forceNew = false) {
167
- const overlayDataRepository = await Container.get(OverlayDataRepository);
175
+ static async create() {
168
176
  if (!this.instance) {
169
- this.instance = new ModelSerializationService(overlayDataRepository);
170
- }
171
- if (forceNew) {
172
- const newInstance = new ModelSerializationService(overlayDataRepository);
173
- Object.keys(this.instance).forEach((key) => (this.instance[key] = newInstance[key]));
177
+ this.instance = new ModelSerializationService();
174
178
  }
175
179
  return this.instance;
176
180
  }