@quenk/wml 2.13.11 → 2.14.1

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 (60) hide show
  1. package/lib/cli.d.ts +8 -8
  2. package/lib/cli.js +1 -3
  3. package/lib/cli.js.map +1 -1
  4. package/lib/cli.ts +48 -60
  5. package/lib/compile/codegen.d.ts +4 -9
  6. package/lib/compile/codegen.js +161 -367
  7. package/lib/compile/codegen.js.map +1 -1
  8. package/lib/compile/codegen.ts +643 -952
  9. package/lib/compile/index.d.ts +2 -2
  10. package/lib/compile/index.js +4 -4
  11. package/lib/compile/index.js.map +1 -1
  12. package/lib/compile/index.ts +14 -17
  13. package/lib/compile/transform.d.ts +1 -1
  14. package/lib/compile/transform.js +9 -11
  15. package/lib/compile/transform.js.map +1 -1
  16. package/lib/compile/transform.ts +136 -143
  17. package/lib/{dom.d.ts → dom/index.d.ts} +8 -2
  18. package/lib/{dom.js → dom/index.js} +84 -70
  19. package/lib/dom/index.js.map +1 -0
  20. package/lib/dom/index.ts +425 -0
  21. package/lib/dom/monitor.d.ts +33 -0
  22. package/lib/dom/monitor.js +60 -0
  23. package/lib/dom/monitor.js.map +1 -0
  24. package/lib/dom/monitor.ts +75 -0
  25. package/lib/index.d.ts +10 -95
  26. package/lib/index.js +10 -10
  27. package/lib/index.js.map +1 -1
  28. package/lib/index.ts +57 -182
  29. package/lib/main.js +17 -17
  30. package/lib/main.js.map +1 -1
  31. package/lib/main.ts +38 -44
  32. package/lib/parse/ast.d.ts +2 -2
  33. package/lib/parse/ast.js +52 -53
  34. package/lib/parse/ast.js.map +1 -1
  35. package/lib/parse/ast.ts +396 -483
  36. package/lib/parse/generated.d.ts +3 -5
  37. package/lib/parse/generated.js +9504 -9264
  38. package/lib/parse/index.d.ts +2 -3
  39. package/lib/parse/index.js.map +1 -1
  40. package/lib/parse/index.ts +7 -9
  41. package/lib/parse/test.js +194 -192
  42. package/lib/parse/test.js.map +1 -1
  43. package/lib/parse/test.ts +294 -404
  44. package/lib/parse/wml.y +4 -0
  45. package/lib/tsconfig.json +19 -20
  46. package/lib/util.d.ts +10 -0
  47. package/lib/util.js +21 -0
  48. package/lib/util.js.map +1 -0
  49. package/lib/util.ts +39 -0
  50. package/lib/view/frame.d.ts +127 -0
  51. package/lib/view/frame.js +214 -0
  52. package/lib/view/frame.js.map +1 -0
  53. package/lib/view/frame.ts +295 -0
  54. package/lib/view/index.d.ts +58 -0
  55. package/lib/view/index.js +48 -0
  56. package/lib/view/index.js.map +1 -0
  57. package/lib/view/index.ts +98 -0
  58. package/package.json +3 -3
  59. package/lib/dom.js.map +0 -1
  60. package/lib/dom.ts +0 -479
@@ -1,5 +1,5 @@
1
- import { Except } from '@quenk/noni/lib/control/error';
2
- import { CodeGeneratorOptions } from './codegen';
1
+ import { Except } from "@quenk/noni/lib/control/error";
2
+ import { CodeGeneratorOptions } from "./codegen";
3
3
  /**
4
4
  * TypeScript output.
5
5
  */
@@ -6,13 +6,13 @@ const record_1 = require("@quenk/noni/lib/data/record");
6
6
  const parse_1 = require("../parse");
7
7
  const codegen_1 = require("./codegen");
8
8
  const defaultOptions = {
9
- module: '@quenk/wml',
10
- dom: '@quenk/wml/lib/dom',
11
- EOL: os.EOL
9
+ module: "@quenk/wml",
10
+ dom: "@quenk/wml/lib/dom",
11
+ EOL: os.EOL,
12
12
  };
13
13
  /**
14
14
  * compile a string of WML text directly into typescript.
15
15
  */
16
- const compile = (src, opts = {}) => (0, parse_1.parse)(src).map(m => codegen_1.CodeGenerator.create((0, record_1.merge)(defaultOptions, opts)).generate(m));
16
+ const compile = (src, opts = {}) => (0, parse_1.parse)(src).map((m) => codegen_1.CodeGenerator.create((0, record_1.merge)(defaultOptions, opts)).generate(m));
17
17
  exports.compile = compile;
18
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AAEzB,wDAAoD;AAGpD,oCAAiC;AACjC,uCAAgE;AAkBhE,MAAM,cAAc,GAAG;IAEnB,MAAM,EAAE,YAAY;IAEpB,GAAG,EAAE,oBAAoB;IAEzB,GAAG,EAAE,EAAE,CAAC,GAAG;CAEd,CAAA;AAED;;GAEG;AACI,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,OAAgB,EAAE,EAAkB,EAAE,CACvE,IAAA,aAAK,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACf,uBAAa,CAAC,MAAM,CAAC,IAAA,cAAK,EAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAF1D,QAAA,OAAO,WAEmD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AAEzB,wDAAoD;AAGpD,oCAAiC;AACjC,uCAAgE;AAgBhE,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,YAAY;IAEpB,GAAG,EAAE,oBAAoB;IAEzB,GAAG,EAAE,EAAE,CAAC,GAAG;CACZ,CAAC;AAEF;;GAEG;AACI,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,OAAgB,EAAE,EAAkB,EAAE,CACzE,IAAA,aAAK,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnB,uBAAa,CAAC,MAAM,CAAC,IAAA,cAAK,EAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC9D,CAAC;AAHS,QAAA,OAAO,WAGhB"}
@@ -1,10 +1,10 @@
1
- import * as os from 'os';
1
+ import * as os from "os";
2
2
 
3
- import { merge } from '@quenk/noni/lib/data/record';
4
- import { Except } from '@quenk/noni/lib/control/error';
3
+ import { merge } from "@quenk/noni/lib/data/record";
4
+ import { Except } from "@quenk/noni/lib/control/error";
5
5
 
6
- import { parse } from '../parse';
7
- import { CodeGenerator, CodeGeneratorOptions } from './codegen';
6
+ import { parse } from "../parse";
7
+ import { CodeGenerator, CodeGeneratorOptions } from "./codegen";
8
8
 
9
9
  /**
10
10
  * TypeScript output.
@@ -15,26 +15,23 @@ export type TypeScript = string;
15
15
  * Options for changing the behaviour of compilation.
16
16
  */
17
17
  export interface Options extends Partial<CodeGeneratorOptions> {
18
+ debug?: boolean;
18
19
 
19
- debug?: boolean,
20
-
21
- main?: string,
22
-
20
+ main?: string;
23
21
  }
24
22
 
25
23
  const defaultOptions = {
24
+ module: "@quenk/wml",
26
25
 
27
- module: '@quenk/wml',
28
-
29
- dom: '@quenk/wml/lib/dom',
26
+ dom: "@quenk/wml/lib/dom",
30
27
 
31
- EOL: os.EOL
32
-
33
- }
28
+ EOL: os.EOL,
29
+ };
34
30
 
35
31
  /**
36
32
  * compile a string of WML text directly into typescript.
37
33
  */
38
34
  export const compile = (src: string, opts: Options = {}): Except<string> =>
39
- parse(src).map(m =>
40
- CodeGenerator.create(merge(defaultOptions, opts)).generate(m));
35
+ parse(src).map((m) =>
36
+ CodeGenerator.create(merge(defaultOptions, opts)).generate(m),
37
+ );
@@ -1,4 +1,4 @@
1
- import * as ast from '../parse/ast';
1
+ import * as ast from "../parse/ast";
2
2
  /**
3
3
  * rewriteViewContext normalizes the various forms of the context declaration
4
4
  * in a view statement.
@@ -22,11 +22,9 @@ const rewriteViewStatementContext = (tree, node) => {
22
22
  else if (node.context instanceof ast.ContextFromStatement) {
23
23
  let { context } = node;
24
24
  let { location } = context;
25
- tree.imports.push(new ast.ImportStatement(new ast.CompositeMember([
26
- context.cons.id
27
- ], location), context.module, location));
25
+ tree.imports.push(new ast.ImportStatement(new ast.CompositeMember([context.cons.id], location), context.module, location));
28
26
  return [
29
- new ast.ViewStatement(node.id, node.typeParameters, context.cons, node.directives, node.root, node.location)
27
+ new ast.ViewStatement(node.id, node.typeParameters, context.cons, node.directives, node.root, node.location),
30
28
  ];
31
29
  }
32
30
  else {
@@ -34,7 +32,7 @@ const rewriteViewStatementContext = (tree, node) => {
34
32
  }
35
33
  };
36
34
  exports.rewriteViewStatementContext = rewriteViewStatementContext;
37
- exports.TAG_NAME_SVG = 'svg';
35
+ exports.TAG_NAME_SVG = "svg";
38
36
  /**
39
37
  * tagSVGNodes traverses the tree to detect any embedded svg.
40
38
  *
@@ -49,9 +47,8 @@ const tagSVGNodes = (tag) => {
49
47
  let [isSvg, stack] = pending.pop();
50
48
  while (stack.length) {
51
49
  let next = stack.pop();
52
- if ((next instanceof ast.Node) &&
53
- ((0, codegen_1.identifierOrConstructor2TS)(next.open)
54
- === exports.TAG_NAME_SVG) &&
50
+ if (next instanceof ast.Node &&
51
+ (0, codegen_1.identifierOrConstructor2TS)(next.open) === exports.TAG_NAME_SVG &&
55
52
  !isSvg) {
56
53
  pending.push([true, [next]]);
57
54
  break;
@@ -59,16 +56,17 @@ const tagSVGNodes = (tag) => {
59
56
  let childrens = [];
60
57
  if (next instanceof ast.Node) {
61
58
  if (isSvg)
62
- next.attributes.push(new ast.Attribute(new ast.UnqualifiedIdentifier('wml', {}), new ast.UnqualifiedIdentifier('ns', {}), new ast.StringLiteral('svg', {}), {}));
59
+ next.attributes.push(new ast.Attribute(new ast.UnqualifiedIdentifier("wml", {}), new ast.UnqualifiedIdentifier("ns", {}), new ast.StringLiteral("svg", {}), {}));
63
60
  childrens.push(next.children);
64
61
  }
65
- else if ((next instanceof ast.Widget) || (next instanceof ast.ElseClause)) {
62
+ else if (next instanceof ast.Widget || next instanceof ast.ElseClause) {
66
63
  childrens.push(next.children);
67
64
  }
68
65
  else if (next instanceof ast.ForOfStatement) {
69
66
  childrens.push(next.body, next.otherwise);
70
67
  }
71
- else if ((next instanceof ast.IfStatement) || (next instanceof ast.ElseIfClause)) {
68
+ else if (next instanceof ast.IfStatement ||
69
+ next instanceof ast.ElseIfClause) {
72
70
  childrens.push(next.then);
73
71
  if (next.elseClause)
74
72
  childrens.push([next.elseClause]);
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["transform.ts"],"names":[],"mappings":"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"}
@@ -1,163 +1,156 @@
1
- import * as ast from '../parse/ast';
2
- import { identifierOrConstructor2TS } from './codegen';
1
+ import * as ast from "../parse/ast";
2
+ import { identifierOrConstructor2TS } from "./codegen";
3
3
 
4
4
  /**
5
5
  * rewriteViewContext normalizes the various forms of the context declaration
6
6
  * in a view statement.
7
7
  *
8
- * "where" clauses are turned into context declarations with id
8
+ * "where" clauses are turned into context declarations with id
9
9
  * <view-type>Context, imports are included in the module's import list.
10
10
  */
11
- export const rewriteViewStatementContext =
12
- (tree: ast.Module, node: ast.ViewStatement): ast.Export[] => {
13
-
14
- if (Array.isArray(node.context)) {
15
-
16
- // TODO: Is this branch still needed?
17
-
18
- let contextName = `${node.id.value}Context`;
19
-
20
- let context = new ast.ContextStatement(
21
- new ast.UnqualifiedIdentifier(contextName, node.id.location),
22
- node.typeParameters,
23
- node.context,
24
- node.location
25
- );
26
-
27
- let consType = new ast.ConstructorType(
28
- context.id,
29
- context.typeParameters,
30
- context.location
31
- );
32
-
33
- let view = new ast.ViewStatement(
34
- node.id,
35
- node.typeParameters,
36
- consType,
37
- node.directives,
38
- node.root,
39
- node.location
40
- );
41
-
42
- return [context, view];
43
-
44
- } else if (node.context instanceof ast.ContextFromStatement) {
45
-
46
- let { context } = node;
47
-
48
- let { location } = context;
49
-
50
- tree.imports.push(new ast.ImportStatement(
51
- new ast.CompositeMember([
52
- <ast.UnqualifiedConstructor>context.cons.id], location),
53
- context.module,
54
- location
55
- ));
56
-
57
- return [
58
- new ast.ViewStatement(
59
- node.id,
60
- node.typeParameters,
61
- context.cons,
62
- node.directives,
63
- node.root,
64
- node.location
65
- )
66
- ];
67
-
68
- } else {
69
-
70
- return [node];
71
-
72
- }
73
-
74
- }
75
-
76
- export const TAG_NAME_SVG = 'svg';
11
+ export const rewriteViewStatementContext = (
12
+ tree: ast.Module,
13
+ node: ast.ViewStatement,
14
+ ): ast.Export[] => {
15
+ if (Array.isArray(node.context)) {
16
+ // TODO: Is this branch still needed?
17
+
18
+ let contextName = `${node.id.value}Context`;
19
+
20
+ let context = new ast.ContextStatement(
21
+ new ast.UnqualifiedIdentifier(contextName, node.id.location),
22
+ node.typeParameters,
23
+ node.context,
24
+ node.location,
25
+ );
26
+
27
+ let consType = new ast.ConstructorType(
28
+ context.id,
29
+ context.typeParameters,
30
+ context.location,
31
+ );
32
+
33
+ let view = new ast.ViewStatement(
34
+ node.id,
35
+ node.typeParameters,
36
+ consType,
37
+ node.directives,
38
+ node.root,
39
+ node.location,
40
+ );
41
+
42
+ return [context, view];
43
+ } else if (node.context instanceof ast.ContextFromStatement) {
44
+ let { context } = node;
45
+
46
+ let { location } = context;
47
+
48
+ tree.imports.push(
49
+ new ast.ImportStatement(
50
+ new ast.CompositeMember(
51
+ [<ast.UnqualifiedConstructor>context.cons.id],
52
+ location,
53
+ ),
54
+ context.module,
55
+ location,
56
+ ),
57
+ );
58
+
59
+ return [
60
+ new ast.ViewStatement(
61
+ node.id,
62
+ node.typeParameters,
63
+ context.cons,
64
+ node.directives,
65
+ node.root,
66
+ node.location,
67
+ ),
68
+ ];
69
+ } else {
70
+ return [node];
71
+ }
72
+ };
73
+
74
+ export const TAG_NAME_SVG = "svg";
77
75
 
78
76
  /**
79
77
  * tagSVGNodes traverses the tree to detect any embedded svg.
80
78
  *
81
- * If an svg parent tag is found, it and all its children will receive a
79
+ * If an svg parent tag is found, it and all its children will receive a
82
80
  * wml:ns=svg attribute. This will cause the runtime to use createElementNS()
83
- * instead of createElement, allowing the svg document to be treated as SVG
81
+ * instead of createElement, allowing the svg document to be treated as SVG
84
82
  * and not HTML DOM.
85
83
  */
86
- export const tagSVGNodes =
87
- (tag: ast.Tag) => {
88
- let pending:[boolean, object[]][] = [[false, [tag]]];
89
-
90
- while(pending.length) {
91
- let [isSvg, stack ] = <[boolean, object[]]>pending.pop();
92
-
93
- while(stack.length) {
94
- let next = stack.pop();
95
-
96
- if((next instanceof ast.Node) &&
97
- (identifierOrConstructor2TS(next.open)
98
- === TAG_NAME_SVG) &&
99
- !isSvg
100
- ) {
101
- pending.push([true, [next]]);
102
- break;
103
- }
104
-
105
- let childrens = [];
106
- if(next instanceof ast.Node) {
107
- if(isSvg)
108
- next.attributes.push(new ast.Attribute(
109
- new ast.UnqualifiedIdentifier('wml',{}),
110
- new ast.UnqualifiedIdentifier('ns', {}),
111
- new ast.StringLiteral('svg', {}),
112
- {}
113
- ));
114
-
115
- childrens.push(next.children);
116
- } else if((next instanceof ast.Widget) || (next instanceof ast.ElseClause)) {
117
- childrens.push(next.children);
118
- } else if(next instanceof ast.ForOfStatement) {
119
- childrens.push(next.body, next.otherwise);
120
- } else if((next instanceof ast.IfStatement)||(next instanceof ast.ElseIfClause)) {
121
- childrens.push(next.then);
122
- if(next.elseClause) childrens.push([next.elseClause])
123
- }
124
-
125
- for(let children of childrens)
126
- for(let child of children)
127
- stack.push(child);
128
-
129
- }
130
-
131
-
132
- }
133
-
134
- return tag;
135
-
84
+ export const tagSVGNodes = (tag: ast.Tag) => {
85
+ let pending: [boolean, object[]][] = [[false, [tag]]];
86
+
87
+ while (pending.length) {
88
+ let [isSvg, stack] = <[boolean, object[]]>pending.pop();
89
+
90
+ while (stack.length) {
91
+ let next = stack.pop();
92
+
93
+ if (
94
+ next instanceof ast.Node &&
95
+ identifierOrConstructor2TS(next.open) === TAG_NAME_SVG &&
96
+ !isSvg
97
+ ) {
98
+ pending.push([true, [next]]);
99
+ break;
100
+ }
101
+
102
+ let childrens = [];
103
+ if (next instanceof ast.Node) {
104
+ if (isSvg)
105
+ next.attributes.push(
106
+ new ast.Attribute(
107
+ new ast.UnqualifiedIdentifier("wml", {}),
108
+ new ast.UnqualifiedIdentifier("ns", {}),
109
+ new ast.StringLiteral("svg", {}),
110
+ {},
111
+ ),
112
+ );
113
+
114
+ childrens.push(next.children);
115
+ } else if (next instanceof ast.Widget || next instanceof ast.ElseClause) {
116
+ childrens.push(next.children);
117
+ } else if (next instanceof ast.ForOfStatement) {
118
+ childrens.push(next.body, next.otherwise);
119
+ } else if (
120
+ next instanceof ast.IfStatement ||
121
+ next instanceof ast.ElseIfClause
122
+ ) {
123
+ childrens.push(next.then);
124
+ if (next.elseClause) childrens.push([next.elseClause]);
125
+ }
126
+
127
+ for (let children of childrens)
128
+ for (let child of children) stack.push(child);
136
129
  }
130
+ }
131
+
132
+ return tag;
133
+ };
137
134
 
138
135
  /**
139
- * transformTree applies all the needed transforms to the AST before
136
+ * transformTree applies all the needed transforms to the AST before
140
137
  * compilation.
141
138
  */
142
139
  export const transformTree = (tree: ast.Module) => {
143
-
144
- let newTree = tree.clone(); // Try not to modify what we don't own.
145
-
146
- newTree.exports = tree.exports.reduce((prev, next) => {
147
-
148
- if (next instanceof ast.ViewStatement) {
149
-
150
- next.root = tagSVGNodes(next.root);
151
-
152
- return [...prev, ...rewriteViewStatementContext(newTree, next)]
153
-
154
- } else {
155
-
156
- return [...prev, next]
157
-
158
- }
159
- }, <ast.Export[]>[]);
160
-
161
- return newTree;
162
-
163
- }
140
+ let newTree = tree.clone(); // Try not to modify what we don't own.
141
+
142
+ newTree.exports = tree.exports.reduce(
143
+ (prev, next) => {
144
+ if (next instanceof ast.ViewStatement) {
145
+ next.root = tagSVGNodes(next.root);
146
+
147
+ return [...prev, ...rewriteViewStatementContext(newTree, next)];
148
+ } else {
149
+ return [...prev, next];
150
+ }
151
+ },
152
+ <ast.Export[]>[],
153
+ );
154
+
155
+ return newTree;
156
+ };
@@ -6,8 +6,8 @@
6
6
  * we can detect whether we are in a browser or elsewhere and adjust to
7
7
  * suite.
8
8
  */
9
- import { Record } from '@quenk/noni/lib/data/record';
10
- import { Type } from '@quenk/noni/lib/data/type';
9
+ import { Record } from "@quenk/noni/lib/data/record";
10
+ import { Type } from "@quenk/noni/lib/data/type";
11
11
  /**
12
12
  * WMLDOMAttrs is a record of attributes bound for a WMLDOMElement.
13
13
  */
@@ -18,6 +18,11 @@ export interface WMLDOMAttrs extends Record<string | number | Function> {
18
18
  * @private
19
19
  */
20
20
  export declare class WMLNodeList implements NodeListOf<WMLDOMNode> {
21
+ entries(): ArrayIterator<[number, WMLDOMNode]>;
22
+ keys(): ArrayIterator<number>;
23
+ values(): ArrayIterator<WMLDOMNode>;
24
+ [Symbol.iterator](): ArrayIterator<WMLDOMNode>;
25
+ [Symbol.dispose](): void;
21
26
  [index: number]: WMLDOMNode;
22
27
  length: number;
23
28
  item(): WMLDOMNode;
@@ -65,6 +70,7 @@ export declare class WMLDOMNode implements Node {
65
70
  parentNode: null;
66
71
  previousSibling: null;
67
72
  get textContent(): string;
73
+ [Symbol.dispose](): void;
68
74
  addEventListener(): void;
69
75
  dispatchEvent(): boolean;
70
76
  removeEventListener(): void;