@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
@@ -0,0 +1,342 @@
1
+ import { ContextNodeError, NodeError } from '../../errors/index.js';
2
+ import { Dependency } from '../dependency/dependency.js';
3
+ import { DiffAction } from '../diff/diff.js';
4
+ /**
5
+ * This is Octo's base class, and all other classes extend from it.
6
+ * It helps provide a common set of methods and properties that is core to Octo.
7
+ *
8
+ * Octo is built as a graph, and this base class can be considered as a generic node.
9
+ * Nodes can have children, and siblings, but only if connected via an edge, called {@link Dependency} here.
10
+ *
11
+ * From this base class, three more base classes are derived,
12
+ * - [Models](/docs/fundamentals/models)
13
+ * - [Resources](/docs/fundamentals/resources)
14
+ * - [Overlays](/docs/fundamentals/overlay-and-anchor)
15
+ *
16
+ * Each of these derived base classes, using the base methods of this class,
17
+ * define their own specific rules on how their graphs should be constructed.
18
+ */
19
+ export class ANode {
20
+ constructor() {
21
+ /**
22
+ * A set of node dependencies with other nodes, represented using a {@link Dependency}.
23
+ */
24
+ this.dependencies = [];
25
+ }
26
+ addChild(onField, child, toField) {
27
+ const cIndex = child.dependencies
28
+ .filter((d) => d.isChildRelationship())
29
+ .findIndex((d) => {
30
+ try {
31
+ d.to.getContext();
32
+ this.getContext();
33
+ }
34
+ catch (error) {
35
+ if (error instanceof ContextNodeError) {
36
+ return false;
37
+ }
38
+ else {
39
+ throw error;
40
+ }
41
+ }
42
+ return d.to.getContext() === this.getContext();
43
+ });
44
+ const pIndex = this.dependencies
45
+ .filter((d) => d.isParentRelationship())
46
+ .findIndex((d) => {
47
+ try {
48
+ d.to.getContext();
49
+ child.getContext();
50
+ }
51
+ catch (error) {
52
+ if (error instanceof ContextNodeError) {
53
+ return false;
54
+ }
55
+ else {
56
+ throw error;
57
+ }
58
+ }
59
+ return d.to.getContext() === child.getContext();
60
+ });
61
+ let childToParentDependency;
62
+ if (cIndex === -1) {
63
+ childToParentDependency = new Dependency(child, this);
64
+ childToParentDependency.addBehavior(toField, DiffAction.ADD, onField, DiffAction.ADD);
65
+ childToParentDependency.addBehavior(toField, DiffAction.ADD, onField, DiffAction.UPDATE);
66
+ childToParentDependency.addChildRelationship(toField, onField);
67
+ child.dependencies.push(childToParentDependency);
68
+ }
69
+ else {
70
+ childToParentDependency = child.dependencies[cIndex];
71
+ }
72
+ let parentToChildDependency;
73
+ if (pIndex === -1) {
74
+ parentToChildDependency = new Dependency(this, child);
75
+ parentToChildDependency.addBehavior(onField, DiffAction.DELETE, toField, DiffAction.DELETE);
76
+ parentToChildDependency.addParentRelationship(onField, toField);
77
+ this.dependencies.push(parentToChildDependency);
78
+ }
79
+ else {
80
+ parentToChildDependency = this.dependencies[pIndex];
81
+ }
82
+ return { childToParentDependency, parentToChildDependency };
83
+ }
84
+ addFieldDependency(behaviors) {
85
+ const index = this.dependencies.findIndex((d) => {
86
+ try {
87
+ d.from.getContext();
88
+ d.to.getContext();
89
+ this.getContext();
90
+ }
91
+ catch (error) {
92
+ if (error instanceof ContextNodeError) {
93
+ return false;
94
+ }
95
+ else {
96
+ throw error;
97
+ }
98
+ }
99
+ return d.from.getContext() === this.getContext() && d.to.getContext() === this.getContext();
100
+ });
101
+ const dependency = index > -1 ? this.dependencies[index] : new Dependency(this, this);
102
+ if (index === -1) {
103
+ this.dependencies.push(dependency);
104
+ }
105
+ for (const behavior of behaviors) {
106
+ if (!dependency.hasMatchingBehavior(behavior.onField, behavior.onAction, behavior.toField, behavior.forAction)) {
107
+ dependency.addBehavior(behavior.onField, behavior.onAction, behavior.toField, behavior.forAction);
108
+ }
109
+ }
110
+ }
111
+ addRelationship(to) {
112
+ const thisToThatDependency = new Dependency(this, to);
113
+ this.dependencies.push(thisToThatDependency);
114
+ return { thisToThatDependency };
115
+ }
116
+ getAncestors() {
117
+ const members = [this];
118
+ const membersProcessed = [];
119
+ while (members.length > 0) {
120
+ const member = members.pop();
121
+ // Skip processing an already processed member.
122
+ if (membersProcessed.some((m) => m.getContext() === member.getContext())) {
123
+ continue;
124
+ }
125
+ for (const d of member.dependencies) {
126
+ // If in dependency I am not declared a parent, then d.to is either my parent or has a relationship to me.
127
+ // The behavior of that relationship should be that it must exist for me to exist.
128
+ if (!d.isParentRelationship() &&
129
+ d.hasMatchingBehavior(undefined, DiffAction.ADD, undefined, DiffAction.ADD) &&
130
+ !membersProcessed.some((m) => m.getContext() === d.to.getContext())) {
131
+ members.push(d.to);
132
+ }
133
+ }
134
+ membersProcessed.push(member);
135
+ }
136
+ return membersProcessed;
137
+ }
138
+ getBoundaryMembers() {
139
+ const extenders = [this];
140
+ const members = [];
141
+ const parentOf = {};
142
+ const pushToExtenders = (nodes) => {
143
+ nodes.forEach((node) => {
144
+ if (!members.some((m) => m.getContext() === node.getContext())) {
145
+ extenders.push(node);
146
+ }
147
+ });
148
+ };
149
+ while (extenders.length > 0) {
150
+ const node = extenders.pop();
151
+ const ancestors = node.getAncestors();
152
+ for (const ancestor of ancestors) {
153
+ // Skip processing an already processed ancestor.
154
+ if (members.some((m) => m.getContext() === ancestor.getContext())) {
155
+ continue;
156
+ }
157
+ members.push(ancestor);
158
+ // Check for circular dependencies on ancestor.
159
+ for (const d of ancestor.dependencies) {
160
+ let childContext;
161
+ let parentContext;
162
+ if (d.isParentRelationship()) {
163
+ childContext = d.to.getContext();
164
+ parentContext = d.from.getContext();
165
+ }
166
+ else if (d.isChildRelationship()) {
167
+ childContext = d.from.getContext();
168
+ parentContext = d.to.getContext();
169
+ }
170
+ else {
171
+ // A relationship that is neither parent nor child, will not be reported in circular dependency!
172
+ continue;
173
+ }
174
+ const seen = {};
175
+ const toProcess = [parentContext];
176
+ while (toProcess.length > 0) {
177
+ const context = toProcess.pop();
178
+ if (seen[context]) {
179
+ throw new NodeError('Found circular dependencies!', this);
180
+ }
181
+ else {
182
+ seen[context] = true;
183
+ }
184
+ toProcess.push(...(parentOf[context] || []));
185
+ }
186
+ if (!parentOf[childContext]) {
187
+ parentOf[childContext] = [];
188
+ parentOf[childContext].push(parentContext);
189
+ }
190
+ else if (!parentOf[childContext].some((p) => p === parentContext)) {
191
+ parentOf[childContext].push(parentContext);
192
+ }
193
+ }
194
+ }
195
+ const children = node.getChildren();
196
+ for (const name in children) {
197
+ pushToExtenders(children[name].map((d) => d.to));
198
+ }
199
+ const dependents = node.dependencies
200
+ .filter((d) => !d.isParentRelationship() && !d.isChildRelationship())
201
+ .map((d) => d.to);
202
+ pushToExtenders(dependents);
203
+ }
204
+ return members;
205
+ }
206
+ getChild(name, filters = []) {
207
+ const dependencies = this.getChildren(name)[name]?.filter((d) => filters.every((c) => d.to[c.key] === c.value));
208
+ if (!dependencies) {
209
+ return undefined;
210
+ }
211
+ if (dependencies.length > 1) {
212
+ throw new NodeError('More than one children found! Use getChildren() instead.', this);
213
+ }
214
+ return dependencies[0].to;
215
+ }
216
+ getChildren(name) {
217
+ return this.dependencies
218
+ .filter((d) => d.isParentRelationship() && (name ? d.to.constructor.NODE_NAME === name : true))
219
+ .reduce((accumulator, currentValue) => {
220
+ if (!(currentValue.to.constructor.NODE_NAME in accumulator)) {
221
+ accumulator[currentValue.to.constructor.NODE_NAME] = [];
222
+ }
223
+ accumulator[currentValue.to.constructor.NODE_NAME].push(currentValue);
224
+ return accumulator;
225
+ }, {});
226
+ }
227
+ getContext() {
228
+ if (!this.context) {
229
+ const context = this.setContext();
230
+ if (!context) {
231
+ throw new ContextNodeError('Context is unset!', this);
232
+ }
233
+ this.context = context;
234
+ }
235
+ return this.context;
236
+ }
237
+ getDependencies(to) {
238
+ const filters = [];
239
+ if (to) {
240
+ filters.push({ key: 'to', value: to.getContext() });
241
+ }
242
+ return this.dependencies.filter((d) => {
243
+ return filters.every((c) => {
244
+ if (c.key === 'to') {
245
+ return d.to.getContext() === c.value;
246
+ }
247
+ else {
248
+ return true;
249
+ }
250
+ });
251
+ });
252
+ }
253
+ getDependency(to, relationship) {
254
+ const index = this.getDependencyIndex(to, relationship);
255
+ return index > -1 ? this.dependencies[index] : undefined;
256
+ }
257
+ getDependencyIndex(to, relationship) {
258
+ return this.dependencies.findIndex((d) => d.from.getContext() === this.getContext() &&
259
+ d.to.getContext() === to.getContext() &&
260
+ d.getRelationship() !== undefined &&
261
+ d.getRelationship().type === relationship);
262
+ }
263
+ getParents(name) {
264
+ return this.dependencies
265
+ .filter((d) => d.isChildRelationship() && (name ? d.to.constructor.NODE_NAME === name : true))
266
+ .reduce((accumulator, currentValue) => {
267
+ if (!(currentValue.to.constructor.NODE_NAME in accumulator)) {
268
+ accumulator[currentValue.to.constructor.NODE_NAME] = [];
269
+ }
270
+ accumulator[currentValue.to.constructor.NODE_NAME].push(currentValue);
271
+ return accumulator;
272
+ }, {});
273
+ }
274
+ getSiblings(name) {
275
+ return this.dependencies
276
+ .filter((d) => !d.isChildRelationship() &&
277
+ !d.isParentRelationship() &&
278
+ (name ? d.to.constructor.NODE_NAME === name : true))
279
+ .reduce((accumulator, currentValue) => {
280
+ if (!(currentValue.to.constructor.NODE_NAME in accumulator)) {
281
+ accumulator[currentValue.to.constructor.NODE_NAME] = [];
282
+ }
283
+ accumulator[currentValue.to.constructor.NODE_NAME].push(currentValue);
284
+ return accumulator;
285
+ }, {});
286
+ }
287
+ hasAncestor(node) {
288
+ const nodeParts = node
289
+ .getContext()
290
+ .split(',')
291
+ .map((p) => p.split('='));
292
+ const ancestors = this.getAncestors();
293
+ return ancestors.some((a) => {
294
+ const ancestorParts = a
295
+ .getContext()
296
+ .split(',')
297
+ .reduce((map, p) => {
298
+ const parts = p.split('=');
299
+ map[parts[0]] = parts[1];
300
+ return map;
301
+ }, {});
302
+ return nodeParts.every((p) => ancestorParts[p[0]] === p[1]);
303
+ });
304
+ }
305
+ removeDependency(dependencyIndex) {
306
+ if (dependencyIndex > -1 && dependencyIndex < this.dependencies.length) {
307
+ this.dependencies.splice(dependencyIndex, 1);
308
+ }
309
+ }
310
+ removeRelationship(node) {
311
+ for (let i = this.dependencies.length - 1; i >= 0; i--) {
312
+ const dependency = this.dependencies[i];
313
+ if (dependency.to.getContext() === node.getContext()) {
314
+ this.dependencies.splice(i, 1);
315
+ }
316
+ }
317
+ for (let i = node.dependencies.length - 1; i >= 0; i--) {
318
+ const dependency = node.dependencies[i];
319
+ if (dependency.to.getContext() === this.getContext()) {
320
+ node.dependencies.splice(i, 1);
321
+ }
322
+ }
323
+ }
324
+ toJSON() {
325
+ return {
326
+ context: this.getContext(),
327
+ ...this.synth(),
328
+ };
329
+ }
330
+ /**
331
+ * To create self given its serialized representation.
332
+ * - First argument is the serialized representation.
333
+ * - Second argument is the `deReferenceContext()` function to resolve other nodes self depends on.
334
+ */
335
+ static async unSynth(...args) {
336
+ if (args.length > 4) {
337
+ throw new Error('Too many args in unSynth()');
338
+ }
339
+ throw new Error('Method not implemented! Use derived class implementation');
340
+ }
341
+ }
342
+ //# sourceMappingURL=node.abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.abstract.js","sourceRoot":"","sources":["../../../src/functions/node/node.abstract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ import type { UnknownNode } from '../../app.type.js';
2
+ import type { Dependency, DependencyRelationship } from '../dependency/dependency.js';
3
+ import type { Diff, DiffAction } from '../diff/diff.js';
4
+ /**
5
+ * {@link ANode} interface.
6
+ */
7
+ export interface INode<S, T> {
8
+ /**
9
+ * To add another node as a child of self.
10
+ *
11
+ * @param onField The field in self on which the dependency is being defined.
12
+ * @param child The child node.
13
+ * @param toField The field in child on which the dependency is being defined.
14
+ * @returns
15
+ * - childToParentDependency: The dependency edge from child to self.
16
+ * - parentToChildDependency: The dependency edge from self to child.
17
+ * @throws {@link NodeError} If dependency relationship already exists!
18
+ */
19
+ addChild(onField: keyof T | string, child: UnknownNode, toField: string): {
20
+ childToParentDependency: Dependency;
21
+ parentToChildDependency: Dependency;
22
+ };
23
+ /**
24
+ * To add a behavior on self to order multiple actions of self.
25
+ *
26
+ * @param behaviors
27
+ */
28
+ addFieldDependency(behaviors: {
29
+ forAction: DiffAction;
30
+ onAction: DiffAction;
31
+ onField: keyof T | string;
32
+ toField: keyof T | string;
33
+ }[]): void;
34
+ /**
35
+ * To add another node as a sibling of self.
36
+ *
37
+ * @param to The sibling node.
38
+ * @returns
39
+ * - thisToThatDependency: The dependency edge from self to sibling.
40
+ */
41
+ addRelationship(to: UnknownNode): {
42
+ thisToThatDependency: Dependency;
43
+ };
44
+ /**
45
+ * Compares and calculates the difference between the current version of self node, and the previous version.
46
+ * - Recursively compares self children too.
47
+ *
48
+ * @param previous The previous version of self.
49
+ */
50
+ diff(previous?: T): Promise<Diff[]>;
51
+ /**
52
+ * To compare properties of the current version of self node, vs. the previous version.
53
+ * It is a helper method to the `diff()` method.
54
+ * - This method is called by the {@link diff()} method.
55
+ *
56
+ * @param previous The previous version of self.
57
+ */
58
+ diffProperties(previous: T): Promise<Diff[]>;
59
+ /**
60
+ * To get all ancestors of self.
61
+ * - Includes parent nodes.
62
+ * - Might include sibling nodes,
63
+ * if the dependency behaviors dictate the sibling is necessary for self node to exist.
64
+ */
65
+ getAncestors(): UnknownNode[];
66
+ /**
67
+ * To get a boundary (sub graph) of self.
68
+ * A boundary is a group of nodes that must belong together.
69
+ * The boundary consists of all nodes associated with self,
70
+ * which includes parents, grand parents, children, grand children, and siblings.
71
+ */
72
+ getBoundaryMembers(): UnknownNode[];
73
+ /**
74
+ * To get a child of self that matches the given filters.
75
+ *
76
+ * @param name The {@link NODE_NAME} of the child.
77
+ * @param filters A set of filters, to be applied on children,
78
+ * where `key` is the property name and `value` is the value to filter by.
79
+ * @throws {@link NodeError} If more than one child is found.
80
+ */
81
+ getChild(name: string, filters: {
82
+ key: string;
83
+ value: any;
84
+ }[]): UnknownNode | undefined;
85
+ /**
86
+ * To get all children of self.
87
+ *
88
+ * @param name The {@link NODE_NAME} of the children.
89
+ * @returns All children as an object with the {@link NODE_NAME} as the key,
90
+ * and self's dependency to the child as the value.
91
+ */
92
+ getChildren(name?: string): {
93
+ [key: string]: Dependency[];
94
+ };
95
+ /**
96
+ * To get the context of self.
97
+ * A context is a string representation of self that uniquely identifies self in the graph.
98
+ */
99
+ getContext(): string;
100
+ /**
101
+ * To get all dependencies of self.
102
+ * - Can be filtered to just dependencies with a single node.
103
+ *
104
+ * @param to The other node. If present, will only return dependencies of self with this node.
105
+ */
106
+ getDependencies(to?: UnknownNode): Dependency[];
107
+ /**
108
+ * To get a dependency of self with another node.
109
+ *
110
+ * @param to The other node.
111
+ * @param relationship The relationship between self and the other node.
112
+ * @returns The dependency with the other node having the given relationship, or `undefined` if not found.
113
+ */
114
+ getDependency(to: UnknownNode, relationship: DependencyRelationship): Dependency | undefined;
115
+ /**
116
+ * To get the index of a dependency of self with another node.
117
+ *
118
+ * @param to The other node.
119
+ * @param relationship The relationship between self and the other node.
120
+ * @returns The index of the dependency with the other node having the given relationship, or `-1` if not found.
121
+ */
122
+ getDependencyIndex(to: UnknownNode, relationship: DependencyRelationship): number;
123
+ /**
124
+ * To get all parent of self.
125
+ *
126
+ * @param name The {@link NODE_NAME} of the parent.
127
+ * @returns All parents as an object with the {@link NODE_NAME} as the key,
128
+ * and self's dependency to the parent as the value.
129
+ */
130
+ getParents(name?: string): {
131
+ [key: string]: Dependency[];
132
+ };
133
+ /**
134
+ * To get all siblings of self.
135
+ *
136
+ * @param name The {@link NODE_NAME} of the sibling.
137
+ * @returns All siblings as an object with the {@link NODE_NAME} as the key,
138
+ * and self's dependency to the sibling as the value.
139
+ */
140
+ getSiblings(name?: string): {
141
+ [key: string]: Dependency[];
142
+ };
143
+ /**
144
+ * To check if given node is an ancestor of self.
145
+ *
146
+ * @param node The other node.
147
+ */
148
+ hasAncestor(node: UnknownNode): boolean;
149
+ /**
150
+ * To remove a dependency from self.
151
+ *
152
+ * @param dependencyIndex The index of the dependency to remove.
153
+ */
154
+ removeDependency(dependencyIndex: number): void;
155
+ /**
156
+ * To remove ALL dependencies from self for the given node.
157
+ *
158
+ * @param node The other node.
159
+ */
160
+ removeRelationship(node: UnknownNode): void;
161
+ /**
162
+ * To set the context of self.
163
+ * A context is a string representation of self that uniquely identifies self in the graph.
164
+ */
165
+ setContext(): string | undefined;
166
+ /**
167
+ * Generates a serializable representation of self.
168
+ */
169
+ synth(): S;
170
+ }
171
+ /**
172
+ * Node Reference encapsulates identification information of self.
173
+ */
174
+ export interface INodeReference {
175
+ context: string;
176
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=node.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.interface.js","sourceRoot":"","sources":["../../../src/functions/node/node.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { Constructable } from '../../app.type.js';
2
+ export declare function getSchemaInstance<S extends object>(schemaClass: Constructable<S>, value: S): Record<string, unknown>;
3
+ export declare function getSchemaKeys<S>(schemaClass: Constructable<S>): string[];
4
+ export declare function Schema<T>(defaultValue?: T): T;
@@ -0,0 +1,38 @@
1
+ import { SchemaError } from '../../errors/index.js';
2
+ export function getSchemaInstance(schemaClass, value) {
3
+ if (value === undefined) {
4
+ throw new SchemaError(`Cannot determine schema with "${value}" value!`, schemaClass.name);
5
+ }
6
+ const instance = {};
7
+ const t = new schemaClass();
8
+ for (const key of getSchemaKeys(schemaClass)) {
9
+ try {
10
+ if (value.hasOwnProperty(key) && value[key] !== undefined) {
11
+ t[key] = value[key];
12
+ instance[key] = t[key];
13
+ }
14
+ else {
15
+ instance[key] = t[key];
16
+ }
17
+ }
18
+ catch (error) {
19
+ throw new SchemaError(`Property "${key}" in schema could not be validated!`, schemaClass.name);
20
+ }
21
+ if (instance[key] === undefined) {
22
+ throw new SchemaError(`Property "${key}" in schema could not be resolved!`, schemaClass.name);
23
+ }
24
+ }
25
+ return instance;
26
+ }
27
+ export function getSchemaKeys(schemaClass) {
28
+ const t = new schemaClass();
29
+ const keys = [];
30
+ for (const key in t) {
31
+ keys.push(key);
32
+ }
33
+ return keys;
34
+ }
35
+ export function Schema(defaultValue) {
36
+ return (defaultValue === undefined ? undefined : defaultValue);
37
+ }
38
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/functions/schema/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,UAAU,iBAAiB,CAAmB,WAA6B,EAAE,KAAQ;IACzF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,WAAW,CAAC,iCAAiC,KAAK,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC;IAE5B,KAAK,MAAM,GAAG,IAAI,aAAa,CAAI,WAAW,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC1D,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,WAAW,CAAC,aAAa,GAAG,qCAAqC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACjG,CAAC;QAED,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,WAAW,CAAC,aAAa,GAAG,oCAAoC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAI,WAA6B;IAC5D,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,MAAM,CAAI,YAAgB;IACxC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,YAAkB,CAAM,CAAC;AAC7E,CAAC"}