vsn 0.1.27 → 0.1.30

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 (244) hide show
  1. package/demo/vsn.js +1 -1
  2. package/dist/AST/ArithmeticAssignmentNode.d.ts +23 -0
  3. package/dist/AST/ArithmeticAssignmentNode.js +324 -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/{Model/Collection.js → AST/BooleanLiteralNode.js} +12 -18
  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 +13 -0
  27. package/dist/AST/ElementQueryNode.js +116 -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/{Model/fields/EmailField.js → AST/NumberLiteralNode.js} +17 -17
  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 +134 -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 +74 -1493
  76. package/dist/AST.js.map +1 -1
  77. package/dist/Controller.d.ts +4 -2
  78. package/dist/Controller.js +10 -2
  79. package/dist/Controller.js.map +1 -1
  80. package/dist/EventDispatcher.d.ts +4 -1
  81. package/dist/EventDispatcher.js +27 -12
  82. package/dist/EventDispatcher.js.map +1 -1
  83. package/dist/MessageList.d.ts +2 -1
  84. package/dist/MessageList.js +9 -1
  85. package/dist/MessageList.js.map +1 -1
  86. package/dist/Model/Field.d.ts +8 -0
  87. package/dist/Model/{fields/StringField.js → Field.js} +19 -24
  88. package/dist/Model/Field.js.map +1 -0
  89. package/dist/Model.d.ts +5 -4
  90. package/dist/Model.js +7 -18
  91. package/dist/Model.js.map +1 -1
  92. package/dist/Registry.d.ts +3 -0
  93. package/dist/Registry.js +11 -0
  94. package/dist/Registry.js.map +1 -1
  95. package/dist/Scope/DynamicScopeData.d.ts +6 -0
  96. package/dist/{Model/DataModel.js → Scope/DynamicScopeData.js} +15 -17
  97. package/dist/Scope/DynamicScopeData.js.map +1 -0
  98. package/dist/Scope/QueryReference.d.ts +10 -0
  99. package/dist/Scope/QueryReference.js +103 -0
  100. package/dist/Scope/QueryReference.js.map +1 -0
  101. package/dist/Scope/ScopeData.d.ts +4 -0
  102. package/dist/Scope/ScopeData.js +40 -0
  103. package/dist/Scope/ScopeData.js.map +1 -0
  104. package/dist/Scope/ScopeDataAbstract.d.ts +22 -0
  105. package/dist/Scope/ScopeDataAbstract.js +138 -0
  106. package/dist/Scope/ScopeDataAbstract.js.map +1 -0
  107. package/dist/Scope/ScopeReference.d.ts +10 -0
  108. package/dist/Scope/ScopeReference.js +73 -0
  109. package/dist/Scope/ScopeReference.js.map +1 -0
  110. package/dist/Scope/ScopedVariableType.d.ts +6 -0
  111. package/dist/Scope/ScopedVariableType.js +14 -0
  112. package/dist/Scope/ScopedVariableType.js.map +1 -0
  113. package/dist/Scope/WrappedArray.d.ts +16 -0
  114. package/dist/Scope/WrappedArray.js +121 -0
  115. package/dist/Scope/WrappedArray.js.map +1 -0
  116. package/dist/Scope/properties/Property.d.ts +18 -0
  117. package/dist/Scope/properties/Property.js +93 -0
  118. package/dist/Scope/properties/Property.js.map +1 -0
  119. package/dist/Scope.d.ts +4 -45
  120. package/dist/Scope.js +31 -266
  121. package/dist/Scope.js.map +1 -1
  122. package/dist/SimplePromise.d.ts +2 -2
  123. package/dist/SimplePromise.js.map +1 -1
  124. package/dist/Tag/List.d.ts +2 -2
  125. package/dist/Tag/List.js +14 -6
  126. package/dist/Tag/List.js.map +1 -1
  127. package/dist/Tag.js +1 -1
  128. package/dist/Tag.js.map +1 -1
  129. package/dist/Types.d.ts +1 -0
  130. package/dist/Types.js +8 -2
  131. package/dist/Types.js.map +1 -1
  132. package/dist/Validators.d.ts +7 -0
  133. package/dist/Validators.js +54 -0
  134. package/dist/Validators.js.map +1 -0
  135. package/dist/attributes/Bind.js +1 -1
  136. package/dist/attributes/Bind.js.map +1 -1
  137. package/dist/attributes/ClassConstructor.d.ts +1 -0
  138. package/dist/attributes/ClassConstructor.js +1 -1
  139. package/dist/attributes/ClassConstructor.js.map +1 -1
  140. package/dist/attributes/JSONAttribute.js.map +1 -1
  141. package/dist/attributes/List.js +4 -4
  142. package/dist/attributes/List.js.map +1 -1
  143. package/dist/attributes/Radio.js.map +1 -1
  144. package/dist/attributes/SetAttribute.js.map +1 -1
  145. package/dist/attributes/StyleAttribute.js.map +1 -1
  146. package/dist/vsn.d.ts +9 -1
  147. package/dist/vsn.js +24 -9
  148. package/dist/vsn.js.map +1 -1
  149. package/package.json +1 -1
  150. package/src/AST/ArithmeticAssignmentNode.ts +243 -0
  151. package/src/AST/ArithmeticNode.ts +52 -0
  152. package/src/AST/ArrayNode.ts +39 -0
  153. package/src/AST/BlockNode.ts +25 -0
  154. package/src/AST/BooleanLiteralNode.ts +10 -0
  155. package/src/AST/ComparisonNode.ts +57 -0
  156. package/src/AST/ConditionalNode.ts +36 -0
  157. package/src/AST/ElementAttributeNode.ts +63 -0
  158. package/src/AST/ElementQueryNode.ts +27 -0
  159. package/src/AST/ElementStyleNode.ts +63 -0
  160. package/src/AST/ForStatementNode.ts +59 -0
  161. package/src/AST/FunctionArgumentNode.ts +27 -0
  162. package/src/AST/FunctionCallNode.ts +32 -0
  163. package/src/AST/IfStatementNode.ts +67 -0
  164. package/src/AST/InNode.ts +46 -0
  165. package/src/AST/IndexNode.ts +61 -0
  166. package/src/AST/LiteralNode.ts +17 -0
  167. package/src/AST/Node.ts +71 -0
  168. package/src/AST/NotNode.ts +41 -0
  169. package/src/AST/NumberLiteralNode.ts +14 -0
  170. package/src/AST/ObjectNode.ts +55 -0
  171. package/src/AST/RootScopeMemberNode.ts +25 -0
  172. package/src/AST/ScopeMemberNode.ts +58 -0
  173. package/src/AST/UnitLiteralNode.ts +51 -0
  174. package/src/AST.ts +34 -1094
  175. package/src/Controller.ts +10 -2
  176. package/src/EventDispatcher.ts +29 -12
  177. package/src/MessageList.ts +5 -1
  178. package/src/Model/Field.ts +20 -0
  179. package/src/Model.ts +8 -22
  180. package/src/Registry.ts +10 -0
  181. package/src/{Model/DataModel.ts → Scope/DynamicScopeData.ts} +8 -10
  182. package/src/Scope/QueryReference.ts +29 -0
  183. package/src/Scope/ScopeData.ts +21 -0
  184. package/src/Scope/ScopeDataAbstract.ts +127 -0
  185. package/src/Scope/ScopeReference.ts +30 -0
  186. package/src/Scope/ScopedVariableType.ts +7 -0
  187. package/src/Scope/WrappedArray.ts +88 -0
  188. package/src/Scope/properties/Property.ts +79 -0
  189. package/src/Scope.ts +28 -194
  190. package/src/SimplePromise.ts +2 -2
  191. package/src/Tag/List.ts +4 -4
  192. package/src/Tag.ts +1 -1
  193. package/src/Types.ts +7 -2
  194. package/src/Validators.ts +45 -0
  195. package/src/attributes/Bind.ts +3 -3
  196. package/src/attributes/ClassConstructor.ts +2 -1
  197. package/src/attributes/JSONAttribute.ts +2 -1
  198. package/src/attributes/List.ts +1 -1
  199. package/src/attributes/Radio.ts +2 -1
  200. package/src/attributes/ScopeChange.ts +1 -1
  201. package/src/attributes/SetAttribute.ts +2 -1
  202. package/src/attributes/StyleAttribute.ts +2 -1
  203. package/src/attributes/TypeAttribute.ts +1 -1
  204. package/src/vsn.ts +14 -4
  205. package/test/AST/ArithmeticAssignmentNode.spec.ts +47 -0
  206. package/test/AST.spec.ts +2 -2
  207. package/test/Controller.spec.ts +44 -0
  208. package/test/MessageList.spec.ts +1 -1
  209. package/test/Model/DataModel.spec.ts +0 -141
  210. package/test/Scope/DynamicScopeData.spec.ts +141 -0
  211. package/test/Scope.spec.ts +13 -1
  212. package/test/Tag/TagList.spec.ts +1 -1
  213. package/dist/Model/Collection.d.ts +0 -5
  214. package/dist/Model/Collection.js.map +0 -1
  215. package/dist/Model/DataModel.d.ts +0 -6
  216. package/dist/Model/DataModel.js.map +0 -1
  217. package/dist/Model/ModelAbstract.d.ts +0 -20
  218. package/dist/Model/ModelAbstract.js +0 -122
  219. package/dist/Model/ModelAbstract.js.map +0 -1
  220. package/dist/Model/fields/BooleanField.d.ts +0 -5
  221. package/dist/Model/fields/BooleanField.js +0 -43
  222. package/dist/Model/fields/BooleanField.js.map +0 -1
  223. package/dist/Model/fields/EmailField.d.ts +0 -5
  224. package/dist/Model/fields/EmailField.js.map +0 -1
  225. package/dist/Model/fields/Field.d.ts +0 -13
  226. package/dist/Model/fields/Field.js +0 -79
  227. package/dist/Model/fields/Field.js.map +0 -1
  228. package/dist/Model/fields/FloatField.d.ts +0 -5
  229. package/dist/Model/fields/FloatField.js +0 -47
  230. package/dist/Model/fields/FloatField.js.map +0 -1
  231. package/dist/Model/fields/PositiveNumberField.d.ts +0 -5
  232. package/dist/Model/fields/PositiveNumberField.js +0 -51
  233. package/dist/Model/fields/PositiveNumberField.js.map +0 -1
  234. package/dist/Model/fields/StringField.d.ts +0 -5
  235. package/dist/Model/fields/StringField.js.map +0 -1
  236. package/src/Model/Collection.ts +0 -13
  237. package/src/Model/ModelAbstract.ts +0 -114
  238. package/src/Model/fields/BooleanField.ts +0 -16
  239. package/src/Model/fields/EmailField.ts +0 -12
  240. package/src/Model/fields/Field.ts +0 -65
  241. package/src/Model/fields/FloatField.ts +0 -22
  242. package/src/Model/fields/PositiveNumberField.ts +0 -24
  243. package/src/Model/fields/StringField.ts +0 -16
  244. package/test/Model.spec.ts +0 -306
@@ -0,0 +1,134 @@
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.ScopeMemberNode = void 0;
55
+ var Scope_1 = require("../Scope");
56
+ var List_1 = require("../Tag/List");
57
+ var DOMObject_1 = require("../DOM/DOMObject");
58
+ var Node_1 = require("./Node");
59
+ var ElementQueryNode_1 = require("./ElementQueryNode");
60
+ var ScopeMemberNode = /** @class */ (function (_super) {
61
+ __extends(ScopeMemberNode, _super);
62
+ function ScopeMemberNode(scope, name) {
63
+ var _this = _super.call(this) || this;
64
+ _this.scope = scope;
65
+ _this.name = name;
66
+ return _this;
67
+ }
68
+ ScopeMemberNode.prototype._getChildNodes = function () {
69
+ return [
70
+ this.scope,
71
+ this.name
72
+ ];
73
+ };
74
+ ScopeMemberNode.prototype.evaluate = function (scope, dom, tag) {
75
+ if (tag === void 0) { tag = null; }
76
+ return __awaiter(this, void 0, void 0, function () {
77
+ var scopes, values, elements, evalScope, _i, scopes_1, parent_1, _a, _b, name_1, value;
78
+ return __generator(this, function (_c) {
79
+ switch (_c.label) {
80
+ case 0:
81
+ scopes = [];
82
+ values = [];
83
+ if (!(this.scope instanceof ElementQueryNode_1.ElementQueryNode)) return [3 /*break*/, 2];
84
+ return [4 /*yield*/, this.scope.evaluate(scope, dom, tag)];
85
+ case 1:
86
+ elements = _c.sent();
87
+ if (this.scope.first) {
88
+ scopes.push(elements);
89
+ }
90
+ else {
91
+ scopes = elements;
92
+ }
93
+ return [3 /*break*/, 4];
94
+ case 2: return [4 /*yield*/, this.scope.evaluate(scope, dom, tag)];
95
+ case 3:
96
+ evalScope = _c.sent();
97
+ if (evalScope instanceof List_1.TagList) {
98
+ scopes = evalScope;
99
+ }
100
+ else {
101
+ scopes.push(evalScope);
102
+ }
103
+ _c.label = 4;
104
+ case 4:
105
+ _i = 0, scopes_1 = scopes;
106
+ _c.label = 5;
107
+ case 5:
108
+ if (!(_i < scopes_1.length)) return [3 /*break*/, 10];
109
+ parent_1 = scopes_1[_i];
110
+ if (parent_1 instanceof DOMObject_1.DOMObject)
111
+ parent_1 = parent_1.scope;
112
+ if (!!parent_1) return [3 /*break*/, 7];
113
+ _a = Error;
114
+ _b = "Cannot access \"";
115
+ return [4 /*yield*/, this.name.evaluate(scope, dom, tag)];
116
+ case 6: throw _a.apply(void 0, [_b + (_c.sent()) + "\" of undefined."]);
117
+ case 7: return [4 /*yield*/, this.name.evaluate(scope, dom, tag)];
118
+ case 8:
119
+ name_1 = _c.sent();
120
+ value = parent_1.get(name_1, false);
121
+ values.push(value instanceof Scope_1.Scope && value.wrapped || value);
122
+ _c.label = 9;
123
+ case 9:
124
+ _i++;
125
+ return [3 /*break*/, 5];
126
+ case 10: return [2 /*return*/, values.length === 1 ? values[0] : values];
127
+ }
128
+ });
129
+ });
130
+ };
131
+ return ScopeMemberNode;
132
+ }(Node_1.Node));
133
+ exports.ScopeMemberNode = ScopeMemberNode;
134
+ //# sourceMappingURL=ScopeMemberNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeMemberNode.js","sourceRoot":"","sources":["../../src/AST/ScopeMemberNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAA+B;AAG/B,oCAAoC;AACpC,8CAA2C;AAE3C,+BAA4B;AAC5B,uDAAoD;AAEpD;IAAqC,mCAAI;IACrC,yBACoB,KAAsB,EACtB,IAAsB;QAF1C,YAII,iBAAO,SACV;QAJmB,WAAK,GAAL,KAAK,CAAiB;QACtB,UAAI,GAAJ,IAAI,CAAkB;;IAG1C,CAAC;IAES,wCAAc,GAAxB;QACI,OAAO;YACH,IAAI,CAAC,KAAa;YAClB,IAAI,CAAC,IAAY;SACpB,CAAA;IACL,CAAC;IAEK,kCAAQ,GAAd,UAAe,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;wBAC9C,MAAM,GAAG,EAAE,CAAC;wBACV,MAAM,GAAG,EAAE,CAAC;6BAEd,CAAA,IAAI,CAAC,KAAK,YAAY,mCAAgB,CAAA,EAAtC,wBAAsC;wBACrB,qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAArD,QAAQ,GAAG,SAA0C;wBAC3D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;4BAClB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;yBACzB;6BAAM;4BACH,MAAM,GAAG,QAAQ,CAAC;yBACrB;;4BAEiB,qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAAtD,SAAS,GAAG,SAA0C;wBAC5D,IAAI,SAAS,YAAY,cAAO,EAAE;4BAC9B,MAAM,GAAG,SAAS,CAAC;yBACtB;6BAAM;4BACH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;yBAC1B;;;8BAGoB,EAAN,iBAAM;;;6BAAN,CAAA,oBAAM,CAAA;wBAApB;wBACD,IAAI,QAAM,YAAY,qBAAS;4BAC3B,QAAM,GAAG,QAAM,CAAC,KAAK,CAAC;6BAEtB,CAAC,QAAM,EAAP,wBAAO;wBACD,KAAA,KAAK,CAAA;;wBAAmB,qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;4BAAvE,MAAM,kBAAM,MAAkB,SAAyC,sBAAiB,EAAC,CAAC;4BAEjF,qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAAhD,SAAO,SAAyC;wBAChD,KAAK,GAAQ,QAAM,CAAC,GAAG,CAAC,MAAI,EAAE,KAAK,CAAC,CAAC;wBAC3C,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,aAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;;;wBAT/C,IAAM,CAAA;;6BAWzB,sBAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC;;;;KACnD;IACL,sBAAC;AAAD,CAAC,AAhDD,CAAqC,WAAI,GAgDxC;AAhDY,0CAAe"}
@@ -0,0 +1,15 @@
1
+ import { LiteralNode } from "./LiteralNode";
2
+ export declare class UnitLiteral {
3
+ protected _value: any;
4
+ protected _amount: number;
5
+ protected _unit: string;
6
+ constructor(_value: any);
7
+ get amount(): number;
8
+ get unit(): string;
9
+ get value(): string;
10
+ set value(value: string);
11
+ toString(): string;
12
+ }
13
+ export declare class UnitLiteralNode extends LiteralNode<UnitLiteral> {
14
+ constructor(_value: any);
15
+ }
@@ -0,0 +1,72 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.UnitLiteralNode = exports.UnitLiteral = void 0;
19
+ var LiteralNode_1 = require("./LiteralNode");
20
+ var UnitLiteral = /** @class */ (function () {
21
+ function UnitLiteral(_value) {
22
+ this._value = _value;
23
+ this.value = this._value;
24
+ }
25
+ Object.defineProperty(UnitLiteral.prototype, "amount", {
26
+ get: function () {
27
+ return this._amount;
28
+ },
29
+ enumerable: false,
30
+ configurable: true
31
+ });
32
+ Object.defineProperty(UnitLiteral.prototype, "unit", {
33
+ get: function () {
34
+ return this._unit;
35
+ },
36
+ enumerable: false,
37
+ configurable: true
38
+ });
39
+ Object.defineProperty(UnitLiteral.prototype, "value", {
40
+ get: function () {
41
+ return "" + this._amount + this._unit;
42
+ },
43
+ set: function (value) {
44
+ if (value.indexOf('.') > -1) {
45
+ this._amount = parseFloat(value);
46
+ }
47
+ else {
48
+ this._amount = parseInt(value);
49
+ }
50
+ if (isNaN(this._amount))
51
+ this._amount = 0;
52
+ var unit = /[^\d.]+$/.exec(value);
53
+ this._unit = unit && unit[0] || '';
54
+ },
55
+ enumerable: false,
56
+ configurable: true
57
+ });
58
+ UnitLiteral.prototype.toString = function () {
59
+ return this.value;
60
+ };
61
+ return UnitLiteral;
62
+ }());
63
+ exports.UnitLiteral = UnitLiteral;
64
+ var UnitLiteralNode = /** @class */ (function (_super) {
65
+ __extends(UnitLiteralNode, _super);
66
+ function UnitLiteralNode(_value) {
67
+ return _super.call(this, new UnitLiteral(_value)) || this;
68
+ }
69
+ return UnitLiteralNode;
70
+ }(LiteralNode_1.LiteralNode));
71
+ exports.UnitLiteralNode = UnitLiteralNode;
72
+ //# sourceMappingURL=UnitLiteralNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnitLiteralNode.js","sourceRoot":"","sources":["../../src/AST/UnitLiteralNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,6CAA0C;AAE1C;IAII,qBACc,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;QAErB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,sBAAI,+BAAM;aAAV;YACI,OAAO,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;;;OAAA;IAED,sBAAI,6BAAI;aAAR;YACI,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;;;OAAA;IAED,sBAAI,8BAAK;aAAT;YACI,OAAO,KAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAO,CAAC;QAC1C,CAAC;aAED,UAAU,KAAa;YACnB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;aACnC;iBAAM;gBACH,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;aAClC;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;gBACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YAErB,IAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,CAAC;;;OAdA;IAgBM,8BAAQ,GAAf;QACI,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACL,kBAAC;AAAD,CAAC,AAvCD,IAuCC;AAvCY,kCAAW;AA0CxB;IAAqC,mCAAwB;IACzD,yBACI,MAAW;eAEX,kBAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACL,sBAAC;AAAD,CAAC,AAND,CAAqC,yBAAW,GAM/C;AANY,0CAAe"}
package/dist/AST.d.ts CHANGED
@@ -1,7 +1,11 @@
1
1
  import { Scope } from "./Scope";
2
2
  import { DOM } from "./DOM";
3
- import { TagList } from "./Tag/List";
4
3
  import { Tag } from "./Tag";
4
+ import { RootScopeMemberNode } from "./AST/RootScopeMemberNode";
5
+ import { ScopeMemberNode } from "./AST/ScopeMemberNode";
6
+ import { ElementAttributeNode } from "./AST/ElementAttributeNode";
7
+ import { Node } from "./AST/Node";
8
+ import { BlockNode } from "./AST/BlockNode";
5
9
  export interface Token {
6
10
  type: TokenType;
7
11
  value: string;
@@ -72,63 +76,6 @@ export interface TreeNode<T = any> {
72
76
  evaluate(scope: Scope, dom: DOM, tag?: Tag): any;
73
77
  prepare(scope: Scope, dom: DOM, tag?: Tag): any;
74
78
  }
75
- export declare abstract class Node implements TreeNode {
76
- protected requiresPrep: boolean;
77
- protected _isPreparationRequired: boolean;
78
- protected childNodes: Node[];
79
- protected nodeCache: {
80
- [key: string]: Node[];
81
- };
82
- abstract evaluate(scope: Scope, dom: DOM, tag?: Tag): any;
83
- isPreparationRequired(): boolean;
84
- prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
85
- protected _getChildNodes(): Node[];
86
- getChildNodes(): Node[];
87
- findChildrenByType<T = Node>(t: any): T[];
88
- findChildrenByTypes<T = Node>(types: any[], cacheKey?: string): T[];
89
- }
90
- export declare class BlockNode extends Node implements TreeNode {
91
- readonly statements: Node[];
92
- constructor(statements: Node[]);
93
- protected _getChildNodes(): Node[];
94
- evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<any>;
95
- }
96
- declare class LiteralNode<T = any> extends Node implements TreeNode {
97
- readonly value: T;
98
- constructor(value: T);
99
- evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<T>;
100
- }
101
- declare class ScopeMemberNode extends Node implements TreeNode {
102
- readonly scope: TreeNode<Scope>;
103
- readonly name: TreeNode<string>;
104
- constructor(scope: TreeNode<Scope>, name: TreeNode<string>);
105
- protected _getChildNodes(): Node[];
106
- evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<any>;
107
- }
108
- declare class RootScopeMemberNode<T = any> extends Node implements TreeNode {
109
- readonly name: TreeNode<string>;
110
- constructor(name: TreeNode<string>);
111
- protected _getChildNodes(): Node[];
112
- evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<any>;
113
- }
114
- declare class ElementQueryNode extends Node implements TreeNode {
115
- readonly query: string;
116
- protected requiresPrep: boolean;
117
- constructor(query: string);
118
- evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<TagList>;
119
- prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
120
- }
121
- declare class ElementAttributeNode extends Node implements TreeNode {
122
- readonly elementRef: ElementQueryNode | null;
123
- readonly attr: string;
124
- protected requiresPrep: boolean;
125
- constructor(elementRef: ElementQueryNode | null, attr: string);
126
- get name(): LiteralNode<string>;
127
- protected _getChildNodes(): Node[];
128
- get attributeName(): string;
129
- evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<any>;
130
- prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
131
- }
132
79
  export interface IBlockInfo {
133
80
  type: BlockType;
134
81
  open: TokenType;
@@ -136,7 +83,7 @@ export interface IBlockInfo {
136
83
  openCharacter: string;
137
84
  closeCharacter: string;
138
85
  }
139
- export declare const AttributableNodes: (typeof ScopeMemberNode | typeof RootScopeMemberNode | typeof ElementAttributeNode)[];
86
+ export declare const AttributableNodes: (typeof RootScopeMemberNode | typeof ScopeMemberNode | typeof ElementAttributeNode)[];
140
87
  export declare class Tree {
141
88
  readonly code: string;
142
89
  protected static cache: {
@@ -157,5 +104,5 @@ export declare class Tree {
157
104
  static getBlockTokens(tokens: Token[], groupBy?: TokenType | null): Token[][];
158
105
  static getTokensUntil(tokens: Token[], terminator?: TokenType, consumeTerminator?: boolean, includeTerminator?: boolean, validIfTerminatorNotFound?: boolean, blockInfo?: IBlockInfo): Token[];
159
106
  static consumeTypes(tokens: Token[], types: TokenType[]): Token[];
107
+ static apply(code: string, scope: Scope, dom: DOM, tag: Tag): Promise<any>;
160
108
  }
161
- export {};