vsn 0.1.26 → 0.1.29

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 (303) hide show
  1. package/demo/vsn.js +1 -1
  2. package/dist/AST/ArithmeticAssignmentNode.d.ts +23 -0
  3. package/dist/AST/ArithmeticAssignmentNode.js +313 -0
  4. package/dist/AST/ArithmeticAssignmentNode.js.map +1 -0
  5. package/dist/AST/ArithmeticNode.d.ts +15 -0
  6. package/dist/AST/ArithmeticNode.js +114 -0
  7. package/dist/AST/ArithmeticNode.js.map +1 -0
  8. package/dist/AST/ArrayNode.d.ts +14 -0
  9. package/dist/AST/ArrayNode.js +114 -0
  10. package/dist/AST/ArrayNode.js.map +1 -0
  11. package/dist/AST/BlockNode.d.ts +11 -0
  12. package/dist/AST/BlockNode.js +98 -0
  13. package/dist/AST/BlockNode.js.map +1 -0
  14. package/dist/AST/BooleanLiteralNode.d.ts +5 -0
  15. package/dist/AST/BooleanLiteralNode.js +31 -0
  16. package/dist/AST/BooleanLiteralNode.js.map +1 -0
  17. package/dist/AST/ComparisonNode.d.ts +15 -0
  18. package/dist/AST/ComparisonNode.js +120 -0
  19. package/dist/AST/ComparisonNode.js.map +1 -0
  20. package/dist/AST/ConditionalNode.d.ts +13 -0
  21. package/dist/AST/ConditionalNode.js +95 -0
  22. package/dist/AST/ConditionalNode.js.map +1 -0
  23. package/dist/AST/ElementAttributeNode.d.ts +18 -0
  24. package/dist/AST/ElementAttributeNode.js +159 -0
  25. package/dist/AST/ElementAttributeNode.js.map +1 -0
  26. package/dist/AST/ElementQueryNode.d.ts +12 -0
  27. package/dist/AST/ElementQueryNode.js +111 -0
  28. package/dist/AST/ElementQueryNode.js.map +1 -0
  29. package/dist/AST/ElementStyleNode.d.ts +18 -0
  30. package/dist/AST/ElementStyleNode.js +159 -0
  31. package/dist/AST/ElementStyleNode.js.map +1 -0
  32. package/dist/AST/ForStatementNode.d.ts +17 -0
  33. package/dist/AST/ForStatementNode.js +121 -0
  34. package/dist/AST/ForStatementNode.js.map +1 -0
  35. package/dist/AST/FunctionArgumentNode.d.ts +11 -0
  36. package/dist/AST/FunctionArgumentNode.js +100 -0
  37. package/dist/AST/FunctionArgumentNode.js.map +1 -0
  38. package/dist/AST/FunctionCallNode.d.ts +13 -0
  39. package/dist/AST/FunctionCallNode.js +102 -0
  40. package/dist/AST/FunctionCallNode.js.map +1 -0
  41. package/dist/AST/IfStatementNode.d.ts +14 -0
  42. package/dist/AST/IfStatementNode.js +128 -0
  43. package/dist/AST/IfStatementNode.js.map +1 -0
  44. package/dist/AST/InNode.d.ts +15 -0
  45. package/dist/AST/InNode.js +107 -0
  46. package/dist/AST/InNode.js.map +1 -0
  47. package/dist/AST/IndexNode.d.ts +16 -0
  48. package/dist/AST/IndexNode.js +126 -0
  49. package/dist/AST/IndexNode.js.map +1 -0
  50. package/dist/AST/LiteralNode.d.ts +10 -0
  51. package/dist/AST/LiteralNode.js +74 -0
  52. package/dist/AST/LiteralNode.js.map +1 -0
  53. package/dist/AST/Node.d.ts +19 -0
  54. package/dist/AST/Node.js +117 -0
  55. package/dist/AST/Node.js.map +1 -0
  56. package/dist/AST/NotNode.d.ts +12 -0
  57. package/dist/AST/NotNode.js +103 -0
  58. package/dist/AST/NotNode.js.map +1 -0
  59. package/dist/AST/NumberLiteralNode.d.ts +5 -0
  60. package/dist/AST/NumberLiteralNode.js +36 -0
  61. package/dist/AST/NumberLiteralNode.js.map +1 -0
  62. package/dist/AST/ObjectNode.d.ts +14 -0
  63. package/dist/AST/ObjectNode.js +131 -0
  64. package/dist/AST/ObjectNode.js.map +1 -0
  65. package/dist/AST/RootScopeMemberNode.d.ts +11 -0
  66. package/dist/AST/RootScopeMemberNode.js +87 -0
  67. package/dist/AST/RootScopeMemberNode.js.map +1 -0
  68. package/dist/AST/ScopeMemberNode.d.ts +12 -0
  69. package/dist/AST/ScopeMemberNode.js +128 -0
  70. package/dist/AST/ScopeMemberNode.js.map +1 -0
  71. package/dist/AST/UnitLiteralNode.d.ts +15 -0
  72. package/dist/AST/UnitLiteralNode.js +72 -0
  73. package/dist/AST/UnitLiteralNode.js.map +1 -0
  74. package/dist/AST.d.ts +7 -60
  75. package/dist/AST.js +778 -0
  76. package/dist/AST.js.map +1 -0
  77. package/dist/Attribute.d.ts +1 -1
  78. package/dist/Attribute.js +187 -0
  79. package/dist/Attribute.js.map +1 -0
  80. package/dist/Bencmark.js +179 -0
  81. package/dist/Bencmark.js.map +1 -0
  82. package/dist/Configuration.d.ts +1 -1
  83. package/dist/Configuration.js +64 -0
  84. package/dist/Configuration.js.map +1 -0
  85. package/dist/Controller.d.ts +4 -2
  86. package/dist/Controller.js +62 -0
  87. package/dist/Controller.js.map +1 -0
  88. package/dist/DOM/DOMObject.d.ts +1 -1
  89. package/dist/DOM/DOMObject.js +47 -0
  90. package/dist/DOM/DOMObject.js.map +1 -0
  91. package/dist/DOM/WrappedDocument.js +34 -0
  92. package/dist/DOM/WrappedDocument.js.map +1 -0
  93. package/dist/DOM/WrappedWindow.js +45 -0
  94. package/dist/DOM/WrappedWindow.js.map +1 -0
  95. package/dist/DOM.d.ts +1 -1
  96. package/dist/DOM.js +547 -0
  97. package/dist/DOM.js.map +1 -0
  98. package/dist/EventDispatcher.d.ts +29 -0
  99. package/dist/EventDispatcher.js +132 -0
  100. package/dist/EventDispatcher.js.map +1 -0
  101. package/dist/Formats.js +44 -0
  102. package/dist/Formats.js.map +1 -0
  103. package/dist/MessageList.d.ts +15 -0
  104. package/dist/MessageList.js +96 -0
  105. package/dist/MessageList.js.map +1 -0
  106. package/dist/Model/Field.d.ts +8 -0
  107. package/dist/Model/Field.js +38 -0
  108. package/dist/Model/Field.js.map +1 -0
  109. package/dist/Model.d.ts +12 -0
  110. package/dist/Model.js +61 -0
  111. package/dist/Model.js.map +1 -0
  112. package/dist/Query.js +66 -0
  113. package/dist/Query.js.map +1 -0
  114. package/dist/Registry.d.ts +5 -2
  115. package/dist/Registry.js +139 -0
  116. package/dist/Registry.js.map +1 -0
  117. package/dist/Scope/DynamicScopeData.d.ts +6 -0
  118. package/dist/Scope/DynamicScopeData.js +54 -0
  119. package/dist/Scope/DynamicScopeData.js.map +1 -0
  120. package/dist/Scope/QueryReference.d.ts +10 -0
  121. package/dist/Scope/QueryReference.js +103 -0
  122. package/dist/Scope/QueryReference.js.map +1 -0
  123. package/dist/Scope/ScopeData.d.ts +4 -0
  124. package/dist/Scope/ScopeData.js +40 -0
  125. package/dist/Scope/ScopeData.js.map +1 -0
  126. package/dist/Scope/ScopeDataAbstract.d.ts +22 -0
  127. package/dist/Scope/ScopeDataAbstract.js +137 -0
  128. package/dist/Scope/ScopeDataAbstract.js.map +1 -0
  129. package/dist/Scope/ScopeReference.d.ts +10 -0
  130. package/dist/Scope/ScopeReference.js +73 -0
  131. package/dist/Scope/ScopeReference.js.map +1 -0
  132. package/dist/Scope/ScopedVariableType.d.ts +6 -0
  133. package/dist/Scope/ScopedVariableType.js +14 -0
  134. package/dist/Scope/ScopedVariableType.js.map +1 -0
  135. package/dist/Scope/WrappedArray.d.ts +16 -0
  136. package/dist/Scope/WrappedArray.js +121 -0
  137. package/dist/Scope/WrappedArray.js.map +1 -0
  138. package/dist/Scope/properties/Property.d.ts +18 -0
  139. package/dist/Scope/properties/Property.js +93 -0
  140. package/dist/Scope/properties/Property.js.map +1 -0
  141. package/dist/Scope.d.ts +4 -48
  142. package/dist/Scope.js +227 -0
  143. package/dist/Scope.js.map +1 -0
  144. package/dist/SimplePromise.d.ts +42 -0
  145. package/dist/SimplePromise.js +217 -0
  146. package/dist/SimplePromise.js.map +1 -0
  147. package/dist/Tag/List.js +85 -0
  148. package/dist/Tag/List.js.map +1 -0
  149. package/dist/Tag.js +770 -0
  150. package/dist/Tag.js.map +1 -0
  151. package/dist/Types.d.ts +1 -0
  152. package/dist/Types.js +54 -0
  153. package/dist/Types.js.map +1 -0
  154. package/dist/Validators.d.ts +7 -0
  155. package/dist/Validators.js +54 -0
  156. package/dist/Validators.js.map +1 -0
  157. package/dist/attributes/AddClassIf.js +93 -0
  158. package/dist/attributes/AddClassIf.js.map +1 -0
  159. package/dist/attributes/Bind.js +272 -0
  160. package/dist/attributes/Bind.js.map +1 -0
  161. package/dist/attributes/ClassConstructor.d.ts +1 -0
  162. package/dist/attributes/ClassConstructor.js +104 -0
  163. package/dist/attributes/ClassConstructor.js.map +1 -0
  164. package/dist/attributes/ClickRemoveClass.js +114 -0
  165. package/dist/attributes/ClickRemoveClass.js.map +1 -0
  166. package/dist/attributes/ClickToggleClass.js +114 -0
  167. package/dist/attributes/ClickToggleClass.js.map +1 -0
  168. package/dist/attributes/ControllerAttribute.js +28 -0
  169. package/dist/attributes/ControllerAttribute.js.map +1 -0
  170. package/dist/attributes/DisableIf.js +94 -0
  171. package/dist/attributes/DisableIf.js.map +1 -0
  172. package/dist/attributes/Exec.js +108 -0
  173. package/dist/attributes/Exec.js.map +1 -0
  174. package/dist/attributes/Format.js +99 -0
  175. package/dist/attributes/Format.js.map +1 -0
  176. package/dist/attributes/If.js +159 -0
  177. package/dist/attributes/If.js.map +1 -0
  178. package/dist/attributes/JSONAttribute.js +118 -0
  179. package/dist/attributes/JSONAttribute.js.map +1 -0
  180. package/dist/attributes/KeyAbstract.js +117 -0
  181. package/dist/attributes/KeyAbstract.js.map +1 -0
  182. package/dist/attributes/KeyDown.js +88 -0
  183. package/dist/attributes/KeyDown.js.map +1 -0
  184. package/dist/attributes/KeyUp.js +88 -0
  185. package/dist/attributes/KeyUp.js.map +1 -0
  186. package/dist/attributes/List.js +282 -0
  187. package/dist/attributes/List.js.map +1 -0
  188. package/dist/attributes/ListItem.js +138 -0
  189. package/dist/attributes/ListItem.js.map +1 -0
  190. package/dist/attributes/ListItemModel.js +39 -0
  191. package/dist/attributes/ListItemModel.js.map +1 -0
  192. package/dist/attributes/ModelAttribute.js +29 -0
  193. package/dist/attributes/ModelAttribute.js.map +1 -0
  194. package/dist/attributes/Name.js +88 -0
  195. package/dist/attributes/Name.js.map +1 -0
  196. package/dist/attributes/On.js +135 -0
  197. package/dist/attributes/On.js.map +1 -0
  198. package/dist/attributes/Radio.js +174 -0
  199. package/dist/attributes/Radio.js.map +1 -0
  200. package/dist/attributes/Referenced.js +38 -0
  201. package/dist/attributes/Referenced.js.map +1 -0
  202. package/dist/attributes/RootAttribute.js +91 -0
  203. package/dist/attributes/RootAttribute.js.map +1 -0
  204. package/dist/attributes/ScopeAttribute.js +40 -0
  205. package/dist/attributes/ScopeAttribute.js.map +1 -0
  206. package/dist/attributes/ScopeChange.js +130 -0
  207. package/dist/attributes/ScopeChange.js.map +1 -0
  208. package/dist/attributes/SetAttribute.js +133 -0
  209. package/dist/attributes/SetAttribute.js.map +1 -0
  210. package/dist/attributes/StandardAttribute.js +186 -0
  211. package/dist/attributes/StandardAttribute.js.map +1 -0
  212. package/dist/attributes/StyleAttribute.js +183 -0
  213. package/dist/attributes/StyleAttribute.js.map +1 -0
  214. package/dist/attributes/Template.js +39 -0
  215. package/dist/attributes/Template.js.map +1 -0
  216. package/dist/attributes/TypeAttribute.js +104 -0
  217. package/dist/attributes/TypeAttribute.js.map +1 -0
  218. package/dist/attributes/_imports.js +60 -0
  219. package/dist/attributes/_imports.js.map +1 -0
  220. package/dist/helpers/DOMHelper.js +81 -0
  221. package/dist/helpers/DOMHelper.js.map +1 -0
  222. package/dist/helpers/ElementHelper.js +25 -0
  223. package/dist/helpers/ElementHelper.js.map +1 -0
  224. package/dist/helpers/VisionHelper.js +71 -0
  225. package/dist/helpers/VisionHelper.js.map +1 -0
  226. package/dist/helpers/decorators.js +38 -0
  227. package/dist/helpers/decorators.js.map +1 -0
  228. package/dist/vsn.d.ts +11 -2
  229. package/dist/vsn.js +181 -0
  230. package/dist/vsn.js.map +1 -0
  231. package/package.json +2 -6
  232. package/src/AST/ArithmeticAssignmentNode.ts +236 -0
  233. package/src/AST/ArithmeticNode.ts +52 -0
  234. package/src/AST/ArrayNode.ts +39 -0
  235. package/src/AST/BlockNode.ts +25 -0
  236. package/src/AST/BooleanLiteralNode.ts +10 -0
  237. package/src/AST/ComparisonNode.ts +57 -0
  238. package/src/AST/ConditionalNode.ts +36 -0
  239. package/src/AST/ElementAttributeNode.ts +63 -0
  240. package/src/AST/ElementQueryNode.ts +25 -0
  241. package/src/AST/ElementStyleNode.ts +63 -0
  242. package/src/AST/ForStatementNode.ts +59 -0
  243. package/src/AST/FunctionArgumentNode.ts +27 -0
  244. package/src/AST/FunctionCallNode.ts +32 -0
  245. package/src/AST/IfStatementNode.ts +67 -0
  246. package/src/AST/InNode.ts +46 -0
  247. package/src/AST/IndexNode.ts +61 -0
  248. package/src/AST/LiteralNode.ts +17 -0
  249. package/src/AST/Node.ts +71 -0
  250. package/src/AST/NotNode.ts +41 -0
  251. package/src/AST/NumberLiteralNode.ts +14 -0
  252. package/src/AST/ObjectNode.ts +55 -0
  253. package/src/AST/RootScopeMemberNode.ts +25 -0
  254. package/src/AST/ScopeMemberNode.ts +53 -0
  255. package/src/AST/UnitLiteralNode.ts +51 -0
  256. package/src/AST.ts +34 -1094
  257. package/src/Attribute.ts +2 -2
  258. package/src/Configuration.ts +3 -3
  259. package/src/Controller.ts +10 -2
  260. package/src/DOM/DOMObject.ts +1 -1
  261. package/src/DOM.ts +3 -3
  262. package/src/EventDispatcher.ts +134 -0
  263. package/src/Formats.ts +2 -2
  264. package/src/MessageList.ts +85 -0
  265. package/src/Model/Field.ts +20 -0
  266. package/src/Model.ts +43 -0
  267. package/src/Registry.ts +13 -3
  268. package/src/Scope/DynamicScopeData.ts +29 -0
  269. package/src/Scope/QueryReference.ts +29 -0
  270. package/src/Scope/ScopeData.ts +21 -0
  271. package/src/Scope/ScopeDataAbstract.ts +126 -0
  272. package/src/Scope/ScopeReference.ts +30 -0
  273. package/src/Scope/ScopedVariableType.ts +7 -0
  274. package/src/Scope/WrappedArray.ts +88 -0
  275. package/src/Scope/properties/Property.ts +79 -0
  276. package/src/Scope.ts +31 -252
  277. package/src/SimplePromise.ts +219 -0
  278. package/src/Tag.ts +3 -3
  279. package/src/Types.ts +6 -1
  280. package/src/Validators.ts +45 -0
  281. package/src/attributes/Bind.ts +4 -4
  282. package/src/attributes/ClassConstructor.ts +2 -1
  283. package/src/attributes/JSONAttribute.ts +2 -1
  284. package/src/attributes/List.ts +4 -4
  285. package/src/attributes/Radio.ts +3 -2
  286. package/src/attributes/ScopeChange.ts +2 -2
  287. package/src/attributes/SetAttribute.ts +2 -1
  288. package/src/attributes/StandardAttribute.ts +1 -1
  289. package/src/attributes/StyleAttribute.ts +3 -2
  290. package/src/attributes/TypeAttribute.ts +1 -1
  291. package/src/vsn.ts +16 -5
  292. package/test/AST/ArithmeticAssignmentNode.spec.ts +47 -0
  293. package/test/AST.spec.ts +3 -2
  294. package/test/Controller.spec.ts +44 -0
  295. package/test/MessageList.spec.ts +101 -0
  296. package/test/Model/DataModel.spec.ts +0 -0
  297. package/test/Scope/DynamicScopeData.spec.ts +141 -0
  298. package/test/Scope.spec.ts +15 -3
  299. package/test/SimplePromise.spec.ts +271 -0
  300. package/test/Tag/TagList.spec.ts +1 -1
  301. package/test/attributes/Bind.spec.ts +5 -5
  302. package/test/attributes/ListItem.spec.ts +1 -1
  303. package/dist/vsn.min.js +0 -1
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
54
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
55
+ to[j] = from[i];
56
+ return to;
57
+ };
58
+ Object.defineProperty(exports, "__esModule", { value: true });
59
+ exports.FunctionCallNode = void 0;
60
+ var Node_1 = require("./Node");
61
+ var ScopeMemberNode_1 = require("./ScopeMemberNode");
62
+ var FunctionCallNode = /** @class */ (function (_super) {
63
+ __extends(FunctionCallNode, _super);
64
+ function FunctionCallNode(fnc, args) {
65
+ var _this = _super.call(this) || this;
66
+ _this.fnc = fnc;
67
+ _this.args = args;
68
+ return _this;
69
+ }
70
+ FunctionCallNode.prototype._getChildNodes = function () {
71
+ return [
72
+ this.fnc,
73
+ this.args
74
+ ];
75
+ };
76
+ FunctionCallNode.prototype.evaluate = function (scope, dom, tag) {
77
+ if (tag === void 0) { tag = null; }
78
+ return __awaiter(this, void 0, void 0, function () {
79
+ var functionScope, values;
80
+ var _a;
81
+ return __generator(this, function (_b) {
82
+ switch (_b.label) {
83
+ case 0:
84
+ functionScope = scope;
85
+ if (!(this.fnc instanceof ScopeMemberNode_1.ScopeMemberNode)) return [3 /*break*/, 2];
86
+ return [4 /*yield*/, this.fnc.scope.evaluate(scope, dom, tag)];
87
+ case 1:
88
+ functionScope = _b.sent();
89
+ _b.label = 2;
90
+ case 2: return [4 /*yield*/, this.args.evaluate(scope, dom, tag)];
91
+ case 3:
92
+ values = _b.sent();
93
+ return [4 /*yield*/, this.fnc.evaluate(scope, dom, tag)];
94
+ case 4: return [2 /*return*/, (_a = (_b.sent())).call.apply(_a, __spreadArray([functionScope.wrapped || functionScope], values))];
95
+ }
96
+ });
97
+ });
98
+ };
99
+ return FunctionCallNode;
100
+ }(Node_1.Node));
101
+ exports.FunctionCallNode = FunctionCallNode;
102
+ //# sourceMappingURL=FunctionCallNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionCallNode.js","sourceRoot":"","sources":["../../src/AST/FunctionCallNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,+BAA4B;AAE5B,qDAAkD;AAElD;IAA+C,oCAAI;IAC/C,0BACoB,GAAsC,EACtC,IAAiC;QAFrD,YAII,iBAAO,SACV;QAJmB,SAAG,GAAH,GAAG,CAAmC;QACtC,UAAI,GAAJ,IAAI,CAA6B;;IAGrD,CAAC;IAES,yCAAc,GAAxB;QACI,OAAO;YACH,IAAI,CAAC,GAAW;YAChB,IAAI,CAAC,IAAY;SACpB,CAAA;IACL,CAAC;IAEY,mCAAQ,GAArB,UAAsB,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;;wBACrD,aAAa,GAAU,KAAK,CAAC;6BAC7B,CAAA,IAAI,CAAC,GAAG,YAAY,iCAAe,CAAA,EAAnC,wBAAmC;wBACnB,qBAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAA9D,aAAa,GAAG,SAA8C,CAAC;;4BAEpD,qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAAlD,MAAM,GAAG,SAAyC;wBAChD,qBAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;4BAAhD,sBAAO,CAAA,KAAA,CAAC,SAAwC,CAAC,CAAA,CAAC,IAAI,0BAAC,aAAa,CAAC,OAAO,IAAI,aAAa,GAAK,MAAM,IAAE;;;;KAC7G;IACL,uBAAC;AAAD,CAAC,AAvBD,CAA+C,WAAI,GAuBlD;AAvBY,4CAAgB"}
@@ -0,0 +1,14 @@
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 { ConditionalNode } from "./ConditionalNode";
7
+ export declare class IfStatementNode extends Node implements TreeNode {
8
+ protected nodes: ConditionalNode[];
9
+ constructor(nodes: ConditionalNode[]);
10
+ protected _getChildNodes(): Node[];
11
+ evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<any>;
12
+ static parseConditional(tokens: Token[]): ConditionalNode;
13
+ static parse(lastNode: any, token: any, tokens: Token[]): IfStatementNode;
14
+ }
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
54
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
55
+ to[j] = from[i];
56
+ return to;
57
+ };
58
+ Object.defineProperty(exports, "__esModule", { value: true });
59
+ exports.IfStatementNode = void 0;
60
+ var AST_1 = require("../AST");
61
+ var Node_1 = require("./Node");
62
+ var ConditionalNode_1 = require("./ConditionalNode");
63
+ var LiteralNode_1 = require("./LiteralNode");
64
+ var IfStatementNode = /** @class */ (function (_super) {
65
+ __extends(IfStatementNode, _super);
66
+ function IfStatementNode(nodes) {
67
+ var _this = _super.call(this) || this;
68
+ _this.nodes = nodes;
69
+ return _this;
70
+ }
71
+ IfStatementNode.prototype._getChildNodes = function () {
72
+ return __spreadArray([], this.nodes);
73
+ };
74
+ IfStatementNode.prototype.evaluate = function (scope, dom, tag) {
75
+ if (tag === void 0) { tag = null; }
76
+ return __awaiter(this, void 0, void 0, function () {
77
+ var _i, _a, condition, uno;
78
+ return __generator(this, function (_b) {
79
+ switch (_b.label) {
80
+ case 0:
81
+ _i = 0, _a = this.nodes;
82
+ _b.label = 1;
83
+ case 1:
84
+ if (!(_i < _a.length)) return [3 /*break*/, 5];
85
+ condition = _a[_i];
86
+ return [4 /*yield*/, condition.evaluate(scope, dom, tag)];
87
+ case 2:
88
+ uno = _b.sent();
89
+ if (!uno) return [3 /*break*/, 4];
90
+ return [4 /*yield*/, condition.block.evaluate(scope, dom, tag)];
91
+ case 3: return [2 /*return*/, _b.sent()];
92
+ case 4:
93
+ _i++;
94
+ return [3 /*break*/, 1];
95
+ case 5: return [2 /*return*/];
96
+ }
97
+ });
98
+ });
99
+ };
100
+ IfStatementNode.parseConditional = function (tokens) {
101
+ if ([
102
+ AST_1.TokenType.IF,
103
+ AST_1.TokenType.ELSE_IF
104
+ ].indexOf(tokens[0].type) === -1) {
105
+ throw SyntaxError('Invalid Syntax');
106
+ }
107
+ tokens.splice(0, 1); // consume if and else if
108
+ return new ConditionalNode_1.ConditionalNode(AST_1.Tree.processTokens(AST_1.Tree.getBlockTokens(tokens, null)[0]), AST_1.Tree.processTokens(AST_1.Tree.getBlockTokens(tokens, null)[0]));
109
+ };
110
+ IfStatementNode.parse = function (lastNode, token, tokens) {
111
+ if (tokens[1].type !== AST_1.TokenType.L_PAREN) {
112
+ throw SyntaxError('If statement needs to be followed by a condition encased in parenthesis.');
113
+ }
114
+ var nodes = [];
115
+ nodes.push(IfStatementNode.parseConditional(tokens));
116
+ while (tokens.length > 0 && AST_1.TokenType.ELSE_IF === tokens[0].type) {
117
+ nodes.push(IfStatementNode.parseConditional(tokens));
118
+ }
119
+ if (tokens.length > 0 && AST_1.TokenType.ELSE === tokens[0].type) {
120
+ tokens.splice(0, 1); // Consume else
121
+ nodes.push(new ConditionalNode_1.ConditionalNode(new LiteralNode_1.LiteralNode(true), AST_1.Tree.processTokens(AST_1.Tree.getBlockTokens(tokens, null)[0])));
122
+ }
123
+ return new IfStatementNode(nodes);
124
+ };
125
+ return IfStatementNode;
126
+ }(Node_1.Node));
127
+ exports.IfStatementNode = IfStatementNode;
128
+ //# sourceMappingURL=IfStatementNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IfStatementNode.js","sourceRoot":"","sources":["../../src/AST/IfStatementNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,8BAAwD;AACxD,+BAA4B;AAC5B,qDAAkD;AAClD,6CAA0C;AAE1C;IAAqC,mCAAI;IACrC,yBACc,KAAwB;QADtC,YAGI,iBAAO,SACV;QAHa,WAAK,GAAL,KAAK,CAAmB;;IAGtC,CAAC;IAES,wCAAc,GAAxB;QACI,yBACQ,IAAI,CAAC,KAAgB,EAC5B;IACL,CAAC;IAEY,kCAAQ,GAArB,UAAsB,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;8BACvB,EAAV,KAAA,IAAI,CAAC,KAAK;;;6BAAV,CAAA,cAAU,CAAA;wBAAvB,SAAS;wBACK,qBAAM,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAAxD,GAAG,GAAY,SAAyC;6BAC1D,GAAG,EAAH,wBAAG;wBACI,qBAAM,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;4BAAtD,sBAAO,SAA+C,EAAC;;wBAHvC,IAAU,CAAA;;;;;;KAMrC;IAEa,gCAAgB,GAA9B,UAA+B,MAAe;QAC1C,IAAI;YACA,eAAS,CAAC,EAAE;YACZ,eAAS,CAAC,OAAO;SACpB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAG;YAC/B,MAAM,WAAW,CAAC,gBAAgB,CAAC,CAAC;SACvC;QAED,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,yBAAyB;QAC9C,OAAO,IAAI,iCAAe,CACtB,UAAI,CAAC,aAAa,CAAC,UAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EACxD,UAAI,CAAC,aAAa,CAAC,UAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3D,CAAC;IACN,CAAC;IAEa,qBAAK,GAAnB,UAAoB,QAAQ,EAAE,KAAK,EAAE,MAAe;QAChD,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAS,CAAC,OAAO,EAAE;YACtC,MAAM,WAAW,CAAC,0EAA0E,CAAC,CAAC;SACjG;QACD,IAAM,KAAK,GAAsB,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAErD,OAAM,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,eAAS,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAC7D,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;SACxD;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,eAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACxD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe;YACpC,KAAK,CAAC,IAAI,CAAC,IAAI,iCAAe,CAC1B,IAAI,yBAAW,CAAC,IAAI,CAAC,EACrB,UAAI,CAAC,aAAa,CAAC,UAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3D,CAAC,CAAA;SACL;QAED,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACL,sBAAC;AAAD,CAAC,AA1DD,CAAqC,WAAI,GA0DxC;AA1DY,0CAAe"}
@@ -0,0 +1,15 @@
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
+ export declare class InNode extends Node implements TreeNode {
7
+ readonly left: TreeNode;
8
+ readonly right: TreeNode;
9
+ readonly flip: boolean;
10
+ constructor(left: TreeNode, right: TreeNode, flip?: boolean);
11
+ evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<boolean>;
12
+ protected _getChildNodes(): Node[];
13
+ static match(tokens: Token[]): boolean;
14
+ static parse(lastNode: any, token: any, tokens: Token[]): InNode;
15
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.InNode = void 0;
55
+ var AST_1 = require("../AST");
56
+ var Node_1 = require("./Node");
57
+ var InNode = /** @class */ (function (_super) {
58
+ __extends(InNode, _super);
59
+ function InNode(left, right, flip) {
60
+ if (flip === void 0) { flip = false; }
61
+ var _this = _super.call(this) || this;
62
+ _this.left = left;
63
+ _this.right = right;
64
+ _this.flip = flip;
65
+ return _this;
66
+ }
67
+ InNode.prototype.evaluate = function (scope, dom, tag) {
68
+ if (tag === void 0) { tag = null; }
69
+ return __awaiter(this, void 0, void 0, function () {
70
+ var toCheck, array, inArray;
71
+ return __generator(this, function (_a) {
72
+ switch (_a.label) {
73
+ case 0: return [4 /*yield*/, this.left.evaluate(scope, dom, tag)];
74
+ case 1:
75
+ toCheck = _a.sent();
76
+ return [4 /*yield*/, this.right.evaluate(scope, dom, tag)];
77
+ case 2:
78
+ array = _a.sent();
79
+ inArray = array.indexOf(toCheck) > -1;
80
+ if (this.flip)
81
+ inArray = !inArray;
82
+ return [2 /*return*/, inArray];
83
+ }
84
+ });
85
+ });
86
+ };
87
+ InNode.prototype._getChildNodes = function () {
88
+ return [
89
+ this.left,
90
+ this.right
91
+ ];
92
+ };
93
+ InNode.match = function (tokens) {
94
+ return tokens[0].type === AST_1.TokenType.IN || (tokens[0].type === AST_1.TokenType.NOT && tokens[1].type === AST_1.TokenType.IN);
95
+ };
96
+ InNode.parse = function (lastNode, token, tokens) {
97
+ var flip = tokens[0].type === AST_1.TokenType.NOT;
98
+ if (flip)
99
+ tokens.splice(0, 1); // consume not
100
+ tokens.splice(0, 1); // consume in
101
+ var containedTokens = AST_1.Tree.getNextStatementTokens(tokens, false, false, true);
102
+ return new InNode(lastNode, AST_1.Tree.processTokens(containedTokens), flip);
103
+ };
104
+ return InNode;
105
+ }(Node_1.Node));
106
+ exports.InNode = InNode;
107
+ //# sourceMappingURL=InNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InNode.js","sourceRoot":"","sources":["../../src/AST/InNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,8BAAwD;AACxD,+BAA4B;AAE5B;IAA4B,0BAAI;IAC5B,gBACoB,IAAc,EACd,KAAe,EACf,IAAqB;QAArB,qBAAA,EAAA,YAAqB;QAHzC,YAKI,iBAAO,SACV;QALmB,UAAI,GAAJ,IAAI,CAAU;QACd,WAAK,GAAL,KAAK,CAAU;QACf,UAAI,GAAJ,IAAI,CAAiB;;IAGzC,CAAC;IAEY,yBAAQ,GAArB,UAAsB,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;4BACzC,qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAAnD,OAAO,GAAG,SAAyC;wBAC3C,qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAAlD,KAAK,GAAG,SAA0C;wBAEpD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC1C,IAAI,IAAI,CAAC,IAAI;4BACT,OAAO,GAAG,CAAC,OAAO,CAAC;wBACvB,sBAAO,OAAO,EAAC;;;;KAClB;IAES,+BAAc,GAAxB;QACI,OAAO;YACH,IAAI,CAAC,IAAY;YACjB,IAAI,CAAC,KAAa;SACrB,CAAC;IACN,CAAC;IAEa,YAAK,GAAnB,UAAoB,MAAe;QAC/B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAS,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAS,CAAC,EAAE,CAAC,CAAC;IACpH,CAAC;IAEa,YAAK,GAAnB,UAAoB,QAAQ,EAAE,KAAK,EAAE,MAAe;QAChD,IAAM,IAAI,GAAY,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAS,CAAC,GAAG,CAAC;QACvD,IAAI,IAAI;YACJ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa;QAElC,IAAM,eAAe,GAAG,UAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAChF,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IACL,aAAC;AAAD,CAAC,AAvCD,CAA4B,WAAI,GAuC/B;AAvCY,wBAAM"}
@@ -0,0 +1,16 @@
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
+ export declare class IndexNode extends Node implements TreeNode {
7
+ readonly object: Node;
8
+ readonly index: Node;
9
+ readonly indexTwo: Node;
10
+ constructor(object: Node, index: Node, indexTwo?: Node);
11
+ protected _getChildNodes(): Node[];
12
+ negativeIndex(obj: any[], index: number | string): number | string;
13
+ evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<any>;
14
+ static match(tokens: Token[]): boolean;
15
+ static parse(lastNode: any, token: any, tokens: Token[]): IndexNode;
16
+ }
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.IndexNode = void 0;
55
+ var AST_1 = require("../AST");
56
+ var Node_1 = require("./Node");
57
+ var IndexNode = /** @class */ (function (_super) {
58
+ __extends(IndexNode, _super);
59
+ function IndexNode(object, index, indexTwo) {
60
+ if (indexTwo === void 0) { indexTwo = null; }
61
+ var _this = _super.call(this) || this;
62
+ _this.object = object;
63
+ _this.index = index;
64
+ _this.indexTwo = indexTwo;
65
+ return _this;
66
+ }
67
+ IndexNode.prototype._getChildNodes = function () {
68
+ var children = [
69
+ this.object,
70
+ this.index
71
+ ];
72
+ if (this.indexTwo)
73
+ children.push(this.indexTwo);
74
+ return children;
75
+ };
76
+ IndexNode.prototype.negativeIndex = function (obj, index) {
77
+ if (Number.isFinite(index) && index < 0)
78
+ return obj.length + index;
79
+ return index;
80
+ };
81
+ IndexNode.prototype.evaluate = function (scope, dom, tag) {
82
+ if (tag === void 0) { tag = null; }
83
+ return __awaiter(this, void 0, void 0, function () {
84
+ var obj, index, _a, _b, indexTwo, _c, _d, values, i;
85
+ return __generator(this, function (_e) {
86
+ switch (_e.label) {
87
+ case 0: return [4 /*yield*/, this.object.evaluate(scope, dom, tag)];
88
+ case 1:
89
+ obj = _e.sent();
90
+ _a = this.negativeIndex;
91
+ _b = [obj];
92
+ return [4 /*yield*/, this.index.evaluate(scope, dom, tag)];
93
+ case 2:
94
+ index = _a.apply(this, _b.concat([_e.sent()]));
95
+ if (!(Number.isFinite(index) && this.indexTwo)) return [3 /*break*/, 4];
96
+ _c = this.negativeIndex;
97
+ _d = [obj];
98
+ return [4 /*yield*/, this.indexTwo.evaluate(scope, dom, tag)];
99
+ case 3:
100
+ indexTwo = _c.apply(this, _d.concat([_e.sent()]));
101
+ values = [];
102
+ for (i = index; i <= indexTwo; i++) {
103
+ values.push(obj[i]);
104
+ }
105
+ return [2 /*return*/, values];
106
+ case 4: return [2 /*return*/, (obj)[index]];
107
+ }
108
+ });
109
+ });
110
+ };
111
+ IndexNode.match = function (tokens) {
112
+ return tokens[0].type === AST_1.TokenType.L_BRACKET;
113
+ };
114
+ IndexNode.parse = function (lastNode, token, tokens) {
115
+ var valueTokens = AST_1.Tree.getBlockTokens(tokens, AST_1.TokenType.COLON);
116
+ var values = [];
117
+ for (var _i = 0, valueTokens_1 = valueTokens; _i < valueTokens_1.length; _i++) {
118
+ var arg = valueTokens_1[_i];
119
+ values.push(AST_1.Tree.processTokens(arg));
120
+ }
121
+ return new IndexNode(lastNode, values[0], values.length > 1 && values[1]);
122
+ };
123
+ return IndexNode;
124
+ }(Node_1.Node));
125
+ exports.IndexNode = IndexNode;
126
+ //# sourceMappingURL=IndexNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexNode.js","sourceRoot":"","sources":["../../src/AST/IndexNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,8BAAwD;AACxD,+BAA4B;AAE5B;IAA+B,6BAAI;IAC/B,mBACoB,MAAY,EACZ,KAAW,EACX,QAAqB;QAArB,yBAAA,EAAA,eAAqB;QAHzC,YAKI,iBAAO,SACV;QALmB,YAAM,GAAN,MAAM,CAAM;QACZ,WAAK,GAAL,KAAK,CAAM;QACX,cAAQ,GAAR,QAAQ,CAAa;;IAGzC,CAAC;IAES,kCAAc,GAAxB;QACI,IAAM,QAAQ,GAAG;YACb,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,KAAK;SACb,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ;YACb,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,iCAAa,GAApB,UAAqB,GAAU,EAAE,KAAsB;QACnD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YACnC,OAAO,GAAG,CAAC,MAAM,GAAI,KAAgB,CAAC;QAC1C,OAAO,KAAK,CAAC;IACjB,CAAC;IAEK,4BAAQ,GAAd,UAAe,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;4BACtC,qBAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAAjD,GAAG,GAAG,SAA2C;wBACxB,KAAA,IAAI,CAAC,aAAa,CAAA;8BAAC,GAAG;wBAAE,qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAA3F,KAAK,GAAoB,SAAA,IAAI,aAAoB,SAA0C,GAAC;6BAE9F,CAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAA,EAAvC,wBAAuC;wBACd,KAAA,IAAI,CAAC,aAAa,CAAA;8BAAC,GAAG;wBAAE,qBAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAAxF,QAAQ,GAAW,SAAA,IAAI,aAAoB,SAA6C,GAAW;wBACnG,MAAM,GAAG,EAAE,CAAC;wBAClB,KAAS,CAAC,GAAW,KAAe,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;4BACtD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;yBACvB;wBACD,sBAAO,MAAM,EAAC;4BAEd,sBAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAC;;;;KAE3B;IAEa,eAAK,GAAnB,UAAoB,MAAe;QAC/B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAS,CAAC,SAAS,CAAC;IAClD,CAAC;IAEa,eAAK,GAAnB,UAAoB,QAAQ,EAAE,KAAK,EAAE,MAAe;QAChD,IAAM,WAAW,GAAc,UAAI,CAAC,cAAc,CAAC,MAAM,EAAE,eAAS,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,KAAkB,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW,EAAE;YAA1B,IAAM,GAAG,oBAAA;YACV,MAAM,CAAC,IAAI,CAAC,UAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;SACxC;QACD,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IACL,gBAAC;AAAD,CAAC,AAtDD,CAA+B,WAAI,GAsDlC;AAtDY,8BAAS"}
@@ -0,0 +1,10 @@
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
+ export declare class LiteralNode<T = any> extends Node implements TreeNode {
7
+ readonly value: T;
8
+ constructor(value: T);
9
+ evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<T>;
10
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.LiteralNode = void 0;
55
+ var Node_1 = require("./Node");
56
+ var LiteralNode = /** @class */ (function (_super) {
57
+ __extends(LiteralNode, _super);
58
+ function LiteralNode(value) {
59
+ var _this = _super.call(this) || this;
60
+ _this.value = value;
61
+ return _this;
62
+ }
63
+ LiteralNode.prototype.evaluate = function (scope, dom, tag) {
64
+ if (tag === void 0) { tag = null; }
65
+ return __awaiter(this, void 0, void 0, function () {
66
+ return __generator(this, function (_a) {
67
+ return [2 /*return*/, this.value];
68
+ });
69
+ });
70
+ };
71
+ return LiteralNode;
72
+ }(Node_1.Node));
73
+ exports.LiteralNode = LiteralNode;
74
+ //# sourceMappingURL=LiteralNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiteralNode.js","sourceRoot":"","sources":["../../src/AST/LiteralNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,+BAA4B;AAE5B;IAA0C,+BAAI;IAC1C,qBACoB,KAAQ;QAD5B,YAGI,iBAAO,SACV;QAHmB,WAAK,GAAL,KAAK,CAAG;;IAG5B,CAAC;IAEY,8BAAQ,GAArB,UAAsB,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;gBACzD,sBAAO,IAAI,CAAC,KAAK,EAAC;;;KACrB;IACL,kBAAC;AAAD,CAAC,AAVD,CAA0C,WAAI,GAU7C;AAVY,kCAAW"}
@@ -0,0 +1,19 @@
1
+ import { Scope } from "../Scope";
2
+ import { DOM } from "../DOM";
3
+ import { Tag } from "../Tag";
4
+ import { TreeNode } from "../AST";
5
+ export declare abstract class Node implements TreeNode {
6
+ protected requiresPrep: boolean;
7
+ protected _isPreparationRequired: boolean;
8
+ protected childNodes: Node[];
9
+ protected nodeCache: {
10
+ [key: string]: Node[];
11
+ };
12
+ abstract evaluate(scope: Scope, dom: DOM, tag?: Tag): any;
13
+ isPreparationRequired(): boolean;
14
+ prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
15
+ protected _getChildNodes(): Node[];
16
+ getChildNodes(): Node[];
17
+ findChildrenByType<T = Node>(t: any): T[];
18
+ findChildrenByTypes<T = Node>(types: any[], cacheKey?: string): T[];
19
+ }