vsn 0.1.27 → 0.1.28

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 (232) hide show
  1. package/demo/demo.html +2 -0
  2. package/demo/vsn.js +1 -1
  3. package/dist/AST/ArithmeticAssignmentNode.d.ts +23 -0
  4. package/dist/AST/ArithmeticAssignmentNode.js +313 -0
  5. package/dist/AST/ArithmeticAssignmentNode.js.map +1 -0
  6. package/dist/AST/ArithmeticNode.d.ts +15 -0
  7. package/dist/AST/ArithmeticNode.js +114 -0
  8. package/dist/AST/ArithmeticNode.js.map +1 -0
  9. package/dist/AST/ArrayNode.d.ts +14 -0
  10. package/dist/AST/ArrayNode.js +114 -0
  11. package/dist/AST/ArrayNode.js.map +1 -0
  12. package/dist/AST/BlockNode.d.ts +11 -0
  13. package/dist/AST/BlockNode.js +98 -0
  14. package/dist/AST/BlockNode.js.map +1 -0
  15. package/dist/AST/BooleanLiteralNode.d.ts +5 -0
  16. package/dist/{Model/Collection.js → AST/BooleanLiteralNode.js} +12 -18
  17. package/dist/AST/BooleanLiteralNode.js.map +1 -0
  18. package/dist/AST/ComparisonNode.d.ts +15 -0
  19. package/dist/AST/ComparisonNode.js +120 -0
  20. package/dist/AST/ComparisonNode.js.map +1 -0
  21. package/dist/AST/ConditionalNode.d.ts +13 -0
  22. package/dist/AST/ConditionalNode.js +95 -0
  23. package/dist/AST/ConditionalNode.js.map +1 -0
  24. package/dist/AST/ElementAttributeNode.d.ts +18 -0
  25. package/dist/AST/ElementAttributeNode.js +159 -0
  26. package/dist/AST/ElementAttributeNode.js.map +1 -0
  27. package/dist/AST/ElementQueryNode.d.ts +12 -0
  28. package/dist/AST/ElementQueryNode.js +111 -0
  29. package/dist/AST/ElementQueryNode.js.map +1 -0
  30. package/dist/AST/ElementStyleNode.d.ts +18 -0
  31. package/dist/AST/ElementStyleNode.js +159 -0
  32. package/dist/AST/ElementStyleNode.js.map +1 -0
  33. package/dist/AST/ForStatementNode.d.ts +17 -0
  34. package/dist/AST/ForStatementNode.js +121 -0
  35. package/dist/AST/ForStatementNode.js.map +1 -0
  36. package/dist/AST/FunctionArgumentNode.d.ts +11 -0
  37. package/dist/AST/FunctionArgumentNode.js +100 -0
  38. package/dist/AST/FunctionArgumentNode.js.map +1 -0
  39. package/dist/AST/FunctionCallNode.d.ts +13 -0
  40. package/dist/AST/FunctionCallNode.js +102 -0
  41. package/dist/AST/FunctionCallNode.js.map +1 -0
  42. package/dist/AST/IfStatementNode.d.ts +14 -0
  43. package/dist/AST/IfStatementNode.js +128 -0
  44. package/dist/AST/IfStatementNode.js.map +1 -0
  45. package/dist/AST/InNode.d.ts +15 -0
  46. package/dist/AST/InNode.js +107 -0
  47. package/dist/AST/InNode.js.map +1 -0
  48. package/dist/AST/IndexNode.d.ts +16 -0
  49. package/dist/AST/IndexNode.js +126 -0
  50. package/dist/AST/IndexNode.js.map +1 -0
  51. package/dist/AST/LiteralNode.d.ts +10 -0
  52. package/dist/AST/LiteralNode.js +74 -0
  53. package/dist/AST/LiteralNode.js.map +1 -0
  54. package/dist/AST/Node.d.ts +19 -0
  55. package/dist/AST/Node.js +117 -0
  56. package/dist/AST/Node.js.map +1 -0
  57. package/dist/AST/NotNode.d.ts +12 -0
  58. package/dist/AST/NotNode.js +103 -0
  59. package/dist/AST/NotNode.js.map +1 -0
  60. package/dist/AST/NumberLiteralNode.d.ts +5 -0
  61. package/dist/{Model/fields/EmailField.js → AST/NumberLiteralNode.js} +17 -17
  62. package/dist/AST/NumberLiteralNode.js.map +1 -0
  63. package/dist/AST/ObjectNode.d.ts +14 -0
  64. package/dist/AST/ObjectNode.js +131 -0
  65. package/dist/AST/ObjectNode.js.map +1 -0
  66. package/dist/AST/RootScopeMemberNode.d.ts +11 -0
  67. package/dist/AST/RootScopeMemberNode.js +87 -0
  68. package/dist/AST/RootScopeMemberNode.js.map +1 -0
  69. package/dist/AST/ScopeMemberNode.d.ts +12 -0
  70. package/dist/AST/ScopeMemberNode.js +128 -0
  71. package/dist/AST/ScopeMemberNode.js.map +1 -0
  72. package/dist/AST/UnitLiteralNode.d.ts +15 -0
  73. package/dist/AST/UnitLiteralNode.js +72 -0
  74. package/dist/AST/UnitLiteralNode.js.map +1 -0
  75. package/dist/AST.d.ts +7 -60
  76. package/dist/AST.js +74 -1493
  77. package/dist/AST.js.map +1 -1
  78. package/dist/Controller.d.ts +4 -2
  79. package/dist/Controller.js +10 -2
  80. package/dist/Controller.js.map +1 -1
  81. package/dist/EventDispatcher.d.ts +4 -1
  82. package/dist/EventDispatcher.js +27 -12
  83. package/dist/EventDispatcher.js.map +1 -1
  84. package/dist/Model/Field.d.ts +8 -0
  85. package/dist/Model/{fields/StringField.js → Field.js} +19 -24
  86. package/dist/Model/Field.js.map +1 -0
  87. package/dist/Model.d.ts +4 -3
  88. package/dist/Model.js +6 -17
  89. package/dist/Model.js.map +1 -1
  90. package/dist/Registry.d.ts +3 -0
  91. package/dist/Registry.js +11 -0
  92. package/dist/Registry.js.map +1 -1
  93. package/dist/Scope/DynamicScopeData.d.ts +6 -0
  94. package/dist/{Model/DataModel.js → Scope/DynamicScopeData.js} +17 -17
  95. package/dist/Scope/DynamicScopeData.js.map +1 -0
  96. package/dist/Scope/QueryReference.d.ts +10 -0
  97. package/dist/Scope/QueryReference.js +103 -0
  98. package/dist/Scope/QueryReference.js.map +1 -0
  99. package/dist/Scope/ScopeData.d.ts +4 -0
  100. package/dist/Scope/ScopeData.js +40 -0
  101. package/dist/Scope/ScopeData.js.map +1 -0
  102. package/dist/Scope/ScopeDataAbstract.d.ts +22 -0
  103. package/dist/Scope/ScopeDataAbstract.js +137 -0
  104. package/dist/Scope/ScopeDataAbstract.js.map +1 -0
  105. package/dist/Scope/ScopeReference.d.ts +10 -0
  106. package/dist/Scope/ScopeReference.js +73 -0
  107. package/dist/Scope/ScopeReference.js.map +1 -0
  108. package/dist/Scope/ScopedVariableType.d.ts +6 -0
  109. package/dist/Scope/ScopedVariableType.js +14 -0
  110. package/dist/Scope/ScopedVariableType.js.map +1 -0
  111. package/dist/Scope/WrappedArray.d.ts +16 -0
  112. package/dist/Scope/WrappedArray.js +121 -0
  113. package/dist/Scope/WrappedArray.js.map +1 -0
  114. package/dist/Scope/properties/Property.d.ts +18 -0
  115. package/dist/Scope/properties/Property.js +93 -0
  116. package/dist/Scope/properties/Property.js.map +1 -0
  117. package/dist/Scope.d.ts +4 -45
  118. package/dist/Scope.js +31 -266
  119. package/dist/Scope.js.map +1 -1
  120. package/dist/SimplePromise.d.ts +2 -2
  121. package/dist/SimplePromise.js.map +1 -1
  122. package/dist/Tag.js +1 -1
  123. package/dist/Tag.js.map +1 -1
  124. package/dist/Types.d.ts +1 -0
  125. package/dist/Types.js +8 -1
  126. package/dist/Types.js.map +1 -1
  127. package/dist/Validators.d.ts +7 -0
  128. package/dist/Validators.js +54 -0
  129. package/dist/Validators.js.map +1 -0
  130. package/dist/attributes/Bind.js.map +1 -1
  131. package/dist/attributes/JSONAttribute.js.map +1 -1
  132. package/dist/attributes/List.js +4 -4
  133. package/dist/attributes/List.js.map +1 -1
  134. package/dist/attributes/Radio.js.map +1 -1
  135. package/dist/attributes/SetAttribute.js.map +1 -1
  136. package/dist/attributes/StyleAttribute.js.map +1 -1
  137. package/dist/vsn.d.ts +4 -1
  138. package/dist/vsn.js +14 -9
  139. package/dist/vsn.js.map +1 -1
  140. package/package.json +1 -1
  141. package/src/AST/ArithmeticAssignmentNode.ts +236 -0
  142. package/src/AST/ArithmeticNode.ts +52 -0
  143. package/src/AST/ArrayNode.ts +39 -0
  144. package/src/AST/BlockNode.ts +25 -0
  145. package/src/AST/BooleanLiteralNode.ts +10 -0
  146. package/src/AST/ComparisonNode.ts +57 -0
  147. package/src/AST/ConditionalNode.ts +36 -0
  148. package/src/AST/ElementAttributeNode.ts +63 -0
  149. package/src/AST/ElementQueryNode.ts +25 -0
  150. package/src/AST/ElementStyleNode.ts +63 -0
  151. package/src/AST/ForStatementNode.ts +59 -0
  152. package/src/AST/FunctionArgumentNode.ts +27 -0
  153. package/src/AST/FunctionCallNode.ts +32 -0
  154. package/src/AST/IfStatementNode.ts +67 -0
  155. package/src/AST/InNode.ts +46 -0
  156. package/src/AST/IndexNode.ts +61 -0
  157. package/src/AST/LiteralNode.ts +17 -0
  158. package/src/AST/Node.ts +71 -0
  159. package/src/AST/NotNode.ts +41 -0
  160. package/src/AST/NumberLiteralNode.ts +14 -0
  161. package/src/AST/ObjectNode.ts +55 -0
  162. package/src/AST/RootScopeMemberNode.ts +25 -0
  163. package/src/AST/ScopeMemberNode.ts +53 -0
  164. package/src/AST/UnitLiteralNode.ts +51 -0
  165. package/src/AST.ts +33 -1093
  166. package/src/Controller.ts +10 -2
  167. package/src/EventDispatcher.ts +29 -12
  168. package/src/Model/Field.ts +20 -0
  169. package/src/Model.ts +7 -21
  170. package/src/Registry.ts +10 -0
  171. package/src/Scope/DynamicScopeData.ts +29 -0
  172. package/src/Scope/QueryReference.ts +29 -0
  173. package/src/Scope/ScopeData.ts +21 -0
  174. package/src/Scope/ScopeDataAbstract.ts +126 -0
  175. package/src/Scope/ScopeReference.ts +30 -0
  176. package/src/Scope/ScopedVariableType.ts +7 -0
  177. package/src/Scope/WrappedArray.ts +88 -0
  178. package/src/Scope/properties/Property.ts +79 -0
  179. package/src/Scope.ts +28 -193
  180. package/src/SimplePromise.ts +2 -2
  181. package/src/Tag.ts +1 -1
  182. package/src/Types.ts +6 -1
  183. package/src/Validators.ts +45 -0
  184. package/src/attributes/Bind.ts +2 -1
  185. package/src/attributes/JSONAttribute.ts +2 -1
  186. package/src/attributes/List.ts +1 -1
  187. package/src/attributes/Radio.ts +2 -1
  188. package/src/attributes/ScopeChange.ts +1 -1
  189. package/src/attributes/SetAttribute.ts +2 -1
  190. package/src/attributes/StyleAttribute.ts +2 -1
  191. package/src/attributes/TypeAttribute.ts +1 -1
  192. package/src/vsn.ts +9 -4
  193. package/test/AST/ArithmeticAssignmentNode.spec.ts +47 -0
  194. package/test/AST.spec.ts +2 -2
  195. package/test/Controller.spec.ts +44 -0
  196. package/test/Model/DataModel.spec.ts +0 -141
  197. package/test/Scope/DynamicScopeData.spec.ts +141 -0
  198. package/test/Scope.spec.ts +13 -1
  199. package/test/Tag/TagList.spec.ts +1 -1
  200. package/dist/Model/Collection.d.ts +0 -5
  201. package/dist/Model/Collection.js.map +0 -1
  202. package/dist/Model/DataModel.d.ts +0 -6
  203. package/dist/Model/DataModel.js.map +0 -1
  204. package/dist/Model/ModelAbstract.d.ts +0 -20
  205. package/dist/Model/ModelAbstract.js +0 -122
  206. package/dist/Model/ModelAbstract.js.map +0 -1
  207. package/dist/Model/fields/BooleanField.d.ts +0 -5
  208. package/dist/Model/fields/BooleanField.js +0 -43
  209. package/dist/Model/fields/BooleanField.js.map +0 -1
  210. package/dist/Model/fields/EmailField.d.ts +0 -5
  211. package/dist/Model/fields/EmailField.js.map +0 -1
  212. package/dist/Model/fields/Field.d.ts +0 -13
  213. package/dist/Model/fields/Field.js +0 -79
  214. package/dist/Model/fields/Field.js.map +0 -1
  215. package/dist/Model/fields/FloatField.d.ts +0 -5
  216. package/dist/Model/fields/FloatField.js +0 -47
  217. package/dist/Model/fields/FloatField.js.map +0 -1
  218. package/dist/Model/fields/PositiveNumberField.d.ts +0 -5
  219. package/dist/Model/fields/PositiveNumberField.js +0 -51
  220. package/dist/Model/fields/PositiveNumberField.js.map +0 -1
  221. package/dist/Model/fields/StringField.d.ts +0 -5
  222. package/dist/Model/fields/StringField.js.map +0 -1
  223. package/src/Model/Collection.ts +0 -13
  224. package/src/Model/DataModel.ts +0 -29
  225. package/src/Model/ModelAbstract.ts +0 -114
  226. package/src/Model/fields/BooleanField.ts +0 -16
  227. package/src/Model/fields/EmailField.ts +0 -12
  228. package/src/Model/fields/Field.ts +0 -65
  229. package/src/Model/fields/FloatField.ts +0 -22
  230. package/src/Model/fields/PositiveNumberField.ts +0 -24
  231. package/src/Model/fields/StringField.ts +0 -16
  232. package/test/Model.spec.ts +0 -306
@@ -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":"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"}
@@ -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
+ }