vsn 0.1.120 → 0.1.122

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 (40) hide show
  1. package/demo/demo.html +0 -33
  2. package/demo/examples/component-slots.html +5 -1
  3. package/demo/named-stack.html +34 -0
  4. package/demo/silly-animations.html +39 -0
  5. package/demo/vsn.js +2 -2
  6. package/dist/AST/{ArithmeticAssignmentNode.d.ts → AssignmentNode.d.ts} +2 -2
  7. package/dist/AST/{ArithmeticAssignmentNode.js → AssignmentNode.js} +21 -18
  8. package/dist/AST/AssignmentNode.js.map +1 -0
  9. package/dist/AST/ElementStyleNode.js +9 -7
  10. package/dist/AST/ElementStyleNode.js.map +1 -1
  11. package/dist/AST/ModifierNode.js +3 -1
  12. package/dist/AST/ModifierNode.js.map +1 -1
  13. package/dist/AST/NamedStackNode.d.ts +28 -0
  14. package/dist/AST/NamedStackNode.js +137 -0
  15. package/dist/AST/NamedStackNode.js.map +1 -0
  16. package/dist/AST/Node.d.ts +3 -1
  17. package/dist/AST/Node.js +9 -0
  18. package/dist/AST/Node.js.map +1 -1
  19. package/dist/AST/WithNode.d.ts +1 -0
  20. package/dist/AST/WithNode.js +51 -10
  21. package/dist/AST/WithNode.js.map +1 -1
  22. package/dist/AST.d.ts +57 -56
  23. package/dist/AST.js +85 -62
  24. package/dist/AST.js.map +1 -1
  25. package/dist/Scope.d.ts +2 -0
  26. package/dist/Scope.js +14 -2
  27. package/dist/Scope.js.map +1 -1
  28. package/dist/version.d.ts +1 -1
  29. package/dist/version.js +1 -1
  30. package/package.json +1 -1
  31. package/src/AST/{ArithmeticAssignmentNode.ts → AssignmentNode.ts} +7 -3
  32. package/src/AST/ElementStyleNode.ts +1 -0
  33. package/src/AST/ModifierNode.ts +3 -1
  34. package/src/AST/NamedStackNode.ts +80 -0
  35. package/src/AST/Node.ts +11 -1
  36. package/src/AST/WithNode.ts +27 -4
  37. package/src/AST.ts +27 -7
  38. package/src/Scope.ts +12 -2
  39. package/src/version.ts +1 -1
  40. package/dist/AST/ArithmeticAssignmentNode.js.map +0 -1
@@ -36,6 +36,7 @@ export class ElementStyleNode extends Node implements TreeNode {
36
36
 
37
37
  async evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
38
38
  let tags: TagList;
39
+ await this.prepare(scope, dom, tag);
39
40
  if (this.elementRef) {
40
41
  tags = await this.elementRef.evaluate(scope, dom, tag, true);
41
42
  } else if (tag) {
@@ -24,7 +24,9 @@ export class ModifierNode extends Node implements TreeNode {
24
24
 
25
25
  public static parse(lastNode, token, tokens: Token[]): Node {
26
26
  const modifier = tokens.shift().value.substr(1);
27
- lastNode.modifiers.push(modifier);
27
+ if (lastNode) {
28
+ lastNode.modifiers.push(modifier);
29
+ }
28
30
  return lastNode;
29
31
  }
30
32
  }
@@ -0,0 +1,80 @@
1
+ import {Scope} from "../Scope";
2
+ import {DOM} from "../DOM";
3
+ import {Tag} from "../Tag";
4
+ import {Token, Tree, TreeNode} from "../AST";
5
+ import {Node} from "./Node";
6
+ import {BlockNode} from "./BlockNode";
7
+ import {LiteralNode} from "./LiteralNode";
8
+
9
+ type StackContext = {
10
+ block: BlockNode;
11
+ scope: Scope;
12
+ dom: DOM;
13
+ tag: Tag;
14
+ }
15
+
16
+ export class NamedStackNode extends Node implements TreeNode {
17
+ protected requiresPrep: boolean = true;
18
+ protected static stacks: { [key: string]: StackContext[] } = {};
19
+ protected static executions: string[] = [];
20
+
21
+ constructor(
22
+ public readonly stackName: LiteralNode<string>,
23
+ public readonly statements: BlockNode
24
+ ) {
25
+ super();
26
+ }
27
+
28
+ protected _getChildNodes(): Node[] {
29
+ return [
30
+ this.stackName,
31
+ this.statements
32
+ ]
33
+ }
34
+
35
+ public async evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
36
+ const stackName = await this.stackName.evaluate(scope, dom, tag);
37
+ let execute = false;
38
+ if (!NamedStackNode.stacks[stackName]) {
39
+ NamedStackNode.stacks[stackName] = [];
40
+ }
41
+
42
+ if (NamedStackNode.executions.indexOf(stackName) === -1)
43
+ execute = true;
44
+
45
+ NamedStackNode.stacks[stackName].push({
46
+ block: this.statements,
47
+ scope: scope,
48
+ dom: dom,
49
+ tag: tag
50
+ });
51
+
52
+ if (execute) {
53
+ NamedStackNode.execute(stackName);
54
+ }
55
+ }
56
+
57
+ public static async execute(stackName: string): Promise<boolean> {
58
+ if (NamedStackNode.stacks[stackName].length > 0) {
59
+ const stack = NamedStackNode.stacks[stackName].shift();
60
+ if (NamedStackNode.executions.indexOf(stackName) === -1)
61
+ NamedStackNode.executions.push(stackName);
62
+
63
+ await stack.block.evaluate(stack.scope, stack.dom, stack.tag);
64
+ if (!(await NamedStackNode.execute(stackName))) {
65
+ NamedStackNode.executions.splice(NamedStackNode.executions.indexOf(stackName), 1);
66
+ }
67
+
68
+ return true;
69
+ } else {
70
+ return false;
71
+ }
72
+ }
73
+
74
+ public static parse(lastNode, token, tokens: Token[]) {
75
+ tokens.shift(); // Consume stack
76
+ const stackName = tokens.shift();
77
+ const statementTokens = Tree.getNextStatementTokens(tokens);
78
+ return new NamedStackNode(new LiteralNode<string>(stackName.value), Tree.processTokens(statementTokens));
79
+ }
80
+ }
package/src/AST/Node.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import {Scope} from "../Scope";
2
2
  import {DOM} from "../DOM";
3
3
  import {Tag} from "../Tag";
4
- import {TreeNode} from "../AST";
4
+ import {Token, TokenType, TreeNode} from "../AST";
5
5
 
6
6
  export interface INodeMeta {
7
7
  [key: string]: string | number | boolean | null;
@@ -78,5 +78,15 @@ export abstract class Node implements TreeNode {
78
78
 
79
79
  return nodes;
80
80
  }
81
+
82
+ hasModifier(modifier: string): boolean {
83
+ return this.modifiers.indexOf(modifier) !== -1;
84
+ }
85
+
86
+ public static moveModifiers(from: Token[], to: Token[]) {
87
+ while (from[0].type == TokenType.MODIFIER) {
88
+ to.unshift(from.shift());
89
+ }
90
+ }
81
91
  }
82
92
 
@@ -1,12 +1,14 @@
1
1
  import {Scope} from "../Scope";
2
2
  import {DOM} from "../DOM";
3
3
  import {Tag} from "../Tag";
4
- import {BlockType, Token, TokenType, Tree, TreeNode} from "../AST";
4
+ import {Token, TokenType, Tree, TreeNode} from "../AST";
5
5
  import {Node} from "./Node";
6
6
  import {BlockNode} from "./BlockNode";
7
7
  import {TagList} from "../Tag/TagList";
8
8
 
9
9
  export class WithNode extends Node implements TreeNode {
10
+ protected requiresPrep: boolean = true;
11
+
10
12
  constructor(
11
13
  public readonly context: Node,
12
14
  public readonly statements: BlockNode
@@ -23,15 +25,35 @@ export class WithNode extends Node implements TreeNode {
23
25
 
24
26
  public async evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
25
27
  const context = await this.context.evaluate(scope, dom, tag);
26
- let tags;
28
+ let tags = [];
27
29
  if (context instanceof TagList) {
28
30
  tags = context;
29
31
  } else if (context instanceof Tag) {
30
32
  tags = [context];
31
33
  }
32
34
  let ret = [];
33
- for (const _tag of tags) {
34
- ret.push(await this.statements.evaluate(_tag.scope, dom, _tag))
35
+ if (tags.length) {
36
+ if (this.hasModifier('sequential')) { // More like a for loop, needed?
37
+ for (const _tag of tags) {
38
+ await this.statements.prepare(_tag.scope, dom, _tag);
39
+ ret.push(await this.statements.evaluate(_tag.scope, dom, _tag));
40
+ }
41
+ } else {
42
+ const promises = [];
43
+ for (const _tag of tags) {
44
+ await this.statements.prepare(_tag.scope, dom, _tag);
45
+ promises.push(this.statements.evaluate(_tag.scope, dom, _tag));
46
+ }
47
+ ret = await Promise.all(promises);
48
+ }
49
+ } else {
50
+ let _scope;
51
+ if (context instanceof Scope) {
52
+ _scope = context;
53
+ }
54
+
55
+ if (_scope)
56
+ ret.push(await this.statements.evaluate(_scope, dom, tag))
35
57
  }
36
58
  return ret.length === 1 ? ret[0] : ret;
37
59
  }
@@ -40,6 +62,7 @@ export class WithNode extends Node implements TreeNode {
40
62
  tokens.shift(); // Consume with
41
63
  const contextTokens = Tree.getTokensUntil(tokens, TokenType.L_BRACE, false, false, true);
42
64
  const statementTokens = Tree.getNextStatementTokens(tokens);
65
+ this.moveModifiers(contextTokens, tokens);
43
66
  return new WithNode(Tree.processTokens(contextTokens), Tree.processTokens(statementTokens));
44
67
  }
45
68
  }
package/src/AST.ts CHANGED
@@ -20,7 +20,7 @@ import {FunctionArgumentNode} from "./AST/FunctionArgumentNode";
20
20
  import {InNode} from "./AST/InNode";
21
21
  import {ComparisonNode} from "./AST/ComparisonNode";
22
22
  import {ArithmeticNode} from "./AST/ArithmeticNode";
23
- import {ArithmeticAssignmentNode} from "./AST/ArithmeticAssignmentNode";
23
+ import {AssignmentNode} from "./AST/AssignmentNode";
24
24
  import {UnitLiteralNode} from "./AST/UnitLiteralNode";
25
25
  import {BooleanLiteralNode} from "./AST/BooleanLiteralNode";
26
26
  import {NotNode} from "./AST/NotNode";
@@ -33,6 +33,7 @@ import {ModifierNode} from "./AST/ModifierNode";
33
33
  import {DispatchEventNode} from "./AST/DispatchEventNode";
34
34
  import {WithNode} from "./AST/WithNode";
35
35
  import {AsNode} from "./AST/AsNode";
36
+ import {NamedStackNode} from "./AST/NamedStackNode";
36
37
 
37
38
  function lower(str: string): string {
38
39
  return str ? str.toLowerCase() : null;
@@ -70,6 +71,7 @@ export enum TokenType {
70
71
  AS,
71
72
  IN,
72
73
  WITH,
74
+ NAMED_STACK,
73
75
  FOR,
74
76
  IF,
75
77
  ELSE_IF,
@@ -202,7 +204,11 @@ const TOKEN_PATTERNS: TokenPattern[] = [
202
204
  },
203
205
  {
204
206
  type: TokenType.WITH,
205
- pattern: /^with\s/
207
+ pattern: /^with(?=\||\s)?/ // Allows with|sequential
208
+ },
209
+ {
210
+ type: TokenType.NAMED_STACK,
211
+ pattern: /^stack(?=\||\s)?/
206
212
  },
207
213
  {
208
214
  type: TokenType.FOR,
@@ -495,9 +501,10 @@ export class Tree {
495
501
  return tokens;
496
502
  }
497
503
 
498
- public static processTokens(tokens: Token[]): BlockNode {
504
+ public static processTokens(tokens: Token[], _node: Node=null, _lastBlock: Node=null): BlockNode {
499
505
  let blockNodes: Node[] = [];
500
- let node: Node = null;
506
+ let lastBlock: Node = _lastBlock;
507
+ let node: Node = _node;
501
508
  let count: number = 0;
502
509
 
503
510
  Tree.stripWhiteSpace(tokens);
@@ -521,26 +528,39 @@ export class Tree {
521
528
  node = DispatchEventNode.parse(node, tokens[0], tokens);
522
529
  } else if (token.type === TokenType.WITH) {
523
530
  node = WithNode.parse(node, tokens[0], tokens);
531
+ lastBlock = node;
532
+ blockNodes.push(node);
533
+ node = null;
534
+ } else if (token.type === TokenType.NAMED_STACK) {
535
+ node = NamedStackNode.parse(node, tokens[0], tokens);
536
+ lastBlock = node;
537
+ blockNodes.push(node);
538
+ node = null;
524
539
  } else if (token.type === TokenType.AS) {
525
540
  node = AsNode.parse(node, tokens[0], tokens);
526
541
  } else if (token.type === TokenType.IF) {
527
542
  node = IfStatementNode.parse(node, token, tokens);
543
+ lastBlock = node;
528
544
  blockNodes.push(node);
529
545
  node = null;
530
546
  } else if (token.type === TokenType.FOR) {
531
547
  node = ForStatementNode.parse(node, token, tokens);
548
+ lastBlock = node;
532
549
  blockNodes.push(node);
533
550
  node = null;
534
551
  } else if (token.type === TokenType.FUNC) {
535
552
  node = FunctionNode.parse(node, token, tokens);
553
+ lastBlock = node;
536
554
  blockNodes.push(node);
537
555
  node = null;
538
556
  } else if (token.type === TokenType.ON) {
539
557
  node = OnNode.parse(node, token, tokens);
558
+ lastBlock = node;
540
559
  blockNodes.push(node);
541
560
  node = null;
542
561
  } else if (token.type === TokenType.CLASS) {
543
562
  node = ClassNode.parse(node, token, tokens);
563
+ lastBlock = node;
544
564
  blockNodes.push(node);
545
565
  node = null;
546
566
  } else if (StringFormatNode.match(tokens)) {
@@ -602,8 +622,8 @@ export class Tree {
602
622
  node = ComparisonNode.parse(node, token, tokens);
603
623
  } else if (ArithmeticNode.match(tokens)) {
604
624
  node = ArithmeticNode.parse(node, token, tokens);
605
- } else if (ArithmeticAssignmentNode.match(tokens)) {
606
- node = ArithmeticAssignmentNode.parse(node, token, tokens);
625
+ } else if (AssignmentNode.match(tokens)) {
626
+ node = AssignmentNode.parse(node, token, tokens);
607
627
  } else if (tokens[0].type === TokenType.WHITESPACE) {
608
628
  tokens.shift()
609
629
  } else if (tokens[0].type === TokenType.UNIT) {
@@ -618,7 +638,7 @@ export class Tree {
618
638
  } else if (tokens[0].type === TokenType.EXCLAMATION_POINT) {
619
639
  node = NotNode.parse(node, tokens[0], tokens);
620
640
  } else if (tokens[0].type === TokenType.MODIFIER) {
621
- node = ModifierNode.parse(node, tokens[0], tokens);
641
+ ModifierNode.parse(node ? node : lastBlock, tokens[0], tokens);
622
642
  } else {
623
643
  let code: string = Tree.toCode(tokens, 10);
624
644
  throw Error(`Syntax Error. Near ${code}`);
package/src/Scope.ts CHANGED
@@ -4,6 +4,7 @@ import {QueryReference} from "./Scope/QueryReference";
4
4
  import {WrappedArray} from "./Scope/WrappedArray";
5
5
  import {ScopeData} from "./Scope/ScopeData";
6
6
  import {DynamicScopeData} from "./Scope/DynamicScopeData";
7
+ import {DOM} from "./DOM";
7
8
 
8
9
 
9
10
  export class Scope extends EventDispatcher {
@@ -11,6 +12,7 @@ export class Scope extends EventDispatcher {
11
12
  protected _data: ScopeData;
12
13
  protected children: Scope[];
13
14
  protected _parentScope: Scope;
15
+ protected _isGarbage: boolean = false;
14
16
 
15
17
  constructor(
16
18
  parent?: Scope
@@ -28,7 +30,11 @@ export class Scope extends EventDispatcher {
28
30
  }
29
31
 
30
32
  public get parentScope(): Scope {
31
- return this._parentScope;
33
+ if (this._parentScope)
34
+ return this._parentScope;
35
+
36
+ const rootScope = DOM.instance.root.scope;
37
+ return this == rootScope ? null : rootScope;
32
38
  }
33
39
 
34
40
  public set parentScope(scope: Scope) {
@@ -154,7 +160,12 @@ export class Scope extends EventDispatcher {
154
160
  this.parentScope = null;
155
161
  }
156
162
 
163
+ public get isGarbage(): boolean {
164
+ return this._isGarbage;
165
+ }
166
+
157
167
  collectGarbage(force: boolean = false) {
168
+ this._isGarbage = true;
158
169
  for (const child of this.children) {
159
170
  child.collectGarbage(force);
160
171
  }
@@ -284,6 +295,5 @@ export class FunctionScope extends Scope {
284
295
 
285
296
  collectGarbage(force: boolean = true) {
286
297
  super.collectGarbage(true);
287
- this.cleanup();
288
298
  }
289
299
  }
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.1.120';
1
+ export const VERSION = '0.1.122';
2
2
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArithmeticAssignmentNode.js","sourceRoot":"","sources":["../../src/AST/ArithmeticAssignmentNode.ts"],"names":[],"mappings":"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"}