vsn 0.1.121 → 0.1.123

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.
@@ -23,6 +23,10 @@
23
23
 
24
24
  <a href="./xhr-response.html" vsn-xhr:put="@text = response" vsn-on:xhr-error="@text='error';wait(3);@text='Try Again'" id="link-put">Link</a>
25
25
 
26
+ <div id="html-container"></div>
27
+ <a href="./resources/xhr-html.html" vsn-xhr="#html-container.@html = response;?(#html-header).$color='yellow';" id="link-post">Link</a>
28
+
29
+
26
30
  <script type="text/javascript" src="vsn.js"></script>
27
31
  </body>
28
32
  </html>
@@ -6,7 +6,7 @@ import { Token, TokenType, TreeNode } from "../AST";
6
6
  import { Node } from "./Node";
7
7
  import { RootScopeMemberNode } from "./RootScopeMemberNode";
8
8
  import { ScopeMemberNode } from "./ScopeMemberNode";
9
- export declare class ArithmeticAssignmentNode extends Node implements TreeNode {
9
+ export declare class AssignmentNode extends Node implements TreeNode {
10
10
  readonly left: RootScopeMemberNode | ScopeMemberNode;
11
11
  readonly right: TreeNode;
12
12
  readonly type: TokenType;
@@ -20,5 +20,5 @@ export declare class ArithmeticAssignmentNode extends Node implements TreeNode {
20
20
  handleDOMObject(key: string, dom: DOM, scope: Scope, domObject: DOMObject, tag: Tag): Promise<any>;
21
21
  handleArray(key: any, left: any, right: any, scope: any): any;
22
22
  static match(tokens: Token[]): boolean;
23
- static parse(lastNode: any, token: any, tokens: Token[]): ArithmeticAssignmentNode;
23
+ static parse(lastNode: any, token: any, tokens: Token[]): AssignmentNode;
24
24
  }
@@ -51,7 +51,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
51
51
  }
52
52
  };
53
53
  Object.defineProperty(exports, "__esModule", { value: true });
54
- exports.ArithmeticAssignmentNode = void 0;
54
+ exports.AssignmentNode = void 0;
55
55
  var Scope_1 = require("../Scope");
56
56
  var DOMObject_1 = require("../DOM/DOMObject");
57
57
  var AST_1 = require("../AST");
@@ -63,22 +63,22 @@ var ElementAttributeNode_1 = require("./ElementAttributeNode");
63
63
  var ElementStyleNode_1 = require("./ElementStyleNode");
64
64
  var UnitLiteralNode_1 = require("./UnitLiteralNode");
65
65
  var ScopeObject_1 = require("../Scope/ScopeObject");
66
- var ArithmeticAssignmentNode = /** @class */ (function (_super) {
67
- __extends(ArithmeticAssignmentNode, _super);
68
- function ArithmeticAssignmentNode(left, right, type) {
66
+ var AssignmentNode = /** @class */ (function (_super) {
67
+ __extends(AssignmentNode, _super);
68
+ function AssignmentNode(left, right, type) {
69
69
  var _this = _super.call(this) || this;
70
70
  _this.left = left;
71
71
  _this.right = right;
72
72
  _this.type = type;
73
73
  return _this;
74
74
  }
75
- ArithmeticAssignmentNode.prototype._getChildNodes = function () {
75
+ AssignmentNode.prototype._getChildNodes = function () {
76
76
  return [
77
77
  this.left,
78
78
  this.right
79
79
  ];
80
80
  };
81
- ArithmeticAssignmentNode.prototype.evaluate = function (scope, dom, tag) {
81
+ AssignmentNode.prototype.evaluate = function (scope, dom, tag) {
82
82
  if (tag === void 0) { tag = null; }
83
83
  return __awaiter(this, void 0, void 0, function () {
84
84
  var scopes, name, inner, elements, values, _i, scopes_1, localScope, left, right;
@@ -133,6 +133,8 @@ var ArithmeticAssignmentNode = /** @class */ (function (_super) {
133
133
  case 7:
134
134
  if (!(_i < scopes_1.length)) return [3 /*break*/, 13];
135
135
  localScope = scopes_1[_i];
136
+ if (!localScope)
137
+ return [3 /*break*/, 12];
136
138
  if (!(localScope instanceof DOMObject_1.DOMObject)) return [3 /*break*/, 9];
137
139
  return [4 /*yield*/, this.handleDOMObject(name, dom, scope, localScope, tag)];
138
140
  case 8:
@@ -159,7 +161,7 @@ var ArithmeticAssignmentNode = /** @class */ (function (_super) {
159
161
  });
160
162
  });
161
163
  };
162
- ArithmeticAssignmentNode.prototype.handle = function (name, left, right, localScope) {
164
+ AssignmentNode.prototype.handle = function (name, left, right, localScope) {
163
165
  if (left instanceof Array) {
164
166
  left = this.handleArray(name, left, right, localScope);
165
167
  }
@@ -174,7 +176,7 @@ var ArithmeticAssignmentNode = /** @class */ (function (_super) {
174
176
  }
175
177
  return left;
176
178
  };
177
- ArithmeticAssignmentNode.prototype.handleNumber = function (key, left, right, scope) {
179
+ AssignmentNode.prototype.handleNumber = function (key, left, right, scope) {
178
180
  if (right !== null && !Number.isFinite(right))
179
181
  right = parseFloat("" + right);
180
182
  left = left;
@@ -199,7 +201,7 @@ var ArithmeticAssignmentNode = /** @class */ (function (_super) {
199
201
  scope.set(key, left);
200
202
  return left;
201
203
  };
202
- ArithmeticAssignmentNode.prototype.handleString = function (key, left, right, scope) {
204
+ AssignmentNode.prototype.handleString = function (key, left, right, scope) {
203
205
  switch (this.type) {
204
206
  case AST_1.TokenType.ASSIGN:
205
207
  left = right;
@@ -220,7 +222,7 @@ var ArithmeticAssignmentNode = /** @class */ (function (_super) {
220
222
  scope.set(key, left);
221
223
  return left;
222
224
  };
223
- ArithmeticAssignmentNode.prototype.handleUnit = function (key, left, right, scope) {
225
+ AssignmentNode.prototype.handleUnit = function (key, left, right, scope) {
224
226
  if (!(left instanceof UnitLiteralNode_1.UnitLiteral)) {
225
227
  left = new UnitLiteralNode_1.UnitLiteral(left);
226
228
  }
@@ -248,7 +250,7 @@ var ArithmeticAssignmentNode = /** @class */ (function (_super) {
248
250
  scope.set(key, left);
249
251
  return left;
250
252
  };
251
- ArithmeticAssignmentNode.prototype.handleDOMObject = function (key, dom, scope, domObject, tag) {
253
+ AssignmentNode.prototype.handleDOMObject = function (key, dom, scope, domObject, tag) {
252
254
  return __awaiter(this, void 0, void 0, function () {
253
255
  var left, right;
254
256
  return __generator(this, function (_a) {
@@ -263,7 +265,7 @@ var ArithmeticAssignmentNode = /** @class */ (function (_super) {
263
265
  });
264
266
  });
265
267
  };
266
- ArithmeticAssignmentNode.prototype.handleArray = function (key, left, right, scope) {
268
+ AssignmentNode.prototype.handleArray = function (key, left, right, scope) {
267
269
  if (!(right instanceof Array))
268
270
  right = [right];
269
271
  switch (this.type) {
@@ -302,7 +304,7 @@ var ArithmeticAssignmentNode = /** @class */ (function (_super) {
302
304
  scope.dispatch("change:" + key);
303
305
  return left;
304
306
  };
305
- ArithmeticAssignmentNode.match = function (tokens) {
307
+ AssignmentNode.match = function (tokens) {
306
308
  return [
307
309
  AST_1.TokenType.ASSIGN,
308
310
  AST_1.TokenType.ADD_ASSIGN,
@@ -312,7 +314,7 @@ var ArithmeticAssignmentNode = /** @class */ (function (_super) {
312
314
  AST_1.TokenType.TILDE,
313
315
  ].indexOf(tokens[0].type) > -1;
314
316
  };
315
- ArithmeticAssignmentNode.parse = function (lastNode, token, tokens) {
317
+ AssignmentNode.parse = function (lastNode, token, tokens) {
316
318
  if (!(lastNode instanceof RootScopeMemberNode_1.RootScopeMemberNode) && !(lastNode instanceof ScopeMemberNode_1.ScopeMemberNode) && !(lastNode instanceof ElementAttributeNode_1.ElementAttributeNode) && !(lastNode instanceof ElementStyleNode_1.ElementStyleNode)) {
317
319
  throw SyntaxError("Invalid assignment syntax near " + AST_1.Tree.toCode(tokens.splice(0, 10)));
318
320
  }
@@ -325,9 +327,9 @@ var ArithmeticAssignmentNode = /** @class */ (function (_super) {
325
327
  openCharacter: '',
326
328
  closeCharacter: ';',
327
329
  });
328
- return new ArithmeticAssignmentNode(lastNode, AST_1.Tree.processTokens(assignmentTokens), token.type);
330
+ return new AssignmentNode(lastNode, AST_1.Tree.processTokens(assignmentTokens), token.type);
329
331
  };
330
- return ArithmeticAssignmentNode;
332
+ return AssignmentNode;
331
333
  }(Node_1.Node));
332
- exports.ArithmeticAssignmentNode = ArithmeticAssignmentNode;
333
- //# sourceMappingURL=ArithmeticAssignmentNode.js.map
334
+ exports.AssignmentNode = AssignmentNode;
335
+ //# sourceMappingURL=AssignmentNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssignmentNode.js","sourceRoot":"","sources":["../../src/AST/AssignmentNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Scope } from "../Scope";
2
+ import { DOM } from "../DOM";
3
+ import { Tag } from "../Tag";
4
+ import { Token, TreeNode } from "../AST";
5
+ import { Node } from "./Node";
6
+ import { BlockNode } from "./BlockNode";
7
+ import { LiteralNode } from "./LiteralNode";
8
+ declare type StackContext = {
9
+ block: BlockNode;
10
+ scope: Scope;
11
+ dom: DOM;
12
+ tag: Tag;
13
+ };
14
+ export declare class NamedStackNode extends Node implements TreeNode {
15
+ readonly stackName: LiteralNode<string>;
16
+ readonly statements: BlockNode;
17
+ protected requiresPrep: boolean;
18
+ protected static stacks: {
19
+ [key: string]: StackContext[];
20
+ };
21
+ protected static executions: string[];
22
+ constructor(stackName: LiteralNode<string>, statements: BlockNode);
23
+ protected _getChildNodes(): Node[];
24
+ evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
25
+ static execute(stackName: string): Promise<boolean>;
26
+ static parse(lastNode: any, token: any, tokens: Token[]): NamedStackNode;
27
+ }
28
+ export {};
@@ -0,0 +1,142 @@
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.NamedStackNode = void 0;
55
+ var Scope_1 = require("../Scope");
56
+ var AST_1 = require("../AST");
57
+ var Node_1 = require("./Node");
58
+ var LiteralNode_1 = require("./LiteralNode");
59
+ var NamedStackNode = /** @class */ (function (_super) {
60
+ __extends(NamedStackNode, _super);
61
+ function NamedStackNode(stackName, statements) {
62
+ var _this = _super.call(this) || this;
63
+ _this.stackName = stackName;
64
+ _this.statements = statements;
65
+ _this.requiresPrep = true;
66
+ return _this;
67
+ }
68
+ NamedStackNode.prototype._getChildNodes = function () {
69
+ return [
70
+ this.stackName,
71
+ this.statements
72
+ ];
73
+ };
74
+ NamedStackNode.prototype.evaluate = function (scope, dom, tag) {
75
+ if (tag === void 0) { tag = null; }
76
+ return __awaiter(this, void 0, void 0, function () {
77
+ var stackName, execute;
78
+ return __generator(this, function (_a) {
79
+ switch (_a.label) {
80
+ case 0:
81
+ if (scope instanceof Scope_1.FunctionScope) { // NamedStackNode doesn't work with FunctionScope
82
+ scope = scope.parentScope;
83
+ }
84
+ return [4 /*yield*/, this.stackName.evaluate(scope, dom, tag)];
85
+ case 1:
86
+ stackName = _a.sent();
87
+ execute = false;
88
+ if (!NamedStackNode.stacks[stackName]) {
89
+ NamedStackNode.stacks[stackName] = [];
90
+ }
91
+ if (NamedStackNode.executions.indexOf(stackName) === -1)
92
+ execute = true;
93
+ NamedStackNode.stacks[stackName].push({
94
+ block: this.statements,
95
+ scope: scope,
96
+ dom: dom,
97
+ tag: tag
98
+ });
99
+ if (execute) {
100
+ NamedStackNode.execute(stackName);
101
+ }
102
+ return [2 /*return*/];
103
+ }
104
+ });
105
+ });
106
+ };
107
+ NamedStackNode.execute = function (stackName) {
108
+ return __awaiter(this, void 0, void 0, function () {
109
+ var stack;
110
+ return __generator(this, function (_a) {
111
+ switch (_a.label) {
112
+ case 0:
113
+ if (!(NamedStackNode.stacks[stackName].length > 0)) return [3 /*break*/, 3];
114
+ stack = NamedStackNode.stacks[stackName].shift();
115
+ if (NamedStackNode.executions.indexOf(stackName) === -1)
116
+ NamedStackNode.executions.push(stackName);
117
+ return [4 /*yield*/, stack.block.evaluate(stack.scope, stack.dom, stack.tag)];
118
+ case 1:
119
+ _a.sent();
120
+ return [4 /*yield*/, NamedStackNode.execute(stackName)];
121
+ case 2:
122
+ if (!(_a.sent())) {
123
+ NamedStackNode.executions.splice(NamedStackNode.executions.indexOf(stackName), 1);
124
+ }
125
+ return [2 /*return*/, true];
126
+ case 3: return [2 /*return*/, false];
127
+ }
128
+ });
129
+ });
130
+ };
131
+ NamedStackNode.parse = function (lastNode, token, tokens) {
132
+ tokens.shift(); // Consume stack
133
+ var stackName = tokens.shift();
134
+ var statementTokens = AST_1.Tree.getNextStatementTokens(tokens);
135
+ return new NamedStackNode(new LiteralNode_1.LiteralNode(stackName.value), AST_1.Tree.processTokens(statementTokens));
136
+ };
137
+ NamedStackNode.stacks = {};
138
+ NamedStackNode.executions = [];
139
+ return NamedStackNode;
140
+ }(Node_1.Node));
141
+ exports.NamedStackNode = NamedStackNode;
142
+ //# sourceMappingURL=NamedStackNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamedStackNode.js","sourceRoot":"","sources":["../../src/AST/NamedStackNode.ts"],"names":[],"mappings":"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"}
package/dist/AST.d.ts CHANGED
@@ -31,61 +31,62 @@ export declare enum TokenType {
31
31
  AS = 9,
32
32
  IN = 10,
33
33
  WITH = 11,
34
- FOR = 12,
35
- IF = 13,
36
- ELSE_IF = 14,
37
- ELSE = 15,
38
- FUNC = 16,
39
- ON = 17,
40
- CLASS = 18,
41
- NAME = 19,
42
- L_BRACE = 20,
43
- R_BRACE = 21,
44
- L_BRACKET = 22,
45
- R_BRACKET = 23,
46
- L_PAREN = 24,
47
- R_PAREN = 25,
48
- TILDE = 26,
49
- PERIOD = 27,
50
- COMMA = 28,
51
- COLON = 29,
52
- SEMICOLON = 30,
53
- STRING_FORMAT = 31,
54
- STRING_LITERAL = 32,
55
- NUMBER_LITERAL = 33,
56
- BOOLEAN_LITERAL = 34,
57
- NULL_LITERAL = 35,
58
- STRICT_EQUALS = 36,
59
- STRICT_NOT_EQUALS = 37,
60
- EQUALS = 38,
61
- NOT_EQUALS = 39,
62
- GREATER_THAN_EQUAL = 40,
63
- LESS_THAN_EQUAL = 41,
64
- GREATER_THAN = 42,
65
- LESS_THAN = 43,
66
- ASSIGN = 44,
67
- AND = 45,
68
- OR = 46,
69
- ADD = 47,
70
- SUBTRACT = 48,
71
- MULTIPLY = 49,
72
- DIVIDE = 50,
73
- ADD_ASSIGN = 51,
74
- SUBTRACT_ASSIGN = 52,
75
- MULTIPLY_ASSIGN = 53,
76
- DIVIDE_ASSIGN = 54,
77
- EXCLAMATION_POINT = 55,
78
- ELEMENT_REFERENCE = 56,
79
- ELEMENT_ATTRIBUTE = 57,
80
- ELEMENT_STYLE = 58,
81
- ELEMENT_QUERY = 59,
82
- UNIT = 60,
83
- XHR_GET = 61,
84
- XHR_POST = 62,
85
- XHR_PUT = 63,
86
- XHR_DELETE = 64,
87
- MODIFIER = 65,
88
- DISPATCH_EVENT = 66
34
+ NAMED_STACK = 12,
35
+ FOR = 13,
36
+ IF = 14,
37
+ ELSE_IF = 15,
38
+ ELSE = 16,
39
+ FUNC = 17,
40
+ ON = 18,
41
+ CLASS = 19,
42
+ NAME = 20,
43
+ L_BRACE = 21,
44
+ R_BRACE = 22,
45
+ L_BRACKET = 23,
46
+ R_BRACKET = 24,
47
+ L_PAREN = 25,
48
+ R_PAREN = 26,
49
+ TILDE = 27,
50
+ PERIOD = 28,
51
+ COMMA = 29,
52
+ COLON = 30,
53
+ SEMICOLON = 31,
54
+ STRING_FORMAT = 32,
55
+ STRING_LITERAL = 33,
56
+ NUMBER_LITERAL = 34,
57
+ BOOLEAN_LITERAL = 35,
58
+ NULL_LITERAL = 36,
59
+ STRICT_EQUALS = 37,
60
+ STRICT_NOT_EQUALS = 38,
61
+ EQUALS = 39,
62
+ NOT_EQUALS = 40,
63
+ GREATER_THAN_EQUAL = 41,
64
+ LESS_THAN_EQUAL = 42,
65
+ GREATER_THAN = 43,
66
+ LESS_THAN = 44,
67
+ ASSIGN = 45,
68
+ AND = 46,
69
+ OR = 47,
70
+ ADD = 48,
71
+ SUBTRACT = 49,
72
+ MULTIPLY = 50,
73
+ DIVIDE = 51,
74
+ ADD_ASSIGN = 52,
75
+ SUBTRACT_ASSIGN = 53,
76
+ MULTIPLY_ASSIGN = 54,
77
+ DIVIDE_ASSIGN = 55,
78
+ EXCLAMATION_POINT = 56,
79
+ ELEMENT_REFERENCE = 57,
80
+ ELEMENT_ATTRIBUTE = 58,
81
+ ELEMENT_STYLE = 59,
82
+ ELEMENT_QUERY = 60,
83
+ UNIT = 61,
84
+ XHR_GET = 62,
85
+ XHR_POST = 63,
86
+ XHR_PUT = 64,
87
+ XHR_DELETE = 65,
88
+ MODIFIER = 66,
89
+ DISPATCH_EVENT = 67
89
90
  }
90
91
  export interface TreeNode<T = any> {
91
92
  evaluate(scope: Scope, dom: DOM, tag?: Tag): any;
@@ -99,8 +100,15 @@ export interface IBlockInfo {
99
100
  closeCharacter: string;
100
101
  }
101
102
  export declare const AttributableNodes: (typeof RootScopeMemberNode | typeof ScopeMemberNode | typeof ElementAttributeNode)[];
103
+ export interface ExecutionContext {
104
+ scope: Scope;
105
+ dom: DOM;
106
+ tag: Tag;
107
+ tree: Tree;
108
+ }
102
109
  export declare class Tree {
103
110
  readonly code: string;
111
+ protected static executing: Set<ExecutionContext>;
104
112
  protected static cache: {
105
113
  [key: string]: Node;
106
114
  };
@@ -111,6 +119,7 @@ export declare class Tree {
111
119
  evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<any>;
112
120
  prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
113
121
  bindToScopeChanges(scope: any, fnc: any, dom: DOM, tag?: Tag): Promise<void>;
122
+ static reprepareExecutingTrees(): void;
114
123
  static tokenize(code: string): Token[];
115
124
  static stripWhiteSpace(tokens: Token[]): Token[];
116
125
  static processTokens(tokens: Token[], _node?: Node, _lastBlock?: Node): BlockNode;