@adaas/are 0.0.2 → 0.0.4

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 (760) 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/LICENSE +10 -19
  6. package/README.md +216 -2
  7. package/dist/browser/index.d.mts +1375 -727
  8. package/dist/browser/index.mjs +2812 -2170
  9. package/dist/browser/index.mjs.map +1 -1
  10. package/dist/node/Are.context-9Ija_fdC.d.ts +846 -0
  11. package/dist/node/Are.context-D7w32H1G.d.mts +846 -0
  12. package/dist/node/index.d.mts +32 -31
  13. package/dist/node/index.d.ts +32 -31
  14. package/dist/node/index.js +371 -42
  15. package/dist/node/index.mjs +61 -14
  16. package/dist/node/lib/AreAttribute/AreAttribute.constants.d.mts +24 -0
  17. package/dist/node/lib/AreAttribute/AreAttribute.constants.d.ts +24 -0
  18. package/dist/node/lib/AreAttribute/AreAttribute.constants.js +28 -0
  19. package/dist/node/lib/AreAttribute/AreAttribute.constants.js.map +1 -0
  20. package/dist/node/lib/AreAttribute/AreAttribute.constants.mjs +28 -0
  21. package/dist/node/lib/AreAttribute/AreAttribute.constants.mjs.map +1 -0
  22. package/dist/node/lib/AreAttribute/AreAttribute.entity.d.mts +14 -0
  23. package/dist/node/lib/AreAttribute/AreAttribute.entity.d.ts +14 -0
  24. package/dist/node/lib/AreAttribute/AreAttribute.entity.js +113 -0
  25. package/dist/node/lib/AreAttribute/AreAttribute.entity.js.map +1 -0
  26. package/dist/node/lib/AreAttribute/AreAttribute.entity.mjs +104 -0
  27. package/dist/node/lib/AreAttribute/AreAttribute.entity.mjs.map +1 -0
  28. package/dist/node/lib/AreAttribute/AreAttribute.types.d.mts +47 -0
  29. package/dist/node/lib/AreAttribute/AreAttribute.types.d.ts +47 -0
  30. package/dist/node/lib/AreAttribute/AreAttribute.types.js +4 -0
  31. package/dist/node/lib/AreAttribute/AreAttribute.types.js.map +1 -0
  32. package/dist/node/lib/AreAttribute/AreAttribute.types.mjs +3 -0
  33. package/dist/node/lib/AreAttribute/AreAttribute.types.mjs.map +1 -0
  34. package/dist/node/lib/AreCompiler/AreCompiler.component.d.mts +19 -224
  35. package/dist/node/lib/AreCompiler/AreCompiler.component.d.ts +19 -224
  36. package/dist/node/lib/AreCompiler/AreCompiler.component.js +31 -607
  37. package/dist/node/lib/AreCompiler/AreCompiler.component.js.map +1 -1
  38. package/dist/node/lib/AreCompiler/AreCompiler.component.mjs +29 -605
  39. package/dist/node/lib/AreCompiler/AreCompiler.component.mjs.map +1 -1
  40. package/dist/node/lib/AreComponent/Are.component.d.mts +59 -7
  41. package/dist/node/lib/AreComponent/Are.component.d.ts +59 -7
  42. package/dist/node/lib/AreComponent/Are.component.js +84 -25
  43. package/dist/node/lib/AreComponent/Are.component.js.map +1 -1
  44. package/dist/node/lib/AreComponent/Are.component.mjs +85 -26
  45. package/dist/node/lib/AreComponent/Are.component.mjs.map +1 -1
  46. package/dist/node/lib/AreComponent/Are.constants.d.mts +46 -30
  47. package/dist/node/lib/AreComponent/Are.constants.d.ts +46 -30
  48. package/dist/node/lib/AreComponent/Are.constants.js +58 -21
  49. package/dist/node/lib/AreComponent/Are.constants.js.map +1 -1
  50. package/dist/node/lib/AreComponent/Are.constants.mjs +58 -21
  51. package/dist/node/lib/AreComponent/Are.constants.mjs.map +1 -1
  52. package/dist/node/lib/AreComponent/Are.context.d.mts +13 -21
  53. package/dist/node/lib/AreComponent/Are.context.d.ts +13 -21
  54. package/dist/node/lib/AreComponent/Are.context.js +91 -2
  55. package/dist/node/lib/AreComponent/Are.context.js.map +1 -1
  56. package/dist/node/lib/AreComponent/Are.context.mjs +92 -3
  57. package/dist/node/lib/AreComponent/Are.context.mjs.map +1 -1
  58. package/dist/node/lib/AreComponent/Are.meta.d.mts +14 -0
  59. package/dist/node/lib/AreComponent/Are.meta.d.ts +14 -0
  60. package/dist/node/lib/AreComponent/Are.meta.js +10 -0
  61. package/dist/node/lib/AreComponent/Are.meta.js.map +1 -0
  62. package/dist/node/lib/AreComponent/Are.meta.mjs +9 -0
  63. package/dist/node/lib/AreComponent/Are.meta.mjs.map +1 -0
  64. package/dist/node/lib/AreComponent/Are.types.d.mts +30 -1
  65. package/dist/node/lib/AreComponent/Are.types.d.ts +30 -1
  66. package/dist/node/lib/AreEngine/AreEngine.component.d.mts +77 -0
  67. package/dist/node/lib/AreEngine/AreEngine.component.d.ts +77 -0
  68. package/dist/node/lib/AreEngine/AreEngine.component.js +259 -0
  69. package/dist/node/lib/AreEngine/AreEngine.component.js.map +1 -0
  70. package/dist/node/lib/AreEngine/AreEngine.component.mjs +249 -0
  71. package/dist/node/lib/AreEngine/AreEngine.component.mjs.map +1 -0
  72. package/dist/node/lib/AreEngine/AreEngine.constants.d.mts +7 -0
  73. package/dist/node/lib/AreEngine/AreEngine.constants.d.ts +7 -0
  74. package/dist/node/lib/AreEngine/AreEngine.constants.js +11 -0
  75. package/dist/node/lib/AreEngine/AreEngine.constants.js.map +1 -0
  76. package/dist/node/lib/AreEngine/AreEngine.constants.mjs +11 -0
  77. package/dist/node/lib/AreEngine/AreEngine.constants.mjs.map +1 -0
  78. package/dist/node/lib/AreEngine/AreEngine.error.d.mts +7 -0
  79. package/dist/node/lib/AreEngine/AreEngine.error.d.ts +7 -0
  80. package/dist/node/lib/AreEngine/AreEngine.error.js +11 -0
  81. package/dist/node/lib/AreEngine/AreEngine.error.js.map +1 -0
  82. package/dist/node/lib/AreEngine/AreEngine.error.mjs +10 -0
  83. package/dist/node/lib/AreEngine/AreEngine.error.mjs.map +1 -0
  84. package/dist/node/lib/AreEngine/AreEngine.types.d.mts +40 -0
  85. package/dist/node/lib/AreEngine/AreEngine.types.d.ts +40 -0
  86. package/dist/node/lib/AreEngine/AreEngine.types.js +4 -0
  87. package/dist/node/lib/AreEngine/AreEngine.types.js.map +1 -0
  88. package/dist/node/lib/AreEngine/AreEngine.types.mjs +3 -0
  89. package/dist/node/lib/AreEngine/AreEngine.types.mjs.map +1 -0
  90. package/dist/node/lib/AreEvent/AreEvent.context.d.mts +6 -8
  91. package/dist/node/lib/AreEvent/AreEvent.context.d.ts +6 -8
  92. package/dist/node/lib/AreEvent/AreEvent.context.js +2 -12
  93. package/dist/node/lib/AreEvent/AreEvent.context.js.map +1 -1
  94. package/dist/node/lib/AreEvent/AreEvent.context.mjs +2 -12
  95. package/dist/node/lib/AreEvent/AreEvent.context.mjs.map +1 -1
  96. package/dist/node/lib/AreInstruction/AreInstruction.constants.d.mts +21 -0
  97. package/dist/node/lib/AreInstruction/AreInstruction.constants.d.ts +21 -0
  98. package/dist/node/lib/AreInstruction/AreInstruction.constants.js +26 -0
  99. package/dist/node/lib/AreInstruction/AreInstruction.constants.js.map +1 -0
  100. package/dist/node/lib/AreInstruction/AreInstruction.constants.mjs +25 -0
  101. package/dist/node/lib/AreInstruction/AreInstruction.constants.mjs.map +1 -0
  102. package/dist/node/lib/AreInstruction/AreInstruction.entity.d.mts +14 -0
  103. package/dist/node/lib/AreInstruction/AreInstruction.entity.d.ts +14 -0
  104. package/dist/node/lib/AreInstruction/AreInstruction.entity.js +152 -0
  105. package/dist/node/lib/AreInstruction/AreInstruction.entity.js.map +1 -0
  106. package/dist/node/lib/AreInstruction/AreInstruction.entity.mjs +145 -0
  107. package/dist/node/lib/AreInstruction/AreInstruction.entity.mjs.map +1 -0
  108. package/dist/node/lib/AreInstruction/AreInstruction.error.d.mts +6 -0
  109. package/dist/node/lib/AreInstruction/AreInstruction.error.d.ts +6 -0
  110. package/dist/node/lib/AreInstruction/AreInstruction.error.js +10 -0
  111. package/dist/node/lib/AreInstruction/AreInstruction.error.js.map +1 -0
  112. package/dist/node/lib/AreInstruction/AreInstruction.error.mjs +9 -0
  113. package/dist/node/lib/AreInstruction/AreInstruction.error.mjs.map +1 -0
  114. package/dist/node/lib/AreInstruction/AreInstruction.types.d.mts +14 -0
  115. package/dist/node/lib/AreInstruction/AreInstruction.types.d.ts +14 -0
  116. package/dist/node/lib/AreInstruction/AreInstruction.types.js +4 -0
  117. package/dist/node/lib/AreInstruction/AreInstruction.types.js.map +1 -0
  118. package/dist/node/lib/AreInstruction/AreInstruction.types.mjs +3 -0
  119. package/dist/node/lib/AreInstruction/AreInstruction.types.mjs.map +1 -0
  120. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.d.mts +14 -0
  121. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.d.ts +14 -0
  122. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.js +37 -0
  123. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.js.map +1 -0
  124. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.mjs +30 -0
  125. package/dist/node/lib/AreInstruction/types/AreDeclaration.instruction.mjs.map +1 -0
  126. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.d.mts +14 -0
  127. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.d.ts +14 -0
  128. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.js +52 -0
  129. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.js.map +1 -0
  130. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.mjs +45 -0
  131. package/dist/node/lib/AreInstruction/types/AreMutation.instruction.mjs.map +1 -0
  132. package/dist/node/lib/AreInterpreter/AreInterpreter.component.d.mts +49 -0
  133. package/dist/node/lib/AreInterpreter/AreInterpreter.component.d.ts +49 -0
  134. package/dist/node/lib/AreInterpreter/AreInterpreter.component.js +164 -0
  135. package/dist/node/lib/AreInterpreter/AreInterpreter.component.js.map +1 -0
  136. package/dist/node/lib/AreInterpreter/AreInterpreter.component.mjs +154 -0
  137. package/dist/node/lib/AreInterpreter/AreInterpreter.component.mjs.map +1 -0
  138. package/dist/node/lib/AreInterpreter/AreInterpreter.constants.js +4 -0
  139. package/dist/node/lib/AreInterpreter/AreInterpreter.constants.js.map +1 -0
  140. package/dist/node/lib/AreInterpreter/AreInterpreter.constants.mjs +3 -0
  141. package/dist/node/lib/AreInterpreter/AreInterpreter.constants.mjs.map +1 -0
  142. package/dist/node/lib/AreInterpreter/AreInterpreter.error.d.mts +6 -0
  143. package/dist/node/lib/AreInterpreter/AreInterpreter.error.d.ts +6 -0
  144. package/dist/node/lib/AreInterpreter/AreInterpreter.error.js +10 -0
  145. package/dist/node/lib/AreInterpreter/AreInterpreter.error.js.map +1 -0
  146. package/dist/node/lib/AreInterpreter/AreInterpreter.error.mjs +9 -0
  147. package/dist/node/lib/AreInterpreter/AreInterpreter.error.mjs.map +1 -0
  148. package/dist/node/lib/AreInterpreter/AreInterpreter.types.js +4 -0
  149. package/dist/node/lib/AreInterpreter/AreInterpreter.types.js.map +1 -0
  150. package/dist/node/lib/AreInterpreter/AreInterpreter.types.mjs +3 -0
  151. package/dist/node/lib/AreInterpreter/AreInterpreter.types.mjs.map +1 -0
  152. package/dist/node/lib/AreLifecycle/AreLifecycle.component.d.mts +188 -0
  153. package/dist/node/lib/AreLifecycle/AreLifecycle.component.d.ts +188 -0
  154. package/dist/node/lib/AreLifecycle/AreLifecycle.component.js +349 -0
  155. package/dist/node/lib/AreLifecycle/AreLifecycle.component.js.map +1 -0
  156. package/dist/node/lib/AreLifecycle/AreLifecycle.component.mjs +339 -0
  157. package/dist/node/lib/AreLifecycle/AreLifecycle.component.mjs.map +1 -0
  158. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.d.mts +2 -0
  159. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.d.ts +2 -0
  160. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.js +4 -0
  161. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.js.map +1 -0
  162. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.mjs +3 -0
  163. package/dist/node/lib/AreLifecycle/AreLifecycle.constants.mjs.map +1 -0
  164. package/dist/node/lib/AreLifecycle/AreLifecycle.error.d.mts +7 -0
  165. package/dist/node/lib/AreLifecycle/AreLifecycle.error.d.ts +7 -0
  166. package/dist/node/lib/AreLifecycle/AreLifecycle.error.js +11 -0
  167. package/dist/node/lib/AreLifecycle/AreLifecycle.error.js.map +1 -0
  168. package/dist/node/lib/AreLifecycle/AreLifecycle.error.mjs +10 -0
  169. package/dist/node/lib/AreLifecycle/AreLifecycle.error.mjs.map +1 -0
  170. package/dist/node/lib/AreLifecycle/AreLifecycle.types.d.mts +2 -0
  171. package/dist/node/lib/AreLifecycle/AreLifecycle.types.d.ts +2 -0
  172. package/dist/node/lib/AreLifecycle/AreLifecycle.types.js +4 -0
  173. package/dist/node/lib/AreLifecycle/AreLifecycle.types.js.map +1 -0
  174. package/dist/node/lib/AreLifecycle/AreLifecycle.types.mjs +3 -0
  175. package/dist/node/lib/AreLifecycle/AreLifecycle.types.mjs.map +1 -0
  176. package/dist/node/lib/AreLoader/AreLoader.component.d.mts +31 -0
  177. package/dist/node/lib/AreLoader/AreLoader.component.d.ts +31 -0
  178. package/dist/node/lib/AreLoader/AreLoader.component.js +64 -0
  179. package/dist/node/lib/AreLoader/AreLoader.component.js.map +1 -0
  180. package/dist/node/lib/AreLoader/AreLoader.component.mjs +54 -0
  181. package/dist/node/lib/AreLoader/AreLoader.component.mjs.map +1 -0
  182. package/dist/node/lib/AreLoader/AreLoader.constants.d.mts +2 -0
  183. package/dist/node/lib/AreLoader/AreLoader.constants.d.ts +2 -0
  184. package/dist/node/lib/AreLoader/AreLoader.constants.js +4 -0
  185. package/dist/node/lib/AreLoader/AreLoader.constants.js.map +1 -0
  186. package/dist/node/lib/AreLoader/AreLoader.constants.mjs +3 -0
  187. package/dist/node/lib/AreLoader/AreLoader.constants.mjs.map +1 -0
  188. package/dist/node/lib/AreLoader/AreLoader.error.d.mts +8 -0
  189. package/dist/node/lib/AreLoader/AreLoader.error.d.ts +8 -0
  190. package/dist/node/lib/AreLoader/AreLoader.error.js +12 -0
  191. package/dist/node/lib/AreLoader/AreLoader.error.js.map +1 -0
  192. package/dist/node/lib/AreLoader/AreLoader.error.mjs +11 -0
  193. package/dist/node/lib/AreLoader/AreLoader.error.mjs.map +1 -0
  194. package/dist/node/lib/AreLoader/AreLoader.types.d.mts +2 -0
  195. package/dist/node/lib/AreLoader/AreLoader.types.d.ts +2 -0
  196. package/dist/node/lib/AreLoader/AreLoader.types.js +4 -0
  197. package/dist/node/lib/AreLoader/AreLoader.types.js.map +1 -0
  198. package/dist/node/lib/AreLoader/AreLoader.types.mjs +3 -0
  199. package/dist/node/lib/AreLoader/AreLoader.types.mjs.map +1 -0
  200. package/dist/node/lib/AreNode/AreNode.constants.d.mts +87 -17
  201. package/dist/node/lib/AreNode/AreNode.constants.d.ts +87 -17
  202. package/dist/node/lib/AreNode/AreNode.constants.js +111 -11
  203. package/dist/node/lib/AreNode/AreNode.constants.js.map +1 -1
  204. package/dist/node/lib/AreNode/AreNode.constants.mjs +111 -12
  205. package/dist/node/lib/AreNode/AreNode.constants.mjs.map +1 -1
  206. package/dist/node/lib/AreNode/AreNode.entity.d.mts +12 -6
  207. package/dist/node/lib/AreNode/AreNode.entity.d.ts +12 -6
  208. package/dist/node/lib/AreNode/AreNode.entity.js +281 -49
  209. package/dist/node/lib/AreNode/AreNode.entity.js.map +1 -1
  210. package/dist/node/lib/AreNode/AreNode.entity.mjs +282 -50
  211. package/dist/node/lib/AreNode/AreNode.entity.mjs.map +1 -1
  212. package/dist/node/lib/AreNode/AreNode.types.d.mts +14 -13
  213. package/dist/node/lib/AreNode/AreNode.types.d.ts +14 -13
  214. package/dist/node/lib/AreScene/AreScene.constants.d.mts +7 -0
  215. package/dist/node/lib/AreScene/AreScene.constants.d.ts +7 -0
  216. package/dist/node/lib/AreScene/AreScene.constants.js +11 -0
  217. package/dist/node/lib/AreScene/AreScene.constants.js.map +1 -0
  218. package/dist/node/lib/AreScene/AreScene.constants.mjs +11 -0
  219. package/dist/node/lib/AreScene/AreScene.constants.mjs.map +1 -0
  220. package/dist/node/lib/AreScene/AreScene.context.d.mts +12 -6
  221. package/dist/node/lib/AreScene/AreScene.context.d.ts +12 -6
  222. package/dist/node/lib/AreScene/AreScene.context.js +284 -186
  223. package/dist/node/lib/AreScene/AreScene.context.js.map +1 -1
  224. package/dist/node/lib/AreScene/AreScene.context.mjs +277 -185
  225. package/dist/node/lib/AreScene/AreScene.context.mjs.map +1 -1
  226. package/dist/node/lib/AreScene/AreScene.error.d.mts +4 -0
  227. package/dist/node/lib/AreScene/AreScene.error.d.ts +4 -0
  228. package/dist/node/lib/AreScene/AreScene.error.js +4 -0
  229. package/dist/node/lib/AreScene/AreScene.error.js.map +1 -1
  230. package/dist/node/lib/AreScene/AreScene.error.mjs +4 -0
  231. package/dist/node/lib/AreScene/AreScene.error.mjs.map +1 -1
  232. package/dist/node/lib/AreScene/AreScene.types.d.mts +14 -9
  233. package/dist/node/lib/AreScene/AreScene.types.d.ts +14 -9
  234. package/dist/node/lib/AreSignals/AreSignal.entity.d.mts +6 -0
  235. package/dist/node/lib/AreSignals/AreSignal.entity.d.ts +6 -0
  236. package/dist/node/lib/AreSignals/AreSignal.entity.js +24 -0
  237. package/dist/node/lib/AreSignals/AreSignal.entity.js.map +1 -0
  238. package/dist/node/lib/AreSignals/AreSignal.entity.mjs +17 -0
  239. package/dist/node/lib/AreSignals/AreSignal.entity.mjs.map +1 -0
  240. package/dist/node/lib/AreSignals/AreSignals.component.d.mts +35 -0
  241. package/dist/node/lib/AreSignals/AreSignals.component.d.ts +35 -0
  242. package/dist/node/lib/AreSignals/AreSignals.component.js +90 -0
  243. package/dist/node/lib/AreSignals/AreSignals.component.js.map +1 -0
  244. package/dist/node/lib/AreSignals/AreSignals.component.mjs +80 -0
  245. package/dist/node/lib/AreSignals/AreSignals.component.mjs.map +1 -0
  246. package/dist/node/lib/AreSignals/AreSignals.constants.d.mts +2 -0
  247. package/dist/node/lib/AreSignals/AreSignals.constants.d.ts +2 -0
  248. package/dist/node/lib/AreSignals/AreSignals.constants.js +4 -0
  249. package/dist/node/lib/AreSignals/AreSignals.constants.js.map +1 -0
  250. package/dist/node/lib/AreSignals/AreSignals.constants.mjs +3 -0
  251. package/dist/node/lib/AreSignals/AreSignals.constants.mjs.map +1 -0
  252. package/dist/node/lib/AreSignals/AreSignals.context.d.mts +86 -0
  253. package/dist/node/lib/AreSignals/AreSignals.context.d.ts +86 -0
  254. package/dist/node/lib/AreSignals/AreSignals.context.js +153 -0
  255. package/dist/node/lib/AreSignals/AreSignals.context.js.map +1 -0
  256. package/dist/node/lib/AreSignals/AreSignals.context.mjs +146 -0
  257. package/dist/node/lib/AreSignals/AreSignals.context.mjs.map +1 -0
  258. package/dist/node/lib/AreSignals/AreSignals.meta.d.mts +15 -0
  259. package/dist/node/lib/AreSignals/AreSignals.meta.d.ts +15 -0
  260. package/dist/node/lib/AreSignals/AreSignals.meta.js +48 -0
  261. package/dist/node/lib/AreSignals/AreSignals.meta.js.map +1 -0
  262. package/dist/node/lib/AreSignals/AreSignals.meta.mjs +47 -0
  263. package/dist/node/lib/AreSignals/AreSignals.meta.mjs.map +1 -0
  264. package/dist/node/lib/AreSignals/AreSignals.types.d.mts +18 -0
  265. package/dist/node/lib/AreSignals/AreSignals.types.d.ts +18 -0
  266. package/dist/node/lib/AreSignals/AreSignals.types.js +4 -0
  267. package/dist/node/lib/AreSignals/AreSignals.types.js.map +1 -0
  268. package/dist/node/lib/AreSignals/AreSignals.types.mjs +3 -0
  269. package/dist/node/lib/AreSignals/AreSignals.types.mjs.map +1 -0
  270. package/dist/node/lib/AreSignals/entities/AreInit.signal.d.mts +8 -0
  271. package/dist/node/lib/AreSignals/entities/AreInit.signal.d.ts +8 -0
  272. package/dist/node/lib/AreSignals/entities/AreInit.signal.js +13 -0
  273. package/dist/node/lib/AreSignals/entities/AreInit.signal.js.map +1 -0
  274. package/dist/node/lib/AreSignals/entities/AreInit.signal.mjs +12 -0
  275. package/dist/node/lib/AreSignals/entities/AreInit.signal.mjs.map +1 -0
  276. package/dist/node/lib/AreSignals/entities/AreRoute.signal.d.mts +12 -0
  277. package/dist/node/lib/AreSignals/entities/AreRoute.signal.d.ts +12 -0
  278. package/dist/node/lib/AreSignals/entities/AreRoute.signal.js +25 -0
  279. package/dist/node/lib/AreSignals/entities/AreRoute.signal.js.map +1 -0
  280. package/dist/node/lib/AreSignals/entities/AreRoute.signal.mjs +24 -0
  281. package/dist/node/lib/AreSignals/entities/AreRoute.signal.mjs.map +1 -0
  282. package/dist/node/lib/AreStore/AreStore.constants.d.mts +5 -0
  283. package/dist/node/lib/AreStore/AreStore.constants.d.ts +5 -0
  284. package/dist/node/lib/AreStore/AreStore.constants.js +9 -0
  285. package/dist/node/lib/AreStore/AreStore.constants.js.map +1 -0
  286. package/dist/node/lib/AreStore/AreStore.constants.mjs +9 -0
  287. package/dist/node/lib/AreStore/AreStore.constants.mjs.map +1 -0
  288. package/dist/node/lib/AreStore/AreStore.context.d.mts +14 -10
  289. package/dist/node/lib/AreStore/AreStore.context.d.ts +14 -10
  290. package/dist/node/lib/AreStore/AreStore.context.js +162 -6
  291. package/dist/node/lib/AreStore/AreStore.context.js.map +1 -1
  292. package/dist/node/lib/AreStore/AreStore.context.mjs +162 -6
  293. package/dist/node/lib/AreStore/AreStore.context.mjs.map +1 -1
  294. package/dist/node/lib/AreStore/AreStore.types.d.mts +9 -0
  295. package/dist/node/lib/AreStore/AreStore.types.d.ts +9 -0
  296. package/dist/node/lib/AreStore/AreStore.types.js +4 -0
  297. package/dist/node/lib/AreStore/AreStore.types.js.map +1 -0
  298. package/dist/node/lib/AreStore/AreStore.types.mjs +3 -0
  299. package/dist/node/lib/AreStore/AreStore.types.mjs.map +1 -0
  300. package/dist/node/lib/AreSyntax/AreSyntax.constants.d.mts +2 -0
  301. package/dist/node/lib/AreSyntax/AreSyntax.constants.d.ts +2 -0
  302. package/dist/node/lib/AreSyntax/AreSyntax.constants.js +4 -0
  303. package/dist/node/lib/AreSyntax/AreSyntax.constants.js.map +1 -0
  304. package/dist/node/lib/AreSyntax/AreSyntax.constants.mjs +3 -0
  305. package/dist/node/lib/AreSyntax/AreSyntax.constants.mjs.map +1 -0
  306. package/dist/node/lib/AreSyntax/AreSyntax.context.d.mts +99 -51
  307. package/dist/node/lib/AreSyntax/AreSyntax.context.d.ts +99 -51
  308. package/dist/node/lib/AreSyntax/AreSyntax.context.js +305 -73
  309. package/dist/node/lib/AreSyntax/AreSyntax.context.js.map +1 -1
  310. package/dist/node/lib/AreSyntax/AreSyntax.context.mjs +306 -74
  311. package/dist/node/lib/AreSyntax/AreSyntax.context.mjs.map +1 -1
  312. package/dist/node/lib/AreSyntax/AreSyntax.types.d.mts +14 -132
  313. package/dist/node/lib/AreSyntax/AreSyntax.types.d.ts +14 -132
  314. package/dist/node/lib/AreSyntax/AreSyntax.types.js.map +1 -1
  315. package/dist/node/lib/AreSyntax/AreSyntax.types.mjs.map +1 -1
  316. package/dist/node/lib/AreTokenizer/AreTokenizer.component.d.mts +43 -0
  317. package/dist/node/lib/AreTokenizer/AreTokenizer.component.d.ts +43 -0
  318. package/dist/node/lib/AreTokenizer/AreTokenizer.component.js +238 -0
  319. package/dist/node/lib/AreTokenizer/AreTokenizer.component.js.map +1 -0
  320. package/dist/node/lib/AreTokenizer/AreTokenizer.component.mjs +228 -0
  321. package/dist/node/lib/AreTokenizer/AreTokenizer.component.mjs.map +1 -0
  322. package/dist/node/lib/AreTokenizer/AreTokenizer.error.d.mts +6 -0
  323. package/dist/node/lib/AreTokenizer/AreTokenizer.error.d.ts +6 -0
  324. package/dist/node/lib/AreTokenizer/AreTokenizer.error.js +10 -0
  325. package/dist/node/lib/AreTokenizer/AreTokenizer.error.js.map +1 -0
  326. package/dist/node/lib/AreTokenizer/AreTokenizer.error.mjs +9 -0
  327. package/dist/node/lib/AreTokenizer/AreTokenizer.error.mjs.map +1 -0
  328. package/dist/node/lib/AreTransformer/AreTransformer.component.d.mts +20 -0
  329. package/dist/node/lib/AreTransformer/AreTransformer.component.d.ts +20 -0
  330. package/dist/node/lib/AreTransformer/AreTransformer.component.js +48 -0
  331. package/dist/node/lib/AreTransformer/AreTransformer.component.js.map +1 -0
  332. package/dist/node/lib/AreTransformer/AreTransformer.component.mjs +38 -0
  333. package/dist/node/lib/AreTransformer/AreTransformer.component.mjs.map +1 -0
  334. package/dist/node/lib/AreTransformer/AreTransformer.constants.d.mts +2 -0
  335. package/dist/node/lib/AreTransformer/AreTransformer.constants.d.ts +2 -0
  336. package/dist/node/lib/AreTransformer/AreTransformer.constants.js +4 -0
  337. package/dist/node/lib/AreTransformer/AreTransformer.constants.js.map +1 -0
  338. package/dist/node/lib/AreTransformer/AreTransformer.constants.mjs +3 -0
  339. package/dist/node/lib/AreTransformer/AreTransformer.constants.mjs.map +1 -0
  340. package/dist/node/lib/AreTransformer/AreTransformer.types.d.mts +2 -0
  341. package/dist/node/lib/AreTransformer/AreTransformer.types.d.ts +2 -0
  342. package/dist/node/lib/AreTransformer/AreTransformer.types.js +4 -0
  343. package/dist/node/lib/AreTransformer/AreTransformer.types.js.map +1 -0
  344. package/dist/node/lib/AreTransformer/AreTransformer.types.mjs +3 -0
  345. package/dist/node/lib/AreTransformer/AreTransformer.types.mjs.map +1 -0
  346. package/dist/node/lib/AreWatcher/AreWatcher.component.d.mts +18 -0
  347. package/dist/node/lib/AreWatcher/AreWatcher.component.d.ts +18 -0
  348. package/dist/node/lib/AreWatcher/AreWatcher.component.js +78 -0
  349. package/dist/node/lib/AreWatcher/AreWatcher.component.js.map +1 -0
  350. package/dist/node/lib/AreWatcher/AreWatcher.component.mjs +71 -0
  351. package/dist/node/lib/AreWatcher/AreWatcher.component.mjs.map +1 -0
  352. package/dist/node/lib/AreWatcher/AreWatcher.constants.d.mts +2 -0
  353. package/dist/node/lib/AreWatcher/AreWatcher.constants.d.ts +2 -0
  354. package/dist/node/lib/AreWatcher/AreWatcher.constants.js +4 -0
  355. package/dist/node/lib/AreWatcher/AreWatcher.constants.js.map +1 -0
  356. package/dist/node/lib/AreWatcher/AreWatcher.constants.mjs +3 -0
  357. package/dist/node/lib/AreWatcher/AreWatcher.constants.mjs.map +1 -0
  358. package/dist/node/lib/AreWatcher/AreWatcher.context.d.mts +2 -0
  359. package/dist/node/lib/AreWatcher/AreWatcher.context.d.ts +2 -0
  360. package/dist/node/lib/AreWatcher/AreWatcher.context.js +4 -0
  361. package/dist/node/lib/AreWatcher/AreWatcher.context.js.map +1 -0
  362. package/dist/node/lib/AreWatcher/AreWatcher.context.mjs +3 -0
  363. package/dist/node/lib/AreWatcher/AreWatcher.context.mjs.map +1 -0
  364. package/dist/node/lib/AreWatcher/AreWatcher.types.d.mts +2 -0
  365. package/dist/node/lib/AreWatcher/AreWatcher.types.d.ts +2 -0
  366. package/dist/node/lib/AreWatcher/AreWatcher.types.js +4 -0
  367. package/dist/node/lib/AreWatcher/AreWatcher.types.js.map +1 -0
  368. package/dist/node/lib/AreWatcher/AreWatcher.types.mjs +3 -0
  369. package/dist/node/lib/AreWatcher/AreWatcher.types.mjs.map +1 -0
  370. package/jest.config.ts +30 -19
  371. package/package.json +39 -23
  372. package/src/index.ts +92 -15
  373. package/src/lib/AreAttribute/AreAttribute.constants.ts +22 -0
  374. package/src/lib/AreAttribute/AreAttribute.entity.ts +136 -0
  375. package/src/lib/AreAttribute/AreAttribute.types.ts +51 -0
  376. package/src/lib/AreCompiler/AreCompiler.component.ts +48 -980
  377. package/src/lib/AreComponent/Are.component.ts +102 -50
  378. package/src/lib/AreComponent/Are.constants.ts +59 -39
  379. package/src/lib/AreComponent/Are.context.ts +120 -8
  380. package/src/lib/AreComponent/Are.meta.ts +16 -0
  381. package/src/lib/AreComponent/Are.types.ts +30 -0
  382. package/src/lib/AreEngine/AreEngine.component.ts +317 -0
  383. package/src/lib/AreEngine/AreEngine.constants.ts +7 -0
  384. package/src/lib/AreEngine/AreEngine.error.ts +9 -0
  385. package/src/lib/AreEngine/AreEngine.types.ts +24 -0
  386. package/src/lib/AreEvent/AreEvent.context.ts +3 -27
  387. package/src/lib/AreInstruction/AreInstruction.constants.ts +23 -0
  388. package/src/lib/AreInstruction/AreInstruction.entity.ts +207 -0
  389. package/src/lib/AreInstruction/AreInstruction.error.ts +7 -0
  390. package/src/lib/AreInstruction/AreInstruction.types.ts +63 -0
  391. package/src/lib/AreInstruction/types/AreDeclaration.instruction.ts +77 -0
  392. package/src/lib/AreInstruction/types/AreMutation.instruction.ts +87 -0
  393. package/src/lib/AreInterpreter/AreInterpreter.component.ts +208 -0
  394. package/src/lib/AreInterpreter/AreInterpreter.error.ts +6 -0
  395. package/src/lib/AreLifecycle/AreLifecycle.component.ts +638 -0
  396. package/src/lib/AreLifecycle/AreLifecycle.constants.ts +0 -0
  397. package/src/lib/AreLifecycle/AreLifecycle.error.ts +9 -0
  398. package/src/lib/AreLifecycle/AreLifecycle.types.ts +0 -0
  399. package/src/lib/AreLoader/AreLoader.component.ts +89 -0
  400. package/src/lib/AreLoader/AreLoader.constants.ts +0 -0
  401. package/src/lib/AreLoader/AreLoader.error.ts +10 -0
  402. package/src/lib/AreLoader/AreLoader.types.ts +0 -0
  403. package/src/lib/AreNode/AreNode.constants.ts +111 -16
  404. package/src/lib/AreNode/AreNode.entity.ts +380 -91
  405. package/src/lib/AreNode/AreNode.types.ts +7 -11
  406. package/src/lib/AreScene/AreScene.constants.ts +7 -0
  407. package/src/lib/AreScene/AreScene.context.ts +305 -284
  408. package/src/lib/AreScene/AreScene.error.ts +9 -1
  409. package/src/lib/AreScene/AreScene.types.ts +21 -3
  410. package/src/lib/AreSignals/AreSignal.entity.ts +17 -0
  411. package/src/lib/AreSignals/AreSignals.component.ts +98 -0
  412. package/src/lib/AreSignals/AreSignals.constants.ts +0 -0
  413. package/src/lib/AreSignals/AreSignals.context.ts +196 -0
  414. package/src/lib/AreSignals/AreSignals.meta.ts +75 -0
  415. package/src/lib/AreSignals/AreSignals.types.ts +18 -0
  416. package/src/lib/AreSignals/entities/AreInit.signal.ts +7 -0
  417. package/src/lib/AreSignals/entities/AreRoute.signal.ts +27 -0
  418. package/src/lib/AreStore/AreStore.constants.ts +6 -0
  419. package/src/lib/AreStore/AreStore.context.ts +243 -14
  420. package/src/lib/AreStore/AreStore.types.ts +19 -0
  421. package/src/lib/AreSyntax/AreSyntax.constants.ts +0 -0
  422. package/src/lib/AreSyntax/AreSyntax.context.ts +352 -78
  423. package/src/lib/AreSyntax/AreSyntax.types.ts +75 -139
  424. package/src/lib/AreTokenizer/AreTokenizer.component.ts +289 -0
  425. package/src/lib/AreTokenizer/AreTokenizer.error.ts +7 -0
  426. package/src/lib/AreTransformer/AreTransformer.component.ts +46 -0
  427. package/src/lib/AreTransformer/AreTransformer.constants.ts +0 -0
  428. package/src/lib/AreTransformer/AreTransformer.types.ts +0 -0
  429. package/src/lib/AreWatcher/AreWatcher.component.ts +84 -0
  430. package/src/lib/AreWatcher/AreWatcher.constants.ts +0 -0
  431. package/src/lib/AreWatcher/AreWatcher.context.ts +0 -0
  432. package/src/lib/AreWatcher/AreWatcher.types.ts +0 -0
  433. package/tests/AreInstruction.test.ts +73 -0
  434. package/tests/AreScene.test.ts +62 -0
  435. package/tests/AreSignals.test.ts +55 -0
  436. package/tests/AreTokenizer.test.ts +254 -0
  437. package/tests/jest.setup.ts +30 -0
  438. package/tsconfig.json +19 -19
  439. package/tsup.config.ts +6 -0
  440. package/dist/node/engines/html/AreHTML.compiler.d.mts +0 -114
  441. package/dist/node/engines/html/AreHTML.compiler.d.ts +0 -114
  442. package/dist/node/engines/html/AreHTML.compiler.js +0 -408
  443. package/dist/node/engines/html/AreHTML.compiler.js.map +0 -1
  444. package/dist/node/engines/html/AreHTML.compiler.mjs +0 -398
  445. package/dist/node/engines/html/AreHTML.compiler.mjs.map +0 -1
  446. package/dist/node/engines/html/AreHTML.engine.d.mts +0 -36
  447. package/dist/node/engines/html/AreHTML.engine.d.ts +0 -36
  448. package/dist/node/engines/html/AreHTML.engine.js +0 -122
  449. package/dist/node/engines/html/AreHTML.engine.js.map +0 -1
  450. package/dist/node/engines/html/AreHTML.engine.mjs +0 -112
  451. package/dist/node/engines/html/AreHTML.engine.mjs.map +0 -1
  452. package/dist/node/engines/html/index.d.mts +0 -26
  453. package/dist/node/engines/html/index.d.ts +0 -26
  454. package/dist/node/engines/html/index.js +0 -17
  455. package/dist/node/engines/html/index.js.map +0 -1
  456. package/dist/node/engines/html/index.mjs +0 -5
  457. package/dist/node/engines/html/index.mjs.map +0 -1
  458. package/dist/node/engines/json/AreJSON.compiler.d.mts +0 -21
  459. package/dist/node/engines/json/AreJSON.compiler.d.ts +0 -21
  460. package/dist/node/engines/json/AreJSON.compiler.js +0 -24
  461. package/dist/node/engines/json/AreJSON.compiler.js.map +0 -1
  462. package/dist/node/engines/json/AreJSON.compiler.mjs +0 -17
  463. package/dist/node/engines/json/AreJSON.compiler.mjs.map +0 -1
  464. package/dist/node/index-BD-6iOuR.d.ts +0 -238
  465. package/dist/node/index-DMXWCL7R.d.mts +0 -238
  466. package/dist/node/lib/AreApp/AreApp.container.d.mts +0 -22
  467. package/dist/node/lib/AreApp/AreApp.container.d.ts +0 -22
  468. package/dist/node/lib/AreApp/AreApp.container.js +0 -60
  469. package/dist/node/lib/AreApp/AreApp.container.js.map +0 -1
  470. package/dist/node/lib/AreApp/AreApp.container.mjs +0 -48
  471. package/dist/node/lib/AreApp/AreApp.container.mjs.map +0 -1
  472. package/dist/node/lib/AreApp/AreApp.env.js +0 -4
  473. package/dist/node/lib/AreApp/AreApp.env.js.map +0 -1
  474. package/dist/node/lib/AreApp/AreApp.env.mjs +0 -3
  475. package/dist/node/lib/AreApp/AreApp.env.mjs.map +0 -1
  476. package/dist/node/lib/AreApp/AreApp.error.d.mts +0 -6
  477. package/dist/node/lib/AreApp/AreApp.error.d.ts +0 -6
  478. package/dist/node/lib/AreApp/AreApp.error.js +0 -10
  479. package/dist/node/lib/AreApp/AreApp.error.js.map +0 -1
  480. package/dist/node/lib/AreApp/AreApp.error.mjs +0 -9
  481. package/dist/node/lib/AreApp/AreApp.error.mjs.map +0 -1
  482. package/dist/node/lib/AreApp/AreApp.types.js +0 -4
  483. package/dist/node/lib/AreApp/AreApp.types.js.map +0 -1
  484. package/dist/node/lib/AreApp/AreApp.types.mjs +0 -3
  485. package/dist/node/lib/AreApp/AreApp.types.mjs.map +0 -1
  486. package/dist/node/lib/AreApp/index.d.mts +0 -17
  487. package/dist/node/lib/AreApp/index.d.ts +0 -17
  488. package/dist/node/lib/AreApp/index.js +0 -24
  489. package/dist/node/lib/AreApp/index.js.map +0 -1
  490. package/dist/node/lib/AreApp/index.mjs +0 -6
  491. package/dist/node/lib/AreApp/index.mjs.map +0 -1
  492. package/dist/node/lib/AreCompiler/index.d.mts +0 -17
  493. package/dist/node/lib/AreCompiler/index.d.ts +0 -17
  494. package/dist/node/lib/AreCompiler/index.js +0 -24
  495. package/dist/node/lib/AreCompiler/index.js.map +0 -1
  496. package/dist/node/lib/AreCompiler/index.mjs +0 -6
  497. package/dist/node/lib/AreCompiler/index.mjs.map +0 -1
  498. package/dist/node/lib/AreComponent/index.d.mts +0 -11
  499. package/dist/node/lib/AreComponent/index.d.ts +0 -11
  500. package/dist/node/lib/AreComponent/index.js +0 -31
  501. package/dist/node/lib/AreComponent/index.js.map +0 -1
  502. package/dist/node/lib/AreComponent/index.mjs +0 -7
  503. package/dist/node/lib/AreComponent/index.mjs.map +0 -1
  504. package/dist/node/lib/AreEvent/index.d.mts +0 -8
  505. package/dist/node/lib/AreEvent/index.d.ts +0 -8
  506. package/dist/node/lib/AreEvent/index.js +0 -19
  507. package/dist/node/lib/AreEvent/index.js.map +0 -1
  508. package/dist/node/lib/AreEvent/index.mjs +0 -5
  509. package/dist/node/lib/AreEvent/index.mjs.map +0 -1
  510. package/dist/node/lib/AreIndex/AreIndex.context.d.mts +0 -8
  511. package/dist/node/lib/AreIndex/AreIndex.context.d.ts +0 -8
  512. package/dist/node/lib/AreIndex/AreIndex.context.js +0 -142
  513. package/dist/node/lib/AreIndex/AreIndex.context.js.map +0 -1
  514. package/dist/node/lib/AreIndex/AreIndex.context.mjs +0 -141
  515. package/dist/node/lib/AreIndex/AreIndex.context.mjs.map +0 -1
  516. package/dist/node/lib/AreIndex/index.d.mts +0 -8
  517. package/dist/node/lib/AreIndex/index.d.ts +0 -8
  518. package/dist/node/lib/AreIndex/index.js +0 -12
  519. package/dist/node/lib/AreIndex/index.js.map +0 -1
  520. package/dist/node/lib/AreIndex/index.mjs +0 -4
  521. package/dist/node/lib/AreIndex/index.mjs.map +0 -1
  522. package/dist/node/lib/AreNode/index.d.mts +0 -9
  523. package/dist/node/lib/AreNode/index.d.ts +0 -9
  524. package/dist/node/lib/AreNode/index.js +0 -26
  525. package/dist/node/lib/AreNode/index.js.map +0 -1
  526. package/dist/node/lib/AreNode/index.mjs +0 -6
  527. package/dist/node/lib/AreNode/index.mjs.map +0 -1
  528. package/dist/node/lib/AreProps/AreProps.context.d.mts +0 -9
  529. package/dist/node/lib/AreProps/AreProps.context.d.ts +0 -9
  530. package/dist/node/lib/AreProps/AreProps.context.js +0 -32
  531. package/dist/node/lib/AreProps/AreProps.context.js.map +0 -1
  532. package/dist/node/lib/AreProps/AreProps.context.mjs +0 -25
  533. package/dist/node/lib/AreProps/AreProps.context.mjs.map +0 -1
  534. package/dist/node/lib/AreProps/index.d.mts +0 -3
  535. package/dist/node/lib/AreProps/index.d.ts +0 -3
  536. package/dist/node/lib/AreProps/index.js +0 -12
  537. package/dist/node/lib/AreProps/index.js.map +0 -1
  538. package/dist/node/lib/AreProps/index.mjs +0 -4
  539. package/dist/node/lib/AreProps/index.mjs.map +0 -1
  540. package/dist/node/lib/AreRoot/AreRoot.component.d.mts +0 -18
  541. package/dist/node/lib/AreRoot/AreRoot.component.d.ts +0 -18
  542. package/dist/node/lib/AreRoot/AreRoot.component.js +0 -53
  543. package/dist/node/lib/AreRoot/AreRoot.component.js.map +0 -1
  544. package/dist/node/lib/AreRoot/AreRoot.component.mjs +0 -41
  545. package/dist/node/lib/AreRoot/AreRoot.component.mjs.map +0 -1
  546. package/dist/node/lib/AreRoot/index.d.mts +0 -11
  547. package/dist/node/lib/AreRoot/index.d.ts +0 -11
  548. package/dist/node/lib/AreRoot/index.js +0 -12
  549. package/dist/node/lib/AreRoot/index.js.map +0 -1
  550. package/dist/node/lib/AreRoot/index.mjs +0 -4
  551. package/dist/node/lib/AreRoot/index.mjs.map +0 -1
  552. package/dist/node/lib/AreRouter/AreRouter.componeent.d.mts +0 -17
  553. package/dist/node/lib/AreRouter/AreRouter.componeent.d.ts +0 -17
  554. package/dist/node/lib/AreRouter/AreRouter.componeent.js +0 -37
  555. package/dist/node/lib/AreRouter/AreRouter.componeent.js.map +0 -1
  556. package/dist/node/lib/AreRouter/AreRouter.componeent.mjs +0 -25
  557. package/dist/node/lib/AreRouter/AreRouter.componeent.mjs.map +0 -1
  558. package/dist/node/lib/AreRouter/index.d.mts +0 -12
  559. package/dist/node/lib/AreRouter/index.d.ts +0 -12
  560. package/dist/node/lib/AreRouter/index.js +0 -12
  561. package/dist/node/lib/AreRouter/index.js.map +0 -1
  562. package/dist/node/lib/AreRouter/index.mjs +0 -4
  563. package/dist/node/lib/AreRouter/index.mjs.map +0 -1
  564. package/dist/node/lib/AreScene/index.d.mts +0 -9
  565. package/dist/node/lib/AreScene/index.d.ts +0 -9
  566. package/dist/node/lib/AreScene/index.js +0 -24
  567. package/dist/node/lib/AreScene/index.js.map +0 -1
  568. package/dist/node/lib/AreScene/index.mjs +0 -6
  569. package/dist/node/lib/AreScene/index.mjs.map +0 -1
  570. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.d.mts +0 -7
  571. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.d.ts +0 -7
  572. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.js +0 -12
  573. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.js.map +0 -1
  574. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.mjs +0 -12
  575. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.mjs.map +0 -1
  576. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.d.mts +0 -8
  577. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.d.ts +0 -8
  578. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.js +0 -95
  579. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.js.map +0 -1
  580. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.mjs +0 -94
  581. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.mjs.map +0 -1
  582. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.d.mts +0 -8
  583. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.d.ts +0 -8
  584. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.js +0 -4
  585. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.js.map +0 -1
  586. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.mjs +0 -3
  587. package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.mjs.map +0 -1
  588. package/dist/node/lib/AreSceneInstruction/index.d.mts +0 -19
  589. package/dist/node/lib/AreSceneInstruction/index.d.ts +0 -19
  590. package/dist/node/lib/AreSceneInstruction/index.js +0 -33
  591. package/dist/node/lib/AreSceneInstruction/index.js.map +0 -1
  592. package/dist/node/lib/AreSceneInstruction/index.mjs +0 -7
  593. package/dist/node/lib/AreSceneInstruction/index.mjs.map +0 -1
  594. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.d.mts +0 -19
  595. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.d.ts +0 -19
  596. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.js +0 -27
  597. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.js.map +0 -1
  598. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.mjs +0 -26
  599. package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.mjs.map +0 -1
  600. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.d.mts +0 -20
  601. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.d.ts +0 -20
  602. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.js +0 -27
  603. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.js.map +0 -1
  604. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.mjs +0 -26
  605. package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.mjs.map +0 -1
  606. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.d.mts +0 -17
  607. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.d.ts +0 -17
  608. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.js +0 -23
  609. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.js.map +0 -1
  610. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.mjs +0 -22
  611. package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.mjs.map +0 -1
  612. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.d.mts +0 -19
  613. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.d.ts +0 -19
  614. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.js +0 -27
  615. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.js.map +0 -1
  616. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.mjs +0 -26
  617. package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.mjs.map +0 -1
  618. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.d.mts +0 -23
  619. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.d.ts +0 -23
  620. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.js +0 -41
  621. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.js.map +0 -1
  622. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.mjs +0 -40
  623. package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.mjs.map +0 -1
  624. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.d.mts +0 -15
  625. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.d.ts +0 -15
  626. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.js +0 -21
  627. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.js.map +0 -1
  628. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.mjs +0 -20
  629. package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.mjs.map +0 -1
  630. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.d.mts +0 -17
  631. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.d.ts +0 -17
  632. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.js +0 -23
  633. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.js.map +0 -1
  634. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.mjs +0 -22
  635. package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.mjs.map +0 -1
  636. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.d.mts +0 -23
  637. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.d.ts +0 -23
  638. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.js +0 -34
  639. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.js.map +0 -1
  640. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.mjs +0 -33
  641. package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.mjs.map +0 -1
  642. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.d.mts +0 -16
  643. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.d.ts +0 -16
  644. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.js +0 -20
  645. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.js.map +0 -1
  646. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.mjs +0 -19
  647. package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.mjs.map +0 -1
  648. package/dist/node/lib/AreSceneInstruction/types/index.d.mts +0 -18
  649. package/dist/node/lib/AreSceneInstruction/types/index.d.ts +0 -18
  650. package/dist/node/lib/AreSceneInstruction/types/index.js +0 -52
  651. package/dist/node/lib/AreSceneInstruction/types/index.js.map +0 -1
  652. package/dist/node/lib/AreSceneInstruction/types/index.mjs +0 -12
  653. package/dist/node/lib/AreSceneInstruction/types/index.mjs.map +0 -1
  654. package/dist/node/lib/AreSlot/AreSlot.component.d.mts +0 -8
  655. package/dist/node/lib/AreSlot/AreSlot.component.d.ts +0 -8
  656. package/dist/node/lib/AreSlot/AreSlot.component.js +0 -37
  657. package/dist/node/lib/AreSlot/AreSlot.component.js.map +0 -1
  658. package/dist/node/lib/AreSlot/AreSlot.component.mjs +0 -36
  659. package/dist/node/lib/AreSlot/AreSlot.component.mjs.map +0 -1
  660. package/dist/node/lib/AreStore/index.d.mts +0 -3
  661. package/dist/node/lib/AreStore/index.d.ts +0 -3
  662. package/dist/node/lib/AreStore/index.js +0 -12
  663. package/dist/node/lib/AreStore/index.js.map +0 -1
  664. package/dist/node/lib/AreStore/index.mjs +0 -4
  665. package/dist/node/lib/AreStore/index.mjs.map +0 -1
  666. package/dist/node/lib/AreSyntax/AreSyntax.component.d.mts +0 -89
  667. package/dist/node/lib/AreSyntax/AreSyntax.component.d.ts +0 -89
  668. package/dist/node/lib/AreSyntax/AreSyntax.component.js +0 -241
  669. package/dist/node/lib/AreSyntax/AreSyntax.component.js.map +0 -1
  670. package/dist/node/lib/AreSyntax/AreSyntax.component.mjs +0 -232
  671. package/dist/node/lib/AreSyntax/AreSyntax.component.mjs.map +0 -1
  672. package/dist/node/lib/AreSyntax/index.d.mts +0 -12
  673. package/dist/node/lib/AreSyntax/index.d.ts +0 -12
  674. package/dist/node/lib/AreSyntax/index.js +0 -29
  675. package/dist/node/lib/AreSyntax/index.js.map +0 -1
  676. package/dist/node/lib/AreSyntax/index.mjs +0 -7
  677. package/dist/node/lib/AreSyntax/index.mjs.map +0 -1
  678. package/dist/node/signals/AreInit.signal.d.mts +0 -7
  679. package/dist/node/signals/AreInit.signal.d.ts +0 -7
  680. package/dist/node/signals/AreInit.signal.js +0 -13
  681. package/dist/node/signals/AreInit.signal.js.map +0 -1
  682. package/dist/node/signals/AreInit.signal.mjs +0 -12
  683. package/dist/node/signals/AreInit.signal.mjs.map +0 -1
  684. package/dist/node/signals/AreRoute.signal.d.mts +0 -12
  685. package/dist/node/signals/AreRoute.signal.d.ts +0 -12
  686. package/dist/node/signals/AreRoute.signal.js +0 -24
  687. package/dist/node/signals/AreRoute.signal.js.map +0 -1
  688. package/dist/node/signals/AreRoute.signal.mjs +0 -23
  689. package/dist/node/signals/AreRoute.signal.mjs.map +0 -1
  690. package/dist/node/signals/index.d.mts +0 -4
  691. package/dist/node/signals/index.d.ts +0 -4
  692. package/dist/node/signals/index.js +0 -17
  693. package/dist/node/signals/index.js.map +0 -1
  694. package/dist/node/signals/index.mjs +0 -5
  695. package/dist/node/signals/index.mjs.map +0 -1
  696. package/examples/jumpstart/concept.ts +0 -60
  697. package/examples/jumpstart/containers/UI.container.ts +0 -172
  698. package/examples/jumpstart/dist/index.html +0 -22
  699. package/examples/jumpstart/dist/mls3rrlq-lofs95.js +0 -129
  700. package/examples/jumpstart/dist/static/css/main.css +0 -40
  701. package/examples/jumpstart/dist/static/img/test.png +0 -0
  702. package/examples/jumpstart/public/index.html +0 -22
  703. package/examples/jumpstart/public/static/css/main.css +0 -40
  704. package/examples/jumpstart/public/static/img/test.png +0 -0
  705. package/examples/jumpstart/src/components/A-Btn.component.ts +0 -124
  706. package/examples/jumpstart/src/components/A-Input.component.ts +0 -78
  707. package/examples/jumpstart/src/components/A-Navigation.component.ts +0 -167
  708. package/examples/jumpstart/src/components/SignInComponent.component.ts +0 -127
  709. package/examples/jumpstart/src/concept.ts +0 -92
  710. package/src/engines/html/AreHTML.compiler.ts +0 -657
  711. package/src/engines/html/AreHTML.engine.ts +0 -62
  712. package/src/engines/html/index.ts +0 -2
  713. package/src/engines/json/AreJSON.compiler.ts +0 -13
  714. package/src/lib/AreApp/AreApp.container.ts +0 -77
  715. package/src/lib/AreApp/AreApp.error.ts +0 -7
  716. package/src/lib/AreApp/index.ts +0 -4
  717. package/src/lib/AreCompiler/index.ts +0 -3
  718. package/src/lib/AreComponent/index.ts +0 -4
  719. package/src/lib/AreEvent/index.ts +0 -2
  720. package/src/lib/AreIndex/AreIndex.context.ts +0 -174
  721. package/src/lib/AreIndex/index.ts +0 -1
  722. package/src/lib/AreNode/index.ts +0 -4
  723. package/src/lib/AreProps/AreProps.context.ts +0 -26
  724. package/src/lib/AreProps/index.ts +0 -1
  725. package/src/lib/AreRoot/AreRoot.component.ts +0 -54
  726. package/src/lib/AreRoot/index.ts +0 -1
  727. package/src/lib/AreRouter/AreRouter.componeent.ts +0 -24
  728. package/src/lib/AreRouter/index.ts +0 -1
  729. package/src/lib/AreScene/index.ts +0 -3
  730. package/src/lib/AreSceneInstruction/AreSceneInstruction.constants.ts +0 -7
  731. package/src/lib/AreSceneInstruction/AreSceneInstruction.entity.ts +0 -156
  732. package/src/lib/AreSceneInstruction/AreSceneInstruction.types.ts +0 -8
  733. package/src/lib/AreSceneInstruction/index.ts +0 -4
  734. package/src/lib/AreSceneInstruction/types/AddAttribute.instruction.ts +0 -34
  735. package/src/lib/AreSceneInstruction/types/AddDirective.instruction.ts +0 -36
  736. package/src/lib/AreSceneInstruction/types/AddStyle.instruction.ts +0 -26
  737. package/src/lib/AreSceneInstruction/types/AddStyleProperty.instruction.ts +0 -32
  738. package/src/lib/AreSceneInstruction/types/AttachListener.instruction.ts +0 -57
  739. package/src/lib/AreSceneInstruction/types/AttachRootNode.instruction.ts +0 -23
  740. package/src/lib/AreSceneInstruction/types/MountNode.instruction.ts +0 -29
  741. package/src/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.ts +0 -45
  742. package/src/lib/AreSceneInstruction/types/UnmountNode.instruction.ts +0 -22
  743. package/src/lib/AreSceneInstruction/types/index.ts +0 -10
  744. package/src/lib/AreSlot/AreSlot.component.ts +0 -48
  745. package/src/lib/AreStore/index.ts +0 -1
  746. package/src/lib/AreSyntax/AreSyntax.component.ts +0 -378
  747. package/src/lib/AreSyntax/index.ts +0 -4
  748. package/src/signals/AreInit.signal.ts +0 -7
  749. package/src/signals/AreRoute.signal.ts +0 -25
  750. package/src/signals/index.ts +0 -2
  751. package/tests/A-HttpChannel.test.ts +0 -204
  752. package/tests/A-HttpServerError.test.ts +0 -204
  753. package/tests/A-Request.test.ts +0 -742
  754. package/tests/A-Service.test.ts +0 -18
  755. /package/dist/node/lib/{AreApp/AreApp.env.d.mts → AreInterpreter/AreInterpreter.constants.d.mts} +0 -0
  756. /package/dist/node/lib/{AreApp/AreApp.env.d.ts → AreInterpreter/AreInterpreter.constants.d.ts} +0 -0
  757. /package/dist/node/lib/{AreApp/AreApp.types.d.mts → AreInterpreter/AreInterpreter.types.d.mts} +0 -0
  758. /package/dist/node/lib/{AreApp/AreApp.types.d.ts → AreInterpreter/AreInterpreter.types.d.ts} +0 -0
  759. /package/src/lib/{AreApp/AreApp.env.ts → AreInterpreter/AreInterpreter.constants.ts} +0 -0
  760. /package/src/lib/{AreApp/AreApp.types.ts → AreInterpreter/AreInterpreter.types.ts} +0 -0
@@ -1,114 +1,388 @@
1
1
  import { A_Fragment } from "@adaas/a-concept";
2
2
  import { A_Frame } from "@adaas/a-frame";
3
- import { AreSyntaxInitOptions } from "./AreSyntax.types";
3
+ import { AreSyntaxCompiledExpression, AreSyntaxInitOptions, AreSyntaxTokenRules } from "./AreSyntax.types";
4
+ import { AreStore } from "@adaas/are/store/AreStore.context";
4
5
 
5
6
  @A_Frame.Fragment({
6
7
  namespace: 'A-ARE',
7
8
  name: 'AreSyntaxContext',
8
9
  description: 'Context that defines the syntax rules and structures for the A-Concept Rendering Engine (ARE). It provides mechanisms for parsing and interpreting templates, attributes, directives, interpolations, and event listeners, enabling dynamic and interactive UI rendering within the ARE framework.'
9
10
  })
10
- export class AreSyntaxContext extends A_Fragment {
11
-
12
-
13
- constructor(
14
- /**
15
- * Initialization options for configuring the AreSyntax context.
16
- */
17
- protected readonly config: Partial<AreSyntaxInitOptions> = {}
18
- ) {
19
- super({ name: 'AreSyntaxContext' });
20
-
21
- }
22
-
23
-
11
+ export class AreSyntax extends A_Fragment {
24
12
  /**
25
- * identifier of the root tag to use when compiling in browser context.
26
- *
27
- * @return {string} The root tag identifier.
13
+ * Max allowed length of an expression string to prevent excessively long inputs that could lead to performance issues or abuse.
28
14
  */
29
- get rootTag(): string {
30
- return this.config.rootTag || 'are-root';
31
- }
15
+ private readonly MAX_LENGTH = 500
32
16
  /**
33
- * List of standard HTML tags to recognize.
34
- * [!] This is a set of tags that can be ignored when determining if a node is a custom component.
35
- *
36
- * @return {Set<string>} A set of standard HTML tag names.
17
+ * Max allowed nesting depth of parentheses, brackets, and braces in expressions to prevent excessively complex inputs that could lead to performance issues or abuse. Default is 5 levels of nesting.
37
18
  */
38
- get standardTags(): Set<string> {
39
- return new Set(this.config.standardTags || [])
40
- };
19
+ private readonly MAX_DEPTH = 5
41
20
  /**
42
- * Enable or disable debug mode for syntax parsing.
43
- * When enabled, additional debug information will be logged during parsing.
44
- *
45
- * @return {boolean} True if debug mode is enabled, false otherwise.
21
+ * List of regex patterns that are blocked in expressions to prevent access to unsafe or sensitive features. This includes patterns for global objects, functions, and syntax that could be used for malicious purposes (e.g. "eval", "Function", "fetch", "XMLHttpRequest", "import", "require", "document", "window", "globalThis", "global", "process", "__proto__", "constructor", "prototype"). Expressions containing any of these patterns will be rejected during validation.
46
22
  */
47
- get debugMode(): boolean {
48
- return this.config.debugMode || false;
49
- }
23
+ private readonly BLOCKED_PATTERNS: RegExp[] = [
24
+ /\beval\b/,
25
+ /\bFunction\b/,
26
+ /\bfetch\b/,
27
+ /\bXMLHttpRequest\b/,
28
+ /\bimport\b/,
29
+ /\brequire\b/,
30
+ /\bdocument\b/,
31
+ /\bwindow\b/,
32
+ /\bglobalThis\b/,
33
+ /\bglobal\b/,
34
+ /\bprocess\b/,
35
+ /\b__proto__\b/,
36
+ /\bprototype\b/,
37
+ /\bconstructor\b/,
38
+ /\bObject\s*\.\s*assign\b/,
39
+ /\bObject\s*\.\s*defineProperty\b/,
40
+ /\bsetTimeout\b/,
41
+ /\bsetInterval\b/,
42
+ /\blocalStorage\b/,
43
+ /\bsessionStorage\b/,
44
+ /\bcookie\b/,
45
+ /\bWebSocket\b/,
46
+ /\bWorker\b/,
47
+ ]
50
48
  /**
51
- * Custom interpolation delimiters for template parsing.
52
- * Default is ['{{', '}}'].
53
- *
54
- * @return {[string, string]} The opening and closing interpolation delimiters.
49
+ * Set of global identifiers that are blocked in expressions to prevent access to unsafe or sensitive features. This includes global objects and functions that could be used for malicious purposes (e.g. "eval", "Function", "fetch", "XMLHttpRequest", "document", "window", "globalThis", "global", "process", "setTimeout", "setInterval", "localStorage", "sessionStorage", "indexedDB", "WebSocket", "Worker"). Accessing any of these identifiers in an expression will be rejected during validation.
55
50
  */
56
- get interpolationDelimiters(): [string, string] {
57
- return this.config.interpolationDelimiters || ['{{', '}}'];
51
+ private readonly BLOCKED_GLOBALS = new Set([
52
+ 'eval', 'Function', 'fetch', 'XMLHttpRequest',
53
+ 'document', 'window', 'globalThis', 'global', 'process',
54
+ 'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval',
55
+ 'localStorage', 'sessionStorage', 'indexedDB',
56
+ 'WebSocket', 'Worker', 'Blob', 'File',
57
+ 'require', 'module', 'exports',
58
+ 'alert', 'confirm', 'prompt',
59
+ ])
60
+ /**
61
+ * Regex pattern that defines the allowed characters in expressions. This pattern allows letters, digits, whitespace, and common operators and punctuation used in JavaScript expressions. Expressions containing characters that do not match this pattern will be rejected during validation to prevent injection of potentially harmful code.
62
+ */
63
+ private readonly ALLOWED_CHARS = /^[\w\s\d\.\[\]()=><|&!+\-*/%?:,'"`;~^$]+$/
64
+ /**
65
+ * Simple dot-path identifier pattern (e.g. "name", "user.name", "user.profile.name").
66
+ * Matches strings that consist solely of identifier characters separated by dots.
67
+ */
68
+ private readonly SIMPLE_PATH = /^[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*$/
69
+ /**
70
+ * Compiled expression — a pre-parsed function ready for repeated execution.
71
+ * Created once via compile(), reused on every apply/click.
72
+ */
73
+
74
+ private readonly _rules: AreSyntaxTokenRules[]
75
+ private readonly _trimWhitespace: boolean
76
+ private readonly _strictMode: boolean
77
+
78
+ constructor(config?: Partial<AreSyntaxInitOptions>) {
79
+ super({ name: 'AreSyntax' })
80
+
81
+ this._trimWhitespace = config?.trimWhitespace !== false
82
+ this._strictMode = config?.strictMode !== false
83
+ this._rules = [...(config?.rules ?? [])].sort((a, b) =>
84
+ (b.priority ?? 0) - (a.priority ?? 0)
85
+ )
58
86
  }
59
87
  /**
60
- * Custom binding delimiter for data binding parsing.
61
- * Default is ':'.
62
- * @return {string} The binding delimiter.
88
+ * Get the array of token rules that define the syntax for parsing templates. Each rule specifies how to identify and process a particular type of token (e.g. interpolation, directive, comment) within templates. The rules are checked in order of priority, allowing for flexible and customizable parsing behavior.
63
89
  */
64
- get bindingDelimiter(): string {
65
- return this.config.bindingDelimiter || ':';
90
+ get rules() {
91
+ return this._rules
66
92
  }
67
93
  /**
68
- * Custom listener delimiter for event binding parsing.
69
- * Default is '@'.
70
- *
71
- * @return {string} The listener delimiter.
94
+ * Indicates whether leading and trailing whitespace should be trimmed from token content. When enabled, any whitespace at the start or end of the content captured by a token will be removed before further processing. This can help prevent issues with unintended spaces affecting rendering or logic, especially in cases like interpolations or directives where extra whitespace may be common. Default is true.
72
95
  */
73
- get listenerDelimiter(): string {
74
- return this.config.listenerDelimiter || '@';
96
+ get trimWhitespace() {
97
+ return this._trimWhitespace
75
98
  }
76
99
  /**
77
- * Enable or disable strict mode for syntax parsing.
78
- * When enabled, the parser will throw errors for any syntax violations.
79
- * Default is true.
80
- *
81
- * @return {boolean} True if strict mode is enabled, false otherwise.
100
+ * Indicates whether the parser should throw an error when it encounters unclosed tokens. When enabled, if the parser finds an opening delimiter without a corresponding closing delimiter (e.g. an unclosed interpolation or directive), it will throw an error instead of silently ignoring it. This can help catch syntax errors and ensure that templates are well-formed. Default is true.
82
101
  */
83
- get strictMode(): boolean {
84
- return this.config.strictMode !== false;
102
+ get strictMode() {
103
+ return this._strictMode
85
104
  }
105
+
106
+
107
+
86
108
  /**
87
- * Enable or disable whitespace trimming in templates.
88
- * When enabled, leading and trailing whitespace in template expressions will be trimmed.
89
- * Default is true.
90
- *
91
- * @return {boolean} True if whitespace trimming is enabled, false otherwise.
109
+ * Compiles an expression string into a reusable executor.
110
+ * Performs validation and Function construction once.
111
+ * Use when the same expression will be evaluated multiple times
112
+ * e.g. event handlers, instructions that re-apply on store changes.
113
+ *
114
+ * @example
115
+ * // compile once at apply() time
116
+ * const compiled = AreCommonHelper.compile('(e) => !!pageTitle ? $testHandler(e, item) : null')
117
+ *
118
+ * // execute on every click — no re-parsing, no re-validation
119
+ * element.addEventListener('click', (e) => {
120
+ * const fn = compiled.execute(store, { $testHandler: handler, item })
121
+ * if (typeof fn === 'function') fn(e)
122
+ * })
92
123
  */
93
- get trimWhitespace(): boolean {
94
- return this.config.trimWhitespace !== false;
124
+ compile(expr: string): AreSyntaxCompiledExpression {
125
+ const trimmed = expr.trim()
126
+
127
+ // validate once — throws if expression is unsafe or malformed
128
+ this.validate(trimmed)
129
+
130
+ const isCallable = this.isCallableExpression(trimmed)
131
+ const isSimplePath = this.SIMPLE_PATH.test(trimmed)
132
+
133
+ // pre-build the Function once — most expensive part
134
+ let compiled: Function | null = null
135
+
136
+ if (!isSimplePath) {
137
+ try {
138
+ compiled = new Function('scope', `"use strict"; with(scope) { return (${trimmed}) }`)
139
+ } catch (e) {
140
+ throw new Error(`Expression syntax error in "${trimmed}": ${(e as Error).message}`)
141
+ }
142
+ }
143
+
144
+ const createSandboxFn = this.createSandbox.bind(this)
145
+
146
+ return {
147
+ isCallable,
148
+
149
+ execute(store: AreStore, scope?: Record<string, any>): any {
150
+ // fast path — simple property path, no sandbox needed
151
+ if (isSimplePath) {
152
+ if (scope && trimmed in scope) return scope[trimmed]
153
+ const value = store.get(trimmed)
154
+ if (value !== undefined) return value
155
+ // fall through to sandbox if store didn't resolve it
156
+ }
157
+
158
+ const sandbox = createSandboxFn(store, scope)
159
+
160
+ let result: any
161
+ try {
162
+ result = compiled
163
+ ? compiled(sandbox)
164
+ : new Function('scope', `"use strict"; with(scope) { return (${trimmed}) }`)(sandbox)
165
+ } catch (e) {
166
+ throw new Error(`Expression evaluation error in "${trimmed}": ${(e as Error).message}`)
167
+ }
168
+
169
+ if (isCallable && typeof result !== 'function') {
170
+ throw new Error(
171
+ `Expression "${trimmed}" was expected to be callable — got ${result === null ? 'null' : typeof result}`
172
+ )
173
+ }
174
+
175
+ return result
176
+ }
177
+ }
95
178
  }
96
179
  /**
97
- * Custom directive delimiter for directive parsing.
98
- * Default is '$'.
99
- *
100
- * @return {string} The directive delimiter.
180
+ * Evaluates an expression string against the provided store.
181
+ * Automatically determines whether the result should be callable
182
+ * based on the shape of the expression.
183
+ *
184
+ * Returns the raw value for plain expressions (interpolations, bindings).
185
+ * Returns a bound function for callable expressions (event handlers).
186
+ *
187
+ * @param expr Expression string to evaluate.
188
+ * @param store AreStore used for identifier resolution.
189
+ * @param scope Optional extra bindings checked **before** the store.
190
+ * Useful for injecting event-specific values (`$event`, `element`)
191
+ * or emit wrappers (`$handleClick`).
192
+ *
193
+ * @example
194
+ * // simple value
195
+ * evaluate('user.name', store)
196
+ *
197
+ * // with emit wrapper
198
+ * evaluate('$handleClick($event, user.name)', store, {
199
+ * $event: domEvent,
200
+ * $handleClick: (...args) => node.emit(new AreEvent('handleClick', args)),
201
+ * })
202
+ *
203
+ * // arrow with conditional
204
+ * evaluate('(e) => isValid(user.name) ? $handleClick(e) : null', store, {
205
+ * $handleClick: (...args) => node.emit(new AreEvent('handleClick', args)),
206
+ * })
101
207
  */
102
- get directiveDelimiter(): string {
103
- return this.config.directiveDelimiter || '$';
208
+ evaluate(expr: string, store: AreStore, scope?: Record<string, any>): any {
209
+ const trimmed = expr.trim()
210
+
211
+ this.validate(trimmed)
212
+
213
+ /**
214
+ * Fast path: if the expression is a simple property path (e.g. "name", "user.name"),
215
+ * resolve it directly — first from scope, then from the store — without going
216
+ * through the sandbox/Function constructor.
217
+ */
218
+ if (this.SIMPLE_PATH.test(trimmed)) {
219
+ if (scope && trimmed in scope) return scope[trimmed]
220
+
221
+ const value = store.get(trimmed)
222
+ if (value !== undefined) return value
223
+
224
+ /**
225
+ * If the full dot-path didn't resolve, fall back to the sandbox approach
226
+ * in case the store holds a nested object under the first key.
227
+ */
228
+ }
229
+
230
+ const sandbox = this.createSandbox(store, scope)
231
+ const result = this.execute(trimmed, sandbox)
232
+
233
+ if (this.isCallableExpression(trimmed)) {
234
+ if (typeof result !== 'function') {
235
+ throw new Error(
236
+ `Expression "${trimmed}" was expected to be callable — got ${result === null ? 'null' : typeof result}`
237
+ )
238
+ }
239
+ }
240
+
241
+ return result
104
242
  }
105
243
 
106
- /*
107
- * A list of custom directives to be recognized by the syntax parser.
108
- * Each directive should be a string representing the directive name.
109
- * Default is an empty array.
244
+ /**
245
+ * Extracts $-prefixed handler names from an expression.
246
+ * These represent event emission targets, not store references.
247
+ *
248
+ * Examples:
249
+ * "$handleClick" → Set(["handleClick"])
250
+ * "$handleClick(user.name)" → Set(["handleClick"])
251
+ * "(e) => isValid(user.name) ? $handleClick(e) : null" → Set(["handleClick"])
110
252
  */
111
- get customDirectives(): string[] {
112
- return this.config.customDirectives || [];
253
+ extractEmitHandlers(expr: string): Set<string> {
254
+ const stripped = expr.trim().replace(/'[^']*'|"[^"]*"|`[^`]*`/g, '""')
255
+ const handlers = new Set<string>()
256
+ const pattern = /\$([a-zA-Z_][\w$]*)/g
257
+ let match: RegExpExecArray | null
258
+
259
+ while ((match = pattern.exec(stripped)) !== null) {
260
+ handlers.add(match[1])
261
+ }
262
+
263
+ return handlers
264
+ }
265
+
266
+ // ── Classification ────────────────────────────────────────────────────────
267
+
268
+ private isCallableExpression(expr: string): boolean {
269
+ // arrow function: () => ... or x => ...
270
+ if (/^\(?[\w\s,]*\)?\s*=>/.test(expr)) return true
271
+
272
+ // function keyword: function(...) { }
273
+ if (/^function\s*\(/.test(expr)) return true
274
+
275
+ // plain identifier with no operators — could be a function ref
276
+ // but only if it resolves to a function — we let the guard handle it
277
+ // so we don't classify this as callable upfront
278
+ return false
279
+ }
280
+
281
+ // ── Validation ────────────────────────────────────────────────────────────
282
+
283
+ private validate(expr: string): void {
284
+ if (expr.length > this.MAX_LENGTH) {
285
+ throw new Error(
286
+ `Expression exceeds maximum length of ${this.MAX_LENGTH} characters`
287
+ )
288
+ }
289
+
290
+ for (const pattern of this.BLOCKED_PATTERNS) {
291
+ if (pattern.test(expr)) {
292
+ throw new Error(`Expression contains blocked pattern: ${pattern.source}`)
293
+ }
294
+ }
295
+
296
+ if (!this.ALLOWED_CHARS.test(expr)) {
297
+ throw new Error(`Expression contains disallowed characters`)
298
+ }
299
+
300
+ this.checkDepth(expr)
301
+ }
302
+
303
+ private checkDepth(expr: string): void {
304
+ let depth = 0
305
+ let max = 0
306
+ for (const ch of expr) {
307
+ if (ch === '(' || ch === '[' || ch === '{') { depth++; max = Math.max(max, depth) }
308
+ if (ch === ')' || ch === ']' || ch === '}') depth--
309
+ }
310
+ if (max > this.MAX_DEPTH) {
311
+ throw new Error(`Expression exceeds maximum nesting depth of ${this.MAX_DEPTH}`)
312
+ }
313
+ }
314
+
315
+ // ── Sandbox ───────────────────────────────────────────────────────────────
316
+
317
+ private createSandbox(store: AreStore, scope?: Record<string, any>): object {
318
+ return new Proxy({}, {
319
+ has: (_, key) => {
320
+ if (typeof key === 'string' && this.BLOCKED_GLOBALS.has(key)) return false
321
+ return true
322
+ },
323
+ get: (_, key) => {
324
+ if (typeof key !== 'string') return undefined
325
+
326
+ // Scope bindings take priority over the store
327
+ if (scope && key in scope) return scope[key]
328
+
329
+ this.assertSafeKey(key)
330
+
331
+ const value = store.get(key)
332
+ if (typeof value === 'function') return value.bind(store)
333
+ if (value !== null && typeof value === 'object' && value !== undefined) {
334
+ return new Proxy(value as object, this.nestedHandler(key, store))
335
+ }
336
+ return value
337
+ },
338
+ set: () => { throw new Error('Expression scope is read-only') },
339
+ })
340
+ }
341
+
342
+ private nestedHandler(prefix: string, store: AreStore): ProxyHandler<object> {
343
+ return {
344
+ has: () => true,
345
+ get: (target, key) => {
346
+ if (typeof key !== 'string') return undefined
347
+ this.assertSafeKey(key)
348
+
349
+ const fullKey = `${prefix}.${key}`
350
+ const value = store.get(fullKey)
351
+
352
+ if (value === undefined) return (target as any)[key]
353
+ if (typeof value === 'function') return value.bind(store)
354
+ if (value !== null && typeof value === 'object') {
355
+ return new Proxy(value as object, this.nestedHandler(fullKey, store))
356
+ }
357
+ return value
358
+ },
359
+ set: () => { throw new Error('Expression scope is read-only') },
360
+ }
361
+ }
362
+
363
+ private assertSafeKey(key: string): void {
364
+ if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
365
+ throw new Error(`Access to "${key}" is not allowed in expressions`)
366
+ }
367
+ if (this.BLOCKED_GLOBALS.has(key)) {
368
+ throw new Error(`Access to "${key}" is not allowed in expressions`)
369
+ }
370
+ }
371
+
372
+ // ── Execution ─────────────────────────────────────────────────────────────
373
+
374
+ private execute(expr: string, sandbox: object): any {
375
+ let fn: Function
376
+ try {
377
+ fn = new Function('scope', `with(scope) { return (${expr}) }`)
378
+ } catch (e) {
379
+ throw new Error(`Expression syntax error in "${expr}": ${(e as Error).message}`)
380
+ }
381
+
382
+ try {
383
+ return fn(sandbox)
384
+ } catch (e) {
385
+ throw new Error(`Expression evaluation error in "${expr}": ${(e as Error).message}`)
386
+ }
113
387
  }
114
388
  }