@adaas/are 0.0.2 → 0.0.3

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 (759) hide show
  1. package/.conf/tsconfig.base.json +25 -32
  2. package/.conf/tsconfig.browser.json +24 -32
  3. package/.conf/tsconfig.node.json +24 -33
  4. package/CHANGELOG.md +39 -0
  5. package/README.md +214 -2
  6. package/dist/browser/index.d.mts +1375 -727
  7. package/dist/browser/index.mjs +2812 -2170
  8. package/dist/browser/index.mjs.map +1 -1
  9. package/dist/node/Are.context-9Ija_fdC.d.ts +846 -0
  10. package/dist/node/Are.context-D7w32H1G.d.mts +846 -0
  11. package/dist/node/index.d.mts +32 -31
  12. package/dist/node/index.d.ts +32 -31
  13. package/dist/node/index.js +371 -42
  14. package/dist/node/index.mjs +61 -14
  15. package/dist/node/lib/AreAttribute/AreAttribute.constants.d.mts +24 -0
  16. package/dist/node/lib/AreAttribute/AreAttribute.constants.d.ts +24 -0
  17. package/dist/node/lib/AreAttribute/AreAttribute.constants.js +28 -0
  18. package/dist/node/lib/AreAttribute/AreAttribute.constants.js.map +1 -0
  19. package/dist/node/lib/AreAttribute/AreAttribute.constants.mjs +28 -0
  20. package/dist/node/lib/AreAttribute/AreAttribute.constants.mjs.map +1 -0
  21. package/dist/node/lib/AreAttribute/AreAttribute.entity.d.mts +14 -0
  22. package/dist/node/lib/AreAttribute/AreAttribute.entity.d.ts +14 -0
  23. package/dist/node/lib/AreAttribute/AreAttribute.entity.js +113 -0
  24. package/dist/node/lib/AreAttribute/AreAttribute.entity.js.map +1 -0
  25. package/dist/node/lib/AreAttribute/AreAttribute.entity.mjs +104 -0
  26. package/dist/node/lib/AreAttribute/AreAttribute.entity.mjs.map +1 -0
  27. package/dist/node/lib/AreAttribute/AreAttribute.types.d.mts +47 -0
  28. package/dist/node/lib/AreAttribute/AreAttribute.types.d.ts +47 -0
  29. package/dist/node/lib/AreAttribute/AreAttribute.types.js +4 -0
  30. package/dist/node/lib/AreAttribute/AreAttribute.types.js.map +1 -0
  31. package/dist/node/lib/AreAttribute/AreAttribute.types.mjs +3 -0
  32. package/dist/node/lib/AreAttribute/AreAttribute.types.mjs.map +1 -0
  33. package/dist/node/lib/AreCompiler/AreCompiler.component.d.mts +19 -224
  34. package/dist/node/lib/AreCompiler/AreCompiler.component.d.ts +19 -224
  35. package/dist/node/lib/AreCompiler/AreCompiler.component.js +31 -607
  36. package/dist/node/lib/AreCompiler/AreCompiler.component.js.map +1 -1
  37. package/dist/node/lib/AreCompiler/AreCompiler.component.mjs +29 -605
  38. package/dist/node/lib/AreCompiler/AreCompiler.component.mjs.map +1 -1
  39. package/dist/node/lib/AreComponent/Are.component.d.mts +59 -7
  40. package/dist/node/lib/AreComponent/Are.component.d.ts +59 -7
  41. package/dist/node/lib/AreComponent/Are.component.js +84 -25
  42. package/dist/node/lib/AreComponent/Are.component.js.map +1 -1
  43. package/dist/node/lib/AreComponent/Are.component.mjs +85 -26
  44. package/dist/node/lib/AreComponent/Are.component.mjs.map +1 -1
  45. package/dist/node/lib/AreComponent/Are.constants.d.mts +46 -30
  46. package/dist/node/lib/AreComponent/Are.constants.d.ts +46 -30
  47. package/dist/node/lib/AreComponent/Are.constants.js +58 -21
  48. package/dist/node/lib/AreComponent/Are.constants.js.map +1 -1
  49. package/dist/node/lib/AreComponent/Are.constants.mjs +58 -21
  50. package/dist/node/lib/AreComponent/Are.constants.mjs.map +1 -1
  51. package/dist/node/lib/AreComponent/Are.context.d.mts +13 -21
  52. package/dist/node/lib/AreComponent/Are.context.d.ts +13 -21
  53. package/dist/node/lib/AreComponent/Are.context.js +91 -2
  54. package/dist/node/lib/AreComponent/Are.context.js.map +1 -1
  55. package/dist/node/lib/AreComponent/Are.context.mjs +92 -3
  56. package/dist/node/lib/AreComponent/Are.context.mjs.map +1 -1
  57. package/dist/node/lib/AreComponent/Are.meta.d.mts +14 -0
  58. package/dist/node/lib/AreComponent/Are.meta.d.ts +14 -0
  59. package/dist/node/lib/AreComponent/Are.meta.js +10 -0
  60. package/dist/node/lib/AreComponent/Are.meta.js.map +1 -0
  61. package/dist/node/lib/AreComponent/Are.meta.mjs +9 -0
  62. package/dist/node/lib/AreComponent/Are.meta.mjs.map +1 -0
  63. package/dist/node/lib/AreComponent/Are.types.d.mts +30 -1
  64. package/dist/node/lib/AreComponent/Are.types.d.ts +30 -1
  65. package/dist/node/lib/AreEngine/AreEngine.component.d.mts +77 -0
  66. package/dist/node/lib/AreEngine/AreEngine.component.d.ts +77 -0
  67. package/dist/node/lib/AreEngine/AreEngine.component.js +259 -0
  68. package/dist/node/lib/AreEngine/AreEngine.component.js.map +1 -0
  69. package/dist/node/lib/AreEngine/AreEngine.component.mjs +249 -0
  70. package/dist/node/lib/AreEngine/AreEngine.component.mjs.map +1 -0
  71. package/dist/node/lib/AreEngine/AreEngine.constants.d.mts +7 -0
  72. package/dist/node/lib/AreEngine/AreEngine.constants.d.ts +7 -0
  73. package/dist/node/lib/AreEngine/AreEngine.constants.js +11 -0
  74. package/dist/node/lib/AreEngine/AreEngine.constants.js.map +1 -0
  75. package/dist/node/lib/AreEngine/AreEngine.constants.mjs +11 -0
  76. package/dist/node/lib/AreEngine/AreEngine.constants.mjs.map +1 -0
  77. package/dist/node/lib/AreEngine/AreEngine.error.d.mts +7 -0
  78. package/dist/node/lib/AreEngine/AreEngine.error.d.ts +7 -0
  79. package/dist/node/lib/AreEngine/AreEngine.error.js +11 -0
  80. package/dist/node/lib/AreEngine/AreEngine.error.js.map +1 -0
  81. package/dist/node/lib/AreEngine/AreEngine.error.mjs +10 -0
  82. package/dist/node/lib/AreEngine/AreEngine.error.mjs.map +1 -0
  83. package/dist/node/lib/AreEngine/AreEngine.types.d.mts +40 -0
  84. package/dist/node/lib/AreEngine/AreEngine.types.d.ts +40 -0
  85. package/dist/node/lib/AreEngine/AreEngine.types.js +4 -0
  86. package/dist/node/lib/AreEngine/AreEngine.types.js.map +1 -0
  87. package/dist/node/lib/AreEngine/AreEngine.types.mjs +3 -0
  88. package/dist/node/lib/AreEngine/AreEngine.types.mjs.map +1 -0
  89. package/dist/node/lib/AreEvent/AreEvent.context.d.mts +6 -8
  90. package/dist/node/lib/AreEvent/AreEvent.context.d.ts +6 -8
  91. package/dist/node/lib/AreEvent/AreEvent.context.js +2 -12
  92. package/dist/node/lib/AreEvent/AreEvent.context.js.map +1 -1
  93. package/dist/node/lib/AreEvent/AreEvent.context.mjs +2 -12
  94. package/dist/node/lib/AreEvent/AreEvent.context.mjs.map +1 -1
  95. package/dist/node/lib/AreInstruction/AreInstruction.constants.d.mts +21 -0
  96. package/dist/node/lib/AreInstruction/AreInstruction.constants.d.ts +21 -0
  97. package/dist/node/lib/AreInstruction/AreInstruction.constants.js +26 -0
  98. package/dist/node/lib/AreInstruction/AreInstruction.constants.js.map +1 -0
  99. package/dist/node/lib/AreInstruction/AreInstruction.constants.mjs +25 -0
  100. package/dist/node/lib/AreInstruction/AreInstruction.constants.mjs.map +1 -0
  101. package/dist/node/lib/AreInstruction/AreInstruction.entity.d.mts +14 -0
  102. package/dist/node/lib/AreInstruction/AreInstruction.entity.d.ts +14 -0
  103. package/dist/node/lib/AreInstruction/AreInstruction.entity.js +152 -0
  104. package/dist/node/lib/AreInstruction/AreInstruction.entity.js.map +1 -0
  105. package/dist/node/lib/AreInstruction/AreInstruction.entity.mjs +145 -0
  106. package/dist/node/lib/AreInstruction/AreInstruction.entity.mjs.map +1 -0
  107. package/dist/node/lib/AreInstruction/AreInstruction.error.d.mts +6 -0
  108. package/dist/node/lib/AreInstruction/AreInstruction.error.d.ts +6 -0
  109. package/dist/node/lib/AreInstruction/AreInstruction.error.js +10 -0
  110. package/dist/node/lib/AreInstruction/AreInstruction.error.js.map +1 -0
  111. package/dist/node/lib/AreInstruction/AreInstruction.error.mjs +9 -0
  112. package/dist/node/lib/AreInstruction/AreInstruction.error.mjs.map +1 -0
  113. package/dist/node/lib/AreInstruction/AreInstruction.types.d.mts +14 -0
  114. package/dist/node/lib/AreInstruction/AreInstruction.types.d.ts +14 -0
  115. package/dist/node/lib/AreInstruction/AreInstruction.types.js +4 -0
  116. package/dist/node/lib/AreInstruction/AreInstruction.types.js.map +1 -0
  117. package/dist/node/lib/AreInstruction/AreInstruction.types.mjs +3 -0
  118. package/dist/node/lib/AreInstruction/AreInstruction.types.mjs.map +1 -0
  119. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.d.mts +14 -0
  120. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.d.ts +14 -0
  121. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.js +37 -0
  122. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.js.map +1 -0
  123. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.mjs +30 -0
  124. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.mjs.map +1 -0
  125. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.d.mts +14 -0
  126. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.d.ts +14 -0
  127. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.js +52 -0
  128. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.js.map +1 -0
  129. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.mjs +45 -0
  130. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.mjs.map +1 -0
  131. package/dist/node/lib/AreInterpreter/AreInterpreter.component.d.mts +49 -0
  132. package/dist/node/lib/AreInterpreter/AreInterpreter.component.d.ts +49 -0
  133. package/dist/node/lib/AreInterpreter/AreInterpreter.component.js +164 -0
  134. package/dist/node/lib/AreInterpreter/AreInterpreter.component.js.map +1 -0
  135. package/dist/node/lib/AreInterpreter/AreInterpreter.component.mjs +154 -0
  136. package/dist/node/lib/AreInterpreter/AreInterpreter.component.mjs.map +1 -0
  137. package/dist/node/lib/AreInterpreter/AreInterpreter.constants.js +4 -0
  138. package/dist/node/lib/AreInterpreter/AreInterpreter.constants.js.map +1 -0
  139. package/dist/node/lib/AreInterpreter/AreInterpreter.constants.mjs +3 -0
  140. package/dist/node/lib/AreInterpreter/AreInterpreter.constants.mjs.map +1 -0
  141. package/dist/node/lib/AreInterpreter/AreInterpreter.error.d.mts +6 -0
  142. package/dist/node/lib/AreInterpreter/AreInterpreter.error.d.ts +6 -0
  143. package/dist/node/lib/AreInterpreter/AreInterpreter.error.js +10 -0
  144. package/dist/node/lib/AreInterpreter/AreInterpreter.error.js.map +1 -0
  145. package/dist/node/lib/AreInterpreter/AreInterpreter.error.mjs +9 -0
  146. package/dist/node/lib/AreInterpreter/AreInterpreter.error.mjs.map +1 -0
  147. package/dist/node/lib/AreInterpreter/AreInterpreter.types.js +4 -0
  148. package/dist/node/lib/AreInterpreter/AreInterpreter.types.js.map +1 -0
  149. package/dist/node/lib/AreInterpreter/AreInterpreter.types.mjs +3 -0
  150. package/dist/node/lib/AreInterpreter/AreInterpreter.types.mjs.map +1 -0
  151. package/dist/node/lib/AreLifecycle/AreLifecycle.component.d.mts +188 -0
  152. package/dist/node/lib/AreLifecycle/AreLifecycle.component.d.ts +188 -0
  153. package/dist/node/lib/AreLifecycle/AreLifecycle.component.js +349 -0
  154. package/dist/node/lib/AreLifecycle/AreLifecycle.component.js.map +1 -0
  155. package/dist/node/lib/AreLifecycle/AreLifecycle.component.mjs +339 -0
  156. package/dist/node/lib/AreLifecycle/AreLifecycle.component.mjs.map +1 -0
  157. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.d.mts +2 -0
  158. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.d.ts +2 -0
  159. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.js +4 -0
  160. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.js.map +1 -0
  161. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.mjs +3 -0
  162. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.mjs.map +1 -0
  163. package/dist/node/lib/AreLifecycle/AreLifecycle.error.d.mts +7 -0
  164. package/dist/node/lib/AreLifecycle/AreLifecycle.error.d.ts +7 -0
  165. package/dist/node/lib/AreLifecycle/AreLifecycle.error.js +11 -0
  166. package/dist/node/lib/AreLifecycle/AreLifecycle.error.js.map +1 -0
  167. package/dist/node/lib/AreLifecycle/AreLifecycle.error.mjs +10 -0
  168. package/dist/node/lib/AreLifecycle/AreLifecycle.error.mjs.map +1 -0
  169. package/dist/node/lib/AreLifecycle/AreLifecycle.types.d.mts +2 -0
  170. package/dist/node/lib/AreLifecycle/AreLifecycle.types.d.ts +2 -0
  171. package/dist/node/lib/AreLifecycle/AreLifecycle.types.js +4 -0
  172. package/dist/node/lib/AreLifecycle/AreLifecycle.types.js.map +1 -0
  173. package/dist/node/lib/AreLifecycle/AreLifecycle.types.mjs +3 -0
  174. package/dist/node/lib/AreLifecycle/AreLifecycle.types.mjs.map +1 -0
  175. package/dist/node/lib/AreLoader/AreLoader.component.d.mts +31 -0
  176. package/dist/node/lib/AreLoader/AreLoader.component.d.ts +31 -0
  177. package/dist/node/lib/AreLoader/AreLoader.component.js +64 -0
  178. package/dist/node/lib/AreLoader/AreLoader.component.js.map +1 -0
  179. package/dist/node/lib/AreLoader/AreLoader.component.mjs +54 -0
  180. package/dist/node/lib/AreLoader/AreLoader.component.mjs.map +1 -0
  181. package/dist/node/lib/AreLoader/AreLoader.constants.d.mts +2 -0
  182. package/dist/node/lib/AreLoader/AreLoader.constants.d.ts +2 -0
  183. package/dist/node/lib/AreLoader/AreLoader.constants.js +4 -0
  184. package/dist/node/lib/AreLoader/AreLoader.constants.js.map +1 -0
  185. package/dist/node/lib/AreLoader/AreLoader.constants.mjs +3 -0
  186. package/dist/node/lib/AreLoader/AreLoader.constants.mjs.map +1 -0
  187. package/dist/node/lib/AreLoader/AreLoader.error.d.mts +8 -0
  188. package/dist/node/lib/AreLoader/AreLoader.error.d.ts +8 -0
  189. package/dist/node/lib/AreLoader/AreLoader.error.js +12 -0
  190. package/dist/node/lib/AreLoader/AreLoader.error.js.map +1 -0
  191. package/dist/node/lib/AreLoader/AreLoader.error.mjs +11 -0
  192. package/dist/node/lib/AreLoader/AreLoader.error.mjs.map +1 -0
  193. package/dist/node/lib/AreLoader/AreLoader.types.d.mts +2 -0
  194. package/dist/node/lib/AreLoader/AreLoader.types.d.ts +2 -0
  195. package/dist/node/lib/AreLoader/AreLoader.types.js +4 -0
  196. package/dist/node/lib/AreLoader/AreLoader.types.js.map +1 -0
  197. package/dist/node/lib/AreLoader/AreLoader.types.mjs +3 -0
  198. package/dist/node/lib/AreLoader/AreLoader.types.mjs.map +1 -0
  199. package/dist/node/lib/AreNode/AreNode.constants.d.mts +87 -17
  200. package/dist/node/lib/AreNode/AreNode.constants.d.ts +87 -17
  201. package/dist/node/lib/AreNode/AreNode.constants.js +111 -11
  202. package/dist/node/lib/AreNode/AreNode.constants.js.map +1 -1
  203. package/dist/node/lib/AreNode/AreNode.constants.mjs +111 -12
  204. package/dist/node/lib/AreNode/AreNode.constants.mjs.map +1 -1
  205. package/dist/node/lib/AreNode/AreNode.entity.d.mts +12 -6
  206. package/dist/node/lib/AreNode/AreNode.entity.d.ts +12 -6
  207. package/dist/node/lib/AreNode/AreNode.entity.js +281 -49
  208. package/dist/node/lib/AreNode/AreNode.entity.js.map +1 -1
  209. package/dist/node/lib/AreNode/AreNode.entity.mjs +282 -50
  210. package/dist/node/lib/AreNode/AreNode.entity.mjs.map +1 -1
  211. package/dist/node/lib/AreNode/AreNode.types.d.mts +14 -13
  212. package/dist/node/lib/AreNode/AreNode.types.d.ts +14 -13
  213. package/dist/node/lib/AreScene/AreScene.constants.d.mts +7 -0
  214. package/dist/node/lib/AreScene/AreScene.constants.d.ts +7 -0
  215. package/dist/node/lib/AreScene/AreScene.constants.js +11 -0
  216. package/dist/node/lib/AreScene/AreScene.constants.js.map +1 -0
  217. package/dist/node/lib/AreScene/AreScene.constants.mjs +11 -0
  218. package/dist/node/lib/AreScene/AreScene.constants.mjs.map +1 -0
  219. package/dist/node/lib/AreScene/AreScene.context.d.mts +12 -6
  220. package/dist/node/lib/AreScene/AreScene.context.d.ts +12 -6
  221. package/dist/node/lib/AreScene/AreScene.context.js +284 -186
  222. package/dist/node/lib/AreScene/AreScene.context.js.map +1 -1
  223. package/dist/node/lib/AreScene/AreScene.context.mjs +277 -185
  224. package/dist/node/lib/AreScene/AreScene.context.mjs.map +1 -1
  225. package/dist/node/lib/AreScene/AreScene.error.d.mts +4 -0
  226. package/dist/node/lib/AreScene/AreScene.error.d.ts +4 -0
  227. package/dist/node/lib/AreScene/AreScene.error.js +4 -0
  228. package/dist/node/lib/AreScene/AreScene.error.js.map +1 -1
  229. package/dist/node/lib/AreScene/AreScene.error.mjs +4 -0
  230. package/dist/node/lib/AreScene/AreScene.error.mjs.map +1 -1
  231. package/dist/node/lib/AreScene/AreScene.types.d.mts +14 -9
  232. package/dist/node/lib/AreScene/AreScene.types.d.ts +14 -9
  233. package/dist/node/lib/AreSignals/AreSignal.entity.d.mts +6 -0
  234. package/dist/node/lib/AreSignals/AreSignal.entity.d.ts +6 -0
  235. package/dist/node/lib/AreSignals/AreSignal.entity.js +24 -0
  236. package/dist/node/lib/AreSignals/AreSignal.entity.js.map +1 -0
  237. package/dist/node/lib/AreSignals/AreSignal.entity.mjs +17 -0
  238. package/dist/node/lib/AreSignals/AreSignal.entity.mjs.map +1 -0
  239. package/dist/node/lib/AreSignals/AreSignals.component.d.mts +35 -0
  240. package/dist/node/lib/AreSignals/AreSignals.component.d.ts +35 -0
  241. package/dist/node/lib/AreSignals/AreSignals.component.js +90 -0
  242. package/dist/node/lib/AreSignals/AreSignals.component.js.map +1 -0
  243. package/dist/node/lib/AreSignals/AreSignals.component.mjs +80 -0
  244. package/dist/node/lib/AreSignals/AreSignals.component.mjs.map +1 -0
  245. package/dist/node/lib/AreSignals/AreSignals.constants.d.mts +2 -0
  246. package/dist/node/lib/AreSignals/AreSignals.constants.d.ts +2 -0
  247. package/dist/node/lib/AreSignals/AreSignals.constants.js +4 -0
  248. package/dist/node/lib/AreSignals/AreSignals.constants.js.map +1 -0
  249. package/dist/node/lib/AreSignals/AreSignals.constants.mjs +3 -0
  250. package/dist/node/lib/AreSignals/AreSignals.constants.mjs.map +1 -0
  251. package/dist/node/lib/AreSignals/AreSignals.context.d.mts +86 -0
  252. package/dist/node/lib/AreSignals/AreSignals.context.d.ts +86 -0
  253. package/dist/node/lib/AreSignals/AreSignals.context.js +153 -0
  254. package/dist/node/lib/AreSignals/AreSignals.context.js.map +1 -0
  255. package/dist/node/lib/AreSignals/AreSignals.context.mjs +146 -0
  256. package/dist/node/lib/AreSignals/AreSignals.context.mjs.map +1 -0
  257. package/dist/node/lib/AreSignals/AreSignals.meta.d.mts +15 -0
  258. package/dist/node/lib/AreSignals/AreSignals.meta.d.ts +15 -0
  259. package/dist/node/lib/AreSignals/AreSignals.meta.js +48 -0
  260. package/dist/node/lib/AreSignals/AreSignals.meta.js.map +1 -0
  261. package/dist/node/lib/AreSignals/AreSignals.meta.mjs +47 -0
  262. package/dist/node/lib/AreSignals/AreSignals.meta.mjs.map +1 -0
  263. package/dist/node/lib/AreSignals/AreSignals.types.d.mts +18 -0
  264. package/dist/node/lib/AreSignals/AreSignals.types.d.ts +18 -0
  265. package/dist/node/lib/AreSignals/AreSignals.types.js +4 -0
  266. package/dist/node/lib/AreSignals/AreSignals.types.js.map +1 -0
  267. package/dist/node/lib/AreSignals/AreSignals.types.mjs +3 -0
  268. package/dist/node/lib/AreSignals/AreSignals.types.mjs.map +1 -0
  269. package/dist/node/lib/AreSignals/entities/AreInit.signal.d.mts +8 -0
  270. package/dist/node/lib/AreSignals/entities/AreInit.signal.d.ts +8 -0
  271. package/dist/node/lib/AreSignals/entities/AreInit.signal.js +13 -0
  272. package/dist/node/lib/AreSignals/entities/AreInit.signal.js.map +1 -0
  273. package/dist/node/lib/AreSignals/entities/AreInit.signal.mjs +12 -0
  274. package/dist/node/lib/AreSignals/entities/AreInit.signal.mjs.map +1 -0
  275. package/dist/node/lib/AreSignals/entities/AreRoute.signal.d.mts +12 -0
  276. package/dist/node/lib/AreSignals/entities/AreRoute.signal.d.ts +12 -0
  277. package/dist/node/lib/AreSignals/entities/AreRoute.signal.js +25 -0
  278. package/dist/node/lib/AreSignals/entities/AreRoute.signal.js.map +1 -0
  279. package/dist/node/lib/AreSignals/entities/AreRoute.signal.mjs +24 -0
  280. package/dist/node/lib/AreSignals/entities/AreRoute.signal.mjs.map +1 -0
  281. package/dist/node/lib/AreStore/AreStore.constants.d.mts +5 -0
  282. package/dist/node/lib/AreStore/AreStore.constants.d.ts +5 -0
  283. package/dist/node/lib/AreStore/AreStore.constants.js +9 -0
  284. package/dist/node/lib/AreStore/AreStore.constants.js.map +1 -0
  285. package/dist/node/lib/AreStore/AreStore.constants.mjs +9 -0
  286. package/dist/node/lib/AreStore/AreStore.constants.mjs.map +1 -0
  287. package/dist/node/lib/AreStore/AreStore.context.d.mts +14 -10
  288. package/dist/node/lib/AreStore/AreStore.context.d.ts +14 -10
  289. package/dist/node/lib/AreStore/AreStore.context.js +162 -6
  290. package/dist/node/lib/AreStore/AreStore.context.js.map +1 -1
  291. package/dist/node/lib/AreStore/AreStore.context.mjs +162 -6
  292. package/dist/node/lib/AreStore/AreStore.context.mjs.map +1 -1
  293. package/dist/node/lib/AreStore/AreStore.types.d.mts +9 -0
  294. package/dist/node/lib/AreStore/AreStore.types.d.ts +9 -0
  295. package/dist/node/lib/AreStore/AreStore.types.js +4 -0
  296. package/dist/node/lib/AreStore/AreStore.types.js.map +1 -0
  297. package/dist/node/lib/AreStore/AreStore.types.mjs +3 -0
  298. package/dist/node/lib/AreStore/AreStore.types.mjs.map +1 -0
  299. package/dist/node/lib/AreSyntax/AreSyntax.constants.d.mts +2 -0
  300. package/dist/node/lib/AreSyntax/AreSyntax.constants.d.ts +2 -0
  301. package/dist/node/lib/AreSyntax/AreSyntax.constants.js +4 -0
  302. package/dist/node/lib/AreSyntax/AreSyntax.constants.js.map +1 -0
  303. package/dist/node/lib/AreSyntax/AreSyntax.constants.mjs +3 -0
  304. package/dist/node/lib/AreSyntax/AreSyntax.constants.mjs.map +1 -0
  305. package/dist/node/lib/AreSyntax/AreSyntax.context.d.mts +99 -51
  306. package/dist/node/lib/AreSyntax/AreSyntax.context.d.ts +99 -51
  307. package/dist/node/lib/AreSyntax/AreSyntax.context.js +305 -73
  308. package/dist/node/lib/AreSyntax/AreSyntax.context.js.map +1 -1
  309. package/dist/node/lib/AreSyntax/AreSyntax.context.mjs +306 -74
  310. package/dist/node/lib/AreSyntax/AreSyntax.context.mjs.map +1 -1
  311. package/dist/node/lib/AreSyntax/AreSyntax.types.d.mts +14 -132
  312. package/dist/node/lib/AreSyntax/AreSyntax.types.d.ts +14 -132
  313. package/dist/node/lib/AreSyntax/AreSyntax.types.js.map +1 -1
  314. package/dist/node/lib/AreSyntax/AreSyntax.types.mjs.map +1 -1
  315. package/dist/node/lib/AreTokenizer/AreTokenizer.component.d.mts +43 -0
  316. package/dist/node/lib/AreTokenizer/AreTokenizer.component.d.ts +43 -0
  317. package/dist/node/lib/AreTokenizer/AreTokenizer.component.js +238 -0
  318. package/dist/node/lib/AreTokenizer/AreTokenizer.component.js.map +1 -0
  319. package/dist/node/lib/AreTokenizer/AreTokenizer.component.mjs +228 -0
  320. package/dist/node/lib/AreTokenizer/AreTokenizer.component.mjs.map +1 -0
  321. package/dist/node/lib/AreTokenizer/AreTokenizer.error.d.mts +6 -0
  322. package/dist/node/lib/AreTokenizer/AreTokenizer.error.d.ts +6 -0
  323. package/dist/node/lib/AreTokenizer/AreTokenizer.error.js +10 -0
  324. package/dist/node/lib/AreTokenizer/AreTokenizer.error.js.map +1 -0
  325. package/dist/node/lib/AreTokenizer/AreTokenizer.error.mjs +9 -0
  326. package/dist/node/lib/AreTokenizer/AreTokenizer.error.mjs.map +1 -0
  327. package/dist/node/lib/AreTransformer/AreTransformer.component.d.mts +20 -0
  328. package/dist/node/lib/AreTransformer/AreTransformer.component.d.ts +20 -0
  329. package/dist/node/lib/AreTransformer/AreTransformer.component.js +48 -0
  330. package/dist/node/lib/AreTransformer/AreTransformer.component.js.map +1 -0
  331. package/dist/node/lib/AreTransformer/AreTransformer.component.mjs +38 -0
  332. package/dist/node/lib/AreTransformer/AreTransformer.component.mjs.map +1 -0
  333. package/dist/node/lib/AreTransformer/AreTransformer.constants.d.mts +2 -0
  334. package/dist/node/lib/AreTransformer/AreTransformer.constants.d.ts +2 -0
  335. package/dist/node/lib/AreTransformer/AreTransformer.constants.js +4 -0
  336. package/dist/node/lib/AreTransformer/AreTransformer.constants.js.map +1 -0
  337. package/dist/node/lib/AreTransformer/AreTransformer.constants.mjs +3 -0
  338. package/dist/node/lib/AreTransformer/AreTransformer.constants.mjs.map +1 -0
  339. package/dist/node/lib/AreTransformer/AreTransformer.types.d.mts +2 -0
  340. package/dist/node/lib/AreTransformer/AreTransformer.types.d.ts +2 -0
  341. package/dist/node/lib/AreTransformer/AreTransformer.types.js +4 -0
  342. package/dist/node/lib/AreTransformer/AreTransformer.types.js.map +1 -0
  343. package/dist/node/lib/AreTransformer/AreTransformer.types.mjs +3 -0
  344. package/dist/node/lib/AreTransformer/AreTransformer.types.mjs.map +1 -0
  345. package/dist/node/lib/AreWatcher/AreWatcher.component.d.mts +18 -0
  346. package/dist/node/lib/AreWatcher/AreWatcher.component.d.ts +18 -0
  347. package/dist/node/lib/AreWatcher/AreWatcher.component.js +78 -0
  348. package/dist/node/lib/AreWatcher/AreWatcher.component.js.map +1 -0
  349. package/dist/node/lib/AreWatcher/AreWatcher.component.mjs +71 -0
  350. package/dist/node/lib/AreWatcher/AreWatcher.component.mjs.map +1 -0
  351. package/dist/node/lib/AreWatcher/AreWatcher.constants.d.mts +2 -0
  352. package/dist/node/lib/AreWatcher/AreWatcher.constants.d.ts +2 -0
  353. package/dist/node/lib/AreWatcher/AreWatcher.constants.js +4 -0
  354. package/dist/node/lib/AreWatcher/AreWatcher.constants.js.map +1 -0
  355. package/dist/node/lib/AreWatcher/AreWatcher.constants.mjs +3 -0
  356. package/dist/node/lib/AreWatcher/AreWatcher.constants.mjs.map +1 -0
  357. package/dist/node/lib/AreWatcher/AreWatcher.context.d.mts +2 -0
  358. package/dist/node/lib/AreWatcher/AreWatcher.context.d.ts +2 -0
  359. package/dist/node/lib/AreWatcher/AreWatcher.context.js +4 -0
  360. package/dist/node/lib/AreWatcher/AreWatcher.context.js.map +1 -0
  361. package/dist/node/lib/AreWatcher/AreWatcher.context.mjs +3 -0
  362. package/dist/node/lib/AreWatcher/AreWatcher.context.mjs.map +1 -0
  363. package/dist/node/lib/AreWatcher/AreWatcher.types.d.mts +2 -0
  364. package/dist/node/lib/AreWatcher/AreWatcher.types.d.ts +2 -0
  365. package/dist/node/lib/AreWatcher/AreWatcher.types.js +4 -0
  366. package/dist/node/lib/AreWatcher/AreWatcher.types.js.map +1 -0
  367. package/dist/node/lib/AreWatcher/AreWatcher.types.mjs +3 -0
  368. package/dist/node/lib/AreWatcher/AreWatcher.types.mjs.map +1 -0
  369. package/jest.config.ts +30 -19
  370. package/package.json +10 -8
  371. package/src/index.ts +92 -15
  372. package/src/lib/AreAttribute/AreAttribute.constants.ts +22 -0
  373. package/src/lib/AreAttribute/AreAttribute.entity.ts +136 -0
  374. package/src/lib/AreAttribute/AreAttribute.types.ts +51 -0
  375. package/src/lib/AreCompiler/AreCompiler.component.ts +48 -980
  376. package/src/lib/AreComponent/Are.component.ts +102 -50
  377. package/src/lib/AreComponent/Are.constants.ts +59 -39
  378. package/src/lib/AreComponent/Are.context.ts +120 -8
  379. package/src/lib/AreComponent/Are.meta.ts +16 -0
  380. package/src/lib/AreComponent/Are.types.ts +30 -0
  381. package/src/lib/AreEngine/AreEngine.component.ts +317 -0
  382. package/src/lib/AreEngine/AreEngine.constants.ts +7 -0
  383. package/src/lib/AreEngine/AreEngine.error.ts +9 -0
  384. package/src/lib/AreEngine/AreEngine.types.ts +24 -0
  385. package/src/lib/AreEvent/AreEvent.context.ts +3 -27
  386. package/src/lib/AreInstruction/AreInstruction.constants.ts +23 -0
  387. package/src/lib/AreInstruction/AreInstruction.entity.ts +207 -0
  388. package/src/lib/AreInstruction/AreInstruction.error.ts +7 -0
  389. package/src/lib/AreInstruction/AreInstruction.types.ts +63 -0
  390. package/src/lib/AreInstruction/types/AreDeclaration.instruction.ts +77 -0
  391. package/src/lib/AreInstruction/types/AreMutation.instruction.ts +87 -0
  392. package/src/lib/AreInterpreter/AreInterpreter.component.ts +208 -0
  393. package/src/lib/AreInterpreter/AreInterpreter.error.ts +6 -0
  394. package/src/lib/AreLifecycle/AreLifecycle.component.ts +638 -0
  395. package/src/lib/AreLifecycle/AreLifecycle.constants.ts +0 -0
  396. package/src/lib/AreLifecycle/AreLifecycle.error.ts +9 -0
  397. package/src/lib/AreLifecycle/AreLifecycle.types.ts +0 -0
  398. package/src/lib/AreLoader/AreLoader.component.ts +89 -0
  399. package/src/lib/AreLoader/AreLoader.constants.ts +0 -0
  400. package/src/lib/AreLoader/AreLoader.error.ts +10 -0
  401. package/src/lib/AreLoader/AreLoader.types.ts +0 -0
  402. package/src/lib/AreNode/AreNode.constants.ts +111 -16
  403. package/src/lib/AreNode/AreNode.entity.ts +380 -91
  404. package/src/lib/AreNode/AreNode.types.ts +7 -11
  405. package/src/lib/AreScene/AreScene.constants.ts +7 -0
  406. package/src/lib/AreScene/AreScene.context.ts +305 -284
  407. package/src/lib/AreScene/AreScene.error.ts +9 -1
  408. package/src/lib/AreScene/AreScene.types.ts +21 -3
  409. package/src/lib/AreSignals/AreSignal.entity.ts +17 -0
  410. package/src/lib/AreSignals/AreSignals.component.ts +98 -0
  411. package/src/lib/AreSignals/AreSignals.constants.ts +0 -0
  412. package/src/lib/AreSignals/AreSignals.context.ts +196 -0
  413. package/src/lib/AreSignals/AreSignals.meta.ts +75 -0
  414. package/src/lib/AreSignals/AreSignals.types.ts +18 -0
  415. package/src/lib/AreSignals/entities/AreInit.signal.ts +7 -0
  416. package/src/lib/AreSignals/entities/AreRoute.signal.ts +27 -0
  417. package/src/lib/AreStore/AreStore.constants.ts +6 -0
  418. package/src/lib/AreStore/AreStore.context.ts +243 -14
  419. package/src/lib/AreStore/AreStore.types.ts +19 -0
  420. package/src/lib/AreSyntax/AreSyntax.constants.ts +0 -0
  421. package/src/lib/AreSyntax/AreSyntax.context.ts +352 -78
  422. package/src/lib/AreSyntax/AreSyntax.types.ts +75 -139
  423. package/src/lib/AreTokenizer/AreTokenizer.component.ts +289 -0
  424. package/src/lib/AreTokenizer/AreTokenizer.error.ts +7 -0
  425. package/src/lib/AreTransformer/AreTransformer.component.ts +46 -0
  426. package/src/lib/AreTransformer/AreTransformer.constants.ts +0 -0
  427. package/src/lib/AreTransformer/AreTransformer.types.ts +0 -0
  428. package/src/lib/AreWatcher/AreWatcher.component.ts +84 -0
  429. package/src/lib/AreWatcher/AreWatcher.constants.ts +0 -0
  430. package/src/lib/AreWatcher/AreWatcher.context.ts +0 -0
  431. package/src/lib/AreWatcher/AreWatcher.types.ts +0 -0
  432. package/tests/AreInstruction.test.ts +73 -0
  433. package/tests/AreScene.test.ts +62 -0
  434. package/tests/AreSignals.test.ts +55 -0
  435. package/tests/AreTokenizer.test.ts +254 -0
  436. package/tests/jest.setup.ts +30 -0
  437. package/tsconfig.json +19 -19
  438. package/tsup.config.ts +6 -0
  439. package/dist/node/engines/html/AreHTML.compiler.d.mts +0 -114
  440. package/dist/node/engines/html/AreHTML.compiler.d.ts +0 -114
  441. package/dist/node/engines/html/AreHTML.compiler.js +0 -408
  442. package/dist/node/engines/html/AreHTML.compiler.js.map +0 -1
  443. package/dist/node/engines/html/AreHTML.compiler.mjs +0 -398
  444. package/dist/node/engines/html/AreHTML.compiler.mjs.map +0 -1
  445. package/dist/node/engines/html/AreHTML.engine.d.mts +0 -36
  446. package/dist/node/engines/html/AreHTML.engine.d.ts +0 -36
  447. package/dist/node/engines/html/AreHTML.engine.js +0 -122
  448. package/dist/node/engines/html/AreHTML.engine.js.map +0 -1
  449. package/dist/node/engines/html/AreHTML.engine.mjs +0 -112
  450. package/dist/node/engines/html/AreHTML.engine.mjs.map +0 -1
  451. package/dist/node/engines/html/index.d.mts +0 -26
  452. package/dist/node/engines/html/index.d.ts +0 -26
  453. package/dist/node/engines/html/index.js +0 -17
  454. package/dist/node/engines/html/index.js.map +0 -1
  455. package/dist/node/engines/html/index.mjs +0 -5
  456. package/dist/node/engines/html/index.mjs.map +0 -1
  457. package/dist/node/engines/json/AreJSON.compiler.d.mts +0 -21
  458. package/dist/node/engines/json/AreJSON.compiler.d.ts +0 -21
  459. package/dist/node/engines/json/AreJSON.compiler.js +0 -24
  460. package/dist/node/engines/json/AreJSON.compiler.js.map +0 -1
  461. package/dist/node/engines/json/AreJSON.compiler.mjs +0 -17
  462. package/dist/node/engines/json/AreJSON.compiler.mjs.map +0 -1
  463. package/dist/node/index-BD-6iOuR.d.ts +0 -238
  464. package/dist/node/index-DMXWCL7R.d.mts +0 -238
  465. package/dist/node/lib/AreApp/AreApp.container.d.mts +0 -22
  466. package/dist/node/lib/AreApp/AreApp.container.d.ts +0 -22
  467. package/dist/node/lib/AreApp/AreApp.container.js +0 -60
  468. package/dist/node/lib/AreApp/AreApp.container.js.map +0 -1
  469. package/dist/node/lib/AreApp/AreApp.container.mjs +0 -48
  470. package/dist/node/lib/AreApp/AreApp.container.mjs.map +0 -1
  471. package/dist/node/lib/AreApp/AreApp.env.js +0 -4
  472. package/dist/node/lib/AreApp/AreApp.env.js.map +0 -1
  473. package/dist/node/lib/AreApp/AreApp.env.mjs +0 -3
  474. package/dist/node/lib/AreApp/AreApp.env.mjs.map +0 -1
  475. package/dist/node/lib/AreApp/AreApp.error.d.mts +0 -6
  476. package/dist/node/lib/AreApp/AreApp.error.d.ts +0 -6
  477. package/dist/node/lib/AreApp/AreApp.error.js +0 -10
  478. package/dist/node/lib/AreApp/AreApp.error.js.map +0 -1
  479. package/dist/node/lib/AreApp/AreApp.error.mjs +0 -9
  480. package/dist/node/lib/AreApp/AreApp.error.mjs.map +0 -1
  481. package/dist/node/lib/AreApp/AreApp.types.js +0 -4
  482. package/dist/node/lib/AreApp/AreApp.types.js.map +0 -1
  483. package/dist/node/lib/AreApp/AreApp.types.mjs +0 -3
  484. package/dist/node/lib/AreApp/AreApp.types.mjs.map +0 -1
  485. package/dist/node/lib/AreApp/index.d.mts +0 -17
  486. package/dist/node/lib/AreApp/index.d.ts +0 -17
  487. package/dist/node/lib/AreApp/index.js +0 -24
  488. package/dist/node/lib/AreApp/index.js.map +0 -1
  489. package/dist/node/lib/AreApp/index.mjs +0 -6
  490. package/dist/node/lib/AreApp/index.mjs.map +0 -1
  491. package/dist/node/lib/AreCompiler/index.d.mts +0 -17
  492. package/dist/node/lib/AreCompiler/index.d.ts +0 -17
  493. package/dist/node/lib/AreCompiler/index.js +0 -24
  494. package/dist/node/lib/AreCompiler/index.js.map +0 -1
  495. package/dist/node/lib/AreCompiler/index.mjs +0 -6
  496. package/dist/node/lib/AreCompiler/index.mjs.map +0 -1
  497. package/dist/node/lib/AreComponent/index.d.mts +0 -11
  498. package/dist/node/lib/AreComponent/index.d.ts +0 -11
  499. package/dist/node/lib/AreComponent/index.js +0 -31
  500. package/dist/node/lib/AreComponent/index.js.map +0 -1
  501. package/dist/node/lib/AreComponent/index.mjs +0 -7
  502. package/dist/node/lib/AreComponent/index.mjs.map +0 -1
  503. package/dist/node/lib/AreEvent/index.d.mts +0 -8
  504. package/dist/node/lib/AreEvent/index.d.ts +0 -8
  505. package/dist/node/lib/AreEvent/index.js +0 -19
  506. package/dist/node/lib/AreEvent/index.js.map +0 -1
  507. package/dist/node/lib/AreEvent/index.mjs +0 -5
  508. package/dist/node/lib/AreEvent/index.mjs.map +0 -1
  509. package/dist/node/lib/AreIndex/AreIndex.context.d.mts +0 -8
  510. package/dist/node/lib/AreIndex/AreIndex.context.d.ts +0 -8
  511. package/dist/node/lib/AreIndex/AreIndex.context.js +0 -142
  512. package/dist/node/lib/AreIndex/AreIndex.context.js.map +0 -1
  513. package/dist/node/lib/AreIndex/AreIndex.context.mjs +0 -141
  514. package/dist/node/lib/AreIndex/AreIndex.context.mjs.map +0 -1
  515. package/dist/node/lib/AreIndex/index.d.mts +0 -8
  516. package/dist/node/lib/AreIndex/index.d.ts +0 -8
  517. package/dist/node/lib/AreIndex/index.js +0 -12
  518. package/dist/node/lib/AreIndex/index.js.map +0 -1
  519. package/dist/node/lib/AreIndex/index.mjs +0 -4
  520. package/dist/node/lib/AreIndex/index.mjs.map +0 -1
  521. package/dist/node/lib/AreNode/index.d.mts +0 -9
  522. package/dist/node/lib/AreNode/index.d.ts +0 -9
  523. package/dist/node/lib/AreNode/index.js +0 -26
  524. package/dist/node/lib/AreNode/index.js.map +0 -1
  525. package/dist/node/lib/AreNode/index.mjs +0 -6
  526. package/dist/node/lib/AreNode/index.mjs.map +0 -1
  527. package/dist/node/lib/AreProps/AreProps.context.d.mts +0 -9
  528. package/dist/node/lib/AreProps/AreProps.context.d.ts +0 -9
  529. package/dist/node/lib/AreProps/AreProps.context.js +0 -32
  530. package/dist/node/lib/AreProps/AreProps.context.js.map +0 -1
  531. package/dist/node/lib/AreProps/AreProps.context.mjs +0 -25
  532. package/dist/node/lib/AreProps/AreProps.context.mjs.map +0 -1
  533. package/dist/node/lib/AreProps/index.d.mts +0 -3
  534. package/dist/node/lib/AreProps/index.d.ts +0 -3
  535. package/dist/node/lib/AreProps/index.js +0 -12
  536. package/dist/node/lib/AreProps/index.js.map +0 -1
  537. package/dist/node/lib/AreProps/index.mjs +0 -4
  538. package/dist/node/lib/AreProps/index.mjs.map +0 -1
  539. package/dist/node/lib/AreRoot/AreRoot.component.d.mts +0 -18
  540. package/dist/node/lib/AreRoot/AreRoot.component.d.ts +0 -18
  541. package/dist/node/lib/AreRoot/AreRoot.component.js +0 -53
  542. package/dist/node/lib/AreRoot/AreRoot.component.js.map +0 -1
  543. package/dist/node/lib/AreRoot/AreRoot.component.mjs +0 -41
  544. package/dist/node/lib/AreRoot/AreRoot.component.mjs.map +0 -1
  545. package/dist/node/lib/AreRoot/index.d.mts +0 -11
  546. package/dist/node/lib/AreRoot/index.d.ts +0 -11
  547. package/dist/node/lib/AreRoot/index.js +0 -12
  548. package/dist/node/lib/AreRoot/index.js.map +0 -1
  549. package/dist/node/lib/AreRoot/index.mjs +0 -4
  550. package/dist/node/lib/AreRoot/index.mjs.map +0 -1
  551. package/dist/node/lib/AreRouter/AreRouter.componeent.d.mts +0 -17
  552. package/dist/node/lib/AreRouter/AreRouter.componeent.d.ts +0 -17
  553. package/dist/node/lib/AreRouter/AreRouter.componeent.js +0 -37
  554. package/dist/node/lib/AreRouter/AreRouter.componeent.js.map +0 -1
  555. package/dist/node/lib/AreRouter/AreRouter.componeent.mjs +0 -25
  556. package/dist/node/lib/AreRouter/AreRouter.componeent.mjs.map +0 -1
  557. package/dist/node/lib/AreRouter/index.d.mts +0 -12
  558. package/dist/node/lib/AreRouter/index.d.ts +0 -12
  559. package/dist/node/lib/AreRouter/index.js +0 -12
  560. package/dist/node/lib/AreRouter/index.js.map +0 -1
  561. package/dist/node/lib/AreRouter/index.mjs +0 -4
  562. package/dist/node/lib/AreRouter/index.mjs.map +0 -1
  563. package/dist/node/lib/AreScene/index.d.mts +0 -9
  564. package/dist/node/lib/AreScene/index.d.ts +0 -9
  565. package/dist/node/lib/AreScene/index.js +0 -24
  566. package/dist/node/lib/AreScene/index.js.map +0 -1
  567. package/dist/node/lib/AreScene/index.mjs +0 -6
  568. package/dist/node/lib/AreScene/index.mjs.map +0 -1
  569. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.d.mts +0 -7
  570. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.d.ts +0 -7
  571. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.js +0 -12
  572. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.js.map +0 -1
  573. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.mjs +0 -12
  574. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.mjs.map +0 -1
  575. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.d.mts +0 -8
  576. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.d.ts +0 -8
  577. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.js +0 -95
  578. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.js.map +0 -1
  579. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.mjs +0 -94
  580. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.mjs.map +0 -1
  581. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.d.mts +0 -8
  582. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.d.ts +0 -8
  583. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.js +0 -4
  584. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.js.map +0 -1
  585. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.mjs +0 -3
  586. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.mjs.map +0 -1
  587. package/dist/node/lib/AreSceneInstruction/index.d.mts +0 -19
  588. package/dist/node/lib/AreSceneInstruction/index.d.ts +0 -19
  589. package/dist/node/lib/AreSceneInstruction/index.js +0 -33
  590. package/dist/node/lib/AreSceneInstruction/index.js.map +0 -1
  591. package/dist/node/lib/AreSceneInstruction/index.mjs +0 -7
  592. package/dist/node/lib/AreSceneInstruction/index.mjs.map +0 -1
  593. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.d.mts +0 -19
  594. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.d.ts +0 -19
  595. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.js +0 -27
  596. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.js.map +0 -1
  597. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.mjs +0 -26
  598. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.mjs.map +0 -1
  599. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.d.mts +0 -20
  600. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.d.ts +0 -20
  601. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.js +0 -27
  602. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.js.map +0 -1
  603. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.mjs +0 -26
  604. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.mjs.map +0 -1
  605. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.d.mts +0 -17
  606. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.d.ts +0 -17
  607. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.js +0 -23
  608. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.js.map +0 -1
  609. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.mjs +0 -22
  610. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.mjs.map +0 -1
  611. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.d.mts +0 -19
  612. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.d.ts +0 -19
  613. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.js +0 -27
  614. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.js.map +0 -1
  615. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.mjs +0 -26
  616. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.mjs.map +0 -1
  617. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.d.mts +0 -23
  618. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.d.ts +0 -23
  619. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.js +0 -41
  620. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.js.map +0 -1
  621. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.mjs +0 -40
  622. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.mjs.map +0 -1
  623. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.d.mts +0 -15
  624. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.d.ts +0 -15
  625. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.js +0 -21
  626. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.js.map +0 -1
  627. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.mjs +0 -20
  628. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.mjs.map +0 -1
  629. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.d.mts +0 -17
  630. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.d.ts +0 -17
  631. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.js +0 -23
  632. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.js.map +0 -1
  633. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.mjs +0 -22
  634. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.mjs.map +0 -1
  635. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.d.mts +0 -23
  636. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.d.ts +0 -23
  637. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.js +0 -34
  638. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.js.map +0 -1
  639. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.mjs +0 -33
  640. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.mjs.map +0 -1
  641. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.d.mts +0 -16
  642. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.d.ts +0 -16
  643. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.js +0 -20
  644. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.js.map +0 -1
  645. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.mjs +0 -19
  646. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.mjs.map +0 -1
  647. package/dist/node/lib/AreSceneInstruction/types/index.d.mts +0 -18
  648. package/dist/node/lib/AreSceneInstruction/types/index.d.ts +0 -18
  649. package/dist/node/lib/AreSceneInstruction/types/index.js +0 -52
  650. package/dist/node/lib/AreSceneInstruction/types/index.js.map +0 -1
  651. package/dist/node/lib/AreSceneInstruction/types/index.mjs +0 -12
  652. package/dist/node/lib/AreSceneInstruction/types/index.mjs.map +0 -1
  653. package/dist/node/lib/AreSlot/AreSlot.component.d.mts +0 -8
  654. package/dist/node/lib/AreSlot/AreSlot.component.d.ts +0 -8
  655. package/dist/node/lib/AreSlot/AreSlot.component.js +0 -37
  656. package/dist/node/lib/AreSlot/AreSlot.component.js.map +0 -1
  657. package/dist/node/lib/AreSlot/AreSlot.component.mjs +0 -36
  658. package/dist/node/lib/AreSlot/AreSlot.component.mjs.map +0 -1
  659. package/dist/node/lib/AreStore/index.d.mts +0 -3
  660. package/dist/node/lib/AreStore/index.d.ts +0 -3
  661. package/dist/node/lib/AreStore/index.js +0 -12
  662. package/dist/node/lib/AreStore/index.js.map +0 -1
  663. package/dist/node/lib/AreStore/index.mjs +0 -4
  664. package/dist/node/lib/AreStore/index.mjs.map +0 -1
  665. package/dist/node/lib/AreSyntax/AreSyntax.component.d.mts +0 -89
  666. package/dist/node/lib/AreSyntax/AreSyntax.component.d.ts +0 -89
  667. package/dist/node/lib/AreSyntax/AreSyntax.component.js +0 -241
  668. package/dist/node/lib/AreSyntax/AreSyntax.component.js.map +0 -1
  669. package/dist/node/lib/AreSyntax/AreSyntax.component.mjs +0 -232
  670. package/dist/node/lib/AreSyntax/AreSyntax.component.mjs.map +0 -1
  671. package/dist/node/lib/AreSyntax/index.d.mts +0 -12
  672. package/dist/node/lib/AreSyntax/index.d.ts +0 -12
  673. package/dist/node/lib/AreSyntax/index.js +0 -29
  674. package/dist/node/lib/AreSyntax/index.js.map +0 -1
  675. package/dist/node/lib/AreSyntax/index.mjs +0 -7
  676. package/dist/node/lib/AreSyntax/index.mjs.map +0 -1
  677. package/dist/node/signals/AreInit.signal.d.mts +0 -7
  678. package/dist/node/signals/AreInit.signal.d.ts +0 -7
  679. package/dist/node/signals/AreInit.signal.js +0 -13
  680. package/dist/node/signals/AreInit.signal.js.map +0 -1
  681. package/dist/node/signals/AreInit.signal.mjs +0 -12
  682. package/dist/node/signals/AreInit.signal.mjs.map +0 -1
  683. package/dist/node/signals/AreRoute.signal.d.mts +0 -12
  684. package/dist/node/signals/AreRoute.signal.d.ts +0 -12
  685. package/dist/node/signals/AreRoute.signal.js +0 -24
  686. package/dist/node/signals/AreRoute.signal.js.map +0 -1
  687. package/dist/node/signals/AreRoute.signal.mjs +0 -23
  688. package/dist/node/signals/AreRoute.signal.mjs.map +0 -1
  689. package/dist/node/signals/index.d.mts +0 -4
  690. package/dist/node/signals/index.d.ts +0 -4
  691. package/dist/node/signals/index.js +0 -17
  692. package/dist/node/signals/index.js.map +0 -1
  693. package/dist/node/signals/index.mjs +0 -5
  694. package/dist/node/signals/index.mjs.map +0 -1
  695. package/examples/jumpstart/concept.ts +0 -60
  696. package/examples/jumpstart/containers/UI.container.ts +0 -172
  697. package/examples/jumpstart/dist/index.html +0 -22
  698. package/examples/jumpstart/dist/mls3rrlq-lofs95.js +0 -129
  699. package/examples/jumpstart/dist/static/css/main.css +0 -40
  700. package/examples/jumpstart/dist/static/img/test.png +0 -0
  701. package/examples/jumpstart/public/index.html +0 -22
  702. package/examples/jumpstart/public/static/css/main.css +0 -40
  703. package/examples/jumpstart/public/static/img/test.png +0 -0
  704. package/examples/jumpstart/src/components/A-Btn.component.ts +0 -124
  705. package/examples/jumpstart/src/components/A-Input.component.ts +0 -78
  706. package/examples/jumpstart/src/components/A-Navigation.component.ts +0 -167
  707. package/examples/jumpstart/src/components/SignInComponent.component.ts +0 -127
  708. package/examples/jumpstart/src/concept.ts +0 -92
  709. package/src/engines/html/AreHTML.compiler.ts +0 -657
  710. package/src/engines/html/AreHTML.engine.ts +0 -62
  711. package/src/engines/html/index.ts +0 -2
  712. package/src/engines/json/AreJSON.compiler.ts +0 -13
  713. package/src/lib/AreApp/AreApp.container.ts +0 -77
  714. package/src/lib/AreApp/AreApp.error.ts +0 -7
  715. package/src/lib/AreApp/index.ts +0 -4
  716. package/src/lib/AreCompiler/index.ts +0 -3
  717. package/src/lib/AreComponent/index.ts +0 -4
  718. package/src/lib/AreEvent/index.ts +0 -2
  719. package/src/lib/AreIndex/AreIndex.context.ts +0 -174
  720. package/src/lib/AreIndex/index.ts +0 -1
  721. package/src/lib/AreNode/index.ts +0 -4
  722. package/src/lib/AreProps/AreProps.context.ts +0 -26
  723. package/src/lib/AreProps/index.ts +0 -1
  724. package/src/lib/AreRoot/AreRoot.component.ts +0 -54
  725. package/src/lib/AreRoot/index.ts +0 -1
  726. package/src/lib/AreRouter/AreRouter.componeent.ts +0 -24
  727. package/src/lib/AreRouter/index.ts +0 -1
  728. package/src/lib/AreScene/index.ts +0 -3
  729. package/src/lib/AreSceneInstruction/AreSceneInstruction.constants.ts +0 -7
  730. package/src/lib/AreSceneInstruction/AreSceneInstruction.entity.ts +0 -156
  731. package/src/lib/AreSceneInstruction/AreSceneInstruction.types.ts +0 -8
  732. package/src/lib/AreSceneInstruction/index.ts +0 -4
  733. package/src/lib/AreSceneInstruction/types/AddAttribute.instruction.ts +0 -34
  734. package/src/lib/AreSceneInstruction/types/AddDirective.instruction.ts +0 -36
  735. package/src/lib/AreSceneInstruction/types/AddStyle.instruction.ts +0 -26
  736. package/src/lib/AreSceneInstruction/types/AddStyleProperty.instruction.ts +0 -32
  737. package/src/lib/AreSceneInstruction/types/AttachListener.instruction.ts +0 -57
  738. package/src/lib/AreSceneInstruction/types/AttachRootNode.instruction.ts +0 -23
  739. package/src/lib/AreSceneInstruction/types/MountNode.instruction.ts +0 -29
  740. package/src/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.ts +0 -45
  741. package/src/lib/AreSceneInstruction/types/UnmountNode.instruction.ts +0 -22
  742. package/src/lib/AreSceneInstruction/types/index.ts +0 -10
  743. package/src/lib/AreSlot/AreSlot.component.ts +0 -48
  744. package/src/lib/AreStore/index.ts +0 -1
  745. package/src/lib/AreSyntax/AreSyntax.component.ts +0 -378
  746. package/src/lib/AreSyntax/index.ts +0 -4
  747. package/src/signals/AreInit.signal.ts +0 -7
  748. package/src/signals/AreRoute.signal.ts +0 -25
  749. package/src/signals/index.ts +0 -2
  750. package/tests/A-HttpChannel.test.ts +0 -204
  751. package/tests/A-HttpServerError.test.ts +0 -204
  752. package/tests/A-Request.test.ts +0 -742
  753. package/tests/A-Service.test.ts +0 -18
  754. /package/dist/node/lib/{AreApp/AreApp.env.d.mts → AreInterpreter/AreInterpreter.constants.d.mts} +0 -0
  755. /package/dist/node/lib/{AreApp/AreApp.env.d.ts → AreInterpreter/AreInterpreter.constants.d.ts} +0 -0
  756. /package/dist/node/lib/{AreApp/AreApp.types.d.mts → AreInterpreter/AreInterpreter.types.d.mts} +0 -0
  757. /package/dist/node/lib/{AreApp/AreApp.types.d.ts → AreInterpreter/AreInterpreter.types.d.ts} +0 -0
  758. /package/src/lib/{AreApp/AreApp.env.ts → AreInterpreter/AreInterpreter.constants.ts} +0 -0
  759. /package/src/lib/{AreApp/AreApp.types.ts → AreInterpreter/AreInterpreter.types.ts} +0 -0
@@ -1,247 +1,339 @@
1
- import '../../chunk-EQQGB2QZ.mjs';
1
+ import { __decorateClass } from '../../chunk-EQQGB2QZ.mjs';
2
2
  import { A_Fragment, A_Context, A_Dependency } from '@adaas/a-concept';
3
- import { AreIndex } from '../AreIndex/AreIndex.context';
4
- import { AreNode } from '@adaas/are/node';
5
- import { AreProps } from '@adaas/are/props';
6
- import { AreStore } from '@adaas/are/store';
7
- import { AreSceneInstruction } from '@adaas/are/scene-instruction';
3
+ import { A_Frame } from '@adaas/a-frame';
4
+ import { AreDeclaration } from '@adaas/are/instruction/types/AreDeclaration.instruction';
5
+ import { AreInstruction } from '@adaas/are/instruction/AreInstruction.entity';
6
+ import { AreSceneError } from './AreScene.error';
7
+ import { AreMutation } from '@adaas/are/instruction/types/AreMutation.instruction';
8
+ import { AreSceneStatuses } from './AreScene.constants';
8
9
 
9
- class AreScene extends A_Fragment {
10
+ let AreScene = class extends A_Fragment {
10
11
  constructor(id) {
11
12
  super({ name: id.toString() });
12
- this._state = /* @__PURE__ */ new Set();
13
+ // -----------------------------------------------------------------------------------
14
+ // -----------------------------------Scene Index-------------------------------------
15
+ // -----------------------------------------------------------------------------------
16
+ this._groupToInstructionsMap = /* @__PURE__ */ new Map();
17
+ /**
18
+ * Plan is a queue of changes that should be applied to render the node
19
+ *
20
+ * It works as FIFO, so the first instruction that should be applied is the first one in the queue, and so on.
21
+ */
22
+ this._plan = [];
23
+ /**
24
+ * State is a list of instructions that are currently applied to the node,
25
+ * so it represents the current state of the node in the scene.
26
+ *
27
+ * It always in a reverse order of the plan, so the last instruction in the state is the first one that should be reverted when we need to revert the changes, and so on.
28
+ *
29
+ * For example, if we have a node with two instructions in the plan: [Instruction A, Instruction B], and both of them are applied to the node, then the state will be [Instruction B, Instruction A], so when we need to revert the changes, we will revert Instruction B first, and then Instruction A.
30
+ */
31
+ this._state = [];
32
+ /**
33
+ * Scene status is used to determine the current lifecycle stage of the scene, which can be 'active', 'inactive' or 'destroyed'. This status can be used to control the behavior of the scene and its instructions, for example, we can prevent applying new instructions to an inactive or destroyed scene, or we can trigger certain actions when the scene becomes active or inactive. The default status of the scene is 'inactive', which means that the scene is not yet rendered and its instructions are not applied, and it will become 'active' when it is mounted and its instructions are applied, and it will become 'destroyed' when it is unmounted and its instructions are reverted.
34
+ */
35
+ this._status = AreSceneStatuses.Active;
13
36
  }
37
+ /**
38
+ * Scene ID that corresponds to the root node's ID (part of ASEID)
39
+ */
14
40
  get id() {
15
41
  return this.name;
16
42
  }
17
43
  /**
18
- * Get the root scene of the current scene
44
+ * The scope where scene is registered. This scope is owned by AreNode
19
45
  */
20
- get root() {
21
- let currentScope = this.scope;
22
- let rootScene = this;
23
- while (currentScope) {
24
- const parentScene = currentScope.parent?.resolve(this.constructor);
25
- if (parentScene) {
26
- rootScene = parentScene;
27
- }
28
- currentScope = currentScope.parent;
29
- }
30
- return rootScene;
31
- }
32
46
  get scope() {
33
47
  return A_Context.scope(this);
34
48
  }
35
- get index() {
36
- return A_Context.scope(this).resolveFlat(AreIndex);
49
+ /**
50
+ * The owner node of the scene, which is the node that registered the scene in its scope.
51
+ * This is typically the node that is responsible for rendering the scene and managing its lifecycle.
52
+ */
53
+ get owner() {
54
+ return this.scope.issuer();
37
55
  }
38
- get parent() {
39
- return A_Context.scope(this).parent?.resolveFlat(AreScene);
56
+ /**
57
+ * It's a primary declaration instruction that represents the node in the scene, so it should be registered as a host instruction for the scene, and it will be used to keep track of the node in the scene and to manage its lifecycle.
58
+ */
59
+ get host() {
60
+ return this._host;
40
61
  }
41
- get children() {
42
- return this.scope.resolveFlatAll(AreNode).map((n) => n.scope.resolveFlat(AreScene)).filter((s) => !!s);
62
+ /**
63
+ * Scene status is used to determine the current lifecycle stage of the scene, which can be 'active', 'inactive' or 'destroyed'. This status can be used to control the behavior of the scene and its instructions, for example, we can prevent applying new instructions to an inactive or destroyed scene, or we can trigger certain actions when the scene becomes active or inactive. The default status of the scene is 'inactive', which means that the scene is not yet rendered and its instructions are not applied, and it will become 'active' when it is mounted and its instructions are applied, and it will become 'destroyed' when it is unmounted and its instructions are reverted.
64
+ */
65
+ get status() {
66
+ return this._status;
43
67
  }
44
- get depth() {
45
- let depth = 0;
46
- let currentScope = this.scope;
47
- while (currentScope) {
48
- if (currentScope.parent && currentScope.parent.resolve(this.constructor)) {
49
- depth++;
50
- }
51
- currentScope = currentScope.parent;
52
- }
53
- return depth;
68
+ get isActive() {
69
+ return this.status === AreSceneStatuses.Active;
54
70
  }
55
- get instructions() {
56
- return this.scope.resolveFlatAll(AreSceneInstruction) || [];
57
- }
58
- nodes(filter) {
59
- const nodes = [];
60
- for (const path of this.paths()) {
61
- const node = this.index.nodeOf(path);
62
- if (!node) {
63
- continue;
64
- }
65
- if (filter && !filter(node)) {
66
- continue;
71
+ get isInactive() {
72
+ return this.status === AreSceneStatuses.Inactive;
73
+ }
74
+ /**
75
+ * Returns All declaration instructions are registered in the scene scope. Since declaration instructions are the main instructions that represent the structure of the node, we have a separate getter for them to easily access and manage them in the scene.
76
+ */
77
+ get declarations() {
78
+ return this.scope.resolve(new A_Dependency(AreDeclaration, {
79
+ flat: true,
80
+ pagination: {
81
+ count: -1
67
82
  }
68
- nodes.push(node);
69
- }
70
- return nodes;
71
- }
72
- renderPlanFor(node, filter) {
73
- const actions = [];
74
- const order = filter?.order || [];
75
- const filterFn = filter?.filter;
76
- let plan = this.instructions;
77
- plan = plan.sort((a, b) => {
78
- const aIndex = order.findIndex((instructionType) => a instanceof instructionType);
79
- const bIndex = order.findIndex((instructionType) => b instanceof instructionType);
80
- return (aIndex === -1 ? order.length : aIndex) - (bIndex === -1 ? order.length : bIndex);
81
- });
82
- if (filterFn) {
83
- plan = plan.filter(filterFn);
84
- }
85
- for (const action of plan) {
86
- if (action.node === node) {
87
- actions.push(action);
83
+ })) || [];
84
+ }
85
+ /**
86
+ * Returns All mutation instructions are registered in the scene scope. Mutation instructions are the instructions that represent the changes to be applied to the node, so we have a separate getter for them to easily access and manage them in the scene, especially when we want to apply or revert changes based on the mutations.
87
+ */
88
+ get mutations() {
89
+ return this.scope.resolve(new A_Dependency(AreMutation, {
90
+ flat: true,
91
+ pagination: {
92
+ count: -1
88
93
  }
89
- }
90
- return actions;
94
+ })) || [];
91
95
  }
92
- get debugPrefix() {
93
- return `${" - ".repeat(this.depth)}`;
96
+ /**
97
+ * Returns All instructions are registered in the scene scope.
98
+ */
99
+ get instructions() {
100
+ return this.scope.resolveFlatAll(AreInstruction) || [];
94
101
  }
95
- get path() {
96
- if (!this.parent)
97
- return "";
98
- else {
99
- const ownerNode = this.parent.scope.resolve(new A_Dependency(AreNode, {
102
+ /**
103
+ * Plan is a queue of changes that should be applied to render the node
104
+ *
105
+ * It works as FIFO, so the first instruction that should be applied is the first one in the queue, and so on.
106
+ */
107
+ get planned() {
108
+ return this._plan;
109
+ }
110
+ /**
111
+ * State is a list of instructions that are currently applied to the node,
112
+ * so it represents the current state of the node in the scene.
113
+ *
114
+ * It always in a reverse order of the plan, so the last instruction in the state is the first one that should be reverted when we need to revert the changes, and so on.
115
+ *
116
+ * For example, if we have a node with two instructions in the plan: [Instruction A, Instruction B], and both of them are applied to the node, then the state will be [Instruction B, Instruction A], so when we need to revert the changes, we will revert Instruction B first, and then Instruction A.
117
+ */
118
+ get applied() {
119
+ return this._state.reverse();
120
+ }
121
+ /**
122
+ * Should return instructions to be reverted and to be applied.
123
+ * A difference between plan vs state is that plan is what should be applied to the scene,
124
+ * while state is what currently applied to the scene.
125
+ *
126
+ */
127
+ get changes() {
128
+ const toApply = this.planned.filter((i) => !this.isApplied(i));
129
+ const toRevert = this.applied.filter((i) => !this.isInPlan(i));
130
+ return {
131
+ toApply,
132
+ toRevert
133
+ };
134
+ }
135
+ //===============================================================================================
136
+ //============================= Scene Primary Methods ===========================================
137
+ //===============================================================================================
138
+ activate() {
139
+ this._status = AreSceneStatuses.Active;
140
+ }
141
+ deactivate() {
142
+ this._status = AreSceneStatuses.Inactive;
143
+ }
144
+ /**
145
+ * Each scene has a primary declaration instruction that represents the node in the scene, so it should be registered as a host instruction for the scene, and it will be used to keep track of the node in the scene and to manage its lifecycle. This method allows to set the host instruction for the scene, but it will throw an error if we try to set another host instruction while there is already a host instruction set, so we can ensure that there is only one host instruction for the scene at any given time.
146
+ *
147
+ * @param instruction
148
+ */
149
+ setHost(instruction) {
150
+ if (this.host) {
151
+ const dependentInstructions = this.scope.resolve(new A_Dependency(AreMutation, {
100
152
  flat: true,
153
+ pagination: {
154
+ count: -1
155
+ },
101
156
  query: {
102
- aseid: this.id
157
+ parent: this.host.aseid.toString()
103
158
  }
104
- }));
105
- const NodePath = this.parent.index.pathOf(ownerNode);
106
- return this.parent.path ? this.parent.path + "." + NodePath : NodePath;
159
+ })) || [];
160
+ dependentInstructions.forEach((element) => {
161
+ element.attachTo(instruction);
162
+ element.groupWith(instruction);
163
+ });
107
164
  }
165
+ this._host = instruction;
108
166
  }
109
- *paths() {
110
- let paths = this.index.paths;
111
- paths.sort((a, b) => {
112
- const aParsed = a.split(".").map((part) => parseInt(part, 10));
113
- const bParsed = b.split(".").map((part) => parseInt(part, 10));
114
- const len = Math.min(aParsed.length, bParsed.length);
115
- for (let i = 0; i < len; i++) {
116
- if (aParsed[i] !== bParsed[i]) {
117
- return aParsed[i] - bParsed[i];
118
- }
119
- }
120
- return aParsed.length - bParsed.length;
121
- });
122
- for (const path of paths) {
123
- yield path;
124
- }
167
+ /**
168
+ * Unsets the current host instruction from the scene.
169
+ *
170
+ * This method should be used when we want to remove the primary declaration instruction that represents the node in the scene, for example, when we want to unmount the node or when we want to replace it with another node. Unsetting the host instruction will allow us to set a new host instruction for the scene if needed.
171
+ */
172
+ removeHost() {
173
+ if (this.host)
174
+ throw new AreSceneError({
175
+ title: AreSceneError.HostInstructionHasConnectedInstructions,
176
+ description: `Cannot remove host instruction (${this.host.aseid}) from scene ${this.id} because it has planned instructions in the scene. Please unPlan all instructions related to the host instruction before removing it.`
177
+ });
178
+ this._host = void 0;
125
179
  }
180
+ // ------------------------------------------------------------------------------------------------------------
181
+ // Scene Render Plan Methods
182
+ // ------------------------------------------------------------------------------------------------------------
183
+ /**
184
+ * Method that should register the instruction in the plan, so it will be rendered in the next render cycle.
185
+ *
186
+ * @param instruction
187
+ */
126
188
  plan(instruction) {
127
189
  try {
128
190
  this.scope.register(instruction);
129
191
  } catch (error) {
130
192
  }
131
- }
132
- unPlan(instruction) {
133
- const planned = this.getPlanned(instruction);
134
- try {
135
- if (planned)
136
- this.scope.deregister(planned);
137
- } catch (error) {
193
+ this._plan.push(instruction);
194
+ if (!this._groupToInstructionsMap.has(instruction.group || "default")) {
195
+ this._groupToInstructionsMap.set(instruction.group || "default", /* @__PURE__ */ new Set());
138
196
  }
197
+ this._groupToInstructionsMap.get(instruction.group || "default").add(instruction);
139
198
  }
140
- isAttached(node) {
141
- return !!this.scope.resolve(new A_Dependency(AreNode, {
142
- flat: true,
143
- query: {
144
- aseid: node.aseid
199
+ planBefore(instruction, beforeInstruction) {
200
+ const beforeIndex = this._plan.findIndex((i) => i.aseid.toString() === beforeInstruction.aseid.toString());
201
+ const instructionIndex = this._plan.findIndex((i) => i.aseid.toString() === instruction.aseid.toString());
202
+ if (beforeIndex === -1) {
203
+ throw new AreSceneError({
204
+ title: AreSceneError.SceneError,
205
+ description: `Instruction ${beforeInstruction.aseid} is not in the plan of scene ${this.id}. Cannot plan instruction ${instruction.aseid} before it.`
206
+ });
207
+ }
208
+ if (instructionIndex === -1) {
209
+ try {
210
+ this.scope.register(instruction);
211
+ } catch (error) {
145
212
  }
146
- }));
147
- }
148
- attach(node) {
149
- this.scope.register(node);
150
- node.scope.inherit(this.scope);
151
- }
152
- sceneOf(node) {
153
- return node.scope.resolveFlat(AreScene);
213
+ this._plan.splice(beforeIndex, 0, instruction);
214
+ } else {
215
+ this._plan.splice(instructionIndex, 1);
216
+ this._plan.splice(beforeIndex, 0, instruction);
217
+ }
154
218
  }
155
- propsOf(node) {
156
- return node.scope.resolveFlat(AreProps);
219
+ planAfter(instruction, afterInstruction) {
220
+ const afterIndex = this._plan.findIndex((i) => i.aseid.toString() === afterInstruction.aseid.toString());
221
+ const instructionIndex = this._plan.findIndex((i) => i.aseid.toString() === instruction.aseid.toString());
222
+ if (afterIndex === -1) {
223
+ throw new AreSceneError({
224
+ title: AreSceneError.SceneError,
225
+ description: `Instruction ${afterInstruction.aseid} is not in the plan of scene ${this.id}. Cannot plan instruction ${instruction.aseid} after it.`
226
+ });
227
+ }
228
+ if (instructionIndex === -1) {
229
+ this.scope.register(instruction);
230
+ this._plan.splice(afterIndex + 1, 0, instruction);
231
+ } else {
232
+ this._plan.splice(instructionIndex, 1);
233
+ this._plan.splice(afterIndex + 1, 0, instruction);
234
+ }
157
235
  }
158
- storeOf(node) {
159
- return node.scope.resolveFlat(AreStore);
236
+ moveBefore(instruction, beforeInstruction) {
237
+ if (!this.isInPlan(instruction)) {
238
+ throw new AreSceneError({
239
+ title: AreSceneError.SceneError,
240
+ description: `Instruction ${instruction.aseid} is not in the plan of scene ${this.id}. Cannot move instruction before ${beforeInstruction.aseid}. Please plan the instruction before moving it.`
241
+ });
242
+ }
243
+ this.planBefore(instruction, beforeInstruction);
160
244
  }
161
- isPlanned(action) {
162
- return this.getPlanned(action) !== void 0;
245
+ moveAfter(instruction, afterInstruction) {
246
+ if (!this.isInPlan(instruction)) {
247
+ throw new AreSceneError({
248
+ title: AreSceneError.SceneError,
249
+ description: `Instruction ${instruction.aseid} is not in the plan of scene ${this.id}. Cannot move instruction after ${afterInstruction.aseid}. Please plan the instruction before moving it.`
250
+ });
251
+ }
252
+ this.planAfter(instruction, afterInstruction);
163
253
  }
164
254
  /**
165
- * It returns planned instruction instance from the scene
255
+ * Allows to remove instruction from the plan, so it will not be rendered anymore, but it will still be registered in the scene scope, so it can be planned again if needed.
166
256
  *
167
- * [!] Only Planned instructions can be used for state checking
257
+ * @param instruction
258
+ */
259
+ unPlan(instruction) {
260
+ this._plan = this._plan.filter((i) => i.aseid.toString() !== instruction.aseid.toString());
261
+ }
262
+ /**
263
+ * Checks if the instruction is already in the plan, so it will be rendered in the next render cycle.
168
264
  *
169
265
  * @param instruction
170
266
  * @returns
171
267
  */
172
268
  getPlanned(instruction) {
173
- const planned = this.scope.resolve(new A_Dependency(AreSceneInstruction, {
174
- flat: true,
175
- query: {
176
- aseid: instruction.aseid.toString()
177
- }
178
- }));
179
- return planned;
269
+ const found = this._plan.find((i) => i.aseid.toString() === instruction.aseid.toString());
270
+ return found;
180
271
  }
181
272
  /**
182
- * Operation Only applicable from Plan -> State
183
- *
184
- * So only instructions presented in the plan can be moved to state
185
- * State is a set of instructions that are currently applied to the scene
273
+ * Checks if the instruction is already in the plan, so it will be rendered in the next render cycle.
186
274
  *
187
275
  * @param instruction
276
+ * @returns
188
277
  */
189
- setState(instruction) {
190
- const planned = this.getPlanned(instruction);
191
- if (planned) {
192
- this._state.delete(planned.aseid.toString());
193
- this._state.add(instruction.aseid.toString());
194
- }
195
- }
196
- dropState(instruction) {
197
- const planned = this.getPlanned(instruction);
198
- if (planned) {
199
- this._state.delete(planned.aseid.toString());
200
- }
278
+ isInPlan(instruction) {
279
+ return !!this.getPlanned(instruction);
201
280
  }
202
- resetPlan(node) {
203
- for (const instruction of this.renderPlanFor(node)) {
204
- if (instruction.node === node) {
205
- this.unPlan(instruction);
206
- }
281
+ // -------------------------------------------------------------------------------------------------------------
282
+ // Scene Apply Methods
283
+ // -------------------------------------------------------------------------------------------------------------
284
+ /**
285
+ * Method moves the instruction to state to keep it applied and to be able to revert it later if needed. The instruction should be already registered in the scene scope and planned to be applied, otherwise it will not be applied.
286
+ *
287
+ * @param instruction
288
+ */
289
+ apply(instruction) {
290
+ if (!this.isApplied(instruction)) {
291
+ this._state.push(instruction);
207
292
  }
208
293
  }
209
- resetState(node) {
210
- for (const instruction of this.renderPlanFor(node)) {
211
- if (instruction.node === node) {
212
- this._state.delete(instruction.aseid.toString());
213
- }
214
- }
294
+ /**
295
+ * Method moves the instruction from state to unapply it and to be able to apply it later if needed. The instruction should be already registered in the scene scope and applied, otherwise it will not be unapplied.
296
+ *
297
+ * @param instruction
298
+ */
299
+ unApply(instruction) {
300
+ this._state = this._state.filter((i) => i.aseid.toString() !== instruction.aseid.toString());
215
301
  }
216
- getState(instruction) {
217
- const planned = this.getPlanned(instruction);
218
- if (!planned) {
219
- return void 0;
220
- }
221
- if (this._state.has(planned.aseid.toString()))
222
- return planned;
223
- else
224
- return void 0;
302
+ /**
303
+ * Checks if the instruction is already in the state, so it is currently applied to the scene.
304
+ *
305
+ * @param instruction
306
+ * @returns
307
+ */
308
+ getApplied(instruction) {
309
+ const found = this._state.find((i) => i.aseid.toString() === instruction.aseid.toString());
310
+ return found;
225
311
  }
226
- revert(instruction) {
227
- this._state.delete(instruction.aseid.toString());
312
+ /**
313
+ * Checks if the instruction is already in the state, so it is currently applied to the scene.
314
+ *
315
+ * @param instruction
316
+ * @returns
317
+ */
318
+ isApplied(instruction) {
319
+ return !!this.getApplied(instruction);
228
320
  }
321
+ /**
322
+ * Method that should reset the scene to the initial state, so it will clear the plan and state, but it will not deregister the instructions from the scene scope, so they will still be registered in the scene and can be planned and applied again if needed.
323
+ *
324
+ */
229
325
  reset() {
230
- this.index.clear();
231
- this._state.clear();
232
- }
233
- toJSON() {
234
- return {
235
- ...super.toJSON(),
236
- children: Object.fromEntries(
237
- Array.from(this.children).map((child) => [
238
- child.id.toString(),
239
- child.toJSON()
240
- ])
241
- )
242
- };
326
+ this._plan = [];
327
+ this._state = [];
243
328
  }
244
- }
329
+ };
330
+ AreScene = __decorateClass([
331
+ A_Frame.Component({
332
+ namespace: "A-ARE",
333
+ name: "AreScene",
334
+ description: "Persistent runtime structure that owns the rendering state for a component's lifetime. Maintains two sets \u2014 applied (what is currently in the DOM) and planned (what should be). Acts as the single source of truth for all rendering decisions. The Compiler produces it once, the Interpreter reads it on every update."
335
+ })
336
+ ], AreScene);
245
337
 
246
338
  export { AreScene };
247
339
  //# sourceMappingURL=AreScene.context.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/AreScene/AreScene.context.ts"],"names":[],"mappings":"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","file":"AreScene.context.mjs","sourcesContent":["import { A_Context, A_Dependency, A_Fragment, A_Scope, ASEID } from \"@adaas/a-concept\";\nimport { AreIndex } from \"../AreIndex/AreIndex.context\";\nimport { AreNode } from \"@adaas/are/node\";\nimport { AreSCene_Serialized } from \"./AreScene.types\";\nimport { AreProps } from \"@adaas/are/props\";\nimport { AreStore } from \"@adaas/are/store\";\nimport { AreSceneInstruction } from \"@adaas/are/scene-instruction\";\n\nexport class AreScene extends A_Fragment {\n\n protected _state: Set<string> = new Set();\n\n constructor(\n /**\n * Scene identity will be used to identify mounting point in the parent scene\n */\n id: string | ASEID,\n ) {\n super({ name: id.toString() });\n }\n\n get id(): string {\n return this.name;\n }\n\n /**\n * Get the root scene of the current scene\n */\n get root(): AreScene {\n let currentScope: A_Scope | undefined = this.scope;\n let rootScene: AreScene = this;\n\n while (currentScope) {\n const parentScene = currentScope.parent?.resolve<AreScene>(this.constructor as typeof AreScene);\n if (parentScene) {\n rootScene = parentScene;\n }\n currentScope = currentScope.parent;\n }\n\n return rootScene;\n }\n\n get scope(): A_Scope {\n return A_Context.scope(this);\n }\n\n get index(): AreIndex<string> {\n return A_Context.scope(this).resolveFlat<AreIndex<string>>(AreIndex)!;\n }\n\n get parent(): AreScene | undefined {\n return A_Context.scope(this).parent?.resolveFlat<AreScene>(AreScene);\n }\n\n get children(): Array<AreScene> {\n return this.scope.resolveFlatAll<AreNode>(AreNode)\n .map(n => n.scope.resolveFlat<AreScene>(AreScene))\n .filter(s => !!s);\n }\n\n\n get depth(): number {\n let depth = 0;\n let currentScope: A_Scope | undefined = this.scope;\n\n while (currentScope) {\n if (currentScope.parent && currentScope.parent.resolve<AreScene>(this.constructor as typeof AreScene)) {\n depth++;\n }\n currentScope = currentScope.parent;\n }\n\n return depth;\n }\n\n\n get instructions(): Array<AreSceneInstruction> {\n return this.scope.resolveFlatAll<AreSceneInstruction>(AreSceneInstruction) || [];\n }\n\n\n nodes(\n filter?: (node: AreNode) => boolean\n ): AreNode[] {\n\n const nodes: AreNode[] = [];\n\n for (const path of this.paths()) {\n\n const node = this.index.nodeOf(path);\n\n if (!node) {\n continue;\n }\n\n if (filter && !filter(node)) {\n continue;\n }\n\n nodes.push(node);\n }\n\n return nodes;\n }\n\n\n renderPlanFor(\n node: AreNode,\n filter?: {\n filter?: (instruction: AreSceneInstruction) => boolean,\n changes?: Array<new (...args: any[]) => AreSceneInstruction>,\n order?: Array<new (...args: any[]) => AreSceneInstruction>,\n }\n ) {\n\n const actions: AreSceneInstruction[] = [];\n\n const order = filter?.order || [];\n const filterFn = filter?.filter;\n\n let plan = this.instructions;\n\n plan = plan.sort((a, b) => {\n const aIndex = order.findIndex(instructionType => a instanceof instructionType);\n const bIndex = order.findIndex(instructionType => b instanceof instructionType);\n\n return (aIndex === -1 ? order.length : aIndex) - (bIndex === -1 ? order.length : bIndex);\n });\n\n if (filterFn) {\n plan = plan.filter(filterFn);\n }\n\n for (const action of plan) {\n if (action.node === node) {\n actions.push(action);\n }\n }\n return actions;\n }\n\n get debugPrefix() {\n return `${' - '.repeat(this.depth)}`\n }\n\n get path(): string {\n if (!this.parent)\n return '';\n else {\n const ownerNode = this.parent.scope.resolve<AreNode>(new A_Dependency(AreNode, {\n flat: true,\n query: {\n aseid: this.id\n }\n })) as AreNode;\n\n const NodePath = this.parent.index.pathOf(ownerNode);\n\n return this.parent.path ? (this.parent.path + '.' + NodePath) : NodePath!;\n }\n }\n\n *paths(): Iterable<string> {\n let paths = this.index.paths;\n\n // create proper tree sequence\n paths.sort((a, b) => {\n const aParsed = a.split('.').map(part => parseInt(part, 10));\n const bParsed = b.split('.').map(part => parseInt(part, 10));\n\n const len = Math.min(aParsed.length, bParsed.length);\n for (let i = 0; i < len; i++) {\n if (aParsed[i] !== bParsed[i]) {\n return aParsed[i] - bParsed[i];\n }\n }\n return aParsed.length - bParsed.length;\n });\n\n // yield paths\n for (const path of paths) {\n yield path;\n }\n }\n\n plan(instruction: AreSceneInstruction) {\n try {\n this.scope.register(instruction);\n } catch (error) {\n }\n }\n\n unPlan(\n instruction: AreSceneInstruction\n ) {\n const planned = this.getPlanned(instruction);\n\n try {\n if (planned)\n this.scope.deregister(planned);\n } catch (error) {\n\n }\n }\n\n isAttached(node: AreNode): boolean {\n return !!(this.scope.resolve<AreNode>(new A_Dependency(AreNode, {\n flat: true,\n query: {\n aseid: node.aseid\n }\n })));\n }\n\n attach(node: AreNode): void {\n this.scope.register(node);\n node.scope.inherit(this.scope)\n }\n\n sceneOf(node: AreNode): AreScene | undefined {\n return node.scope.resolveFlat<AreScene>(AreScene);\n }\n\n propsOf(node: AreNode): AreProps {\n return node.scope.resolveFlat<AreProps>(AreProps)!;\n }\n\n storeOf(node: AreNode): AreStore {\n return node.scope.resolveFlat<AreStore>(AreStore)!;\n }\n isPlanned(action: AreSceneInstruction): boolean {\n return this.getPlanned(action) !== undefined;\n }\n\n /**\n * It returns planned instruction instance from the scene\n * \n * [!] Only Planned instructions can be used for state checking\n * \n * @param instruction \n * @returns \n */\n getPlanned<T extends AreSceneInstruction>(\n /**\n * Should be instruction instance to get\n */\n instruction: T\n ): T | undefined {\n\n const planned = this.scope.resolve<AreSceneInstruction>(new A_Dependency(AreSceneInstruction, {\n flat: true,\n query: {\n aseid: instruction.aseid.toString()\n }\n })) as T | undefined;\n\n return planned;\n }\n\n /**\n * Operation Only applicable from Plan -> State\n * \n * So only instructions presented in the plan can be moved to state\n * State is a set of instructions that are currently applied to the scene\n * \n * @param instruction \n */\n setState(\n /**\n * Should be instruction instance to apply\n */\n instruction: AreSceneInstruction\n ) {\n const planned = this.getPlanned(instruction);\n\n\n\n if (planned) {\n this._state.delete(planned.aseid.toString());\n this._state.add(instruction.aseid.toString());\n }\n }\n\n\n dropState<T extends AreSceneInstruction>(\n /**\n * Should be instruction instance to drop\n */\n instruction: T\n ) {\n const planned = this.getPlanned(instruction);\n\n if (planned) {\n this._state.delete(planned.aseid.toString());\n }\n }\n\n\n resetPlan(\n node: AreNode\n ) {\n for (const instruction of this.renderPlanFor(node)) {\n if (instruction.node === node) {\n this.unPlan(instruction);\n }\n }\n }\n\n resetState(\n node: AreNode\n ) {\n for (const instruction of this.renderPlanFor(node)) {\n if (instruction.node === node) {\n\n this._state.delete(instruction.aseid.toString());\n }\n }\n }\n\n\n getState<T extends AreSceneInstruction>(\n /**\n * Should be instruction instance to get state for\n */\n instruction: T\n ): T | undefined {\n\n\n const planned = this.getPlanned(instruction);\n\n\n if (!planned) {\n return undefined;\n }\n\n if (this._state.has(planned.aseid.toString()))\n return planned as T;\n else\n return undefined;\n }\n\n revert(\n /**\n * Should be instruction instance to revert\n */\n instruction: AreSceneInstruction\n ) {\n this._state.delete(instruction!.aseid.toString());\n }\n\n\n reset() {\n this.index.clear();\n this._state.clear();\n }\n\n\n toJSON(): AreSCene_Serialized {\n return {\n ...super.toJSON(),\n children: Object.fromEntries(\n Array.from(this.children).map(child => [\n child.id.toString(),\n child.toJSON()\n ])\n )\n }\n }\n}\n\n\n\n\n\n// Just to cover the proper lifecycle\n\n/*\n1) Create Scene with template from mounting point content\n2) Do indexing of the scene \n\n*/"]}
1
+ {"version":3,"sources":["../../../../src/lib/AreScene/AreScene.context.ts"],"names":[],"mappings":";;;;;;;;;AAiBO,IAAM,QAAA,GAAN,cAAuB,UAAA,CAAW;AAAA,EA8BrC,YAII,EAAA,EACF;AACE,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,EAAA,CAAG,QAAA,IAAY,CAAA;AAhCjC;AAAA;AAAA;AAAA,IAAA,IAAA,CAAU,uBAAA,uBAAgE,GAAA,EAAI;AAO9E;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,IAAA,CAAU,QAA+B,EAAC;AAS1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,IAAA,CAAU,SAAgC,EAAC;AAO3C;AAAA;AAAA;AAAA,IAAA,IAAA,CAAU,UAA+B,gBAAA,CAAiB,MAAA;AAAA,EAU1D;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,EAAA,GAAa;AACb,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,KAAA,GAAiB;AACjB,IAAA,OAAO,SAAA,CAAU,MAAM,IAAI,CAAA;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,KAAA,GAAiB;AACjB,IAAA,OAAO,IAAA,CAAK,MAAM,MAAA,EAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,IAAA,GAAmC;AACnC,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,MAAA,GAA8B;AAC9B,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EAChB;AAAA,EAEA,IAAI,QAAA,GAAoB;AACpB,IAAA,OAAO,IAAA,CAAK,WAAW,gBAAA,CAAiB,MAAA;AAAA,EAC5C;AAAA,EAEA,IAAI,UAAA,GAAsB;AACtB,IAAA,OAAO,IAAA,CAAK,WAAW,gBAAA,CAAiB,QAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,YAAA,GAAiC;AACjC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,OAAA,CAAwB,IAAI,aAAa,cAAA,EAAgB;AAAA,MACvE,IAAA,EAAM,IAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACR,KAAA,EAAO;AAAA;AACX,KACH,CAAC,CAAA,IAAyB,EAAC;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,SAAA,GAA2B;AAC3B,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,OAAA,CAAqB,IAAI,aAAa,WAAA,EAAa;AAAA,MACjE,IAAA,EAAM,IAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACR,KAAA,EAAO;AAAA;AACX,KACH,CAAC,CAAA,IAAsB,EAAC;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,YAAA,GAAiC;AACjC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,cAAA,CAA+B,cAAc,KAAK,EAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,OAAA,GAA4B;AAC5B,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAI,OAAA,GAA4B;AAC5B,IAAA,OAAO,IAAA,CAAK,OAAO,OAAA,EAAQ;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,OAAA,GAA2B;AAC3B,IAAA,MAAM,OAAA,GAAU,KAAK,OAAA,CAAQ,MAAA,CAAO,OAAK,CAAC,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAA;AAC3D,IAAA,MAAM,QAAA,GAAW,KAAK,OAAA,CAAQ,MAAA,CAAO,OAAK,CAAC,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA;AAE3D,IAAA,OAAO;AAAA,MACH,OAAA;AAAA,MACA;AAAA,KACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAMA,QAAA,GAAiB;AACb,IAAA,IAAA,CAAK,UAAU,gBAAA,CAAiB,MAAA;AAAA,EACpC;AAAA,EAEA,UAAA,GAAmB;AAEf,IAAA,IAAA,CAAK,UAAU,gBAAA,CAAiB,QAAA;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,WAAA,EAAmC;AACvC,IAAA,IAAI,KAAK,IAAA,EAAM;AACX,MAAA,MAAM,wBAAwB,IAAA,CAAK,KAAA,CAAM,OAAA,CAAqB,IAAI,aAAa,WAAA,EAAa;AAAA,QACxF,IAAA,EAAM,IAAA;AAAA,QACN,UAAA,EAAY;AAAA,UACR,KAAA,EAAO;AAAA,SACX;AAAA,QACA,KAAA,EAAO;AAAA,UACH,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAS;AAErC,OACH,CAAC,CAAA,IAA2B,EAAC;AAE9B,MAAA,qBAAA,CAAsB,QAAQ,CAAA,OAAA,KAAW;AACrC,QAAA,OAAA,CAAQ,SAAS,WAAW,CAAA;AAC5B,QAAA,OAAA,CAAQ,UAAU,WAAW,CAAA;AAAA,MACjC,CAAC,CAAA;AAAA,IACL;AAEA,IAAA,IAAA,CAAK,KAAA,GAAQ,WAAA;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAA,GAAmB;AACf,IAAA,IAAI,IAAA,CAAK,IAAA;AACL,MAAA,MAAM,IAAI,aAAA,CAAc;AAAA,QACpB,OAAO,aAAA,CAAc,uCAAA;AAAA,QACrB,aAAa,CAAA,gCAAA,EAAmC,IAAA,CAAK,KAAK,KAAK,CAAA,aAAA,EAAgB,KAAK,EAAE,CAAA,qIAAA;AAAA,OACzF,CAAA;AAEL,IAAA,IAAA,CAAK,KAAA,GAAQ,MAAA;AAAA,EAEjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,KAAK,WAAA,EAA6B;AAI9B,IAAA,IAAI;AACA,MAAA,IAAA,CAAK,KAAA,CAAM,SAAS,WAAW,CAAA;AAAA,IAEnC,SAAS,KAAA,EAAO;AAAA,IAEhB;AACA,IAAA,IAAA,CAAK,KAAA,CAAM,KAAK,WAAW,CAAA;AAG3B,IAAA,IAAI,CAAC,IAAA,CAAK,uBAAA,CAAwB,IAAI,WAAA,CAAY,KAAA,IAAS,SAAS,CAAA,EAAG;AACnE,MAAA,IAAA,CAAK,wBAAwB,GAAA,CAAI,WAAA,CAAY,SAAS,SAAA,kBAAW,IAAI,KAAK,CAAA;AAAA,IAC9E;AACA,IAAA,IAAA,CAAK,wBAAwB,GAAA,CAAI,WAAA,CAAY,SAAS,SAAS,CAAA,CAAG,IAAI,WAAW,CAAA;AAAA,EAErF;AAAA,EAEA,UAAA,CAAW,aAA6B,iBAAA,EAAmC;AACvE,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,CAAM,QAAA,EAAS,KAAM,iBAAA,CAAkB,KAAA,CAAM,QAAA,EAAU,CAAA;AACvG,IAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,CAAM,QAAA,EAAS,KAAM,WAAA,CAAY,KAAA,CAAM,QAAA,EAAU,CAAA;AAEtG,IAAA,IAAI,gBAAgB,EAAA,EAAI;AACpB,MAAA,MAAM,IAAI,aAAA,CAAc;AAAA,QACpB,OAAO,aAAA,CAAc,UAAA;AAAA,QACrB,WAAA,EAAa,eAAe,iBAAA,CAAkB,KAAK,gCAAgC,IAAA,CAAK,EAAE,CAAA,0BAAA,EAA6B,WAAA,CAAY,KAAK,CAAA,WAAA;AAAA,OAC3I,CAAA;AAAA,IACL;AAEA,IAAA,IAAI,qBAAqB,EAAA,EAAI;AAEzB,MAAA,IAAI;AACA,QAAA,IAAA,CAAK,KAAA,CAAM,SAAS,WAAW,CAAA;AAAA,MAEnC,SAAS,KAAA,EAAO;AAAA,MAEhB;AACA,MAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,WAAA,EAAa,CAAA,EAAG,WAAW,CAAA;AAAA,IACjD,CAAA,MAAO;AAEH,MAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,gBAAA,EAAkB,CAAC,CAAA;AACrC,MAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,WAAA,EAAa,CAAA,EAAG,WAAW,CAAA;AAAA,IACjD;AAAA,EACJ;AAAA,EAEA,SAAA,CAAU,aAA6B,gBAAA,EAAkC;AACrE,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,CAAM,QAAA,EAAS,KAAM,gBAAA,CAAiB,KAAA,CAAM,QAAA,EAAU,CAAA;AACrG,IAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,CAAM,QAAA,EAAS,KAAM,WAAA,CAAY,KAAA,CAAM,QAAA,EAAU,CAAA;AAEtG,IAAA,IAAI,eAAe,EAAA,EAAI;AACnB,MAAA,MAAM,IAAI,aAAA,CAAc;AAAA,QACpB,OAAO,aAAA,CAAc,UAAA;AAAA,QACrB,WAAA,EAAa,eAAe,gBAAA,CAAiB,KAAK,gCAAgC,IAAA,CAAK,EAAE,CAAA,0BAAA,EAA6B,WAAA,CAAY,KAAK,CAAA,UAAA;AAAA,OAC1I,CAAA;AAAA,IACL;AAEA,IAAA,IAAI,qBAAqB,EAAA,EAAI;AACzB,MAAA,IAAA,CAAK,KAAA,CAAM,SAAS,WAAW,CAAA;AAC/B,MAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,UAAA,GAAa,CAAA,EAAG,GAAG,WAAW,CAAA;AAAA,IACpD,CAAA,MAAO;AAEH,MAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,gBAAA,EAAkB,CAAC,CAAA;AACrC,MAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,UAAA,GAAa,CAAA,EAAG,GAAG,WAAW,CAAA;AAAA,IACpD;AAAA,EACJ;AAAA,EAGA,UAAA,CAAW,aAA6B,iBAAA,EAAmC;AACvE,IAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAAG;AAC7B,MAAA,MAAM,IAAI,aAAA,CAAc;AAAA,QACpB,OAAO,aAAA,CAAc,UAAA;AAAA,QACrB,WAAA,EAAa,eAAe,WAAA,CAAY,KAAK,gCAAgC,IAAA,CAAK,EAAE,CAAA,iCAAA,EAAoC,iBAAA,CAAkB,KAAK,CAAA,+CAAA;AAAA,OAClJ,CAAA;AAAA,IACL;AAEA,IAAA,IAAA,CAAK,UAAA,CAAW,aAAa,iBAAiB,CAAA;AAAA,EAClD;AAAA,EAEA,SAAA,CAAU,aAA6B,gBAAA,EAAkC;AACrE,IAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAAG;AAC7B,MAAA,MAAM,IAAI,aAAA,CAAc;AAAA,QACpB,OAAO,aAAA,CAAc,UAAA;AAAA,QACrB,WAAA,EAAa,eAAe,WAAA,CAAY,KAAK,gCAAgC,IAAA,CAAK,EAAE,CAAA,gCAAA,EAAmC,gBAAA,CAAiB,KAAK,CAAA,+CAAA;AAAA,OAChJ,CAAA;AAAA,IACL;AAEA,IAAA,IAAA,CAAK,SAAA,CAAU,aAAa,gBAAgB,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OACI,WAAA,EACF;AAKE,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,CAAM,QAAA,EAAS,KAAM,WAAA,CAAY,KAAA,CAAM,QAAA,EAAU,CAAA;AAAA,EAG3F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,WAAA,EAAyD;AAChE,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,CAAM,QAAA,EAAS,KAAM,WAAA,CAAY,KAAA,CAAM,QAAA,EAAU,CAAA;AAEtF,IAAA,OAAO,KAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,WAAA,EAAsC;AAC3C,IAAA,OAAO,CAAC,CAAC,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,WAAA,EAA6B;AAC/B,IAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,WAAW,CAAA,EAAG;AAC9B,MAAA,IAAA,CAAK,MAAA,CAAO,KAAK,WAAW,CAAA;AAAA,IAChC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QACI,WAAA,EACF;AACE,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,CAAM,QAAA,EAAS,KAAM,WAAA,CAAY,KAAA,CAAM,QAAA,EAAU,CAAA;AAAA,EAC7F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,WAAA,EAAyD;AAChE,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,CAAM,QAAA,EAAS,KAAM,WAAA,CAAY,KAAA,CAAM,QAAA,EAAU,CAAA;AAEvF,IAAA,OAAO,KAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,WAAA,EAAsC;AAC5C,IAAA,OAAO,CAAC,CAAC,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAA,GAAQ;AACJ,IAAA,IAAA,CAAK,QAAQ,EAAC;AACd,IAAA,IAAA,CAAK,SAAS,EAAC;AAAA,EACnB;AACJ;AAjYa,QAAA,GAAN,eAAA,CAAA;AAAA,EALN,QAAQ,SAAA,CAAU;AAAA,IACf,SAAA,EAAW,OAAA;AAAA,IACX,IAAA,EAAM,UAAA;AAAA,IACN,WAAA,EAAa;AAAA,GAChB;AAAA,CAAA,EACY,QAAA,CAAA","file":"AreScene.context.mjs","sourcesContent":["import { A_Context, A_Dependency, A_Fragment, A_Scope, ASEID } from \"@adaas/a-concept\";\nimport { A_Frame } from \"@adaas/a-frame\";\nimport type { AreNode } from \"@adaas/are/node/AreNode.entity\";\nimport { AreDeclaration } from \"@adaas/are/instruction/types/AreDeclaration.instruction\";\nimport { AreInstruction } from \"@adaas/are/instruction/AreInstruction.entity\";\nimport { AreSceneChanges, AreSceneStatusNames } from \"./AreScene.types\";\nimport { AreSceneError } from \"./AreScene.error\";\nimport { AreMutation } from \"@adaas/are/instruction/types/AreMutation.instruction\";\nimport { AreSceneStatuses } from \"./AreScene.constants\";\n\n\n\n@A_Frame.Component({\n namespace: 'A-ARE',\n name: 'AreScene',\n description: \"Persistent runtime structure that owns the rendering state for a component's lifetime. Maintains two sets — applied (what is currently in the DOM) and planned (what should be). Acts as the single source of truth for all rendering decisions. The Compiler produces it once, the Interpreter reads it on every update.\"\n})\nexport class AreScene extends A_Fragment {\n // -----------------------------------------------------------------------------------\n // -----------------------------------Scene Index-------------------------------------\n // -----------------------------------------------------------------------------------\n protected _groupToInstructionsMap: Map<string, Set<AreInstruction>> = new Map();\n\n /**\n * Plan is a queue of changes that should be applied to render the node\n * \n * It works as FIFO, so the first instruction that should be applied is the first one in the queue, and so on.\n */\n protected _plan: Array<AreInstruction> = [];\n /**\n * State is a list of instructions that are currently applied to the node, \n * so it represents the current state of the node in the scene.\n * \n * It always in a reverse order of the plan, so the last instruction in the state is the first one that should be reverted when we need to revert the changes, and so on.\n * \n * For example, if we have a node with two instructions in the plan: [Instruction A, Instruction B], and both of them are applied to the node, then the state will be [Instruction B, Instruction A], so when we need to revert the changes, we will revert Instruction B first, and then Instruction A.\n */\n protected _state: Array<AreInstruction> = [];\n\n\n protected _host: AreDeclaration | undefined;\n /**\n * Scene status is used to determine the current lifecycle stage of the scene, which can be 'active', 'inactive' or 'destroyed'. This status can be used to control the behavior of the scene and its instructions, for example, we can prevent applying new instructions to an inactive or destroyed scene, or we can trigger certain actions when the scene becomes active or inactive. The default status of the scene is 'inactive', which means that the scene is not yet rendered and its instructions are not applied, and it will become 'active' when it is mounted and its instructions are applied, and it will become 'destroyed' when it is unmounted and its instructions are reverted.\n */\n protected _status: AreSceneStatusNames = AreSceneStatuses.Active;\n\n\n constructor(\n /**\n * Scene identity will be used to identify mounting point in the parent scene\n */\n id: string | ASEID,\n ) {\n super({ name: id.toString() });\n }\n\n /**\n * Scene ID that corresponds to the root node's ID (part of ASEID) \n */\n get id(): string {\n return this.name;\n }\n /**\n * The scope where scene is registered. This scope is owned by AreNode \n */\n get scope(): A_Scope {\n return A_Context.scope(this);\n }\n /**\n * The owner node of the scene, which is the node that registered the scene in its scope. \n * This is typically the node that is responsible for rendering the scene and managing its lifecycle.\n */\n get owner(): AreNode {\n return this.scope.issuer() as AreNode;\n }\n /**\n * It's a primary declaration instruction that represents the node in the scene, so it should be registered as a host instruction for the scene, and it will be used to keep track of the node in the scene and to manage its lifecycle.\n */\n get host(): AreDeclaration | undefined {\n return this._host;\n }\n /**\n * Scene status is used to determine the current lifecycle stage of the scene, which can be 'active', 'inactive' or 'destroyed'. This status can be used to control the behavior of the scene and its instructions, for example, we can prevent applying new instructions to an inactive or destroyed scene, or we can trigger certain actions when the scene becomes active or inactive. The default status of the scene is 'inactive', which means that the scene is not yet rendered and its instructions are not applied, and it will become 'active' when it is mounted and its instructions are applied, and it will become 'destroyed' when it is unmounted and its instructions are reverted.\n */\n get status(): AreSceneStatusNames {\n return this._status;\n }\n\n get isActive(): boolean {\n return this.status === AreSceneStatuses.Active;\n }\n\n get isInactive(): boolean {\n return this.status === AreSceneStatuses.Inactive;\n }\n\n /**\n * Returns All declaration instructions are registered in the scene scope. Since declaration instructions are the main instructions that represent the structure of the node, we have a separate getter for them to easily access and manage them in the scene.\n */\n get declarations(): AreDeclaration[] {\n return this.scope.resolve<AreDeclaration>(new A_Dependency(AreDeclaration, {\n flat: true,\n pagination: {\n count: -1,\n }\n })) as AreDeclaration[] || [];\n }\n /**\n * Returns All mutation instructions are registered in the scene scope. Mutation instructions are the instructions that represent the changes to be applied to the node, so we have a separate getter for them to easily access and manage them in the scene, especially when we want to apply or revert changes based on the mutations.\n */\n get mutations(): AreMutation[] {\n return this.scope.resolve<AreMutation>(new A_Dependency(AreMutation, {\n flat: true,\n pagination: {\n count: -1,\n }\n })) as AreMutation[] || [];\n }\n /**\n * Returns All instructions are registered in the scene scope. \n */\n get instructions(): AreInstruction[] {\n return this.scope.resolveFlatAll<AreInstruction>(AreInstruction) || [];\n }\n /**\n * Plan is a queue of changes that should be applied to render the node\n * \n * It works as FIFO, so the first instruction that should be applied is the first one in the queue, and so on.\n */\n get planned(): AreInstruction[] {\n return this._plan;\n }\n /**\n * State is a list of instructions that are currently applied to the node, \n * so it represents the current state of the node in the scene.\n * \n * It always in a reverse order of the plan, so the last instruction in the state is the first one that should be reverted when we need to revert the changes, and so on.\n * \n * For example, if we have a node with two instructions in the plan: [Instruction A, Instruction B], and both of them are applied to the node, then the state will be [Instruction B, Instruction A], so when we need to revert the changes, we will revert Instruction B first, and then Instruction A.\n */\n get applied(): AreInstruction[] {\n return this._state.reverse(); // we reverse the state to have the correct order of instructions, so the first instruction in the state is the first one that should be reverted when we need to revert the changes, and so on.\n }\n\n /**\n * Should return instructions to be reverted and to be applied. \n * A difference between plan vs state is that plan is what should be applied to the scene, \n * while state is what currently applied to the scene. \n * \n */\n get changes(): AreSceneChanges {\n const toApply = this.planned.filter(i => !this.isApplied(i));\n const toRevert = this.applied.filter(i => !this.isInPlan(i));\n\n return {\n toApply,\n toRevert,\n }\n }\n\n\n //===============================================================================================\n //============================= Scene Primary Methods ===========================================\n //===============================================================================================\n activate(): void {\n this._status = AreSceneStatuses.Active;\n }\n\n deactivate(): void {\n\n this._status = AreSceneStatuses.Inactive;\n }\n /**\n * Each scene has a primary declaration instruction that represents the node in the scene, so it should be registered as a host instruction for the scene, and it will be used to keep track of the node in the scene and to manage its lifecycle. This method allows to set the host instruction for the scene, but it will throw an error if we try to set another host instruction while there is already a host instruction set, so we can ensure that there is only one host instruction for the scene at any given time.\n * \n * @param instruction \n */\n setHost(instruction: AreDeclaration): void {\n if (this.host) {\n const dependentInstructions = this.scope.resolve<AreMutation>(new A_Dependency(AreMutation, {\n flat: true,\n pagination: {\n count: -1,\n },\n query: {\n parent: this.host.aseid.toString(),\n\n }\n })) as Array<AreMutation> || [];\n\n dependentInstructions.forEach(element => {\n element.attachTo(instruction)\n element.groupWith(instruction);\n });\n }\n\n this._host = instruction;\n }\n /**\n * Unsets the current host instruction from the scene. \n * \n * This method should be used when we want to remove the primary declaration instruction that represents the node in the scene, for example, when we want to unmount the node or when we want to replace it with another node. Unsetting the host instruction will allow us to set a new host instruction for the scene if needed.\n */\n removeHost(): void {\n if (this.host)\n throw new AreSceneError({\n title: AreSceneError.HostInstructionHasConnectedInstructions,\n description: `Cannot remove host instruction (${this.host.aseid}) from scene ${this.id} because it has planned instructions in the scene. Please unPlan all instructions related to the host instruction before removing it.`,\n });\n\n this._host = undefined;\n\n }\n\n // ------------------------------------------------------------------------------------------------------------\n // Scene Render Plan Methods\n // ------------------------------------------------------------------------------------------------------------\n /**\n * Method that should register the instruction in the plan, so it will be rendered in the next render cycle.\n * \n * @param instruction \n */\n plan(instruction: AreInstruction) {\n // const registered = this.getPlanned(instruction);\n\n // if (!registered) {\n try {\n this.scope.register(instruction);\n\n } catch (error) {\n\n }\n this._plan.push(instruction);\n\n // We also add the instruction to the group map, so we can easily manage instructions by group, for example, when we want to unPlan all instructions related to a specific host instruction, we can easily find them in the group map and unPlan them.\n if (!this._groupToInstructionsMap.has(instruction.group || 'default')) {\n this._groupToInstructionsMap.set(instruction.group || 'default', new Set());\n }\n this._groupToInstructionsMap.get(instruction.group || 'default')!.add(instruction);\n // }\n }\n\n planBefore(instruction: AreInstruction, beforeInstruction: AreInstruction) {\n const beforeIndex = this._plan.findIndex(i => i.aseid.toString() === beforeInstruction.aseid.toString());\n const instructionIndex = this._plan.findIndex(i => i.aseid.toString() === instruction.aseid.toString());\n\n if (beforeIndex === -1) {\n throw new AreSceneError({\n title: AreSceneError.SceneError,\n description: `Instruction ${beforeInstruction.aseid} is not in the plan of scene ${this.id}. Cannot plan instruction ${instruction.aseid} before it.`,\n });\n }\n\n if (instructionIndex === -1) {\n\n try {\n this.scope.register(instruction);\n\n } catch (error) {\n\n }\n this._plan.splice(beforeIndex, 0, instruction);\n } else {\n // Instruction is already in the plan, we just need to move it before the beforeInstruction\n this._plan.splice(instructionIndex, 1); // remove from current position\n this._plan.splice(beforeIndex, 0, instruction); // insert before the beforeInstruction\n }\n }\n\n planAfter(instruction: AreInstruction, afterInstruction: AreInstruction) {\n const afterIndex = this._plan.findIndex(i => i.aseid.toString() === afterInstruction.aseid.toString());\n const instructionIndex = this._plan.findIndex(i => i.aseid.toString() === instruction.aseid.toString());\n\n if (afterIndex === -1) {\n throw new AreSceneError({\n title: AreSceneError.SceneError,\n description: `Instruction ${afterInstruction.aseid} is not in the plan of scene ${this.id}. Cannot plan instruction ${instruction.aseid} after it.`,\n });\n }\n\n if (instructionIndex === -1) {\n this.scope.register(instruction);\n this._plan.splice(afterIndex + 1, 0, instruction);\n } else {\n // Instruction is already in the plan, we just need to move it after the afterInstruction\n this._plan.splice(instructionIndex, 1); // remove from current position\n this._plan.splice(afterIndex + 1, 0, instruction); // insert after the afterInstruction\n }\n }\n\n\n moveBefore(instruction: AreInstruction, beforeInstruction: AreInstruction) {\n if (!this.isInPlan(instruction)) {\n throw new AreSceneError({\n title: AreSceneError.SceneError,\n description: `Instruction ${instruction.aseid} is not in the plan of scene ${this.id}. Cannot move instruction before ${beforeInstruction.aseid}. Please plan the instruction before moving it.`,\n });\n }\n\n this.planBefore(instruction, beforeInstruction);\n }\n\n moveAfter(instruction: AreInstruction, afterInstruction: AreInstruction) {\n if (!this.isInPlan(instruction)) {\n throw new AreSceneError({\n title: AreSceneError.SceneError,\n description: `Instruction ${instruction.aseid} is not in the plan of scene ${this.id}. Cannot move instruction after ${afterInstruction.aseid}. Please plan the instruction before moving it.`,\n });\n }\n\n this.planAfter(instruction, afterInstruction);\n }\n\n\n /**\n * Allows to remove instruction from the plan, so it will not be rendered anymore, but it will still be registered in the scene scope, so it can be planned again if needed.\n * \n * @param instruction \n */\n unPlan(\n instruction: AreInstruction\n ) {\n // const registered = this.getPlanned(instruction);\n\n // if (registered) {\n // this.scope.deregister(instruction);\n this._plan = this._plan.filter(i => i.aseid.toString() !== instruction.aseid.toString());\n // }\n\n }\n /**\n * Checks if the instruction is already in the plan, so it will be rendered in the next render cycle.\n * \n * @param instruction \n * @returns \n */\n getPlanned(instruction: AreInstruction): AreInstruction | undefined {\n const found = this._plan.find(i => i.aseid.toString() === instruction.aseid.toString());\n\n return found;\n }\n /**\n * Checks if the instruction is already in the plan, so it will be rendered in the next render cycle.\n * \n * @param instruction \n * @returns \n */\n isInPlan(instruction: AreInstruction): boolean {\n return !!this.getPlanned(instruction);\n }\n\n // -------------------------------------------------------------------------------------------------------------\n // Scene Apply Methods\n // -------------------------------------------------------------------------------------------------------------\n /**\n * Method moves the instruction to state to keep it applied and to be able to revert it later if needed. The instruction should be already registered in the scene scope and planned to be applied, otherwise it will not be applied.\n * \n * @param instruction \n */\n apply(instruction: AreInstruction) {\n if (!this.isApplied(instruction)) {\n this._state.push(instruction);\n }\n }\n /**\n * Method moves the instruction from state to unapply it and to be able to apply it later if needed. The instruction should be already registered in the scene scope and applied, otherwise it will not be unapplied.\n * \n * @param instruction \n */\n unApply(\n instruction: AreInstruction\n ) {\n this._state = this._state.filter(i => i.aseid.toString() !== instruction.aseid.toString());\n }\n /**\n * Checks if the instruction is already in the state, so it is currently applied to the scene.\n * \n * @param instruction \n * @returns \n */\n getApplied(instruction: AreInstruction): AreInstruction | undefined {\n const found = this._state.find(i => i.aseid.toString() === instruction.aseid.toString());\n\n return found;\n }\n /**\n * Checks if the instruction is already in the state, so it is currently applied to the scene.\n * \n * @param instruction \n * @returns \n */\n isApplied(instruction: AreInstruction): boolean {\n return !!this.getApplied(instruction);\n }\n /**\n * Method that should reset the scene to the initial state, so it will clear the plan and state, but it will not deregister the instructions from the scene scope, so they will still be registered in the scene and can be planned and applied again if needed.\n * \n */\n reset() {\n this._plan = [];\n this._state = [];\n }\n}"]}
@@ -1,6 +1,10 @@
1
1
  import { A_Error } from '@adaas/a-concept';
2
2
 
3
3
  declare class AreSceneError extends A_Error {
4
+ static readonly SceneAlreadyInactive = "AreSceneError.SceneAlreadyInactive";
5
+ static readonly SceneAlreadyActive = "AreSceneError.SceneAlreadyActive";
6
+ static readonly HostInstructionHasConnectedInstructions = "AreSceneError.HostInstructionHasConnectedInstructions";
7
+ static readonly SingleHostInstruction = "AreSceneError.SingleHostInstruction";
4
8
  static readonly SceneError = "AreSceneError.SceneError";
5
9
  static readonly RootNotFound = "AreSceneError.RootNotFound";
6
10
  static readonly UpdateFailed = "AreSceneError.UpdateFailed";