vsn 0.1.149 → 1.0.1
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.
- package/README.md +7 -6
- package/dist/index.cjs +5181 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +650 -0
- package/dist/index.d.ts +650 -0
- package/dist/index.js +5112 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +9 -0
- package/dist/index.min.js.map +1 -0
- package/package.json +31 -35
- package/.gitattributes +0 -2
- package/.travis.yml +0 -28
- package/demo/demo.html +0 -237
- package/demo/examples/cascading-function-sheets.html +0 -39
- package/demo/examples/component-slots.html +0 -29
- package/demo/examples/events.html +0 -21
- package/demo/examples/item-filtering.html +0 -45
- package/demo/examples/loop.html +0 -21
- package/demo/examples/persist.html +0 -17
- package/demo/examples/replace-html.html +0 -19
- package/demo/markup-default.html +0 -2
- package/demo/markup.html +0 -2
- package/demo/memory-leak-test.html +0 -82
- package/demo/named-stack.html +0 -34
- package/demo/resources/xhr-animations.html +0 -24
- package/demo/resources/xhr-cfs.html +0 -1
- package/demo/resources/xhr-html.html +0 -1
- package/demo/resources/xhr-lazy.html +0 -60
- package/demo/resources/xhr-memory-leak-test.html +0 -14
- package/demo/resources/xhr-persist.html +0 -40
- package/demo/resources/xhr-test-component.html +0 -4
- package/demo/service.html +0 -22
- package/demo/silly-animations.html +0 -27
- package/demo/vsn.js +0 -3
- package/demo/xhr-response.html +0 -1
- package/demo/xhr-test.html +0 -32
- package/dist/AST/ArithmeticNode.d.ts +0 -15
- package/dist/AST/ArithmeticNode.js +0 -114
- package/dist/AST/ArithmeticNode.js.map +0 -1
- package/dist/AST/ArrayNode.d.ts +0 -14
- package/dist/AST/ArrayNode.js +0 -166
- package/dist/AST/ArrayNode.js.map +0 -1
- package/dist/AST/AsNode.d.ts +0 -13
- package/dist/AST/AsNode.js +0 -92
- package/dist/AST/AsNode.js.map +0 -1
- package/dist/AST/AssignmentNode.d.ts +0 -24
- package/dist/AST/AssignmentNode.js +0 -392
- package/dist/AST/AssignmentNode.js.map +0 -1
- package/dist/AST/BlockNode.d.ts +0 -11
- package/dist/AST/BlockNode.js +0 -114
- package/dist/AST/BlockNode.js.map +0 -1
- package/dist/AST/BooleanLiteralNode.d.ts +0 -5
- package/dist/AST/BooleanLiteralNode.js +0 -31
- package/dist/AST/BooleanLiteralNode.js.map +0 -1
- package/dist/AST/ClassNode.d.ts +0 -47
- package/dist/AST/ClassNode.js +0 -593
- package/dist/AST/ClassNode.js.map +0 -1
- package/dist/AST/ComparisonNode.d.ts +0 -15
- package/dist/AST/ComparisonNode.js +0 -120
- package/dist/AST/ComparisonNode.js.map +0 -1
- package/dist/AST/ConditionalNode.d.ts +0 -13
- package/dist/AST/ConditionalNode.js +0 -95
- package/dist/AST/ConditionalNode.js.map +0 -1
- package/dist/AST/DispatchEventNode.d.ts +0 -17
- package/dist/AST/DispatchEventNode.js +0 -152
- package/dist/AST/DispatchEventNode.js.map +0 -1
- package/dist/AST/ElementAttributeNode.d.ts +0 -20
- package/dist/AST/ElementAttributeNode.js +0 -242
- package/dist/AST/ElementAttributeNode.js.map +0 -1
- package/dist/AST/ElementQueryNode.d.ts +0 -17
- package/dist/AST/ElementQueryNode.js +0 -148
- package/dist/AST/ElementQueryNode.js.map +0 -1
- package/dist/AST/ElementStyleNode.d.ts +0 -20
- package/dist/AST/ElementStyleNode.js +0 -205
- package/dist/AST/ElementStyleNode.js.map +0 -1
- package/dist/AST/ForStatementNode.d.ts +0 -17
- package/dist/AST/ForStatementNode.js +0 -121
- package/dist/AST/ForStatementNode.js.map +0 -1
- package/dist/AST/FunctionArgumentNode.d.ts +0 -11
- package/dist/AST/FunctionArgumentNode.js +0 -142
- package/dist/AST/FunctionArgumentNode.js.map +0 -1
- package/dist/AST/FunctionCallNode.d.ts +0 -14
- package/dist/AST/FunctionCallNode.js +0 -241
- package/dist/AST/FunctionCallNode.js.map +0 -1
- package/dist/AST/FunctionNode.d.ts +0 -20
- package/dist/AST/FunctionNode.js +0 -220
- package/dist/AST/FunctionNode.js.map +0 -1
- package/dist/AST/IfStatementNode.d.ts +0 -14
- package/dist/AST/IfStatementNode.js +0 -168
- package/dist/AST/IfStatementNode.js.map +0 -1
- package/dist/AST/InNode.d.ts +0 -15
- package/dist/AST/InNode.js +0 -107
- package/dist/AST/InNode.js.map +0 -1
- package/dist/AST/IndexNode.d.ts +0 -16
- package/dist/AST/IndexNode.js +0 -152
- package/dist/AST/IndexNode.js.map +0 -1
- package/dist/AST/LiteralNode.d.ts +0 -10
- package/dist/AST/LiteralNode.js +0 -74
- package/dist/AST/LiteralNode.js.map +0 -1
- package/dist/AST/LoopNode.d.ts +0 -12
- package/dist/AST/LoopNode.js +0 -121
- package/dist/AST/LoopNode.js.map +0 -1
- package/dist/AST/ModifierNode.d.ts +0 -14
- package/dist/AST/ModifierNode.js +0 -90
- package/dist/AST/ModifierNode.js.map +0 -1
- package/dist/AST/NamedStackNode.d.ts +0 -28
- package/dist/AST/NamedStackNode.js +0 -142
- package/dist/AST/NamedStackNode.js.map +0 -1
- package/dist/AST/Node.d.ts +0 -28
- package/dist/AST/Node.js +0 -263
- package/dist/AST/Node.js.map +0 -1
- package/dist/AST/NotNode.d.ts +0 -12
- package/dist/AST/NotNode.js +0 -103
- package/dist/AST/NotNode.js.map +0 -1
- package/dist/AST/NumberLiteralNode.d.ts +0 -5
- package/dist/AST/NumberLiteralNode.js +0 -36
- package/dist/AST/NumberLiteralNode.js.map +0 -1
- package/dist/AST/ObjectNode.d.ts +0 -14
- package/dist/AST/ObjectNode.js +0 -147
- package/dist/AST/ObjectNode.js.map +0 -1
- package/dist/AST/OnNode.d.ts +0 -9
- package/dist/AST/OnNode.js +0 -129
- package/dist/AST/OnNode.js.map +0 -1
- package/dist/AST/RootScopeMemberNode.d.ts +0 -12
- package/dist/AST/RootScopeMemberNode.js +0 -90
- package/dist/AST/RootScopeMemberNode.js.map +0 -1
- package/dist/AST/ScopeMemberNode.d.ts +0 -13
- package/dist/AST/ScopeMemberNode.js +0 -165
- package/dist/AST/ScopeMemberNode.js.map +0 -1
- package/dist/AST/ScopeNodeAbstract.d.ts +0 -8
- package/dist/AST/ScopeNodeAbstract.js +0 -105
- package/dist/AST/ScopeNodeAbstract.js.map +0 -1
- package/dist/AST/StringFormatNode.d.ts +0 -18
- package/dist/AST/StringFormatNode.js +0 -151
- package/dist/AST/StringFormatNode.js.map +0 -1
- package/dist/AST/UnitLiteralNode.d.ts +0 -15
- package/dist/AST/UnitLiteralNode.js +0 -72
- package/dist/AST/UnitLiteralNode.js.map +0 -1
- package/dist/AST/WASM/Context.d.ts +0 -4
- package/dist/AST/WASM/Context.js +0 -18
- package/dist/AST/WASM/Context.js.map +0 -1
- package/dist/AST/WASM/Function.d.ts +0 -22
- package/dist/AST/WASM/Function.js +0 -126
- package/dist/AST/WASM/Function.js.map +0 -1
- package/dist/AST/WASM/Memory.d.ts +0 -12
- package/dist/AST/WASM/Memory.js +0 -22
- package/dist/AST/WASM/Memory.js.map +0 -1
- package/dist/AST/WASM/Section.d.ts +0 -5
- package/dist/AST/WASM/Section.js +0 -11
- package/dist/AST/WASM/Section.js.map +0 -1
- package/dist/AST/WASM.d.ts +0 -58
- package/dist/AST/WASM.js +0 -293
- package/dist/AST/WASM.js.map +0 -1
- package/dist/AST/WithNode.d.ts +0 -15
- package/dist/AST/WithNode.js +0 -197
- package/dist/AST/WithNode.js.map +0 -1
- package/dist/AST/XHRNode.d.ts +0 -15
- package/dist/AST/XHRNode.js +0 -151
- package/dist/AST/XHRNode.js.map +0 -1
- package/dist/AST.d.ts +0 -160
- package/dist/AST.js +0 -1156
- package/dist/AST.js.map +0 -1
- package/dist/Attribute.d.ts +0 -46
- package/dist/Attribute.js +0 -262
- package/dist/Attribute.js.map +0 -1
- package/dist/Bencmark.d.ts +0 -14
- package/dist/Bencmark.js +0 -236
- package/dist/Bencmark.js.map +0 -1
- package/dist/Component.d.ts +0 -7
- package/dist/Component.js +0 -179
- package/dist/Component.js.map +0 -1
- package/dist/Configuration.d.ts +0 -12
- package/dist/Configuration.js +0 -64
- package/dist/Configuration.js.map +0 -1
- package/dist/Controller.d.ts +0 -13
- package/dist/Controller.js +0 -60
- package/dist/Controller.js.map +0 -1
- package/dist/DOM/AbstractDOM.d.ts +0 -56
- package/dist/DOM/AbstractDOM.js +0 -1078
- package/dist/DOM/AbstractDOM.js.map +0 -1
- package/dist/DOM/DOMObject.d.ts +0 -33
- package/dist/DOM/DOMObject.js +0 -152
- package/dist/DOM/DOMObject.js.map +0 -1
- package/dist/DOM/ShadowDOM.d.ts +0 -5
- package/dist/DOM/ShadowDOM.js +0 -32
- package/dist/DOM/ShadowDOM.js.map +0 -1
- package/dist/DOM/WrappedDocument.d.ts +0 -5
- package/dist/DOM/WrappedDocument.js +0 -34
- package/dist/DOM/WrappedDocument.js.map +0 -1
- package/dist/DOM/WrappedWindow.d.ts +0 -6
- package/dist/DOM/WrappedWindow.js +0 -45
- package/dist/DOM/WrappedWindow.js.map +0 -1
- package/dist/DOM.d.ts +0 -5
- package/dist/DOM.js +0 -37
- package/dist/DOM.js.map +0 -1
- package/dist/EventDispatcher.d.ts +0 -36
- package/dist/EventDispatcher.js +0 -393
- package/dist/EventDispatcher.js.map +0 -1
- package/dist/Formats.d.ts +0 -5
- package/dist/Formats.js +0 -47
- package/dist/Formats.js.map +0 -1
- package/dist/MessageList.d.ts +0 -15
- package/dist/MessageList.js +0 -127
- package/dist/MessageList.js.map +0 -1
- package/dist/Model.d.ts +0 -12
- package/dist/Model.js +0 -92
- package/dist/Model.js.map +0 -1
- package/dist/Modifiers.d.ts +0 -17
- package/dist/Modifiers.js +0 -100
- package/dist/Modifiers.js.map +0 -1
- package/dist/Query.d.ts +0 -4
- package/dist/Query.js +0 -66
- package/dist/Query.js.map +0 -1
- package/dist/Registry.d.ts +0 -41
- package/dist/Registry.js +0 -165
- package/dist/Registry.js.map +0 -1
- package/dist/Scope/DynamicScopeData.d.ts +0 -6
- package/dist/Scope/DynamicScopeData.js +0 -83
- package/dist/Scope/DynamicScopeData.js.map +0 -1
- package/dist/Scope/ObjectAccessor.d.ts +0 -7
- package/dist/Scope/ObjectAccessor.js +0 -40
- package/dist/Scope/ObjectAccessor.js.map +0 -1
- package/dist/Scope/QueryReference.d.ts +0 -10
- package/dist/Scope/QueryReference.js +0 -103
- package/dist/Scope/QueryReference.js.map +0 -1
- package/dist/Scope/ScopeAbstract.d.ts +0 -9
- package/dist/Scope/ScopeAbstract.js +0 -28
- package/dist/Scope/ScopeAbstract.js.map +0 -1
- package/dist/Scope/ScopeData.d.ts +0 -4
- package/dist/Scope/ScopeData.js +0 -60
- package/dist/Scope/ScopeData.js.map +0 -1
- package/dist/Scope/ScopeDataAbstract.d.ts +0 -30
- package/dist/Scope/ScopeDataAbstract.js +0 -303
- package/dist/Scope/ScopeDataAbstract.js.map +0 -1
- package/dist/Scope/ScopeObject.d.ts +0 -3
- package/dist/Scope/ScopeObject.js +0 -28
- package/dist/Scope/ScopeObject.js.map +0 -1
- package/dist/Scope/ScopeReference.d.ts +0 -10
- package/dist/Scope/ScopeReference.js +0 -73
- package/dist/Scope/ScopeReference.js.map +0 -1
- package/dist/Scope/ScopedVariableType.d.ts +0 -6
- package/dist/Scope/ScopedVariableType.js +0 -14
- package/dist/Scope/ScopedVariableType.js.map +0 -1
- package/dist/Scope/WrappedArray.d.ts +0 -21
- package/dist/Scope/WrappedArray.js +0 -252
- package/dist/Scope/WrappedArray.js.map +0 -1
- package/dist/Scope/properties/ArrayProperty.d.ts +0 -12
- package/dist/Scope/properties/ArrayProperty.js +0 -88
- package/dist/Scope/properties/ArrayProperty.js.map +0 -1
- package/dist/Scope/properties/FloatProperty.d.ts +0 -4
- package/dist/Scope/properties/FloatProperty.js +0 -30
- package/dist/Scope/properties/FloatProperty.js.map +0 -1
- package/dist/Scope/properties/IntegerProperty.d.ts +0 -4
- package/dist/Scope/properties/IntegerProperty.js +0 -30
- package/dist/Scope/properties/IntegerProperty.js.map +0 -1
- package/dist/Scope/properties/Property.d.ts +0 -30
- package/dist/Scope/properties/Property.js +0 -205
- package/dist/Scope/properties/Property.js.map +0 -1
- package/dist/Scope/properties/_imports.d.ts +0 -4
- package/dist/Scope/properties/_imports.js +0 -13
- package/dist/Scope/properties/_imports.js.map +0 -1
- package/dist/Scope.d.ts +0 -39
- package/dist/Scope.js +0 -434
- package/dist/Scope.js.map +0 -1
- package/dist/Service.d.ts +0 -9
- package/dist/Service.js +0 -49
- package/dist/Service.js.map +0 -1
- package/dist/Tag/ShadowRootTag.d.ts +0 -3
- package/dist/Tag/ShadowRootTag.js +0 -28
- package/dist/Tag/ShadowRootTag.js.map +0 -1
- package/dist/Tag/SlotTag.d.ts +0 -3
- package/dist/Tag/SlotTag.js +0 -28
- package/dist/Tag/SlotTag.js.map +0 -1
- package/dist/Tag/SlottedTag.d.ts +0 -7
- package/dist/Tag/SlottedTag.js +0 -78
- package/dist/Tag/SlottedTag.js.map +0 -1
- package/dist/Tag/TagList.d.ts +0 -13
- package/dist/Tag/TagList.js +0 -104
- package/dist/Tag/TagList.js.map +0 -1
- package/dist/Tag.d.ts +0 -117
- package/dist/Tag.js +0 -1471
- package/dist/Tag.js.map +0 -1
- package/dist/Types.d.ts +0 -8
- package/dist/Types.js +0 -54
- package/dist/Types.js.map +0 -1
- package/dist/Validators.d.ts +0 -7
- package/dist/Validators.js +0 -54
- package/dist/Validators.js.map +0 -1
- package/dist/attributes/AddClassIf.d.ts +0 -4
- package/dist/attributes/AddClassIf.js +0 -93
- package/dist/attributes/AddClassIf.js.map +0 -1
- package/dist/attributes/Bind.d.ts +0 -24
- package/dist/attributes/Bind.js +0 -273
- package/dist/attributes/Bind.js.map +0 -1
- package/dist/attributes/ComponentAttribute.d.ts +0 -5
- package/dist/attributes/ComponentAttribute.js +0 -110
- package/dist/attributes/ComponentAttribute.js.map +0 -1
- package/dist/attributes/ControllerAttribute.d.ts +0 -11
- package/dist/attributes/ControllerAttribute.js +0 -127
- package/dist/attributes/ControllerAttribute.js.map +0 -1
- package/dist/attributes/DisableIf.d.ts +0 -5
- package/dist/attributes/DisableIf.js +0 -94
- package/dist/attributes/DisableIf.js.map +0 -1
- package/dist/attributes/Exec.d.ts +0 -10
- package/dist/attributes/Exec.js +0 -133
- package/dist/attributes/Exec.js.map +0 -1
- package/dist/attributes/Format.d.ts +0 -5
- package/dist/attributes/Format.js +0 -99
- package/dist/attributes/Format.js.map +0 -1
- package/dist/attributes/If.d.ts +0 -11
- package/dist/attributes/If.js +0 -159
- package/dist/attributes/If.js.map +0 -1
- package/dist/attributes/JSONAttribute.d.ts +0 -5
- package/dist/attributes/JSONAttribute.js +0 -119
- package/dist/attributes/JSONAttribute.js.map +0 -1
- package/dist/attributes/KeyAbstract.d.ts +0 -7
- package/dist/attributes/KeyAbstract.js +0 -117
- package/dist/attributes/KeyAbstract.js.map +0 -1
- package/dist/attributes/KeyDown.d.ts +0 -4
- package/dist/attributes/KeyDown.js +0 -88
- package/dist/attributes/KeyDown.js.map +0 -1
- package/dist/attributes/KeyUp.d.ts +0 -4
- package/dist/attributes/KeyUp.js +0 -88
- package/dist/attributes/KeyUp.js.map +0 -1
- package/dist/attributes/LazyAttribute.d.ts +0 -8
- package/dist/attributes/LazyAttribute.js +0 -122
- package/dist/attributes/LazyAttribute.js.map +0 -1
- package/dist/attributes/List.d.ts +0 -18
- package/dist/attributes/List.js +0 -396
- package/dist/attributes/List.js.map +0 -1
- package/dist/attributes/ListItem.d.ts +0 -12
- package/dist/attributes/ListItem.js +0 -119
- package/dist/attributes/ListItem.js.map +0 -1
- package/dist/attributes/ListItemModel.d.ts +0 -4
- package/dist/attributes/ListItemModel.js +0 -39
- package/dist/attributes/ListItemModel.js.map +0 -1
- package/dist/attributes/ModelAttribute.d.ts +0 -5
- package/dist/attributes/ModelAttribute.js +0 -41
- package/dist/attributes/ModelAttribute.js.map +0 -1
- package/dist/attributes/Name.d.ts +0 -6
- package/dist/attributes/Name.js +0 -88
- package/dist/attributes/Name.js.map +0 -1
- package/dist/attributes/On.d.ts +0 -9
- package/dist/attributes/On.js +0 -135
- package/dist/attributes/On.js.map +0 -1
- package/dist/attributes/PersistAttribute.d.ts +0 -15
- package/dist/attributes/PersistAttribute.js +0 -215
- package/dist/attributes/PersistAttribute.js.map +0 -1
- package/dist/attributes/Referenced.d.ts +0 -3
- package/dist/attributes/Referenced.js +0 -38
- package/dist/attributes/Referenced.js.map +0 -1
- package/dist/attributes/RootAttribute.d.ts +0 -7
- package/dist/attributes/RootAttribute.js +0 -141
- package/dist/attributes/RootAttribute.js.map +0 -1
- package/dist/attributes/ScopeAttribute.d.ts +0 -9
- package/dist/attributes/ScopeAttribute.js +0 -152
- package/dist/attributes/ScopeAttribute.js.map +0 -1
- package/dist/attributes/ScopeChange.d.ts +0 -10
- package/dist/attributes/ScopeChange.js +0 -153
- package/dist/attributes/ScopeChange.js.map +0 -1
- package/dist/attributes/ScriptAttribute.d.ts +0 -4
- package/dist/attributes/ScriptAttribute.js +0 -45
- package/dist/attributes/ScriptAttribute.js.map +0 -1
- package/dist/attributes/ServiceAttribute.d.ts +0 -7
- package/dist/attributes/ServiceAttribute.js +0 -45
- package/dist/attributes/ServiceAttribute.js.map +0 -1
- package/dist/attributes/SetAttribute.d.ts +0 -11
- package/dist/attributes/SetAttribute.js +0 -146
- package/dist/attributes/SetAttribute.js.map +0 -1
- package/dist/attributes/StandardAttribute.d.ts +0 -15
- package/dist/attributes/StandardAttribute.js +0 -170
- package/dist/attributes/StandardAttribute.js.map +0 -1
- package/dist/attributes/StyleAttribute.d.ts +0 -14
- package/dist/attributes/StyleAttribute.js +0 -218
- package/dist/attributes/StyleAttribute.js.map +0 -1
- package/dist/attributes/StyleVarAttribute.d.ts +0 -11
- package/dist/attributes/StyleVarAttribute.js +0 -124
- package/dist/attributes/StyleVarAttribute.js.map +0 -1
- package/dist/attributes/TemplateAttribute.d.ts +0 -5
- package/dist/attributes/TemplateAttribute.js +0 -89
- package/dist/attributes/TemplateAttribute.js.map +0 -1
- package/dist/attributes/TypeAttribute.d.ts +0 -5
- package/dist/attributes/TypeAttribute.js +0 -104
- package/dist/attributes/TypeAttribute.js.map +0 -1
- package/dist/attributes/XHRAttribute.d.ts +0 -14
- package/dist/attributes/XHRAttribute.js +0 -242
- package/dist/attributes/XHRAttribute.js.map +0 -1
- package/dist/attributes/_imports.d.ts +0 -32
- package/dist/attributes/_imports.js +0 -68
- package/dist/attributes/_imports.js.map +0 -1
- package/dist/contrib/XHR.d.ts +0 -21
- package/dist/contrib/XHR.js +0 -78
- package/dist/contrib/XHR.js.map +0 -1
- package/dist/contrib/_imports.d.ts +0 -1
- package/dist/contrib/_imports.js +0 -6
- package/dist/contrib/_imports.js.map +0 -1
- package/dist/custom-elements.d.ts +0 -9
- package/dist/custom-elements.js +0 -44
- package/dist/custom-elements.js.map +0 -1
- package/dist/demo/ServiceDemo.d.ts +0 -5
- package/dist/demo/ServiceDemo.js +0 -87
- package/dist/demo/ServiceDemo.js.map +0 -1
- package/dist/demo.d.ts +0 -2
- package/dist/demo.js +0 -17
- package/dist/demo.js.map +0 -1
- package/dist/helpers/DOMHelper.d.ts +0 -3
- package/dist/helpers/DOMHelper.js +0 -81
- package/dist/helpers/DOMHelper.js.map +0 -1
- package/dist/helpers/ElementHelper.d.ts +0 -4
- package/dist/helpers/ElementHelper.js +0 -53
- package/dist/helpers/ElementHelper.js.map +0 -1
- package/dist/helpers/VisionHelper.d.ts +0 -13
- package/dist/helpers/VisionHelper.js +0 -148
- package/dist/helpers/VisionHelper.js.map +0 -1
- package/dist/helpers/decorators.d.ts +0 -5
- package/dist/helpers/decorators.js +0 -59
- package/dist/helpers/decorators.js.map +0 -1
- package/dist/version.d.ts +0 -1
- package/dist/version.js +0 -5
- package/dist/version.js.map +0 -1
- package/dist/vsn.d.ts +0 -36
- package/dist/vsn.js +0 -201
- package/dist/vsn.js.map +0 -1
- package/karma.conf.js +0 -34
- package/src/AST/ArithmeticNode.ts +0 -52
- package/src/AST/ArrayNode.ts +0 -39
- package/src/AST/AsNode.ts +0 -32
- package/src/AST/AssignmentNode.ts +0 -256
- package/src/AST/BlockNode.ts +0 -25
- package/src/AST/BooleanLiteralNode.ts +0 -10
- package/src/AST/ClassNode.ts +0 -267
- package/src/AST/ComparisonNode.ts +0 -57
- package/src/AST/ConditionalNode.ts +0 -36
- package/src/AST/DispatchEventNode.ts +0 -58
- package/src/AST/ElementAttributeNode.ts +0 -97
- package/src/AST/ElementQueryNode.ts +0 -48
- package/src/AST/ElementStyleNode.ts +0 -74
- package/src/AST/ForStatementNode.ts +0 -59
- package/src/AST/FunctionArgumentNode.ts +0 -27
- package/src/AST/FunctionCallNode.ts +0 -93
- package/src/AST/FunctionNode.ts +0 -82
- package/src/AST/IfStatementNode.ts +0 -67
- package/src/AST/InNode.ts +0 -46
- package/src/AST/IndexNode.ts +0 -64
- package/src/AST/LiteralNode.ts +0 -17
- package/src/AST/LoopNode.ts +0 -35
- package/src/AST/ModifierNode.ts +0 -32
- package/src/AST/NamedStackNode.ts +0 -83
- package/src/AST/Node.ts +0 -104
- package/src/AST/NotNode.ts +0 -41
- package/src/AST/NumberLiteralNode.ts +0 -14
- package/src/AST/ObjectNode.ts +0 -55
- package/src/AST/OnNode.ts +0 -23
- package/src/AST/RootScopeMemberNode.ts +0 -27
- package/src/AST/ScopeMemberNode.ts +0 -63
- package/src/AST/ScopeNodeAbstract.ts +0 -21
- package/src/AST/StringFormatNode.ts +0 -43
- package/src/AST/UnitLiteralNode.ts +0 -51
- package/src/AST/WASM/Context.ts +0 -12
- package/src/AST/WASM/Function.ts +0 -67
- package/src/AST/WASM/Memory.ts +0 -21
- package/src/AST/WASM/Section.ts +0 -6
- package/src/AST/WASM.ts +0 -244
- package/src/AST/WithNode.ts +0 -68
- package/src/AST/XHRNode.ts +0 -85
- package/src/AST.ts +0 -969
- package/src/Attribute.ts +0 -130
- package/src/Bencmark.ts +0 -184
- package/src/Component.ts +0 -63
- package/src/Configuration.ts +0 -47
- package/src/Controller.ts +0 -36
- package/src/DOM/AbstractDOM.ts +0 -465
- package/src/DOM/DOMObject.ts +0 -77
- package/src/DOM/ShadowDOM.ts +0 -15
- package/src/DOM/WrappedDocument.ts +0 -9
- package/src/DOM/WrappedWindow.ts +0 -21
- package/src/DOM.ts +0 -13
- package/src/EventDispatcher.ts +0 -234
- package/src/Formats.ts +0 -33
- package/src/MessageList.ts +0 -85
- package/src/Model.ts +0 -44
- package/src/Modifiers.ts +0 -54
- package/src/Query.ts +0 -17
- package/src/Registry.ts +0 -141
- package/src/Scope/DynamicScopeData.ts +0 -27
- package/src/Scope/ObjectAccessor.ts +0 -21
- package/src/Scope/QueryReference.ts +0 -29
- package/src/Scope/ScopeAbstract.ts +0 -11
- package/src/Scope/ScopeData.ts +0 -20
- package/src/Scope/ScopeDataAbstract.ts +0 -200
- package/src/Scope/ScopeObject.ts +0 -3
- package/src/Scope/ScopeReference.ts +0 -30
- package/src/Scope/ScopedVariableType.ts +0 -7
- package/src/Scope/WrappedArray.ts +0 -134
- package/src/Scope/properties/ArrayProperty.ts +0 -46
- package/src/Scope/properties/FloatProperty.ts +0 -5
- package/src/Scope/properties/IntegerProperty.ts +0 -5
- package/src/Scope/properties/Property.ts +0 -173
- package/src/Scope/properties/_imports.ts +0 -4
- package/src/Scope.ts +0 -333
- package/src/Service.ts +0 -24
- package/src/Tag/ShadowRootTag.ts +0 -5
- package/src/Tag/SlotTag.ts +0 -5
- package/src/Tag/SlottedTag.ts +0 -17
- package/src/Tag/TagList.ts +0 -52
- package/src/Tag.ts +0 -838
- package/src/Types.ts +0 -34
- package/src/Validators.ts +0 -45
- package/src/attributes/AddClassIf.ts +0 -14
- package/src/attributes/Bind.ts +0 -144
- package/src/attributes/ComponentAttribute.ts +0 -23
- package/src/attributes/ControllerAttribute.ts +0 -50
- package/src/attributes/DisableIf.ts +0 -16
- package/src/attributes/Exec.ts +0 -32
- package/src/attributes/Format.ts +0 -18
- package/src/attributes/If.ts +0 -40
- package/src/attributes/JSONAttribute.ts +0 -40
- package/src/attributes/KeyAbstract.ts +0 -28
- package/src/attributes/KeyDown.ts +0 -10
- package/src/attributes/KeyUp.ts +0 -10
- package/src/attributes/LazyAttribute.ts +0 -30
- package/src/attributes/List.ts +0 -210
- package/src/attributes/ListItem.ts +0 -30
- package/src/attributes/ListItemModel.ts +0 -7
- package/src/attributes/ModelAttribute.ts +0 -8
- package/src/attributes/Name.ts +0 -16
- package/src/attributes/On.ts +0 -39
- package/src/attributes/PersistAttribute.ts +0 -83
- package/src/attributes/Referenced.ts +0 -5
- package/src/attributes/RootAttribute.ts +0 -24
- package/src/attributes/ScopeAttribute.ts +0 -40
- package/src/attributes/ScopeChange.ts +0 -35
- package/src/attributes/ScriptAttribute.ts +0 -9
- package/src/attributes/ServiceAttribute.ts +0 -13
- package/src/attributes/SetAttribute.ts +0 -44
- package/src/attributes/StandardAttribute.ts +0 -72
- package/src/attributes/StyleAttribute.ts +0 -90
- package/src/attributes/StyleVarAttribute.ts +0 -40
- package/src/attributes/TemplateAttribute.ts +0 -12
- package/src/attributes/TypeAttribute.ts +0 -23
- package/src/attributes/XHRAttribute.ts +0 -109
- package/src/attributes/_imports.ts +0 -32
- package/src/contrib/XHR.ts +0 -46
- package/src/contrib/_imports.ts +0 -1
- package/src/custom-elements.ts +0 -46
- package/src/demo/ServiceDemo.ts +0 -12
- package/src/demo.ts +0 -2
- package/src/helpers/DOMHelper.ts +0 -17
- package/src/helpers/ElementHelper.ts +0 -26
- package/src/helpers/VisionHelper.ts +0 -88
- package/src/helpers/decorators.ts +0 -11
- package/src/version.ts +0 -2
- package/src/vsn.ts +0 -106
- package/test/AST/ArithmeticAssignmentNode.spec.ts +0 -45
- package/test/AST/ClassNode.spec.ts +0 -175
- package/test/AST/FunctionNode.spec.ts +0 -51
- package/test/AST/StringFormatNode.spec.ts +0 -12
- package/test/AST/WASM.spec.ts +0 -63
- package/test/AST/XHRNode.spec.ts +0 -10
- package/test/AST.spec.ts +0 -353
- package/test/Controller.spec.ts +0 -42
- package/test/DOM.spec.ts +0 -63
- package/test/EventDispatcher.spec.ts +0 -191
- package/test/MessageList.spec.ts +0 -101
- package/test/Model/DataModel.spec.ts +0 -0
- package/test/Scope/DynamicScopeData.spec.ts +0 -141
- package/test/Scope/ScopeData.spec.ts +0 -58
- package/test/Scope/WrappedArray.spec.ts +0 -11
- package/test/Scope/properties/ArrayProperty.spec.ts +0 -23
- package/test/Scope.spec.ts +0 -69
- package/test/Tag/TagList.spec.ts +0 -21
- package/test/Tag.spec.ts +0 -4
- package/test/attributes/Bind.spec.ts +0 -174
- package/test/attributes/JSONAttribute.spec.ts +0 -91
- package/test/attributes/ListItem.spec.ts +0 -118
- package/test/attributes/ScopeAttribute.spec.ts +0 -35
- package/test/attributes/ServiceAttribute.spec.ts +0 -41
- package/test/attributes/SetAttribute.spec.ts +0 -55
- package/test/attributes/Styles.spec.ts +0 -43
- package/test/globals.js +0 -2
- package/tsconfig.base.json +0 -17
- package/tsconfig.json +0 -6
- package/tsconfig.test.json +0 -7
- package/types/vsn-component.d.ts +0 -5
- package/webpack.config.js +0 -48
- package/webpack.development.js +0 -6
- package/webpack.production.js +0 -5
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {Token, TokenType, Tree, TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
import {LiteralNode} from "./LiteralNode";
|
|
7
|
-
import {RootScopeMemberNode} from "./RootScopeMemberNode";
|
|
8
|
-
import {ScopeMemberNode} from "./ScopeMemberNode";
|
|
9
|
-
|
|
10
|
-
export class ForStatementNode extends Node implements TreeNode {
|
|
11
|
-
constructor(
|
|
12
|
-
public readonly variable: LiteralNode<string>,
|
|
13
|
-
public readonly list: RootScopeMemberNode | ScopeMemberNode,
|
|
14
|
-
public readonly block: RootScopeMemberNode | ScopeMemberNode,
|
|
15
|
-
) {
|
|
16
|
-
super();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
protected _getChildNodes(): Node[] {
|
|
20
|
-
return [
|
|
21
|
-
this.variable,
|
|
22
|
-
this.list,
|
|
23
|
-
this.block
|
|
24
|
-
];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
28
|
-
const variable: string = await this.variable.evaluate(scope, dom, tag);
|
|
29
|
-
const list: any[] = await this.list.evaluate(scope, dom, tag);
|
|
30
|
-
for (let i = 0;i < list.length; i++) {
|
|
31
|
-
scope.set(variable, list[i]);
|
|
32
|
-
await this.block.evaluate(scope, dom, tag);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
public static parse(lastNode, token, tokens: Token[]): ForStatementNode {
|
|
39
|
-
if (tokens[1].type !== TokenType.L_PAREN) {
|
|
40
|
-
throw SyntaxError('Syntax error: Missing (');
|
|
41
|
-
}
|
|
42
|
-
if (tokens[3].type !== TokenType.OF) {
|
|
43
|
-
throw SyntaxError('Syntax error: Missing of');
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
tokens.splice(0, 1); // consume for
|
|
47
|
-
const loopDef: Token[] = Tree.getNextStatementTokens(tokens);
|
|
48
|
-
const variableName: Token = loopDef.splice(0, 1)[0];
|
|
49
|
-
loopDef.splice(0, 1); // consume of
|
|
50
|
-
const list: TreeNode = Tree.processTokens(loopDef);
|
|
51
|
-
const block: TreeNode = Tree.processTokens(Tree.getBlockTokens(tokens, null)[0]);
|
|
52
|
-
|
|
53
|
-
return new ForStatementNode(
|
|
54
|
-
new LiteralNode<string>(variableName.value),
|
|
55
|
-
list as any,
|
|
56
|
-
block as any
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
|
|
7
|
-
export class FunctionArgumentNode<T = any> extends Node implements TreeNode {
|
|
8
|
-
constructor(
|
|
9
|
-
protected args: Node[]
|
|
10
|
-
) {
|
|
11
|
-
super();
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
protected _getChildNodes(): Node[] {
|
|
15
|
-
return [
|
|
16
|
-
...(this.args as Node[])
|
|
17
|
-
]
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
21
|
-
const values: any[] = [];
|
|
22
|
-
for (const arg of this.args) {
|
|
23
|
-
values.push(await arg.evaluate(scope, dom, tag));
|
|
24
|
-
}
|
|
25
|
-
return values;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
import {FunctionArgumentNode} from "./FunctionArgumentNode";
|
|
7
|
-
import {ScopeMemberNode} from "./ScopeMemberNode";
|
|
8
|
-
import {FunctionNode} from "./FunctionNode";
|
|
9
|
-
import {ElementQueryNode} from "./ElementQueryNode";
|
|
10
|
-
|
|
11
|
-
export class FunctionCallNode<T = any> extends Node implements TreeNode {
|
|
12
|
-
constructor(
|
|
13
|
-
public readonly fnc: TreeNode<(...args: any[]) => any>,
|
|
14
|
-
public readonly args: FunctionArgumentNode<any[]>
|
|
15
|
-
) {
|
|
16
|
-
super();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
protected _getChildNodes(): Node[] {
|
|
20
|
-
return [
|
|
21
|
-
this.fnc as Node,
|
|
22
|
-
this.args as Node
|
|
23
|
-
]
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
protected async callFunction(func, functionScope, dom, tag, ...values): Promise<[any, boolean]> {
|
|
27
|
-
if (func instanceof FunctionNode) {
|
|
28
|
-
const r = await (await func.evaluate(functionScope, dom, tag) as any)(...values);
|
|
29
|
-
await func.collectGarbage();
|
|
30
|
-
return [r, true];
|
|
31
|
-
} else if (typeof func === 'function') {
|
|
32
|
-
return [func.call(functionScope.wrapped || functionScope, ...values), true];
|
|
33
|
-
}
|
|
34
|
-
return [null, false];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
38
|
-
let tags: Tag[] = [];
|
|
39
|
-
let functionScope: Scope = scope;
|
|
40
|
-
if (this.fnc instanceof ScopeMemberNode) {
|
|
41
|
-
if (this.fnc.scope instanceof ElementQueryNode) {
|
|
42
|
-
const _tags = await this.fnc.scope.evaluate(scope, dom, tag);
|
|
43
|
-
if (_tags instanceof Array) {
|
|
44
|
-
tags = _tags;
|
|
45
|
-
} else if (_tags instanceof Tag) {
|
|
46
|
-
tags = [_tags];
|
|
47
|
-
functionScope = _tags.scope;
|
|
48
|
-
} else {
|
|
49
|
-
throw new Error('Invalid element query result');
|
|
50
|
-
}
|
|
51
|
-
} else {
|
|
52
|
-
functionScope = await this.fnc.scope.evaluate(scope, dom, tag);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if (tags.length === 0)
|
|
57
|
-
tags.push(tag);
|
|
58
|
-
|
|
59
|
-
const values = await this.args.evaluate(scope, dom, tag);
|
|
60
|
-
const functionName = await (this.fnc as any).name.evaluate(scope, dom, tag);
|
|
61
|
-
const returnValues = [];
|
|
62
|
-
let calls = 0;
|
|
63
|
-
let func;
|
|
64
|
-
let _functionScope: Scope = functionScope;
|
|
65
|
-
|
|
66
|
-
for (const _tag of tags) {
|
|
67
|
-
if (_tag && _tag.scope.has(functionName)) {
|
|
68
|
-
func = _tag.scope.get(functionName);
|
|
69
|
-
_functionScope = _tag.scope;
|
|
70
|
-
} else if (_functionScope instanceof Scope && _functionScope.has(functionName)) {
|
|
71
|
-
func = _functionScope.get(functionName);
|
|
72
|
-
} else {
|
|
73
|
-
func = await this.fnc.evaluate(scope, dom, _tag);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const [result, success] = await this.callFunction(func, _functionScope, dom, _tag, ...values);
|
|
77
|
-
if (success) {
|
|
78
|
-
returnValues.push(result);
|
|
79
|
-
calls++;
|
|
80
|
-
} else {
|
|
81
|
-
console.warn(`Function ${functionName} was not found in current scope.`);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (calls === 1) {
|
|
86
|
-
return returnValues[0];
|
|
87
|
-
} else if (calls === 0) {
|
|
88
|
-
throw new Error(`Function ${functionName} not found`);
|
|
89
|
-
} else {
|
|
90
|
-
return returnValues;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
package/src/AST/FunctionNode.ts
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import {FunctionScope, Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {Token, Tree, TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
import {BlockNode} from "./BlockNode";
|
|
7
|
-
|
|
8
|
-
export class FunctionNode extends Node implements TreeNode {
|
|
9
|
-
protected requiresPrep: boolean = true;
|
|
10
|
-
protected garbage: FunctionScope[] = [];
|
|
11
|
-
|
|
12
|
-
constructor(
|
|
13
|
-
public readonly name: string,
|
|
14
|
-
public readonly args: string[],
|
|
15
|
-
public readonly block: BlockNode
|
|
16
|
-
) {
|
|
17
|
-
super();
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
protected _getChildNodes(): Node[] {
|
|
21
|
-
return [
|
|
22
|
-
this.block
|
|
23
|
-
];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
public async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta?: any): Promise<void> {
|
|
27
|
-
// if (meta?.ClassNode) {
|
|
28
|
-
// // Set on object instance
|
|
29
|
-
// if (tag && tag.scope.has('this')) {
|
|
30
|
-
// tag.scope.get('this').set(this.name, this);
|
|
31
|
-
// }
|
|
32
|
-
// } else {
|
|
33
|
-
// scope.set(this.name, this);
|
|
34
|
-
// }
|
|
35
|
-
scope.set(this.name, this);
|
|
36
|
-
await super.prepare(scope, dom, tag, meta);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
40
|
-
return await this.getFunction(scope, dom, tag);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
public async collectGarbage() {
|
|
44
|
-
for (const f of this.garbage) {
|
|
45
|
-
DOM.instance.addGarbage(f);
|
|
46
|
-
}
|
|
47
|
-
this.garbage.length = 0;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public async getFunction(scope: Scope, dom: DOM, tag: Tag = null, createFunctionScope: boolean = true) {
|
|
51
|
-
const self = this;
|
|
52
|
-
return async (...args) => {
|
|
53
|
-
let functionScope;
|
|
54
|
-
if (createFunctionScope && !(scope instanceof FunctionScope)) {
|
|
55
|
-
functionScope = new FunctionScope(scope);
|
|
56
|
-
functionScope.set('this', scope);
|
|
57
|
-
self.garbage.push(functionScope);
|
|
58
|
-
} else {
|
|
59
|
-
functionScope = scope;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
for (const arg of this.args) {
|
|
63
|
-
functionScope.set(arg, args.shift());
|
|
64
|
-
}
|
|
65
|
-
return await this.block.evaluate(functionScope, dom, tag);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
public static parse<T = FunctionNode>(lastNode, token, tokens: Token[], cls: any = FunctionNode): T {
|
|
70
|
-
tokens.shift(); // skip 'func'
|
|
71
|
-
const name = tokens.shift();
|
|
72
|
-
const modifiers = this.moveModifiers(tokens);
|
|
73
|
-
const argTokens = Tree.getBlockTokens(tokens);
|
|
74
|
-
const funcArgs: string[] = [];
|
|
75
|
-
for (const t of argTokens) {
|
|
76
|
-
funcArgs.push(t[0].value);
|
|
77
|
-
}
|
|
78
|
-
const block = Tree.processTokens(Tree.getNextStatementTokens(tokens, true, true));
|
|
79
|
-
this.moveModifiers(modifiers, tokens);
|
|
80
|
-
return new cls(name.value, funcArgs, block);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {Token, TokenType, Tree, TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
import {ConditionalNode} from "./ConditionalNode";
|
|
7
|
-
import {LiteralNode} from "./LiteralNode";
|
|
8
|
-
|
|
9
|
-
export class IfStatementNode extends Node implements TreeNode {
|
|
10
|
-
constructor(
|
|
11
|
-
protected nodes: ConditionalNode[]
|
|
12
|
-
) {
|
|
13
|
-
super();
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
protected _getChildNodes(): Node[] {
|
|
17
|
-
return [
|
|
18
|
-
...(this.nodes as Node[])
|
|
19
|
-
]
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
23
|
-
for (const condition of this.nodes) {
|
|
24
|
-
const uno: boolean = await condition.evaluate(scope, dom, tag);
|
|
25
|
-
if (uno) {
|
|
26
|
-
return await condition.block.evaluate(scope, dom, tag);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
public static parseConditional(tokens: Token[]): ConditionalNode {
|
|
32
|
-
if ([
|
|
33
|
-
TokenType.IF,
|
|
34
|
-
TokenType.ELSE_IF
|
|
35
|
-
].indexOf(tokens[0].type) === -1) {
|
|
36
|
-
throw SyntaxError('Invalid Syntax');
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
tokens.splice(0, 1); // consume if and else if
|
|
40
|
-
return new ConditionalNode(
|
|
41
|
-
Tree.processTokens(Tree.getBlockTokens(tokens, null)[0]),
|
|
42
|
-
Tree.processTokens(Tree.getBlockTokens(tokens, null)[0])
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public static parse(lastNode, token, tokens: Token[]): IfStatementNode {
|
|
47
|
-
if (tokens[1].type !== TokenType.L_PAREN) {
|
|
48
|
-
throw SyntaxError('If statement needs to be followed by a condition encased in parenthesis.');
|
|
49
|
-
}
|
|
50
|
-
const nodes: ConditionalNode[] = [];
|
|
51
|
-
nodes.push(IfStatementNode.parseConditional(tokens));
|
|
52
|
-
|
|
53
|
-
while(tokens.length > 0 && TokenType.ELSE_IF === tokens[0].type) {
|
|
54
|
-
nodes.push(IfStatementNode.parseConditional(tokens));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (tokens.length > 0 && TokenType.ELSE === tokens[0].type) {
|
|
58
|
-
tokens.splice(0, 1); // Consume else
|
|
59
|
-
nodes.push(new ConditionalNode(
|
|
60
|
-
new LiteralNode(true),
|
|
61
|
-
Tree.processTokens(Tree.getBlockTokens(tokens, null)[0])
|
|
62
|
-
))
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return new IfStatementNode(nodes);
|
|
66
|
-
}
|
|
67
|
-
}
|
package/src/AST/InNode.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {Token, TokenType, Tree, TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
|
|
7
|
-
export class InNode extends Node implements TreeNode {
|
|
8
|
-
constructor(
|
|
9
|
-
public readonly left: TreeNode,
|
|
10
|
-
public readonly right: TreeNode,
|
|
11
|
-
public readonly flip: boolean = false
|
|
12
|
-
) {
|
|
13
|
-
super();
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
17
|
-
const toCheck = await this.left.evaluate(scope, dom, tag);
|
|
18
|
-
const array = await this.right.evaluate(scope, dom, tag);
|
|
19
|
-
|
|
20
|
-
let inArray = array.indexOf(toCheck) > -1;
|
|
21
|
-
if (this.flip)
|
|
22
|
-
inArray = !inArray;
|
|
23
|
-
return inArray;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
protected _getChildNodes(): Node[] {
|
|
27
|
-
return [
|
|
28
|
-
this.left as Node,
|
|
29
|
-
this.right as Node
|
|
30
|
-
];
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public static match(tokens: Token[]): boolean {
|
|
34
|
-
return tokens[0].type === TokenType.IN || (tokens[0].type === TokenType.NOT && tokens[1].type === TokenType.IN);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
public static parse(lastNode, token, tokens: Token[]) {
|
|
38
|
-
const flip: boolean = tokens[0].type === TokenType.NOT;
|
|
39
|
-
if (flip)
|
|
40
|
-
tokens.splice(0, 1); // consume not
|
|
41
|
-
tokens.splice(0, 1); // consume in
|
|
42
|
-
|
|
43
|
-
const containedTokens = Tree.getNextStatementTokens(tokens, false, false, true);
|
|
44
|
-
return new InNode(lastNode, Tree.processTokens(containedTokens), flip);
|
|
45
|
-
}
|
|
46
|
-
}
|
package/src/AST/IndexNode.ts
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {Token, TokenType, Tree, TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
|
|
7
|
-
export class IndexNode extends Node implements TreeNode {
|
|
8
|
-
constructor(
|
|
9
|
-
public readonly object: Node,
|
|
10
|
-
public readonly index: Node,
|
|
11
|
-
public readonly indexTwo: Node = null
|
|
12
|
-
) {
|
|
13
|
-
super();
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
protected _getChildNodes(): Node[] {
|
|
17
|
-
const children = [
|
|
18
|
-
this.object,
|
|
19
|
-
this.index
|
|
20
|
-
];
|
|
21
|
-
if (this.indexTwo)
|
|
22
|
-
children.push(this.indexTwo);
|
|
23
|
-
|
|
24
|
-
return children;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public negativeIndex(obj: any[], index: number | string): number | string {
|
|
28
|
-
if (Number.isFinite(index) && index < 0)
|
|
29
|
-
return obj.length + (index as number);
|
|
30
|
-
return index;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
34
|
-
const obj = await this.object.evaluate(scope, dom, tag);
|
|
35
|
-
const index: string | number = this.negativeIndex(obj, await this.index.evaluate(scope, dom, tag));
|
|
36
|
-
|
|
37
|
-
if (Number.isFinite(index) && this.indexTwo) {
|
|
38
|
-
const indexTwo: number = this.negativeIndex(obj, await this.indexTwo.evaluate(scope, dom, tag)) as number;
|
|
39
|
-
const values = [];
|
|
40
|
-
for (let i: number = index as number; i <= indexTwo; i++) {
|
|
41
|
-
values.push(obj[i]);
|
|
42
|
-
}
|
|
43
|
-
return values;
|
|
44
|
-
} else {
|
|
45
|
-
if (obj instanceof Scope) {
|
|
46
|
-
return obj.get(index as string);
|
|
47
|
-
}
|
|
48
|
-
return (obj)[index];
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
public static match(tokens: Token[]): boolean {
|
|
53
|
-
return tokens[0].type === TokenType.L_BRACKET;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
public static parse(lastNode, token, tokens: Token[]): IndexNode {
|
|
57
|
-
const valueTokens: Token[][] = Tree.getBlockTokens(tokens, TokenType.COLON);
|
|
58
|
-
const values: Node[] = [];
|
|
59
|
-
for (const arg of valueTokens) {
|
|
60
|
-
values.push(Tree.processTokens(arg));
|
|
61
|
-
}
|
|
62
|
-
return new IndexNode(lastNode, values[0], values.length > 1 && values[1]);
|
|
63
|
-
}
|
|
64
|
-
}
|
package/src/AST/LiteralNode.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
|
|
7
|
-
export class LiteralNode<T = any> extends Node implements TreeNode {
|
|
8
|
-
constructor(
|
|
9
|
-
public readonly value: T
|
|
10
|
-
) {
|
|
11
|
-
super();
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
15
|
-
return this.value;
|
|
16
|
-
}
|
|
17
|
-
}
|
package/src/AST/LoopNode.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import {Token, TreeNode} from "../AST";
|
|
2
|
-
import {FunctionNode} from "./FunctionNode";
|
|
3
|
-
import {Scope} from "../Scope";
|
|
4
|
-
import {DOM} from "../DOM";
|
|
5
|
-
import {Tag} from "../Tag";
|
|
6
|
-
|
|
7
|
-
export class LoopNode extends FunctionNode implements TreeNode {
|
|
8
|
-
protected looping?: boolean = true;
|
|
9
|
-
|
|
10
|
-
public async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta): Promise<void> {
|
|
11
|
-
const classPrep = meta?.ClassNodePrepare; // Don't add event handler if we're in class prep
|
|
12
|
-
if (tag && !classPrep) {
|
|
13
|
-
const func = await this.getFunction(tag.scope || scope, dom, tag);
|
|
14
|
-
this.setTimeout(func);
|
|
15
|
-
}
|
|
16
|
-
await super.prepare(scope, dom, tag, meta);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async loop(func) {
|
|
20
|
-
if (this.looping) {
|
|
21
|
-
await func();
|
|
22
|
-
this.setTimeout(func);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
setTimeout(func, time: number = 33) {
|
|
27
|
-
setTimeout(async () => {
|
|
28
|
-
await this.loop(func);
|
|
29
|
-
}, time);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public static parse<T = LoopNode>(lastNode, token, tokens: Token[]): T {
|
|
33
|
-
return super.parse<T>(lastNode, token, tokens, LoopNode);
|
|
34
|
-
}
|
|
35
|
-
}
|
package/src/AST/ModifierNode.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {Token, TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
import {BlockNode} from "./BlockNode";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export class ModifierNode extends Node implements TreeNode {
|
|
10
|
-
constructor(
|
|
11
|
-
public readonly name: string,
|
|
12
|
-
public readonly block: BlockNode
|
|
13
|
-
) {
|
|
14
|
-
super();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
public async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta?: any): Promise<void> {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
public static parse(lastNode, token, tokens: Token[]): Node {
|
|
26
|
-
const modifier = tokens.shift().value.substr(1);
|
|
27
|
-
if (lastNode) {
|
|
28
|
-
lastNode.modifiers.add(modifier);
|
|
29
|
-
}
|
|
30
|
-
return lastNode;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import {FunctionScope, Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {Token, Tree, TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
import {BlockNode} from "./BlockNode";
|
|
7
|
-
import {LiteralNode} from "./LiteralNode";
|
|
8
|
-
|
|
9
|
-
type StackContext = {
|
|
10
|
-
block: BlockNode;
|
|
11
|
-
scope: Scope;
|
|
12
|
-
dom: DOM;
|
|
13
|
-
tag: Tag;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export class NamedStackNode extends Node implements TreeNode {
|
|
17
|
-
protected requiresPrep: boolean = true;
|
|
18
|
-
protected static stacks: { [key: string]: StackContext[] } = {};
|
|
19
|
-
protected static executions: string[] = [];
|
|
20
|
-
|
|
21
|
-
constructor(
|
|
22
|
-
public readonly stackName: LiteralNode<string>,
|
|
23
|
-
public readonly statements: BlockNode
|
|
24
|
-
) {
|
|
25
|
-
super();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
protected _getChildNodes(): Node[] {
|
|
29
|
-
return [
|
|
30
|
-
this.stackName,
|
|
31
|
-
this.statements
|
|
32
|
-
]
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
36
|
-
if (scope instanceof FunctionScope) { // NamedStackNode doesn't work with FunctionScope
|
|
37
|
-
scope = scope.parentScope;
|
|
38
|
-
}
|
|
39
|
-
const stackName = await this.stackName.evaluate(scope, dom, tag);
|
|
40
|
-
let execute = false;
|
|
41
|
-
if (!NamedStackNode.stacks[stackName]) {
|
|
42
|
-
NamedStackNode.stacks[stackName] = [];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (NamedStackNode.executions.indexOf(stackName) === -1)
|
|
46
|
-
execute = true;
|
|
47
|
-
|
|
48
|
-
NamedStackNode.stacks[stackName].push({
|
|
49
|
-
block: this.statements,
|
|
50
|
-
scope: scope,
|
|
51
|
-
dom: dom,
|
|
52
|
-
tag: tag
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
if (execute) {
|
|
56
|
-
NamedStackNode.execute(stackName);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
public static async execute(stackName: string): Promise<boolean> {
|
|
61
|
-
if (NamedStackNode.stacks[stackName].length > 0) {
|
|
62
|
-
const stack = NamedStackNode.stacks[stackName].shift();
|
|
63
|
-
if (NamedStackNode.executions.indexOf(stackName) === -1)
|
|
64
|
-
NamedStackNode.executions.push(stackName);
|
|
65
|
-
|
|
66
|
-
await stack.block.evaluate(stack.scope, stack.dom, stack.tag);
|
|
67
|
-
if (!(await NamedStackNode.execute(stackName))) {
|
|
68
|
-
NamedStackNode.executions.splice(NamedStackNode.executions.indexOf(stackName), 1);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return true;
|
|
72
|
-
} else {
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
public static parse(lastNode, token, tokens: Token[]) {
|
|
78
|
-
tokens.shift(); // Consume stack
|
|
79
|
-
const stackName = tokens.shift();
|
|
80
|
-
const statementTokens = Tree.getNextStatementTokens(tokens);
|
|
81
|
-
return new NamedStackNode(new LiteralNode<string>(stackName.value), Tree.processTokens(statementTokens));
|
|
82
|
-
}
|
|
83
|
-
}
|