@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
@@ -5,124 +5,177 @@ 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
- import { ModuleEvent } from '../events/module.event.js';
8
+ import { InputRegistrationError, ModuleError } from '../errors/index.js';
9
+ import { ModuleEvent } from '../events/index.js';
10
+ import { Container } from '../functions/container/container.js';
9
11
  import { CommitHook } from '../functions/hook/commit.hook.js';
10
12
  import { ModelActionHook } from '../functions/hook/model-action.hook.js';
11
13
  import { ResourceActionHook } from '../functions/hook/resource-action.hook.js';
14
+ import { getSchemaInstance, getSchemaKeys } from '../functions/schema/schema.js';
15
+ import { OverlayDataRepository } from '../overlays/overlay-data.repository.js';
16
+ import { AOverlay } from '../overlays/overlay.abstract.js';
12
17
  import { EventService } from '../services/event/event.service.js';
18
+ import { InputService } from '../services/input/input.service.js';
13
19
  export class ModuleContainer {
14
- constructor(commitHook, modelActionHook, resourceActionHook) {
15
- this.commitHook = commitHook;
16
- this.modelActionHook = modelActionHook;
17
- this.resourceActionHook = resourceActionHook;
20
+ constructor(eventService, inputService, overlayDataRepository) {
21
+ this.eventService = eventService;
22
+ this.inputService = inputService;
23
+ this.overlayDataRepository = overlayDataRepository;
18
24
  this.modules = [];
19
- this.outputs = {};
20
25
  }
21
26
  async apply() {
27
+ const result = {};
22
28
  for (const moduleMetadata of this.modules) {
23
- this.setApplyOrder(moduleMetadata);
24
- }
25
- this.modules.sort((a, b) => a.applyOrder - b.applyOrder);
26
- for (const moduleMetadata of this.modules) {
27
- if (moduleMetadata.applied || moduleMetadata.hidden) {
29
+ if (moduleMetadata.hidden) {
28
30
  continue;
29
31
  }
30
- const { module, properties } = moduleMetadata;
31
- this.commitHook.collectHooks([moduleMetadata]);
32
- this.modelActionHook.collectHooks([moduleMetadata]);
33
- this.resourceActionHook.collectHooks([moduleMetadata]);
34
- const args = (properties.imports || []).reduce((accumulator, importedModule) => {
35
- const name = typeof importedModule === 'string' ? importedModule : importedModule.name;
36
- if (name in this.outputs) {
37
- accumulator.push(this.outputs[name]);
32
+ const { instances, module } = moduleMetadata;
33
+ for (const i of instances) {
34
+ if (i.applied) {
35
+ continue;
38
36
  }
39
- return accumulator;
40
- }, []);
41
- for (const [i, { isArg, name }] of (properties.args || []).entries()) {
42
- if (!isArg(args[i])) {
43
- // eslint-disable-next-line max-len
44
- const message = `Module "${module.name}" requires an argument at position [${i}] of type "${name}", but received "${typeof args[i]}"!`;
45
- throw new Error(message);
37
+ // Given a list of keys to the module, resolve the inputs with actual values.
38
+ const resolvedModuleInputs = i.inputKeys.reduce((accumulator, current) => {
39
+ accumulator[current] = this.inputService.resolve(`${i.moduleId}.input.${current}`);
40
+ return accumulator;
41
+ }, {});
42
+ // Create an instance of module schema based on the resolved input values.
43
+ // An error will be thrown if the resolved input does not match the module schema.
44
+ const resolvedModuleSchema = getSchemaInstance(module.MODULE_SCHEMA, resolvedModuleInputs);
45
+ // Re-register module inputs. This now includes all the optional properties that were not provided in inputs.
46
+ for (const [key, value] of Object.entries(resolvedModuleSchema)) {
47
+ try {
48
+ this.inputService.registerInput(i.moduleId, key, value);
49
+ }
50
+ catch (error) {
51
+ if (!(error instanceof InputRegistrationError)) {
52
+ throw error;
53
+ }
54
+ }
46
55
  }
56
+ // Create new module instance.
57
+ const instance = new module(i.moduleId);
58
+ // Register module hooks.
59
+ this.registerHooks(instance.registerHooks());
60
+ // Register module metadata.
61
+ const metadata = await instance.registerMetadata(resolvedModuleSchema);
62
+ for (const [key, value] of Object.entries(metadata)) {
63
+ this.inputService.registerMetadata(i.moduleId, key, value);
64
+ }
65
+ // Run module. Register module output, and return the module output.
66
+ let models = (await instance.onInit(resolvedModuleSchema));
67
+ if (!Array.isArray(models)) {
68
+ models = [models];
69
+ }
70
+ // Register module outputs.
71
+ for (const model of models) {
72
+ if (model instanceof AOverlay) {
73
+ this.overlayDataRepository.add(model);
74
+ this.inputService.registerOverlay(i.moduleId, model);
75
+ result[`${i.moduleId}.overlay.${model.overlayId}`] = model;
76
+ }
77
+ else {
78
+ this.inputService.registerModel(i.moduleId, model);
79
+ result[`${i.moduleId}.model.${model.constructor.NODE_NAME}`] = model;
80
+ }
81
+ }
82
+ // Register module.
83
+ this.inputService.registerModule(i.moduleId, instance);
84
+ i.applied = true;
47
85
  }
48
- const instance = new module(...args);
49
- const output = await instance.onInit();
50
- if (output) {
51
- this.outputs[module.name] = output;
52
- }
53
- moduleMetadata.applied = true;
54
- EventService.getInstance().emit(new ModuleEvent(module.name));
86
+ this.eventService.emit(new ModuleEvent(module.name));
55
87
  }
88
+ return result;
56
89
  }
57
- getModuleMetadata(module) {
58
- const index = this.getModuleMetadataIndex(module);
90
+ getMetadata(module) {
91
+ const index = this.getMetadataIndex(module);
59
92
  return index === -1 ? undefined : this.modules[index];
60
93
  }
61
- getModuleMetadataIndex(module) {
62
- const name = typeof module === 'string' ? module : module.name;
63
- return this.modules.findIndex((m) => m.module.name === name);
94
+ getMetadataIndex(module) {
95
+ const moduleName = typeof module === 'string' ? module : `${module.MODULE_PACKAGE}/${module.name}`;
96
+ return this.modules.findIndex((m) => `${m.properties.packageName}/${m.module.name}` === moduleName);
64
97
  }
65
- getOutput(module) {
66
- const name = typeof module === 'string' ? module : module.name;
67
- return name in this.outputs ? this.outputs[name] : undefined;
98
+ getModuleInstanceInputKeys(moduleId) {
99
+ const moduleIndex = this.modules.findIndex((m) => m.instances.findIndex((i) => i.moduleId === moduleId) !== -1);
100
+ if (moduleIndex === -1) {
101
+ throw new ModuleError(`Module "${moduleId}" not yet loaded!`, moduleId);
102
+ }
103
+ return this.modules[moduleIndex].instances.find((i) => i.moduleId === moduleId).inputKeys;
68
104
  }
69
- load(module) {
70
- const m = this.getModuleMetadata(module);
71
- if (m) {
72
- m.hidden = false;
105
+ load(module, moduleId, inputs) {
106
+ const moduleName = typeof module === 'string' ? module : `${module.MODULE_PACKAGE}/${module.name}`;
107
+ const m = this.getMetadata(module);
108
+ if (!m) {
109
+ throw new ModuleError(`Module "${moduleName}" not yet registered!`, moduleName);
110
+ }
111
+ m.hidden = false;
112
+ if (m.instances.findIndex((i) => i.moduleId === moduleId) !== -1) {
113
+ return;
114
+ }
115
+ m.instances.push({
116
+ applied: false,
117
+ inputKeys: getSchemaKeys(module.MODULE_SCHEMA),
118
+ moduleId,
119
+ });
120
+ for (const [key, value] of Object.entries(inputs)) {
121
+ this.inputService.registerInput(moduleId, key, JSON.parse(JSON.stringify(value)));
73
122
  }
74
123
  }
124
+ order(modules) {
125
+ this.modules.sort((a, b) => {
126
+ const aIndex = modules.findIndex((m) => {
127
+ const moduleName = typeof m === 'string' ? m : `${m.MODULE_PACKAGE}/${m.name}`;
128
+ return `${a.properties.packageName}/${a.module.name}` === moduleName;
129
+ });
130
+ const bIndex = modules.findIndex((m) => {
131
+ const moduleName = typeof m === 'string' ? m : `${m.MODULE_PACKAGE}/${m.name}`;
132
+ return `${b.properties.packageName}/${b.module.name}` === moduleName;
133
+ });
134
+ return aIndex - bIndex;
135
+ });
136
+ }
75
137
  register(module, properties) {
76
- if (!this.modules.some((m) => m.module.name === module.name)) {
77
- this.modules.push({ applied: false, applyOrder: -1, hidden: true, module, properties });
138
+ const moduleName = `${module.MODULE_PACKAGE}/${module.name}`;
139
+ if (!this.modules.some((m) => `${m.properties.packageName}/${m.module.name}` === moduleName)) {
140
+ this.modules.push({ hidden: true, instances: [], module, properties });
78
141
  }
79
142
  }
80
- reset() {
81
- this.commitHook.reset();
82
- this.modelActionHook.reset();
83
- this.resourceActionHook.reset();
84
- for (const name in this.outputs) {
85
- delete this.outputs[name];
86
- }
87
- this.modules.map((m) => {
88
- m.applied = false;
89
- m.applyOrder = -1;
90
- m.hidden = true;
143
+ registerHooks({ postCommitHooks, postModelActionHooks, postResourceActionHooks, preCommitHooks, preModelActionHooks, preResourceActionHooks, } = {}) {
144
+ CommitHook.getInstance().collectHooks({ postHooks: postCommitHooks, preHooks: preCommitHooks });
145
+ ModelActionHook.getInstance().collectHooks({
146
+ postHooks: postModelActionHooks,
147
+ preHooks: preModelActionHooks,
148
+ });
149
+ ResourceActionHook.getInstance().collectHooks({
150
+ postHooks: postResourceActionHooks,
151
+ preHooks: preResourceActionHooks,
91
152
  });
92
153
  }
93
- setApplyOrder(moduleMetadata, seen = []) {
94
- if (moduleMetadata.applyOrder >= 0) {
95
- return;
96
- }
97
- if (seen.find((m) => m.name === moduleMetadata.module.name)) {
98
- throw new Error('Found circular dependencies in modules!');
99
- }
100
- const parentModuleApplyOrders = [-1];
101
- for (const parent of moduleMetadata.properties.imports || []) {
102
- const name = typeof parent === 'string' ? parent : parent.name;
103
- const parentModuleMetadata = this.modules.find((m) => m.module.name === name);
104
- if (!parentModuleMetadata) {
105
- throw new Error(`Found unregistered module "${name}" while processing modules!`);
106
- }
107
- this.setApplyOrder(parentModuleMetadata, [...seen, parentModuleMetadata.module]);
108
- parentModuleApplyOrders.push(parentModuleMetadata.applyOrder);
154
+ reset() {
155
+ for (const m of this.modules) {
156
+ m.hidden = true;
157
+ m.instances = [];
109
158
  }
110
- moduleMetadata.applyOrder = Math.max(...parentModuleApplyOrders) + 1;
111
159
  }
112
160
  unload(module) {
113
- const m = this.getModuleMetadata(module);
161
+ const m = this.getMetadata(module);
114
162
  if (m) {
115
163
  m.hidden = true;
116
164
  }
117
165
  }
118
166
  }
119
167
  let ModuleContainerFactory = class ModuleContainerFactory {
120
- static async create() {
168
+ static async create(forceNew = false) {
169
+ const [eventService, inputService, overlayDataRepository] = await Promise.all([
170
+ Container.getInstance().get(EventService),
171
+ Container.getInstance().get(InputService),
172
+ Container.getInstance().get(OverlayDataRepository),
173
+ ]);
121
174
  if (!this.instance) {
122
- const commitHook = CommitHook.getInstance();
123
- const modelActionHook = ModelActionHook.getInstance();
124
- const resourceActionHook = ResourceActionHook.getInstance();
125
- this.instance = new ModuleContainer(commitHook, modelActionHook, resourceActionHook);
175
+ this.instance = new ModuleContainer(eventService, inputService, overlayDataRepository);
176
+ }
177
+ if (forceNew) {
178
+ this.instance.reset();
126
179
  }
127
180
  return this.instance;
128
181
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module.container.js","sourceRoot":"","sources":["../../src/modules/module.container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.container.js","sourceRoot":"","sources":["../../src/modules/module.container.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,16 @@
1
- export interface IModule<T> {
2
- onInit(): Promise<T>;
1
+ import type { UnknownModel } from '../app.type.js';
2
+ import type { CommitHook } from '../functions/hook/commit.hook.js';
3
+ import type { ModelActionHook } from '../functions/hook/model-action.hook.js';
4
+ import type { ResourceActionHook } from '../functions/hook/resource-action.hook.js';
5
+ export interface IModule<S, T extends UnknownModel> {
6
+ onInit(inputs: S): Promise<T | UnknownModel[]>;
7
+ registerHooks(): {
8
+ postCommitHooks?: Parameters<CommitHook['collectHooks']>[0]['postHooks'];
9
+ postModelActionHooks?: Parameters<ModelActionHook['collectHooks']>[0]['postHooks'];
10
+ postResourceActionHooks?: Parameters<ResourceActionHook['collectHooks']>[0]['postHooks'];
11
+ preCommitHooks?: Parameters<CommitHook['collectHooks']>[0]['preHooks'];
12
+ preModelActionHooks?: Parameters<ModelActionHook['collectHooks']>[0]['preHooks'];
13
+ preResourceActionHooks?: Parameters<ResourceActionHook['collectHooks']>[0]['preHooks'];
14
+ };
15
+ registerMetadata(inputs: S): Promise<Record<string, unknown>>;
3
16
  }
@@ -1,29 +1,47 @@
1
- import type { Constructable } from '../app.type.js';
2
- import type { Module } from '../decorators/module.decorator.js';
1
+ import type { Constructable, ModuleOutput, ModuleSchemaInputs, UnknownAnchor, UnknownModel, UnknownModule } from '../app.type.js';
3
2
  import type { DiffMetadata } from '../functions/diff/diff-metadata.js';
4
3
  import { Octo } from '../main.js';
5
4
  import type { App } from '../models/app/app.model.js';
5
+ import type { BaseAnchorSchema } from '../overlays/anchor.schema.js';
6
+ import type { BaseResourceSchema } from '../resources/resource.schema.js';
6
7
  import type { IStateProvider } from '../services/state-management/state-provider.interface.js';
7
- import type { IModule } from './module.interface.js';
8
+ import { create } from '../utilities/test-helpers/test-models.js';
9
+ import { createTestOverlays } from '../utilities/test-helpers/test-overlays.js';
10
+ import { createResources, createTestResources } from '../utilities/test-helpers/test-resources.js';
11
+ export type TestModule<M extends UnknownModule> = {
12
+ hidden?: boolean;
13
+ inputs: ModuleSchemaInputs<M>;
14
+ moduleId: string;
15
+ type: Constructable<M>;
16
+ };
8
17
  export declare class TestModuleContainer {
9
- private readonly captures;
10
- private readonly inputs;
11
18
  readonly octo: Octo;
12
- constructor({ inputs, captures, }?: {
13
- captures?: TestModuleContainer['captures'];
14
- inputs?: TestModuleContainer['inputs'];
15
- });
16
- commit(app: App): Promise<{
19
+ constructor();
20
+ commit(app: App, { enableResourceCapture, filterByModuleIds, }?: {
21
+ enableResourceCapture?: boolean;
22
+ filterByModuleIds?: string[];
23
+ }): Promise<{
17
24
  modelDiffs: DiffMetadata[][];
18
25
  modelTransaction: DiffMetadata[][];
19
26
  resourceDiffs: DiffMetadata[][];
20
27
  resourceTransaction: DiffMetadata[][];
21
28
  }>;
29
+ createTestAnchor<S extends BaseAnchorSchema & {
30
+ parentInstance: UnknownModel;
31
+ }>(anchorId: string, properties: S['properties'], parent: S['parentInstance']): UnknownAnchor;
32
+ createTestModels(moduleId: string, args: Parameters<typeof create>[0]): Promise<ReturnType<typeof create>>;
33
+ createTestOverlays(moduleId: string, args: Parameters<typeof createTestOverlays>[0]): Promise<ReturnType<typeof createTestOverlays>>;
34
+ createResources(moduleId: string, args: Parameters<typeof createResources>[0], options?: Parameters<typeof createResources>[1]): Promise<ReturnType<typeof createResources>>;
35
+ createTestResources<S extends BaseResourceSchema[]>(moduleId: string, args: Parameters<typeof createTestResources<S>>[0], options?: Parameters<typeof createTestResources>[1]): Promise<ReturnType<typeof createTestResources<S>>>;
36
+ mapTransactionActions(transaction: DiffMetadata[][]): string[][];
22
37
  initialize(stateProvider?: IStateProvider, initializeInContainer?: Parameters<typeof Octo.prototype.initialize>[1], excludeInContainer?: Parameters<typeof Octo.prototype.initialize>[2]): Promise<void>;
23
- loadModules(modules: {
24
- hidden?: boolean;
25
- properties?: Parameters<typeof Module>[0];
26
- type: Constructable<IModule<unknown>>;
27
- }[]): Promise<void>;
38
+ orderModules(modules: (Constructable<UnknownModule> | string)[]): Promise<void>;
39
+ registerCapture<S extends BaseResourceSchema>(resourceContext: string, response: Partial<S['response']>): void;
40
+ runModule<M extends UnknownModule>(module: TestModule<M>): Promise<{
41
+ [key: string]: ModuleOutput<M>;
42
+ }>;
43
+ runModules<M extends UnknownModule>(modules: TestModule<M>[]): Promise<{
44
+ [key: string]: ModuleOutput<M>;
45
+ }>;
28
46
  reset(): Promise<void>;
29
47
  }