vsn 0.1.148 → 1.0.0

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 (587) hide show
  1. package/README.md +7 -6
  2. package/dist/index.cjs +5011 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +630 -0
  5. package/dist/index.d.ts +630 -0
  6. package/dist/index.js +4942 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/index.min.js +9 -0
  9. package/dist/index.min.js.map +1 -0
  10. package/package.json +30 -48
  11. package/.gitattributes +0 -2
  12. package/.travis.yml +0 -28
  13. package/demo/demo.html +0 -237
  14. package/demo/examples/cascading-function-sheets.html +0 -39
  15. package/demo/examples/component-slots.html +0 -29
  16. package/demo/examples/events.html +0 -21
  17. package/demo/examples/item-filtering.html +0 -45
  18. package/demo/examples/loop.html +0 -21
  19. package/demo/examples/persist.html +0 -17
  20. package/demo/examples/replace-html.html +0 -19
  21. package/demo/markup-default.html +0 -2
  22. package/demo/markup.html +0 -2
  23. package/demo/memory-leak-test.html +0 -82
  24. package/demo/named-stack.html +0 -34
  25. package/demo/resources/xhr-animations.html +0 -24
  26. package/demo/resources/xhr-cfs.html +0 -1
  27. package/demo/resources/xhr-html.html +0 -1
  28. package/demo/resources/xhr-lazy.html +0 -60
  29. package/demo/resources/xhr-memory-leak-test.html +0 -14
  30. package/demo/resources/xhr-persist.html +0 -40
  31. package/demo/resources/xhr-test-component.html +0 -4
  32. package/demo/service.html +0 -22
  33. package/demo/silly-animations.html +0 -27
  34. package/demo/vsn.js +0 -3
  35. package/demo/xhr-response.html +0 -1
  36. package/demo/xhr-test.html +0 -32
  37. package/dist/AST/ArithmeticNode.d.ts +0 -15
  38. package/dist/AST/ArithmeticNode.js +0 -114
  39. package/dist/AST/ArithmeticNode.js.map +0 -1
  40. package/dist/AST/ArrayNode.d.ts +0 -14
  41. package/dist/AST/ArrayNode.js +0 -166
  42. package/dist/AST/ArrayNode.js.map +0 -1
  43. package/dist/AST/AsNode.d.ts +0 -13
  44. package/dist/AST/AsNode.js +0 -92
  45. package/dist/AST/AsNode.js.map +0 -1
  46. package/dist/AST/AssignmentNode.d.ts +0 -24
  47. package/dist/AST/AssignmentNode.js +0 -392
  48. package/dist/AST/AssignmentNode.js.map +0 -1
  49. package/dist/AST/BlockNode.d.ts +0 -11
  50. package/dist/AST/BlockNode.js +0 -114
  51. package/dist/AST/BlockNode.js.map +0 -1
  52. package/dist/AST/BooleanLiteralNode.d.ts +0 -5
  53. package/dist/AST/BooleanLiteralNode.js +0 -31
  54. package/dist/AST/BooleanLiteralNode.js.map +0 -1
  55. package/dist/AST/ClassNode.d.ts +0 -47
  56. package/dist/AST/ClassNode.js +0 -593
  57. package/dist/AST/ClassNode.js.map +0 -1
  58. package/dist/AST/ComparisonNode.d.ts +0 -15
  59. package/dist/AST/ComparisonNode.js +0 -120
  60. package/dist/AST/ComparisonNode.js.map +0 -1
  61. package/dist/AST/ConditionalNode.d.ts +0 -13
  62. package/dist/AST/ConditionalNode.js +0 -95
  63. package/dist/AST/ConditionalNode.js.map +0 -1
  64. package/dist/AST/DispatchEventNode.d.ts +0 -17
  65. package/dist/AST/DispatchEventNode.js +0 -152
  66. package/dist/AST/DispatchEventNode.js.map +0 -1
  67. package/dist/AST/ElementAttributeNode.d.ts +0 -20
  68. package/dist/AST/ElementAttributeNode.js +0 -242
  69. package/dist/AST/ElementAttributeNode.js.map +0 -1
  70. package/dist/AST/ElementQueryNode.d.ts +0 -17
  71. package/dist/AST/ElementQueryNode.js +0 -148
  72. package/dist/AST/ElementQueryNode.js.map +0 -1
  73. package/dist/AST/ElementStyleNode.d.ts +0 -20
  74. package/dist/AST/ElementStyleNode.js +0 -205
  75. package/dist/AST/ElementStyleNode.js.map +0 -1
  76. package/dist/AST/ForStatementNode.d.ts +0 -17
  77. package/dist/AST/ForStatementNode.js +0 -121
  78. package/dist/AST/ForStatementNode.js.map +0 -1
  79. package/dist/AST/FunctionArgumentNode.d.ts +0 -11
  80. package/dist/AST/FunctionArgumentNode.js +0 -142
  81. package/dist/AST/FunctionArgumentNode.js.map +0 -1
  82. package/dist/AST/FunctionCallNode.d.ts +0 -14
  83. package/dist/AST/FunctionCallNode.js +0 -241
  84. package/dist/AST/FunctionCallNode.js.map +0 -1
  85. package/dist/AST/FunctionNode.d.ts +0 -20
  86. package/dist/AST/FunctionNode.js +0 -220
  87. package/dist/AST/FunctionNode.js.map +0 -1
  88. package/dist/AST/IfStatementNode.d.ts +0 -14
  89. package/dist/AST/IfStatementNode.js +0 -168
  90. package/dist/AST/IfStatementNode.js.map +0 -1
  91. package/dist/AST/InNode.d.ts +0 -15
  92. package/dist/AST/InNode.js +0 -107
  93. package/dist/AST/InNode.js.map +0 -1
  94. package/dist/AST/IndexNode.d.ts +0 -16
  95. package/dist/AST/IndexNode.js +0 -152
  96. package/dist/AST/IndexNode.js.map +0 -1
  97. package/dist/AST/LiteralNode.d.ts +0 -10
  98. package/dist/AST/LiteralNode.js +0 -74
  99. package/dist/AST/LiteralNode.js.map +0 -1
  100. package/dist/AST/LoopNode.d.ts +0 -12
  101. package/dist/AST/LoopNode.js +0 -121
  102. package/dist/AST/LoopNode.js.map +0 -1
  103. package/dist/AST/ModifierNode.d.ts +0 -14
  104. package/dist/AST/ModifierNode.js +0 -90
  105. package/dist/AST/ModifierNode.js.map +0 -1
  106. package/dist/AST/NamedStackNode.d.ts +0 -28
  107. package/dist/AST/NamedStackNode.js +0 -142
  108. package/dist/AST/NamedStackNode.js.map +0 -1
  109. package/dist/AST/Node.d.ts +0 -28
  110. package/dist/AST/Node.js +0 -263
  111. package/dist/AST/Node.js.map +0 -1
  112. package/dist/AST/NotNode.d.ts +0 -12
  113. package/dist/AST/NotNode.js +0 -103
  114. package/dist/AST/NotNode.js.map +0 -1
  115. package/dist/AST/NumberLiteralNode.d.ts +0 -5
  116. package/dist/AST/NumberLiteralNode.js +0 -36
  117. package/dist/AST/NumberLiteralNode.js.map +0 -1
  118. package/dist/AST/ObjectNode.d.ts +0 -14
  119. package/dist/AST/ObjectNode.js +0 -147
  120. package/dist/AST/ObjectNode.js.map +0 -1
  121. package/dist/AST/OnNode.d.ts +0 -9
  122. package/dist/AST/OnNode.js +0 -129
  123. package/dist/AST/OnNode.js.map +0 -1
  124. package/dist/AST/RootScopeMemberNode.d.ts +0 -12
  125. package/dist/AST/RootScopeMemberNode.js +0 -90
  126. package/dist/AST/RootScopeMemberNode.js.map +0 -1
  127. package/dist/AST/ScopeMemberNode.d.ts +0 -13
  128. package/dist/AST/ScopeMemberNode.js +0 -165
  129. package/dist/AST/ScopeMemberNode.js.map +0 -1
  130. package/dist/AST/ScopeNodeAbstract.d.ts +0 -8
  131. package/dist/AST/ScopeNodeAbstract.js +0 -105
  132. package/dist/AST/ScopeNodeAbstract.js.map +0 -1
  133. package/dist/AST/StringFormatNode.d.ts +0 -18
  134. package/dist/AST/StringFormatNode.js +0 -151
  135. package/dist/AST/StringFormatNode.js.map +0 -1
  136. package/dist/AST/UnitLiteralNode.d.ts +0 -15
  137. package/dist/AST/UnitLiteralNode.js +0 -72
  138. package/dist/AST/UnitLiteralNode.js.map +0 -1
  139. package/dist/AST/WASM/Context.d.ts +0 -4
  140. package/dist/AST/WASM/Context.js +0 -18
  141. package/dist/AST/WASM/Context.js.map +0 -1
  142. package/dist/AST/WASM/Function.d.ts +0 -22
  143. package/dist/AST/WASM/Function.js +0 -126
  144. package/dist/AST/WASM/Function.js.map +0 -1
  145. package/dist/AST/WASM/Memory.d.ts +0 -12
  146. package/dist/AST/WASM/Memory.js +0 -22
  147. package/dist/AST/WASM/Memory.js.map +0 -1
  148. package/dist/AST/WASM/Section.d.ts +0 -5
  149. package/dist/AST/WASM/Section.js +0 -11
  150. package/dist/AST/WASM/Section.js.map +0 -1
  151. package/dist/AST/WASM.d.ts +0 -58
  152. package/dist/AST/WASM.js +0 -293
  153. package/dist/AST/WASM.js.map +0 -1
  154. package/dist/AST/WithNode.d.ts +0 -15
  155. package/dist/AST/WithNode.js +0 -197
  156. package/dist/AST/WithNode.js.map +0 -1
  157. package/dist/AST/XHRNode.d.ts +0 -15
  158. package/dist/AST/XHRNode.js +0 -151
  159. package/dist/AST/XHRNode.js.map +0 -1
  160. package/dist/AST.d.ts +0 -160
  161. package/dist/AST.js +0 -1156
  162. package/dist/AST.js.map +0 -1
  163. package/dist/Attribute.d.ts +0 -46
  164. package/dist/Attribute.js +0 -262
  165. package/dist/Attribute.js.map +0 -1
  166. package/dist/Bencmark.d.ts +0 -14
  167. package/dist/Bencmark.js +0 -236
  168. package/dist/Bencmark.js.map +0 -1
  169. package/dist/Component.d.ts +0 -7
  170. package/dist/Component.js +0 -179
  171. package/dist/Component.js.map +0 -1
  172. package/dist/Configuration.d.ts +0 -12
  173. package/dist/Configuration.js +0 -64
  174. package/dist/Configuration.js.map +0 -1
  175. package/dist/Controller.d.ts +0 -13
  176. package/dist/Controller.js +0 -60
  177. package/dist/Controller.js.map +0 -1
  178. package/dist/DOM/AbstractDOM.d.ts +0 -56
  179. package/dist/DOM/AbstractDOM.js +0 -1038
  180. package/dist/DOM/AbstractDOM.js.map +0 -1
  181. package/dist/DOM/DOMObject.d.ts +0 -33
  182. package/dist/DOM/DOMObject.js +0 -152
  183. package/dist/DOM/DOMObject.js.map +0 -1
  184. package/dist/DOM/ShadowDOM.d.ts +0 -5
  185. package/dist/DOM/ShadowDOM.js +0 -32
  186. package/dist/DOM/ShadowDOM.js.map +0 -1
  187. package/dist/DOM/WrappedDocument.d.ts +0 -5
  188. package/dist/DOM/WrappedDocument.js +0 -34
  189. package/dist/DOM/WrappedDocument.js.map +0 -1
  190. package/dist/DOM/WrappedWindow.d.ts +0 -6
  191. package/dist/DOM/WrappedWindow.js +0 -45
  192. package/dist/DOM/WrappedWindow.js.map +0 -1
  193. package/dist/DOM.d.ts +0 -5
  194. package/dist/DOM.js +0 -37
  195. package/dist/DOM.js.map +0 -1
  196. package/dist/EventDispatcher.d.ts +0 -36
  197. package/dist/EventDispatcher.js +0 -393
  198. package/dist/EventDispatcher.js.map +0 -1
  199. package/dist/Formats.d.ts +0 -5
  200. package/dist/Formats.js +0 -47
  201. package/dist/Formats.js.map +0 -1
  202. package/dist/MessageList.d.ts +0 -15
  203. package/dist/MessageList.js +0 -127
  204. package/dist/MessageList.js.map +0 -1
  205. package/dist/Model.d.ts +0 -12
  206. package/dist/Model.js +0 -92
  207. package/dist/Model.js.map +0 -1
  208. package/dist/Modifiers.d.ts +0 -17
  209. package/dist/Modifiers.js +0 -100
  210. package/dist/Modifiers.js.map +0 -1
  211. package/dist/Query.d.ts +0 -4
  212. package/dist/Query.js +0 -66
  213. package/dist/Query.js.map +0 -1
  214. package/dist/Registry.d.ts +0 -41
  215. package/dist/Registry.js +0 -165
  216. package/dist/Registry.js.map +0 -1
  217. package/dist/Scope/DynamicScopeData.d.ts +0 -6
  218. package/dist/Scope/DynamicScopeData.js +0 -83
  219. package/dist/Scope/DynamicScopeData.js.map +0 -1
  220. package/dist/Scope/ObjectAccessor.d.ts +0 -7
  221. package/dist/Scope/ObjectAccessor.js +0 -40
  222. package/dist/Scope/ObjectAccessor.js.map +0 -1
  223. package/dist/Scope/QueryReference.d.ts +0 -10
  224. package/dist/Scope/QueryReference.js +0 -103
  225. package/dist/Scope/QueryReference.js.map +0 -1
  226. package/dist/Scope/ScopeAbstract.d.ts +0 -9
  227. package/dist/Scope/ScopeAbstract.js +0 -28
  228. package/dist/Scope/ScopeAbstract.js.map +0 -1
  229. package/dist/Scope/ScopeData.d.ts +0 -4
  230. package/dist/Scope/ScopeData.js +0 -60
  231. package/dist/Scope/ScopeData.js.map +0 -1
  232. package/dist/Scope/ScopeDataAbstract.d.ts +0 -30
  233. package/dist/Scope/ScopeDataAbstract.js +0 -303
  234. package/dist/Scope/ScopeDataAbstract.js.map +0 -1
  235. package/dist/Scope/ScopeObject.d.ts +0 -3
  236. package/dist/Scope/ScopeObject.js +0 -28
  237. package/dist/Scope/ScopeObject.js.map +0 -1
  238. package/dist/Scope/ScopeReference.d.ts +0 -10
  239. package/dist/Scope/ScopeReference.js +0 -73
  240. package/dist/Scope/ScopeReference.js.map +0 -1
  241. package/dist/Scope/ScopedVariableType.d.ts +0 -6
  242. package/dist/Scope/ScopedVariableType.js +0 -14
  243. package/dist/Scope/ScopedVariableType.js.map +0 -1
  244. package/dist/Scope/WrappedArray.d.ts +0 -21
  245. package/dist/Scope/WrappedArray.js +0 -252
  246. package/dist/Scope/WrappedArray.js.map +0 -1
  247. package/dist/Scope/properties/ArrayProperty.d.ts +0 -12
  248. package/dist/Scope/properties/ArrayProperty.js +0 -88
  249. package/dist/Scope/properties/ArrayProperty.js.map +0 -1
  250. package/dist/Scope/properties/FloatProperty.d.ts +0 -4
  251. package/dist/Scope/properties/FloatProperty.js +0 -30
  252. package/dist/Scope/properties/FloatProperty.js.map +0 -1
  253. package/dist/Scope/properties/IntegerProperty.d.ts +0 -4
  254. package/dist/Scope/properties/IntegerProperty.js +0 -30
  255. package/dist/Scope/properties/IntegerProperty.js.map +0 -1
  256. package/dist/Scope/properties/Property.d.ts +0 -30
  257. package/dist/Scope/properties/Property.js +0 -205
  258. package/dist/Scope/properties/Property.js.map +0 -1
  259. package/dist/Scope/properties/_imports.d.ts +0 -4
  260. package/dist/Scope/properties/_imports.js +0 -13
  261. package/dist/Scope/properties/_imports.js.map +0 -1
  262. package/dist/Scope.d.ts +0 -39
  263. package/dist/Scope.js +0 -434
  264. package/dist/Scope.js.map +0 -1
  265. package/dist/Service.d.ts +0 -9
  266. package/dist/Service.js +0 -49
  267. package/dist/Service.js.map +0 -1
  268. package/dist/Tag/ShadowRootTag.d.ts +0 -3
  269. package/dist/Tag/ShadowRootTag.js +0 -28
  270. package/dist/Tag/ShadowRootTag.js.map +0 -1
  271. package/dist/Tag/SlotTag.d.ts +0 -3
  272. package/dist/Tag/SlotTag.js +0 -28
  273. package/dist/Tag/SlotTag.js.map +0 -1
  274. package/dist/Tag/SlottedTag.d.ts +0 -7
  275. package/dist/Tag/SlottedTag.js +0 -78
  276. package/dist/Tag/SlottedTag.js.map +0 -1
  277. package/dist/Tag/TagList.d.ts +0 -13
  278. package/dist/Tag/TagList.js +0 -104
  279. package/dist/Tag/TagList.js.map +0 -1
  280. package/dist/Tag.d.ts +0 -117
  281. package/dist/Tag.js +0 -1471
  282. package/dist/Tag.js.map +0 -1
  283. package/dist/Types.d.ts +0 -8
  284. package/dist/Types.js +0 -54
  285. package/dist/Types.js.map +0 -1
  286. package/dist/Validators.d.ts +0 -7
  287. package/dist/Validators.js +0 -54
  288. package/dist/Validators.js.map +0 -1
  289. package/dist/attributes/AddClassIf.d.ts +0 -4
  290. package/dist/attributes/AddClassIf.js +0 -93
  291. package/dist/attributes/AddClassIf.js.map +0 -1
  292. package/dist/attributes/Bind.d.ts +0 -24
  293. package/dist/attributes/Bind.js +0 -273
  294. package/dist/attributes/Bind.js.map +0 -1
  295. package/dist/attributes/ComponentAttribute.d.ts +0 -5
  296. package/dist/attributes/ComponentAttribute.js +0 -110
  297. package/dist/attributes/ComponentAttribute.js.map +0 -1
  298. package/dist/attributes/ControllerAttribute.d.ts +0 -11
  299. package/dist/attributes/ControllerAttribute.js +0 -127
  300. package/dist/attributes/ControllerAttribute.js.map +0 -1
  301. package/dist/attributes/DisableIf.d.ts +0 -5
  302. package/dist/attributes/DisableIf.js +0 -94
  303. package/dist/attributes/DisableIf.js.map +0 -1
  304. package/dist/attributes/Exec.d.ts +0 -10
  305. package/dist/attributes/Exec.js +0 -133
  306. package/dist/attributes/Exec.js.map +0 -1
  307. package/dist/attributes/Format.d.ts +0 -5
  308. package/dist/attributes/Format.js +0 -99
  309. package/dist/attributes/Format.js.map +0 -1
  310. package/dist/attributes/If.d.ts +0 -11
  311. package/dist/attributes/If.js +0 -159
  312. package/dist/attributes/If.js.map +0 -1
  313. package/dist/attributes/JSONAttribute.d.ts +0 -5
  314. package/dist/attributes/JSONAttribute.js +0 -119
  315. package/dist/attributes/JSONAttribute.js.map +0 -1
  316. package/dist/attributes/KeyAbstract.d.ts +0 -7
  317. package/dist/attributes/KeyAbstract.js +0 -117
  318. package/dist/attributes/KeyAbstract.js.map +0 -1
  319. package/dist/attributes/KeyDown.d.ts +0 -4
  320. package/dist/attributes/KeyDown.js +0 -88
  321. package/dist/attributes/KeyDown.js.map +0 -1
  322. package/dist/attributes/KeyUp.d.ts +0 -4
  323. package/dist/attributes/KeyUp.js +0 -88
  324. package/dist/attributes/KeyUp.js.map +0 -1
  325. package/dist/attributes/LazyAttribute.d.ts +0 -8
  326. package/dist/attributes/LazyAttribute.js +0 -122
  327. package/dist/attributes/LazyAttribute.js.map +0 -1
  328. package/dist/attributes/List.d.ts +0 -18
  329. package/dist/attributes/List.js +0 -396
  330. package/dist/attributes/List.js.map +0 -1
  331. package/dist/attributes/ListItem.d.ts +0 -12
  332. package/dist/attributes/ListItem.js +0 -119
  333. package/dist/attributes/ListItem.js.map +0 -1
  334. package/dist/attributes/ListItemModel.d.ts +0 -4
  335. package/dist/attributes/ListItemModel.js +0 -39
  336. package/dist/attributes/ListItemModel.js.map +0 -1
  337. package/dist/attributes/ModelAttribute.d.ts +0 -5
  338. package/dist/attributes/ModelAttribute.js +0 -41
  339. package/dist/attributes/ModelAttribute.js.map +0 -1
  340. package/dist/attributes/Name.d.ts +0 -6
  341. package/dist/attributes/Name.js +0 -88
  342. package/dist/attributes/Name.js.map +0 -1
  343. package/dist/attributes/On.d.ts +0 -9
  344. package/dist/attributes/On.js +0 -135
  345. package/dist/attributes/On.js.map +0 -1
  346. package/dist/attributes/PersistAttribute.d.ts +0 -15
  347. package/dist/attributes/PersistAttribute.js +0 -215
  348. package/dist/attributes/PersistAttribute.js.map +0 -1
  349. package/dist/attributes/Referenced.d.ts +0 -3
  350. package/dist/attributes/Referenced.js +0 -38
  351. package/dist/attributes/Referenced.js.map +0 -1
  352. package/dist/attributes/RootAttribute.d.ts +0 -7
  353. package/dist/attributes/RootAttribute.js +0 -141
  354. package/dist/attributes/RootAttribute.js.map +0 -1
  355. package/dist/attributes/ScopeAttribute.d.ts +0 -9
  356. package/dist/attributes/ScopeAttribute.js +0 -152
  357. package/dist/attributes/ScopeAttribute.js.map +0 -1
  358. package/dist/attributes/ScopeChange.d.ts +0 -10
  359. package/dist/attributes/ScopeChange.js +0 -153
  360. package/dist/attributes/ScopeChange.js.map +0 -1
  361. package/dist/attributes/ScriptAttribute.d.ts +0 -4
  362. package/dist/attributes/ScriptAttribute.js +0 -45
  363. package/dist/attributes/ScriptAttribute.js.map +0 -1
  364. package/dist/attributes/ServiceAttribute.d.ts +0 -7
  365. package/dist/attributes/ServiceAttribute.js +0 -45
  366. package/dist/attributes/ServiceAttribute.js.map +0 -1
  367. package/dist/attributes/SetAttribute.d.ts +0 -11
  368. package/dist/attributes/SetAttribute.js +0 -146
  369. package/dist/attributes/SetAttribute.js.map +0 -1
  370. package/dist/attributes/StandardAttribute.d.ts +0 -15
  371. package/dist/attributes/StandardAttribute.js +0 -170
  372. package/dist/attributes/StandardAttribute.js.map +0 -1
  373. package/dist/attributes/StyleAttribute.d.ts +0 -14
  374. package/dist/attributes/StyleAttribute.js +0 -218
  375. package/dist/attributes/StyleAttribute.js.map +0 -1
  376. package/dist/attributes/StyleVarAttribute.d.ts +0 -11
  377. package/dist/attributes/StyleVarAttribute.js +0 -124
  378. package/dist/attributes/StyleVarAttribute.js.map +0 -1
  379. package/dist/attributes/TemplateAttribute.d.ts +0 -5
  380. package/dist/attributes/TemplateAttribute.js +0 -89
  381. package/dist/attributes/TemplateAttribute.js.map +0 -1
  382. package/dist/attributes/TypeAttribute.d.ts +0 -5
  383. package/dist/attributes/TypeAttribute.js +0 -104
  384. package/dist/attributes/TypeAttribute.js.map +0 -1
  385. package/dist/attributes/XHRAttribute.d.ts +0 -14
  386. package/dist/attributes/XHRAttribute.js +0 -242
  387. package/dist/attributes/XHRAttribute.js.map +0 -1
  388. package/dist/attributes/_imports.d.ts +0 -32
  389. package/dist/attributes/_imports.js +0 -68
  390. package/dist/attributes/_imports.js.map +0 -1
  391. package/dist/contrib/XHR.d.ts +0 -21
  392. package/dist/contrib/XHR.js +0 -78
  393. package/dist/contrib/XHR.js.map +0 -1
  394. package/dist/contrib/_imports.d.ts +0 -1
  395. package/dist/contrib/_imports.js +0 -6
  396. package/dist/contrib/_imports.js.map +0 -1
  397. package/dist/custom-elements.d.ts +0 -9
  398. package/dist/custom-elements.js +0 -44
  399. package/dist/custom-elements.js.map +0 -1
  400. package/dist/demo/ServiceDemo.d.ts +0 -5
  401. package/dist/demo/ServiceDemo.js +0 -87
  402. package/dist/demo/ServiceDemo.js.map +0 -1
  403. package/dist/demo.d.ts +0 -2
  404. package/dist/demo.js +0 -17
  405. package/dist/demo.js.map +0 -1
  406. package/dist/helpers/DOMHelper.d.ts +0 -3
  407. package/dist/helpers/DOMHelper.js +0 -81
  408. package/dist/helpers/DOMHelper.js.map +0 -1
  409. package/dist/helpers/ElementHelper.d.ts +0 -4
  410. package/dist/helpers/ElementHelper.js +0 -53
  411. package/dist/helpers/ElementHelper.js.map +0 -1
  412. package/dist/helpers/VisionHelper.d.ts +0 -13
  413. package/dist/helpers/VisionHelper.js +0 -148
  414. package/dist/helpers/VisionHelper.js.map +0 -1
  415. package/dist/helpers/decorators.d.ts +0 -5
  416. package/dist/helpers/decorators.js +0 -59
  417. package/dist/helpers/decorators.js.map +0 -1
  418. package/dist/version.d.ts +0 -1
  419. package/dist/version.js +0 -5
  420. package/dist/version.js.map +0 -1
  421. package/dist/vsn.d.ts +0 -36
  422. package/dist/vsn.js +0 -201
  423. package/dist/vsn.js.map +0 -1
  424. package/karma.conf.js +0 -34
  425. package/src/AST/ArithmeticNode.ts +0 -52
  426. package/src/AST/ArrayNode.ts +0 -39
  427. package/src/AST/AsNode.ts +0 -32
  428. package/src/AST/AssignmentNode.ts +0 -256
  429. package/src/AST/BlockNode.ts +0 -25
  430. package/src/AST/BooleanLiteralNode.ts +0 -10
  431. package/src/AST/ClassNode.ts +0 -267
  432. package/src/AST/ComparisonNode.ts +0 -57
  433. package/src/AST/ConditionalNode.ts +0 -36
  434. package/src/AST/DispatchEventNode.ts +0 -58
  435. package/src/AST/ElementAttributeNode.ts +0 -97
  436. package/src/AST/ElementQueryNode.ts +0 -48
  437. package/src/AST/ElementStyleNode.ts +0 -74
  438. package/src/AST/ForStatementNode.ts +0 -59
  439. package/src/AST/FunctionArgumentNode.ts +0 -27
  440. package/src/AST/FunctionCallNode.ts +0 -93
  441. package/src/AST/FunctionNode.ts +0 -82
  442. package/src/AST/IfStatementNode.ts +0 -67
  443. package/src/AST/InNode.ts +0 -46
  444. package/src/AST/IndexNode.ts +0 -64
  445. package/src/AST/LiteralNode.ts +0 -17
  446. package/src/AST/LoopNode.ts +0 -35
  447. package/src/AST/ModifierNode.ts +0 -32
  448. package/src/AST/NamedStackNode.ts +0 -83
  449. package/src/AST/Node.ts +0 -104
  450. package/src/AST/NotNode.ts +0 -41
  451. package/src/AST/NumberLiteralNode.ts +0 -14
  452. package/src/AST/ObjectNode.ts +0 -55
  453. package/src/AST/OnNode.ts +0 -23
  454. package/src/AST/RootScopeMemberNode.ts +0 -27
  455. package/src/AST/ScopeMemberNode.ts +0 -63
  456. package/src/AST/ScopeNodeAbstract.ts +0 -21
  457. package/src/AST/StringFormatNode.ts +0 -43
  458. package/src/AST/UnitLiteralNode.ts +0 -51
  459. package/src/AST/WASM/Context.ts +0 -12
  460. package/src/AST/WASM/Function.ts +0 -67
  461. package/src/AST/WASM/Memory.ts +0 -21
  462. package/src/AST/WASM/Section.ts +0 -6
  463. package/src/AST/WASM.ts +0 -244
  464. package/src/AST/WithNode.ts +0 -68
  465. package/src/AST/XHRNode.ts +0 -85
  466. package/src/AST.ts +0 -969
  467. package/src/Attribute.ts +0 -130
  468. package/src/Bencmark.ts +0 -184
  469. package/src/Component.ts +0 -63
  470. package/src/Configuration.ts +0 -47
  471. package/src/Controller.ts +0 -36
  472. package/src/DOM/AbstractDOM.ts +0 -462
  473. package/src/DOM/DOMObject.ts +0 -77
  474. package/src/DOM/ShadowDOM.ts +0 -15
  475. package/src/DOM/WrappedDocument.ts +0 -9
  476. package/src/DOM/WrappedWindow.ts +0 -21
  477. package/src/DOM.ts +0 -13
  478. package/src/EventDispatcher.ts +0 -234
  479. package/src/Formats.ts +0 -33
  480. package/src/MessageList.ts +0 -85
  481. package/src/Model.ts +0 -44
  482. package/src/Modifiers.ts +0 -54
  483. package/src/Query.ts +0 -17
  484. package/src/Registry.ts +0 -141
  485. package/src/Scope/DynamicScopeData.ts +0 -27
  486. package/src/Scope/ObjectAccessor.ts +0 -21
  487. package/src/Scope/QueryReference.ts +0 -29
  488. package/src/Scope/ScopeAbstract.ts +0 -11
  489. package/src/Scope/ScopeData.ts +0 -20
  490. package/src/Scope/ScopeDataAbstract.ts +0 -200
  491. package/src/Scope/ScopeObject.ts +0 -3
  492. package/src/Scope/ScopeReference.ts +0 -30
  493. package/src/Scope/ScopedVariableType.ts +0 -7
  494. package/src/Scope/WrappedArray.ts +0 -134
  495. package/src/Scope/properties/ArrayProperty.ts +0 -46
  496. package/src/Scope/properties/FloatProperty.ts +0 -5
  497. package/src/Scope/properties/IntegerProperty.ts +0 -5
  498. package/src/Scope/properties/Property.ts +0 -173
  499. package/src/Scope/properties/_imports.ts +0 -4
  500. package/src/Scope.ts +0 -333
  501. package/src/Service.ts +0 -24
  502. package/src/Tag/ShadowRootTag.ts +0 -5
  503. package/src/Tag/SlotTag.ts +0 -5
  504. package/src/Tag/SlottedTag.ts +0 -17
  505. package/src/Tag/TagList.ts +0 -52
  506. package/src/Tag.ts +0 -838
  507. package/src/Types.ts +0 -34
  508. package/src/Validators.ts +0 -45
  509. package/src/attributes/AddClassIf.ts +0 -14
  510. package/src/attributes/Bind.ts +0 -144
  511. package/src/attributes/ComponentAttribute.ts +0 -23
  512. package/src/attributes/ControllerAttribute.ts +0 -50
  513. package/src/attributes/DisableIf.ts +0 -16
  514. package/src/attributes/Exec.ts +0 -32
  515. package/src/attributes/Format.ts +0 -18
  516. package/src/attributes/If.ts +0 -40
  517. package/src/attributes/JSONAttribute.ts +0 -40
  518. package/src/attributes/KeyAbstract.ts +0 -28
  519. package/src/attributes/KeyDown.ts +0 -10
  520. package/src/attributes/KeyUp.ts +0 -10
  521. package/src/attributes/LazyAttribute.ts +0 -30
  522. package/src/attributes/List.ts +0 -210
  523. package/src/attributes/ListItem.ts +0 -30
  524. package/src/attributes/ListItemModel.ts +0 -7
  525. package/src/attributes/ModelAttribute.ts +0 -8
  526. package/src/attributes/Name.ts +0 -16
  527. package/src/attributes/On.ts +0 -39
  528. package/src/attributes/PersistAttribute.ts +0 -83
  529. package/src/attributes/Referenced.ts +0 -5
  530. package/src/attributes/RootAttribute.ts +0 -24
  531. package/src/attributes/ScopeAttribute.ts +0 -40
  532. package/src/attributes/ScopeChange.ts +0 -35
  533. package/src/attributes/ScriptAttribute.ts +0 -9
  534. package/src/attributes/ServiceAttribute.ts +0 -13
  535. package/src/attributes/SetAttribute.ts +0 -44
  536. package/src/attributes/StandardAttribute.ts +0 -72
  537. package/src/attributes/StyleAttribute.ts +0 -90
  538. package/src/attributes/StyleVarAttribute.ts +0 -40
  539. package/src/attributes/TemplateAttribute.ts +0 -12
  540. package/src/attributes/TypeAttribute.ts +0 -23
  541. package/src/attributes/XHRAttribute.ts +0 -109
  542. package/src/attributes/_imports.ts +0 -32
  543. package/src/contrib/XHR.ts +0 -46
  544. package/src/contrib/_imports.ts +0 -1
  545. package/src/custom-elements.ts +0 -46
  546. package/src/demo/ServiceDemo.ts +0 -12
  547. package/src/demo.ts +0 -2
  548. package/src/helpers/DOMHelper.ts +0 -17
  549. package/src/helpers/ElementHelper.ts +0 -26
  550. package/src/helpers/VisionHelper.ts +0 -88
  551. package/src/helpers/decorators.ts +0 -11
  552. package/src/version.ts +0 -2
  553. package/src/vsn.ts +0 -106
  554. package/test/AST/ArithmeticAssignmentNode.spec.ts +0 -45
  555. package/test/AST/ClassNode.spec.ts +0 -175
  556. package/test/AST/FunctionNode.spec.ts +0 -51
  557. package/test/AST/StringFormatNode.spec.ts +0 -12
  558. package/test/AST/WASM.spec.ts +0 -63
  559. package/test/AST/XHRNode.spec.ts +0 -10
  560. package/test/AST.spec.ts +0 -353
  561. package/test/Controller.spec.ts +0 -42
  562. package/test/DOM.spec.ts +0 -63
  563. package/test/EventDispatcher.spec.ts +0 -191
  564. package/test/MessageList.spec.ts +0 -101
  565. package/test/Model/DataModel.spec.ts +0 -0
  566. package/test/Scope/DynamicScopeData.spec.ts +0 -141
  567. package/test/Scope/ScopeData.spec.ts +0 -58
  568. package/test/Scope/WrappedArray.spec.ts +0 -11
  569. package/test/Scope/properties/ArrayProperty.spec.ts +0 -23
  570. package/test/Scope.spec.ts +0 -69
  571. package/test/Tag/TagList.spec.ts +0 -21
  572. package/test/Tag.spec.ts +0 -4
  573. package/test/attributes/Bind.spec.ts +0 -174
  574. package/test/attributes/JSONAttribute.spec.ts +0 -91
  575. package/test/attributes/ListItem.spec.ts +0 -118
  576. package/test/attributes/ScopeAttribute.spec.ts +0 -35
  577. package/test/attributes/ServiceAttribute.spec.ts +0 -41
  578. package/test/attributes/SetAttribute.spec.ts +0 -55
  579. package/test/attributes/Styles.spec.ts +0 -43
  580. package/test/globals.js +0 -2
  581. package/tsconfig.base.json +0 -17
  582. package/tsconfig.json +0 -6
  583. package/tsconfig.test.json +0 -7
  584. package/types/vsn-component.d.ts +0 -5
  585. package/webpack.config.js +0 -48
  586. package/webpack.development.js +0 -6
  587. package/webpack.production.js +0 -5
package/src/AST.ts DELETED
@@ -1,969 +0,0 @@
1
- import {Scope} from "./Scope";
2
- import {DOM} from "./DOM";
3
- import {Tag} from "./Tag";
4
- import {RootScopeMemberNode} from "./AST/RootScopeMemberNode";
5
- import {ScopeMemberNode} from "./AST/ScopeMemberNode";
6
- import {ElementAttributeNode} from "./AST/ElementAttributeNode";
7
- import {Node} from "./AST/Node";
8
- import {BlockNode} from "./AST/BlockNode";
9
- import {LiteralNode} from "./AST/LiteralNode";
10
- import {IfStatementNode} from "./AST/IfStatementNode";
11
- import {ForStatementNode} from "./AST/ForStatementNode";
12
- import {NumberLiteralNode} from "./AST/NumberLiteralNode";
13
- import {ElementQueryNode} from "./AST/ElementQueryNode";
14
- import {IndexNode} from "./AST/IndexNode";
15
- import {ArrayNode} from "./AST/ArrayNode";
16
- import {ObjectNode} from "./AST/ObjectNode";
17
- import {ElementStyleNode} from "./AST/ElementStyleNode";
18
- import {FunctionCallNode} from "./AST/FunctionCallNode";
19
- import {FunctionArgumentNode} from "./AST/FunctionArgumentNode";
20
- import {InNode} from "./AST/InNode";
21
- import {ComparisonNode} from "./AST/ComparisonNode";
22
- import {ArithmeticNode} from "./AST/ArithmeticNode";
23
- import {AssignmentNode} from "./AST/AssignmentNode";
24
- import {UnitLiteralNode} from "./AST/UnitLiteralNode";
25
- import {BooleanLiteralNode} from "./AST/BooleanLiteralNode";
26
- import {NotNode} from "./AST/NotNode";
27
- import {XHRNode} from "./AST/XHRNode";
28
- import {StringFormatNode} from "./AST/StringFormatNode";
29
- import {FunctionNode} from "./AST/FunctionNode";
30
- import {ClassNode} from "./AST/ClassNode";
31
- import {OnNode} from "./AST/OnNode";
32
- import {ModifierNode} from "./AST/ModifierNode";
33
- import {DispatchEventNode} from "./AST/DispatchEventNode";
34
- import {WithNode} from "./AST/WithNode";
35
- import {AsNode} from "./AST/AsNode";
36
- import {NamedStackNode} from "./AST/NamedStackNode";
37
- import {LoopNode} from "./AST/LoopNode";
38
-
39
- function lower(str: string): string {
40
- return str ? str.toLowerCase() : null;
41
- }
42
-
43
- interface TokenPattern {
44
- type: TokenType,
45
- pattern: RegExp
46
- }
47
-
48
- export interface Token {
49
- type: TokenType,
50
- value: string,
51
- full: string,
52
- groups: string[]
53
- }
54
-
55
- export enum BlockType {
56
- BRACE,
57
- BRACKET,
58
- PAREN,
59
- STATEMENT,
60
- }
61
-
62
- export enum TokenType {
63
- NULL,
64
- WHITESPACE,
65
- TYPE_INT,
66
- TYPE_UINT,
67
- TYPE_FLOAT,
68
- TYPE_STRING,
69
- TYPE_BOOL,
70
- RETURN,
71
- NOT,
72
- OF,
73
- AS,
74
- IN,
75
- WITH,
76
- NAMED_STACK,
77
- FOR,
78
- IF,
79
- ELSE_IF,
80
- ELSE,
81
- FUNC,
82
- LOOP,
83
- ON,
84
- CLASS,
85
- NAME,
86
- L_BRACE,
87
- R_BRACE,
88
- L_BRACKET,
89
- R_BRACKET,
90
- L_PAREN,
91
- R_PAREN,
92
- TILDE,
93
- PERIOD,
94
- COMMA,
95
- COLON,
96
- SEMICOLON,
97
- STRING_FORMAT,
98
- STRING_LITERAL,
99
- NUMBER_LITERAL,
100
- BOOLEAN_LITERAL,
101
- NULL_LITERAL,
102
- STRICT_EQUALS,
103
- STRICT_NOT_EQUALS,
104
- EQUALS,
105
- NOT_EQUALS,
106
- GREATER_THAN_EQUAL,
107
- LESS_THAN_EQUAL,
108
- GREATER_THAN,
109
- LESS_THAN,
110
- ASSIGN,
111
- AND,
112
- OR,
113
- ADD,
114
- SUBTRACT,
115
- MULTIPLY,
116
- DIVIDE,
117
- ADD_ASSIGN,
118
- SUBTRACT_ASSIGN,
119
- MULTIPLY_ASSIGN,
120
- DIVIDE_ASSIGN,
121
- EXCLAMATION_POINT,
122
- ELEMENT_REFERENCE,
123
- ELEMENT_ATTRIBUTE,
124
- ELEMENT_STYLE,
125
- ELEMENT_QUERY,
126
- UNIT,
127
- XHR_GET,
128
- XHR_POST,
129
- XHR_PUT,
130
- XHR_DELETE,
131
- MODIFIER,
132
- DISPATCH_EVENT,
133
- }
134
-
135
- export interface BlockTypeConfiguration {
136
- open: number,
137
- close: number,
138
- }
139
-
140
- export const BlockTypeConfigurations: {[key: number]: BlockTypeConfiguration} = {
141
- [BlockType.BRACE]: {
142
- open: TokenType.L_BRACE,
143
- close: TokenType.R_BRACE,
144
- },
145
- [BlockType.BRACKET]: {
146
- open: TokenType.L_BRACKET,
147
- close: TokenType.R_BRACKET,
148
- },
149
- [BlockType.PAREN]: {
150
- open: TokenType.L_PAREN,
151
- close: TokenType.R_PAREN,
152
- },
153
- };
154
-
155
- export const BlockOpenToTypeMap = {
156
- [TokenType.L_BRACE]: BlockType.BRACE,
157
- [TokenType.L_BRACKET]: BlockType.BRACKET,
158
- [TokenType.L_PAREN]: BlockType.PAREN,
159
- };
160
-
161
- export const BlockCloseToTypeMap = {
162
- [TokenType.R_BRACE]: BlockType.BRACE,
163
- [TokenType.R_BRACKET]: BlockType.BRACKET,
164
- [TokenType.R_PAREN]: BlockType.PAREN,
165
- };
166
-
167
- export function getTokenBlockOpenerConfig(opener: TokenType) {
168
- return BlockTypeConfigurations[BlockOpenToTypeMap[opener]];
169
- }
170
-
171
- export function tokenIsBlockOpener(token: TokenType): boolean {
172
- return BlockOpenToTypeMap[token] !== undefined;
173
- }
174
-
175
- export function tokenIsBlockCloser(token: TokenType): boolean {
176
- return BlockCloseToTypeMap[token] !== undefined;
177
- }
178
-
179
- const TOKEN_PATTERNS: TokenPattern[] = [
180
- {
181
- type: TokenType.WHITESPACE,
182
- pattern: /^[\s\n\r]+/
183
- },
184
- {
185
- type: TokenType.XHR_POST,
186
- pattern: /^>>/
187
- },
188
- {
189
- type: TokenType.XHR_PUT,
190
- pattern: /^<>/
191
- },
192
- {
193
- type: TokenType.XHR_GET,
194
- pattern: /^<</
195
- },
196
- {
197
- type: TokenType.XHR_DELETE,
198
- pattern: /^></
199
- },
200
- {
201
- type: TokenType.DISPATCH_EVENT,
202
- pattern: /^!!!?([_a-zA-Z][-_a-zA-Z0-9]+)/
203
- },
204
- {
205
- type: TokenType.TYPE_INT,
206
- pattern: /^int\s/
207
- },
208
- {
209
- type: TokenType.TYPE_UINT,
210
- pattern: /^uint\s/
211
- },
212
- {
213
- type: TokenType.TYPE_FLOAT,
214
- pattern: /^float\s/
215
- },
216
- {
217
- type: TokenType.TYPE_BOOL,
218
- pattern: /^bool\s/
219
- },
220
- {
221
- type: TokenType.UNIT,
222
- pattern: /^\d+\.?\d?(?:cm|mm|in|px|pt|pc|em|ex|ch|rem|vw|vh|vmin|vmax|%)/
223
- },
224
- {
225
- type: TokenType.BOOLEAN_LITERAL,
226
- pattern: /^(true|false)/
227
- },
228
- {
229
- type: TokenType.NULL_LITERAL,
230
- pattern: /^null/
231
- },
232
- {
233
- type: TokenType.RETURN,
234
- pattern: /^return\s/
235
- },
236
- {
237
- type: TokenType.NOT,
238
- pattern: /^not\s/
239
- },
240
- {
241
- type: TokenType.OF,
242
- pattern: /^of\s/
243
- },
244
- {
245
- type: TokenType.IN,
246
- pattern: /^in\s/
247
- },
248
- {
249
- type: TokenType.AS,
250
- pattern: /^as\s/
251
- },
252
- {
253
- type: TokenType.WITH,
254
- pattern: /^with(?=\||\s)?/ // Allows with|sequential
255
- },
256
- {
257
- type: TokenType.NAMED_STACK,
258
- pattern: /^stack(?=\||\s)?/
259
- },
260
- {
261
- type: TokenType.FOR,
262
- pattern: /^for\s?(?=\()/
263
- },
264
- {
265
- type: TokenType.IF,
266
- pattern: /^if\s?(?=\()/
267
- },
268
- {
269
- type: TokenType.ELSE_IF,
270
- pattern: /^else if\s?(?=\()/
271
- },
272
- {
273
- type: TokenType.ELSE,
274
- pattern: /^else\s?(?=\{)/
275
- },
276
- {
277
- type: TokenType.FUNC,
278
- pattern: /^func\s/
279
- },
280
- {
281
- type: TokenType.LOOP,
282
- pattern: /^loop\s/
283
- },
284
- {
285
- type: TokenType.ON,
286
- pattern: /^on\s/
287
- },
288
- {
289
- type: TokenType.CLASS,
290
- pattern: /^class\s([^{]+)/
291
- },
292
- {
293
- type: TokenType.ELEMENT_ATTRIBUTE,
294
- pattern: /^\.?@[-_a-zA-Z0-9]*/
295
- },
296
- {
297
- type: TokenType.ELEMENT_STYLE,
298
- pattern: /^\.?\$[-a-zA-Z0-9]*/
299
- },
300
- {
301
- type: TokenType.ELEMENT_REFERENCE,
302
- pattern: /^#[-_a-zA-Z0-9]*/
303
- },
304
- {
305
- type: TokenType.ELEMENT_QUERY,
306
- pattern: /^\?[>|<]?\(([#.\[\]:,=\-_a-zA-Z0-9*\s]*[\]_a-zA-Z0-9*])\)/
307
- },
308
- {
309
- type: TokenType.NAME,
310
- pattern: /^[_a-zA-Z][_a-zA-Z0-9]*/
311
- },
312
- {
313
- type: TokenType.NUMBER_LITERAL,
314
- pattern: /^-?\d+(?:\.\d+)?(?:e[+\-]?\d+)?/i
315
- },
316
- {
317
- type: TokenType.L_BRACE,
318
- pattern: /^{/
319
- },
320
- {
321
- type: TokenType.R_BRACE,
322
- pattern: /^}/
323
- },
324
- {
325
- type: TokenType.L_BRACKET,
326
- pattern: /^\[/
327
- },
328
- {
329
- type: TokenType.R_BRACKET,
330
- pattern: /^]/
331
- },
332
- {
333
- type: TokenType.L_PAREN,
334
- pattern: /^\(/
335
- },
336
- {
337
- type: TokenType.R_PAREN,
338
- pattern: /^\)/
339
- },
340
- {
341
- type: TokenType.TILDE,
342
- pattern: /^~/
343
- },
344
- {
345
- type: TokenType.PERIOD,
346
- pattern: /^\./
347
- },
348
- {
349
- type: TokenType.COMMA,
350
- pattern: /^,/
351
- },
352
- {
353
- type: TokenType.EQUALS,
354
- pattern: /^==/
355
- },
356
- {
357
- type: TokenType.NOT_EQUALS,
358
- pattern: /^!=/
359
- },
360
- {
361
- type: TokenType.GREATER_THAN_EQUAL,
362
- pattern: /^>=/
363
- },
364
- {
365
- type: TokenType.LESS_THAN_EQUAL,
366
- pattern: /^<=/
367
- },
368
- {
369
- type: TokenType.GREATER_THAN,
370
- pattern: /^>/
371
- },
372
- {
373
- type: TokenType.LESS_THAN,
374
- pattern: /^</
375
- },
376
- {
377
- type: TokenType.COLON,
378
- pattern: /^:/
379
- },
380
- {
381
- type: TokenType.SEMICOLON,
382
- pattern: /^;/
383
- },
384
- {
385
- type: TokenType.STRING_FORMAT,
386
- pattern: /^`([^`]*)`/
387
- },
388
- {
389
- type: TokenType.STRING_LITERAL,
390
- pattern: /^"([^"]*)"/
391
- },
392
- {
393
- type: TokenType.STRING_LITERAL,
394
- pattern: /^'([^']*)'/
395
- },
396
- {
397
- type: TokenType.AND,
398
- pattern: /^&&/
399
- },
400
- {
401
- type: TokenType.OR,
402
- pattern: /^\|\|/
403
- },
404
- {
405
- type: TokenType.ADD_ASSIGN,
406
- pattern: /^\+=/
407
- },
408
- {
409
- type: TokenType.SUBTRACT_ASSIGN,
410
- pattern: /^-=/
411
- },
412
- {
413
- type: TokenType.MULTIPLY_ASSIGN,
414
- pattern: /^\*=/
415
- },
416
- {
417
- type: TokenType.DIVIDE_ASSIGN,
418
- pattern: /^\/=/
419
- },
420
- {
421
- type: TokenType.ADD,
422
- pattern: /^\+/
423
- },
424
- {
425
- type: TokenType.SUBTRACT,
426
- pattern: /^-/
427
- },
428
- {
429
- type: TokenType.MULTIPLY,
430
- pattern: /^\*/
431
- },
432
- {
433
- type: TokenType.DIVIDE,
434
- pattern: /^\//
435
- },
436
- {
437
- type: TokenType.ASSIGN,
438
- pattern: /^=/
439
- },
440
- {
441
- type: TokenType.EXCLAMATION_POINT,
442
- pattern: /^!/
443
- },
444
- {
445
- type: TokenType.MODIFIER,
446
- pattern: /^\|[a-zA-Z0-9,]+/
447
- }
448
- ];
449
-
450
- export interface TreeNode<T = any> {
451
- evaluate(scope: Scope, dom: DOM, tag?: Tag);
452
- prepare(scope: Scope, dom: DOM, tag?: Tag, meta?: any);
453
- }
454
-
455
- export interface IBlockInfo {
456
- type: BlockType,
457
- open: TokenType,
458
- close: TokenType,
459
- openCharacter: string,
460
- closeCharacter: string
461
- }
462
-
463
- export const AttributableNodes = [
464
- RootScopeMemberNode,
465
- ScopeMemberNode,
466
- ElementAttributeNode
467
- ];
468
-
469
- export interface ExecutionContext {
470
- scope: Scope;
471
- dom: DOM;
472
- tag: Tag;
473
- tree: Tree;
474
-
475
- }
476
-
477
- export class TreeCache {
478
- cache: Map<string, Node> = new Map<string, Node>();
479
- lastUsed: Map<string, number> = new Map<string, number>();
480
-
481
- get(code: string) {
482
- if (!this.cache.has(code))
483
- return null;
484
-
485
- this.lastUsed.set(code, Date.now());
486
- return this.cache.get(code);
487
- }
488
-
489
- set(code: string, node: Node) {
490
- this.cache.set(code, node);
491
- this.lastUsed.set(code, Date.now());
492
-
493
- if (this.cache.size > 200) {
494
- let toRemove = 20;
495
- for (const [key, lastUsed] of Array.from(this.lastUsed.entries()).sort((a, b) => a[1] - b[1])) {
496
- this.cache.delete(key);
497
- this.lastUsed.delete(key);
498
- toRemove--;
499
- if (toRemove === 0)
500
- break;
501
- }
502
- }
503
- }
504
-
505
- has(code: string) {
506
- return this.cache.has(code);
507
- }
508
- }
509
-
510
- export class Tree {
511
- protected static executing: Set<ExecutionContext> = new Set<ExecutionContext>();
512
- protected static cache: TreeCache = new TreeCache();
513
- protected _root: Node;
514
-
515
- constructor(
516
- public readonly code: string
517
- ) {
518
- if (Tree.cache.has(code)) {
519
- this._root = Tree.cache.get(code);
520
- } else {
521
- this.parse();
522
- Tree.cache.set(code, this._root);
523
- }
524
- }
525
-
526
- public get root(): Node { return this._root; }
527
-
528
- public parse() {
529
- const tokens = Tree.tokenize(this.code);
530
- this._root = Tree.processTokens(tokens);
531
- }
532
-
533
- async evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
534
- const context = {
535
- scope: scope,
536
- dom: dom,
537
- tag: tag,
538
- tree: this
539
- };
540
- Tree.executing.add(context);
541
- const r = await this._root.evaluate(scope, dom, tag);
542
- Tree.executing.delete(context);
543
- if (Tree.executing.size === 0)
544
- setTimeout(() => {
545
- DOM.instance.cleanup();
546
- }, 1000);
547
- return r;
548
- }
549
-
550
- async prepare(scope: Scope, dom: DOM, tag: Tag = null) {
551
- if (!this._root.isPreparationRequired())
552
- return;
553
- return await this._root.prepare(scope, dom, tag, {
554
- initial: true
555
- });
556
- }
557
-
558
- async bindToScopeChanges(scope, fnc, dom: DOM, tag: Tag = null) {
559
- for (const node of this._root.findChildrenByTypes<ScopeMemberNode | ElementAttributeNode>([RootScopeMemberNode, ScopeMemberNode, ElementAttributeNode], 'ScopeMemberNodes')) {
560
- let _scope: Scope = scope;
561
- const name = await node.name.evaluate(scope, dom, tag);
562
- if (node instanceof ScopeMemberNode) {
563
- _scope = await node.scope.evaluate(scope, dom);
564
- _scope.on(`change:${name}`, fnc);
565
- } else if (node instanceof ElementAttributeNode && node.elementRef) {
566
- const ref = await node.elementRef.evaluate(scope, dom, tag);
567
- if (ref instanceof Tag) {
568
- ref.scope.on(`change:${name}`, fnc);
569
- } else if (ref instanceof Array) {
570
- for (const tag of ref) {
571
- tag.scope.on(`change:${name}`, fnc);
572
- }
573
- } else {
574
- console.warn(`Cannot bind to changes for ${name}.`);
575
- }
576
- }
577
- }
578
- }
579
-
580
- public static async reprepareExecutingTrees() {
581
- for (const context of this.executing) {
582
- await context.tree.prepare(context.scope, context.dom, context.tag);
583
- }
584
- }
585
-
586
- public static tokenize(code: string): Token[] {
587
- const tokens: Token[] = [];
588
- if (!code || code.length === 0)
589
- return tokens;
590
-
591
- let foundToken: boolean;
592
- do {
593
- foundToken = false;
594
- for (const tp of TOKEN_PATTERNS) {
595
- const match: RegExpMatchArray = tp.pattern.exec(code);
596
- if (match) {
597
- tokens.push({
598
- type: tp.type,
599
- value: match[match.length - 1],
600
- full: match[0],
601
- groups: match
602
- });
603
-
604
- code = code.substring(match[0].length);
605
- foundToken = true;
606
- break;
607
- }
608
- }
609
- } while (code.length > 0 && foundToken);
610
-
611
- return tokens;
612
- }
613
-
614
- public static stripWhiteSpace(tokens: Token[]): Token[] {
615
- for (let i: number = 0; i < tokens.length; i++) {
616
- if (tokens[i].type === TokenType.WHITESPACE) {
617
- tokens.splice(i, 1);
618
- i--;
619
- }
620
- }
621
- return tokens;
622
- }
623
-
624
- public static processTokens(tokens: Token[], _node: Node=null, _lastBlock: Node=null): BlockNode {
625
- let blockNodes: Node[] = [];
626
- let lastBlock: Node = _lastBlock;
627
- let node: Node = _node;
628
- let count: number = 0;
629
-
630
- Tree.stripWhiteSpace(tokens);
631
-
632
- while (tokens.length > 0) {
633
- count++;
634
- if (count > 1000) break; // Limit to 1000 iterations while in development
635
-
636
- if (tokens[0].type === TokenType.RETURN)
637
- tokens.shift()
638
-
639
- const token: Token = tokens[0];
640
- if (token.type === TokenType.NAME) {
641
- node = new RootScopeMemberNode<string>(
642
- new LiteralNode<string>(token.value)
643
- );
644
- tokens.shift()
645
- } else if (XHRNode.match(tokens)) {
646
- node = XHRNode.parse(node, tokens[0], tokens);
647
- } else if (token.type === TokenType.DISPATCH_EVENT) {
648
- node = DispatchEventNode.parse(node, tokens[0], tokens);
649
- } else if (token.type === TokenType.WITH) {
650
- node = WithNode.parse(node, tokens[0], tokens);
651
- lastBlock = node;
652
- blockNodes.push(node);
653
- node = null;
654
- } else if (token.type === TokenType.NAMED_STACK) {
655
- node = NamedStackNode.parse(node, tokens[0], tokens);
656
- lastBlock = node;
657
- blockNodes.push(node);
658
- node = null;
659
- } else if (token.type === TokenType.AS) {
660
- node = AsNode.parse(node, tokens[0], tokens);
661
- } else if (token.type === TokenType.IF) {
662
- node = IfStatementNode.parse(node, token, tokens);
663
- lastBlock = node;
664
- blockNodes.push(node);
665
- node = null;
666
- } else if (token.type === TokenType.FOR) {
667
- node = ForStatementNode.parse(node, token, tokens);
668
- lastBlock = node;
669
- blockNodes.push(node);
670
- node = null;
671
- } else if (token.type === TokenType.FUNC) {
672
- node = FunctionNode.parse(node, token, tokens);
673
- lastBlock = node;
674
- blockNodes.push(node);
675
- node = null;
676
- } else if (token.type === TokenType.LOOP) {
677
- node = LoopNode.parse(node, token, tokens);
678
- lastBlock = node;
679
- blockNodes.push(node);
680
- node = null;
681
- } else if (token.type === TokenType.ON) {
682
- node = OnNode.parse(node, token, tokens);
683
- lastBlock = node;
684
- blockNodes.push(node);
685
- node = null;
686
- } else if (token.type === TokenType.CLASS) {
687
- node = ClassNode.parse(node, token, tokens);
688
- lastBlock = node;
689
- blockNodes.push(node);
690
- node = null;
691
- } else if (StringFormatNode.match(tokens)) {
692
- node = StringFormatNode.parse(node, tokens[0], tokens);
693
- } else if (token.type === TokenType.STRING_LITERAL) {
694
- node = new LiteralNode(token.value);
695
- tokens.shift()
696
- } else if (token.type === TokenType.NUMBER_LITERAL) {
697
- node = new NumberLiteralNode(token.value);
698
- tokens.shift()
699
- } else if (tokens[0].type === TokenType.ELEMENT_REFERENCE) {
700
- node = new ElementQueryNode(tokens[0].value, true);
701
- tokens.shift()
702
- } else if (tokens[0].type === TokenType.ELEMENT_QUERY) {
703
- node = ElementQueryNode.parse(node, tokens[0], tokens);
704
- } else if (tokens[0].type === TokenType.L_BRACKET) {
705
- if (node) {
706
- node = IndexNode.parse(node, token, tokens);
707
- } else {
708
- node = ArrayNode.parse(node, token, tokens);
709
- }
710
- } else if (tokens[0].type === TokenType.L_BRACE) {
711
- node = ObjectNode.parse(node, token, tokens);
712
- } else if (tokens[0].type === TokenType.ELEMENT_ATTRIBUTE) {
713
- node = new ElementAttributeNode(node as any, tokens[0].value);
714
- tokens.shift()
715
- } else if (tokens[0].type === TokenType.ELEMENT_STYLE) {
716
- node = new ElementStyleNode(node as any, tokens[0].value);
717
- tokens.shift()
718
- } else if (node !== null && token.type === TokenType.PERIOD && tokens[1].type === TokenType.NAME) {
719
- node = new ScopeMemberNode(
720
- node,
721
- new LiteralNode<string>(tokens[1].value)
722
- );
723
- tokens.splice(0, 2);
724
- } else if (tokens[0].type === TokenType.L_PAREN) {
725
- const funcArgs: Token[][] = Tree.getBlockTokens(tokens);
726
- const nodes: Node[] = [];
727
- for (const arg of funcArgs) {
728
- nodes.push(Tree.processTokens(arg));
729
- }
730
- if (node) {
731
- node = new FunctionCallNode(
732
- node, // Previous node should be a NAME
733
- new FunctionArgumentNode(nodes)
734
- );
735
- } else {
736
- node = new BlockNode(nodes);
737
- }
738
- } else if (tokens[0].type === TokenType.SEMICOLON) {
739
- if (node) {
740
- blockNodes.push(node);
741
- }
742
- node = null;
743
- tokens.shift()
744
- } else if (InNode.match(tokens)) {
745
- node = InNode.parse(node, token, tokens);
746
- } else if (ComparisonNode.match(tokens)) {
747
- node = ComparisonNode.parse(node, token, tokens);
748
- } else if (ArithmeticNode.match(tokens)) {
749
- node = ArithmeticNode.parse(node, token, tokens);
750
- } else if (AssignmentNode.match(tokens)) {
751
- node = AssignmentNode.parse(node, token, tokens);
752
- } else if (tokens[0].type === TokenType.WHITESPACE) {
753
- tokens.shift()
754
- } else if (tokens[0].type === TokenType.UNIT) {
755
- node = new UnitLiteralNode(tokens[0].value);
756
- tokens.shift()
757
- } else if (tokens[0].type === TokenType.BOOLEAN_LITERAL) {
758
- node = new BooleanLiteralNode(tokens[0].value);
759
- tokens.shift()
760
- } else if (tokens[0].type === TokenType.NULL_LITERAL) {
761
- node = new LiteralNode(null);
762
- tokens.shift()
763
- } else if (tokens[0].type === TokenType.EXCLAMATION_POINT) {
764
- node = NotNode.parse(node, tokens[0], tokens);
765
- } else if (tokens[0].type === TokenType.MODIFIER) {
766
- ModifierNode.parse(node ? node : lastBlock, tokens[0], tokens);
767
- } else {
768
- let code: string = Tree.toCode(tokens, 10);
769
- throw Error(`Syntax Error. Near ${code}`);
770
- }
771
- }
772
-
773
- if (node) {
774
- blockNodes.push(node);
775
- }
776
-
777
- return new BlockNode(blockNodes);
778
- }
779
-
780
- public static toCode(tokens: Token[], limit?): string {
781
- let code: string = '';
782
- limit = limit || tokens.length;
783
- for (let i = 0; i < limit; i++) {
784
- if (!tokens[i]) break;
785
- code += tokens[i].value;
786
- }
787
-
788
- return code;
789
- }
790
-
791
- public static getBlockInfo(tokens: Token[]): IBlockInfo {
792
- let blockType: BlockType;
793
- const opener = tokens[0];
794
-
795
- if (opener.type === TokenType.L_PAREN)
796
- blockType = BlockType.PAREN;
797
- else if (opener.type === TokenType.L_BRACE)
798
- blockType = BlockType.BRACE;
799
- else if (opener.type === TokenType.L_BRACKET)
800
- blockType = BlockType.BRACKET;
801
- else
802
- blockType = BlockType.STATEMENT;
803
-
804
- let open: TokenType;
805
- let close: TokenType;
806
- let openCharacter: string;
807
- let closeCharacter: string;
808
-
809
- switch (blockType) {
810
- case BlockType.PAREN:
811
- open = TokenType.L_PAREN;
812
- close = TokenType.R_PAREN;
813
- openCharacter = '(';
814
- closeCharacter = ')';
815
- break;
816
- case BlockType.BRACE:
817
- open = TokenType.L_BRACE;
818
- close = TokenType.R_BRACE;
819
- openCharacter = '{';
820
- closeCharacter = '}';
821
- break;
822
- case BlockType.BRACKET:
823
- open = TokenType.L_BRACKET;
824
- close = TokenType.R_BRACKET;
825
- openCharacter = '[';
826
- closeCharacter = ']';
827
- break;
828
- default:
829
- open = null;
830
- close = TokenType.SEMICOLON;
831
- openCharacter = null;
832
- closeCharacter = ';';
833
- break;
834
- }
835
-
836
- return {
837
- type: blockType,
838
- open: open,
839
- close: close,
840
- openCharacter: openCharacter,
841
- closeCharacter: closeCharacter
842
- }
843
- }
844
-
845
- public static getNextStatementTokens(tokens: Token[], consumeClosingToken: boolean = true, consumeOpeningToken: boolean = true, includeClosingToken: boolean = false): Token[] {
846
- const blockInfo: IBlockInfo = Tree.getBlockInfo(tokens);
847
-
848
- // Consume opening block token
849
- if (consumeOpeningToken && tokens[0].type === blockInfo.open) {
850
- tokens.shift()
851
- }
852
-
853
- return Tree.getTokensUntil(tokens, blockInfo.close, consumeClosingToken, includeClosingToken);
854
- }
855
-
856
- public static getBlockTokens(tokens: Token[], groupBy: TokenType | null = TokenType.COMMA): Token[][] {
857
- const blockInfo: IBlockInfo = Tree.getBlockInfo(tokens);
858
- const args: Token[][] = [];
859
- let arg: Token[] = [];
860
- let isOpen = true;
861
-
862
- // consume opener
863
- tokens.shift();
864
-
865
- while (isOpen) {
866
- const token: Token = tokens[0];
867
-
868
- if (token === undefined)
869
- throw Error(`Invalid Syntax, missing ${blockInfo.closeCharacter}`);
870
-
871
- if (token.type === blockInfo.close) {
872
- isOpen = false;
873
- tokens.shift();
874
- //arg.push(token);
875
- } else if (tokenIsBlockOpener(token.type)) {
876
- const opener = tokens.shift();
877
- const innerBlock = Tree.getTokensUntil(tokens, getTokenBlockOpenerConfig(token.type).close, true, true);
878
- innerBlock.unshift(opener);
879
- arg.push(...innerBlock);
880
- //args.push(innerBlock);
881
- } else if (groupBy !== null && token.type === groupBy) {
882
- args.push(arg);
883
- arg = [];
884
- tokens.shift();
885
- } else if (token.type !== TokenType.WHITESPACE) {
886
- arg.push(tokens.shift());
887
- }
888
- }
889
- if (arg.length > 0)
890
- args.push(arg);
891
-
892
- return args;
893
- }
894
-
895
- public static getTokensUntil(tokens: Token[], terminator: TokenType = TokenType.SEMICOLON, consumeTerminator: boolean = true, includeTerminator: boolean = false, validIfTerminatorNotFound: boolean = false, blockInfo: IBlockInfo = null): Token[] {
896
- const statementTokens: Token[] = [];
897
- blockInfo = blockInfo || Tree.getBlockInfo(tokens);
898
-
899
- let openParens: number = 0;
900
- let openBraces: number = 0;
901
- let openBrackets: number = 0;
902
-
903
- for (let i: number = 0; i < tokens.length; i++) {
904
- const token: Token = tokens[i];
905
- if (!(token.type === blockInfo.open && i === 0)) { // Skip opener
906
- if (token.type === TokenType.L_PAREN && terminator !== TokenType.L_PAREN)
907
- openParens += 1;
908
-
909
- if (token.type === TokenType.L_BRACE && terminator !== TokenType.L_BRACE)
910
- openBraces += 1;
911
-
912
- if (token.type === TokenType.L_BRACKET && terminator !== TokenType.L_BRACKET)
913
- openBrackets += 1;
914
- }
915
-
916
- if ([
917
- terminator,
918
- TokenType.R_BRACKET,
919
- TokenType.R_BRACE,
920
- TokenType.R_PAREN
921
- ].indexOf(token.type) > -1) {
922
- if (openParens > 0 && token.type === TokenType.R_PAREN) {
923
- openParens -= 1;
924
- } else if (openBraces > 0 && token.type === TokenType.R_BRACE) {
925
- openBraces -= 1;
926
- } else if (openBrackets > 0 && token.type === TokenType.R_BRACKET) {
927
- openBrackets -= 1;
928
- } else if (token.type === terminator && openParens === 0 && openBraces === 0 && openBrackets === 0) {
929
- if (includeTerminator)
930
- statementTokens.push(token);
931
-
932
- //if (consumeTerminator && token.type !== TokenType.SEMICOLON)
933
- if ((includeTerminator || consumeTerminator) && token.type !== TokenType.SEMICOLON)
934
- tokens.shift() // Consume end of block
935
- break;
936
- } else if (token.type === terminator && (openParens > 0 || openBraces > 0 || openBrackets > 0)) {
937
- } else {
938
- if (validIfTerminatorNotFound)
939
- break;
940
- throw Error(`Invalid syntax, expecting ${terminator}.`)
941
- }
942
- }
943
-
944
- statementTokens.push(token);
945
- tokens.shift() // Consume part of statement
946
- i--;
947
- }
948
- return statementTokens;
949
- }
950
-
951
- static consumeTypes(tokens: Token[], types: TokenType[]): Token[] {
952
- const matching: Token[] = [];
953
-
954
- for (const token of tokens) {
955
- if (types.indexOf(token.type) > -1) {
956
- matching.push(token);
957
- } else {
958
- break;
959
- }
960
- }
961
- tokens.splice(0, matching.length);
962
- return matching;
963
- }
964
-
965
- static async apply(code: string, scope: Scope, dom: DOM, tag: Tag) {
966
- const t = new Tree(code);
967
- return await t.evaluate(scope, dom, tag);
968
- }
969
- }