@litert/typeguard 1.0.0 → 1.2.0

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 (74) hide show
  1. package/CHANGES.md +15 -0
  2. package/lib/BuiltInTypeCompiler.d.ts +4 -4
  3. package/lib/BuiltInTypeCompiler.d.ts.map +1 -1
  4. package/lib/BuiltInTypeCompiler.js +167 -166
  5. package/lib/BuiltInTypeCompiler.js.map +1 -1
  6. package/lib/BuiltInTypes.d.ts +1 -1
  7. package/lib/BuiltInTypes.js +37 -36
  8. package/lib/BuiltInTypes.js.map +1 -1
  9. package/lib/Common.d.ts +13 -9
  10. package/lib/Common.d.ts.map +1 -1
  11. package/lib/Common.js +1 -1
  12. package/lib/Compiler.d.ts +2 -2
  13. package/lib/Compiler.d.ts.map +1 -1
  14. package/lib/Compiler.js +77 -72
  15. package/lib/Compiler.js.map +1 -1
  16. package/lib/Context.d.ts +2 -2
  17. package/lib/Context.js +3 -2
  18. package/lib/Context.js.map +1 -1
  19. package/lib/FilterCompiler.d.ts +5 -5
  20. package/lib/FilterCompiler.d.ts.map +1 -1
  21. package/lib/FilterCompiler.js +25 -24
  22. package/lib/FilterCompiler.js.map +1 -1
  23. package/lib/InlineCompiler.d.ts +12 -5
  24. package/lib/InlineCompiler.d.ts.map +1 -1
  25. package/lib/InlineCompiler.js +14 -5
  26. package/lib/InlineCompiler.js.map +1 -1
  27. package/lib/Internal.d.ts +2 -1
  28. package/lib/Internal.d.ts.map +1 -1
  29. package/lib/Internal.js +12 -10
  30. package/lib/Internal.js.map +1 -1
  31. package/lib/Modifiers.d.ts +1 -1
  32. package/lib/Modifiers.js +2 -1
  33. package/lib/Modifiers.js.map +1 -1
  34. package/lib/index.d.ts +5 -5
  35. package/lib/index.js +19 -7
  36. package/lib/index.js.map +1 -1
  37. package/lib/langs/JavaScript.d.ts +2 -2
  38. package/lib/langs/JavaScript.d.ts.map +1 -1
  39. package/lib/langs/JavaScript.js +30 -23
  40. package/lib/langs/JavaScript.js.map +1 -1
  41. package/package.json +18 -13
  42. package/src/{samples → examples}/quick-start.ts +22 -12
  43. package/src/lib/BuiltInTypeCompiler.ts +171 -171
  44. package/src/lib/BuiltInTypes.ts +36 -36
  45. package/src/lib/Common.ts +15 -10
  46. package/src/lib/Compiler.ts +213 -208
  47. package/src/lib/Context.ts +3 -3
  48. package/src/lib/FilterCompiler.ts +84 -84
  49. package/src/lib/InlineCompiler.ts +35 -14
  50. package/src/lib/Internal.ts +12 -10
  51. package/src/lib/Modifiers.ts +2 -2
  52. package/src/lib/index.ts +5 -5
  53. package/src/lib/langs/JavaScript.ts +34 -24
  54. package/src/test/00-all.ts +11 -9
  55. package/src/test/01-elemental-types.ts +1111 -1110
  56. package/src/test/02-array-and-list.ts +75 -75
  57. package/src/test/03-tuple.ts +87 -87
  58. package/src/test/04-from-string.ts +849 -848
  59. package/src/test/05-string-asserts.ts +422 -422
  60. package/src/test/06-structure.ts +107 -107
  61. package/src/test/07-modifiers.ts +151 -42
  62. package/src/test/08-map-and-dict.ts +46 -46
  63. package/src/test/09-exceptions.ts +67 -0
  64. package/src/test/abstracts.ts +52 -43
  65. package/dist/typeguard.amd.d.ts +0 -588
  66. package/dist/typeguard.amd.d.ts.map +0 -1
  67. package/dist/typeguard.amd.js +0 -2063
  68. package/dist/typeguard.amd.js.map +0 -1
  69. package/dist/typeguard.system.d.ts +0 -588
  70. package/dist/typeguard.system.d.ts.map +0 -1
  71. package/dist/typeguard.system.js +0 -2179
  72. package/dist/typeguard.system.js.map +0 -1
  73. package/tsconfig-amd.json +0 -72
  74. package/tsconfig-systemjs.json +0 -72
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
3
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
4
4
  *
5
5
  * Licensed under the Apache License, Version 2.0 (the "License");
6
6
  * you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.FilterCompiler = void 0;
18
19
  class FilterCompiler {
19
20
  constructor(_lang, _bitc) {
20
21
  this._lang = _lang;
@@ -22,21 +23,21 @@ class FilterCompiler {
22
23
  }
23
24
  compile(rule, ctx) {
24
25
  let vName = ctx.vName;
25
- const filter = rule.slice(1).split(" ");
26
+ const filter = rule.slice(1).split(' ');
26
27
  if (filter.slice(2).length !== filter.slice(2).filter((x) => /^\d+(\.\d+)?$/.test(x)).length) {
27
- throw new TypeError("Only number is allowed as filter arguments.");
28
+ throw new TypeError('Only number is allowed as filter arguments.');
28
29
  }
29
- let ret = [];
30
+ const ret = [];
30
31
  switch (filter[0]) {
31
- case "array.length":
32
+ case 'array.length':
32
33
  ret.push(this._lang.isArray(vName, true));
33
34
  vName = this._lang.arrayLength(vName);
34
35
  break;
35
- case "string.length":
36
+ case 'string.length':
36
37
  ret.push(this._lang.isString(vName, true));
37
38
  vName = this._lang.stringLength(vName);
38
39
  break;
39
- case "value":
40
+ case 'value':
40
41
  ret.push(this._lang.isNumber(vName, true));
41
42
  break;
42
43
  default:
@@ -44,62 +45,62 @@ class FilterCompiler {
44
45
  break;
45
46
  }
46
47
  switch (filter[1]) {
47
- case "between":
48
+ case 'between':
48
49
  if (filter.length !== 4) {
49
50
  throw new TypeError(`Filter ${filter[1]} require 2 arguments.`);
50
51
  }
51
52
  ret.push(this._lang.gte(vName, filter[2]));
52
53
  ret.push(this._lang.lte(vName, filter[3]));
53
54
  break;
54
- case "gt":
55
- case ">":
55
+ case 'gt':
56
+ case '>':
56
57
  if (filter.length !== 3) {
57
58
  throw new TypeError(`Filter ${filter[1]} require 1 argument.`);
58
59
  }
59
60
  ret.push(this._lang.gt(vName, filter[2]));
60
61
  break;
61
- case "ge":
62
- case "gte":
63
- case ">=":
62
+ case 'ge':
63
+ case 'gte':
64
+ case '>=':
64
65
  if (filter.length !== 3) {
65
66
  throw new TypeError(`Filter ${filter[1]} require 1 argument.`);
66
67
  }
67
68
  ret.push(this._lang.gte(vName, filter[2]));
68
69
  break;
69
- case "lt":
70
- case "<":
70
+ case 'lt':
71
+ case '<':
71
72
  if (filter.length !== 3) {
72
73
  throw new TypeError(`Filter ${filter[1]} require 1 argument.`);
73
74
  }
74
75
  ret.push(this._lang.lt(vName, filter[2]));
75
76
  break;
76
- case "le":
77
- case "lte":
78
- case "<=":
77
+ case 'le':
78
+ case 'lte':
79
+ case '<=':
79
80
  if (filter.length !== 3) {
80
81
  throw new TypeError(`Filter ${filter[1]} require 1 argument.`);
81
82
  }
82
83
  ret.push(this._lang.lte(vName, filter[2]));
83
84
  break;
84
- case "eq":
85
- case "==":
85
+ case 'eq':
86
+ case '==':
86
87
  if (filter.length !== 3) {
87
88
  throw new TypeError(`Filter ${filter[1]} require 1 argument.`);
88
89
  }
89
90
  ret.push(this._lang.eq(vName, filter[2]));
90
91
  break;
91
- case "ne":
92
- case "!=":
92
+ case 'ne':
93
+ case '!=':
93
94
  if (filter.length !== 3) {
94
95
  throw new TypeError(`Filter ${filter[1]} require 1 argument.`);
95
96
  }
96
97
  ret.push(this._lang.ne(vName, filter[2]));
97
98
  break;
98
- case "timesof":
99
+ case 'timesof':
99
100
  if (filter.length !== 3) {
100
101
  throw new TypeError(`Filter ${filter[1]} require 1 argument.`);
101
102
  }
102
- ret.push(this._lang.eq(this._lang.modOf(vName, filter[2]), "0"));
103
+ ret.push(this._lang.eq(this._lang.modOf(vName, filter[2]), '0'));
103
104
  break;
104
105
  default:
105
106
  throw new TypeError(`Unknown filter type "${filter[1]}".`);
@@ -1 +1 @@
1
- {"version":3,"file":"FilterCompiler.js","sourceRoot":"","sources":["../src/lib/FilterCompiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FilterCompiler.js","sourceRoot":"","sources":["../src/lib/FilterCompiler.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -13,12 +13,12 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import * as C from "./Common";
16
+ import * as C from './Common';
17
17
  export interface IInlineCompileOptions extends C.ICompileOptions {
18
18
  /**
19
19
  * Added `debugger` statement before executing checking code.
20
20
  */
21
- "stopOnEntry"?: boolean;
21
+ 'stopOnEntry'?: boolean;
22
22
  }
23
23
  export interface IInlineCompiler {
24
24
  /**
@@ -27,13 +27,20 @@ export interface IInlineCompiler {
27
27
  *
28
28
  * @param options The options of compilation.
29
29
  */
30
- compile<T>(options: IInlineCompileOptions): C.TypeChecker<T>;
30
+ compile<T>(options: IInlineCompileOptions): C.ITypeChecker<T>;
31
31
  /**
32
32
  * Get the type-checker of a pre-defined type.
33
33
  *
34
34
  * @param name The name of the pre-defined type.
35
35
  */
36
- getPredefinedType<T>(name: string): C.TypeChecker<T>;
36
+ getPredefinedType<T>(name: string): C.ITypeChecker<T>;
37
+ /**
38
+ * Register a pre-defined type checker.
39
+ *
40
+ * @param name The name of the pre-defined type (without prefix `@`)
41
+ * @param checker The checker callback of the pre-defined type.
42
+ */
43
+ addPredefinedType<T>(name: string, checker: C.ITypeChecker<T>): this;
37
44
  /**
38
45
  * Check if a pre-defined type is compiled.
39
46
  *
@@ -1 +1 @@
1
- {"version":3,"file":"InlineCompiler.d.ts","sourceRoot":"","sources":["../src/lib/InlineCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,MAAM,WAAW,qBAAsB,SAAQ,CAAC,CAAC,eAAe;IAE5D;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAE5B;;;;;OAKG;IACH,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE7D;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAErD;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzC;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE,CAAC;CACpC;AAkGD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,CAGtD"}
1
+ {"version":3,"file":"InlineCompiler.d.ts","sourceRoot":"","sources":["../src/lib/InlineCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAG9B,MAAM,WAAW,qBAAsB,SAAQ,CAAC,CAAC,eAAe;IAE5D;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAE5B;;;;;OAKG;IACH,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9D;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAEtD;;;;;OAKG;IACH,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAErE;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzC;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE,CAAC;CACpC;AA8GD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,CAGtD"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
3
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
4
4
  *
5
5
  * Licensed under the Apache License, Version 2.0 (the "License");
6
6
  * you may not use this file except in compliance with the License.
@@ -15,14 +15,16 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.createInlineCompiler = void 0;
18
19
  const Compiler_1 = require("./Compiler");
19
20
  const JavaScript_1 = require("./langs/JavaScript");
21
+ const I = require("./Internal");
20
22
  class InlineCompiler {
21
23
  constructor() {
22
24
  this._defTypes = {};
23
25
  this._missingTypes = {};
24
- const lang = JavaScript_1.createJavaScriptLanguageBuilder();
25
- this._compiler = Compiler_1.createCompiler(lang);
26
+ const lang = (0, JavaScript_1.createJavaScriptLanguageBuilder)();
27
+ this._compiler = (0, Compiler_1.createCompiler)(lang);
26
28
  }
27
29
  compile(options) {
28
30
  const result = this._compiler.compile(options);
@@ -30,7 +32,7 @@ class InlineCompiler {
30
32
  return this._wrapCheckerCode(result, options.stopOnEntry);
31
33
  }
32
34
  _preapreDefinedTypes(types, stopOnEntry) {
33
- for (let x of types) {
35
+ for (const x of types) {
34
36
  if (this._defTypes[x]) {
35
37
  continue;
36
38
  }
@@ -44,6 +46,13 @@ class InlineCompiler {
44
46
  delete this._missingTypes[x];
45
47
  }
46
48
  }
49
+ addPredefinedType(name, checker) {
50
+ if (!I.RE_VALID_CUSTOM_TYPE_NAME.test(name)) {
51
+ throw new TypeError(`Invalid name ${JSON.stringify(name)} for a pre-defined type.`);
52
+ }
53
+ this._defTypes[name] = checker;
54
+ return this;
55
+ }
47
56
  detectUndefinedTypes() {
48
57
  return Object.keys(this._missingTypes);
49
58
  }
@@ -57,7 +66,7 @@ class InlineCompiler {
57
66
  return this._defTypes[name];
58
67
  }
59
68
  _wrapCheckerCode(info, stopOnEntry = false) {
60
- const soe = stopOnEntry ? "debugger;" : "";
69
+ const soe = stopOnEntry ? 'debugger;' : '';
61
70
  return (new Function(info.typeSlotName, `return function(${info.arguments[0].name}) {${soe}
62
71
 
63
72
  return ${info.source};
@@ -1 +1 @@
1
- {"version":3,"file":"InlineCompiler.js","sourceRoot":"","sources":["../src/lib/InlineCompiler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAEH,yCAA4C;AAC5C,mDAAqE;AAyCrE,MAAM,cAAc;IAShB;QAEI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAExB,MAAM,IAAI,GAAG,4CAA+B,EAAE,CAAC;QAE/C,IAAI,CAAC,SAAS,GAAG,yBAAc,CAC3B,IAAI,CACP,CAAC;IACN,CAAC;IAEM,OAAO,CAAI,OAA8B;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,CAAC;IAEO,oBAAoB,CACxB,KAAe,EACf,WAAqB;QAGrB,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;YAEjB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBAEnB,SAAS;aACZ;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAEjD,IAAI,CAAC,IAAI,EAAE;gBAEP,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC7B,SAAS;aACZ;YAED,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAE7D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE9C,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAChC;IACL,CAAC;IAEM,oBAAoB;QAEvB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAEM,iBAAiB,CAAC,IAAY;QAEjC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,iBAAiB,CAAC,IAAY;QAEjC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAEvB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,kBAAkB,CAAC,CAAC;SAChE;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEO,gBAAgB,CACpB,IAAsB,EACtB,cAAuB,KAAK;QAG5B,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3C,OAAO,CAAC,IAAI,QAAQ,CAChB,IAAI,CAAC,YAAY,EACjB,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG;;yBAErC,IAAI,CAAC,MAAM;eACrB,CACN,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;CACJ;AAED;;GAEG;AACH,SAAgB,oBAAoB;IAEhC,OAAO,IAAI,cAAc,EAAE,CAAC;AAChC,CAAC;AAHD,oDAGC"}
1
+ {"version":3,"file":"InlineCompiler.js","sourceRoot":"","sources":["../src/lib/InlineCompiler.ts"],"names":[],"mappings":"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"}
package/lib/Internal.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -84,4 +84,5 @@ export interface IBuiltInTypeCompiler {
84
84
  isConstructed(type: string): boolean;
85
85
  isElemental(type: string): boolean;
86
86
  }
87
+ export declare const RE_VALID_CUSTOM_TYPE_NAME: RegExp;
87
88
  //# sourceMappingURL=Internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Internal.d.ts","sourceRoot":"","sources":["../src/lib/Internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,UAAU,OAAO,CAAC;AAE/B,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,cAAc,QAAoB,CAAC;AAEhD,eAAO,MAAM,eAAe,QAAqB,CAAC;AAElD,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AAErE,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,oBAAY,MAAM;IAEd,WAAW,IAAA;IACX,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,KAAK,IAAA;CACR;AAED,oBAAY,UAAU;IAElB;;OAEG;IACH,EAAE,IAAA;IAEF;;OAEG;IACH,GAAG,IAAA;IAEH;;OAEG;IACH,OAAO,IAAA;IAEP;;OAEG;IACH,eAAe,IAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAEzB,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,QAAS,SAAQ,YAAY;IAE1C,KAAK,EAAE,OAAO,CAAC;IAEf,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;IAE/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAElC,MAAM,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAE5B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC;CAChD;AAED,MAAM,WAAW,oBAAoB;IAEjC;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE7D;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC"}
1
+ {"version":3,"file":"Internal.d.ts","sourceRoot":"","sources":["../src/lib/Internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,UAAU,OAAO,CAAC;AAE/B,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,cAAc,QAAoB,CAAC;AAEhD,eAAO,MAAM,eAAe,QAAqB,CAAC;AAElD,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AAErE,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,oBAAY,MAAM;IAEd,WAAW,IAAA;IACX,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,KAAK,IAAA;CACR;AAED,oBAAY,UAAU;IAElB;;OAEG;IACH,EAAE,IAAA;IAEF;;OAEG;IACH,GAAG,IAAA;IAEH;;OAEG;IACH,OAAO,IAAA;IAEP;;OAEG;IACH,eAAe,IAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAEzB,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,QAAS,SAAQ,YAAY;IAE1C,KAAK,EAAE,OAAO,CAAC;IAEf,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;IAE/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAElC,MAAM,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAE5B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC;CAChD;AAED,MAAM,WAAW,oBAAoB;IAEjC;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE7D;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC;AAED,eAAO,MAAM,yBAAyB,QAAe,CAAC"}
package/lib/Internal.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
3
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
4
4
  *
5
5
  * Licensed under the Apache License, Version 2.0 (the "License");
6
6
  * you may not use this file except in compliance with the License.
@@ -15,18 +15,19 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.MAP_SUFFIX = "{}";
19
- exports.LIST_SUFFIX = "[]";
20
- exports.MODIFIER_PREFIX = "$.";
21
- exports.FILTER_PREFIX = "|";
22
- exports.IMPLICIT_SYMBOL = "?";
23
- exports.PREDEF_TYPE_SYMBOL = "@";
24
- exports.NEGATIVE_SYMBOL = "!";
18
+ exports.RE_VALID_CUSTOM_TYPE_NAME = exports.EFlagValue = exports.EFlags = exports.KEY_EQUAL_SUFFIX = exports.KEY_STRICT_SUFFIX = exports.KEY_ARRAY_SUFFIX = exports.KEY_LIST_SUFFIX = exports.KEY_MAP_SUFFIX = exports.NEGATIVE_SYMBOL = exports.PREDEF_TYPE_SYMBOL = exports.IMPLICIT_SYMBOL = exports.FILTER_PREFIX = exports.MODIFIER_PREFIX = exports.LIST_SUFFIX = exports.MAP_SUFFIX = void 0;
19
+ exports.MAP_SUFFIX = '{}';
20
+ exports.LIST_SUFFIX = '[]';
21
+ exports.MODIFIER_PREFIX = '$.';
22
+ exports.FILTER_PREFIX = '|';
23
+ exports.IMPLICIT_SYMBOL = '?';
24
+ exports.PREDEF_TYPE_SYMBOL = '@';
25
+ exports.NEGATIVE_SYMBOL = '!';
25
26
  exports.KEY_MAP_SUFFIX = `->${exports.MAP_SUFFIX}`;
26
27
  exports.KEY_LIST_SUFFIX = `->${exports.LIST_SUFFIX}`;
27
28
  exports.KEY_ARRAY_SUFFIX = /->\[\s*(\d+)(\s*,\s*(\d+)?)?\s*\]$/;
28
- exports.KEY_STRICT_SUFFIX = "->()";
29
- exports.KEY_EQUAL_SUFFIX = "->(=)";
29
+ exports.KEY_STRICT_SUFFIX = '->()';
30
+ exports.KEY_EQUAL_SUFFIX = '->(=)';
30
31
  var EFlags;
31
32
  (function (EFlags) {
32
33
  EFlags[EFlags["FROM_STRING"] = 0] = "FROM_STRING";
@@ -54,4 +55,5 @@ var EFlagValue;
54
55
  */
55
56
  EFlagValue[EFlagValue["ELEMENT_INHERIT"] = 3] = "ELEMENT_INHERIT";
56
57
  })(EFlagValue = exports.EFlagValue || (exports.EFlagValue = {}));
58
+ exports.RE_VALID_CUSTOM_TYPE_NAME = /^[-:.\w]+$/;
57
59
  //# sourceMappingURL=Internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Internal.js","sourceRoot":"","sources":["../src/lib/Internal.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAEU,QAAA,UAAU,GAAG,IAAI,CAAC;AAElB,QAAA,WAAW,GAAG,IAAI,CAAC;AAEnB,QAAA,eAAe,GAAG,IAAI,CAAC;AAEvB,QAAA,aAAa,GAAG,GAAG,CAAC;AAEpB,QAAA,eAAe,GAAG,GAAG,CAAC;AAEtB,QAAA,kBAAkB,GAAG,GAAG,CAAC;AAEzB,QAAA,eAAe,GAAG,GAAG,CAAC;AAEtB,QAAA,cAAc,GAAG,KAAK,kBAAU,EAAE,CAAC;AAEnC,QAAA,eAAe,GAAG,KAAK,mBAAW,EAAE,CAAC;AAErC,QAAA,gBAAgB,GAAG,oCAAoC,CAAC;AAExD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAE3B,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAExC,IAAY,MAOX;AAPD,WAAY,MAAM;IAEd,iDAAW,CAAA;IACX,uCAAM,CAAA;IACN,2CAAQ,CAAA;IACR,2CAAQ,CAAA;IACR,qCAAK,CAAA;AACT,CAAC,EAPW,MAAM,GAAN,cAAM,KAAN,cAAM,QAOjB;AAED,IAAY,UAqBX;AArBD,WAAY,UAAU;IAElB;;OAEG;IACH,uCAAE,CAAA;IAEF;;OAEG;IACH,yCAAG,CAAA;IAEH;;OAEG;IACH,iDAAO,CAAA;IAEP;;OAEG;IACH,iEAAe,CAAA;AACnB,CAAC,EArBW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAqBrB"}
1
+ {"version":3,"file":"Internal.js","sourceRoot":"","sources":["../src/lib/Internal.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEU,QAAA,UAAU,GAAG,IAAI,CAAC;AAElB,QAAA,WAAW,GAAG,IAAI,CAAC;AAEnB,QAAA,eAAe,GAAG,IAAI,CAAC;AAEvB,QAAA,aAAa,GAAG,GAAG,CAAC;AAEpB,QAAA,eAAe,GAAG,GAAG,CAAC;AAEtB,QAAA,kBAAkB,GAAG,GAAG,CAAC;AAEzB,QAAA,eAAe,GAAG,GAAG,CAAC;AAEtB,QAAA,cAAc,GAAG,KAAK,kBAAU,EAAE,CAAC;AAEnC,QAAA,eAAe,GAAG,KAAK,mBAAW,EAAE,CAAC;AAErC,QAAA,gBAAgB,GAAG,oCAAoC,CAAC;AAExD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAE3B,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAExC,IAAY,MAOX;AAPD,WAAY,MAAM;IAEd,iDAAW,CAAA;IACX,uCAAM,CAAA;IACN,2CAAQ,CAAA;IACR,2CAAQ,CAAA;IACR,qCAAK,CAAA;AACT,CAAC,EAPW,MAAM,GAAN,cAAM,KAAN,cAAM,QAOjB;AAED,IAAY,UAqBX;AArBD,WAAY,UAAU;IAElB;;OAEG;IACH,uCAAE,CAAA;IAEF;;OAEG;IACH,yCAAG,CAAA;IAEH;;OAEG;IACH,iDAAO,CAAA;IAEP;;OAEG;IACH,iEAAe,CAAA;AACnB,CAAC,EArBW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAqBrB;AAwDY,QAAA,yBAAyB,GAAG,YAAY,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
package/lib/Modifiers.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
3
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
4
4
  *
5
5
  * Licensed under the Apache License, Version 2.0 (the "License");
6
6
  * you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.TYPE = exports.TAG = exports.EQUAL = exports.TUPLE = exports.STRING = exports.STRICT = exports.DICT = exports.ARRAY = exports.LIST = exports.MAP = exports.AND = exports.OR = exports.NOT = exports.PREFIX = void 0;
18
19
  const I = require("./Internal");
19
20
  exports.PREFIX = I.MODIFIER_PREFIX;
20
21
  exports.NOT = `${I.MODIFIER_PREFIX}not`;
@@ -1 +1 @@
1
- {"version":3,"file":"Modifiers.js","sourceRoot":"","sources":["../src/lib/Modifiers.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAEH,gCAAgC;AAEnB,QAAA,MAAM,GAAW,CAAC,CAAC,eAAe,CAAC;AAEnC,QAAA,GAAG,GAAW,GAAG,CAAC,CAAC,eAAe,KAAK,CAAC;AAExC,QAAA,EAAE,GAAW,GAAG,CAAC,CAAC,eAAe,IAAI,CAAC;AAEtC,QAAA,GAAG,GAAW,GAAG,CAAC,CAAC,eAAe,KAAK,CAAC;AAExC,QAAA,GAAG,GAAW,GAAG,CAAC,CAAC,eAAe,KAAK,CAAC;AAExC,QAAA,IAAI,GAAW,GAAG,CAAC,CAAC,eAAe,MAAM,CAAC;AAE1C,QAAA,KAAK,GAAW,GAAG,CAAC,CAAC,eAAe,OAAO,CAAC;AAE5C,QAAA,IAAI,GAAW,GAAG,CAAC,CAAC,eAAe,MAAM,CAAC;AAE1C,QAAA,MAAM,GAAW,GAAG,CAAC,CAAC,eAAe,QAAQ,CAAC;AAE9C,QAAA,MAAM,GAAW,GAAG,CAAC,CAAC,eAAe,QAAQ,CAAC;AAE9C,QAAA,KAAK,GAAW,GAAG,CAAC,CAAC,eAAe,OAAO,CAAC;AAE5C,QAAA,KAAK,GAAW,GAAG,CAAC,CAAC,eAAe,OAAO,CAAC;AAE5C,QAAA,GAAG,GAAW,GAAG,CAAC,CAAC,eAAe,KAAK,CAAC;AAExC,QAAA,IAAI,GAAW,GAAG,CAAC,CAAC,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Modifiers.js","sourceRoot":"","sources":["../src/lib/Modifiers.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,gCAAgC;AAEnB,QAAA,MAAM,GAAW,CAAC,CAAC,eAAe,CAAC;AAEnC,QAAA,GAAG,GAAW,GAAG,CAAC,CAAC,eAAe,KAAK,CAAC;AAExC,QAAA,EAAE,GAAW,GAAG,CAAC,CAAC,eAAe,IAAI,CAAC;AAEtC,QAAA,GAAG,GAAW,GAAG,CAAC,CAAC,eAAe,KAAK,CAAC;AAExC,QAAA,GAAG,GAAW,GAAG,CAAC,CAAC,eAAe,KAAK,CAAC;AAExC,QAAA,IAAI,GAAW,GAAG,CAAC,CAAC,eAAe,MAAM,CAAC;AAE1C,QAAA,KAAK,GAAW,GAAG,CAAC,CAAC,eAAe,OAAO,CAAC;AAE5C,QAAA,IAAI,GAAW,GAAG,CAAC,CAAC,eAAe,MAAM,CAAC;AAE1C,QAAA,MAAM,GAAW,GAAG,CAAC,CAAC,eAAe,QAAQ,CAAC;AAE9C,QAAA,MAAM,GAAW,GAAG,CAAC,CAAC,eAAe,QAAQ,CAAC;AAE9C,QAAA,KAAK,GAAW,GAAG,CAAC,CAAC,eAAe,OAAO,CAAC;AAE5C,QAAA,KAAK,GAAW,GAAG,CAAC,CAAC,eAAe,OAAO,CAAC;AAE5C,QAAA,GAAG,GAAW,GAAG,CAAC,CAAC,eAAe,KAAK,CAAC;AAExC,QAAA,IAAI,GAAW,GAAG,CAAC,CAAC,eAAe,MAAM,CAAC"}
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -13,8 +13,8 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export * from "./InlineCompiler";
17
- export * from "./langs/JavaScript";
18
- export * from "./Compiler";
19
- export * from "./Common";
16
+ export * from './InlineCompiler';
17
+ export * from './langs/JavaScript';
18
+ export * from './Compiler';
19
+ export * from './Common';
20
20
  //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
3
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
4
4
  *
5
5
  * Licensed under the Apache License, Version 2.0 (the "License");
6
6
  * you may not use this file except in compliance with the License.
@@ -14,11 +14,23 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- function __export(m) {
18
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
19
- }
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
29
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
30
+ };
20
31
  Object.defineProperty(exports, "__esModule", { value: true });
21
- __export(require("./InlineCompiler"));
22
- __export(require("./langs/JavaScript"));
23
- __export(require("./Compiler"));
32
+ __exportStar(require("./InlineCompiler"), exports);
33
+ __exportStar(require("./langs/JavaScript"), exports);
34
+ __exportStar(require("./Compiler"), exports);
35
+ __exportStar(require("./Common"), exports);
24
36
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;AAEH,sCAAiC;AACjC,wCAAmC;AACnC,gCAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;AAEH,mDAAiC;AACjC,qDAAmC;AACnC,6CAA2B;AAC3B,2CAAyB"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import * as C from "../Common";
16
+ import * as C from '../Common';
17
17
  /**
18
18
  * Create a language builder object for JavaScript.
19
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"JavaScript.d.ts","sourceRoot":"","sources":["../../src/lib/langs/JavaScript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,CAAC,MAAM,WAAW,CAAC;AAkZ/B;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,CAAC,CAAC,gBAAgB,CAGpE"}
1
+ {"version":3,"file":"JavaScript.d.ts","sourceRoot":"","sources":["../../src/lib/langs/JavaScript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,CAAC,MAAM,WAAW,CAAC;AA4Z/B;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,CAAC,CAAC,gBAAgB,CAGpE"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright 2019 Angus.Fenying <fenying@litert.org>
3
+ * Copyright 2022 Angus Fenying <fenying@litert.org>
4
4
  *
5
5
  * Licensed under the Apache License, Version 2.0 (the "License");
6
6
  * you may not use this file except in compliance with the License.
@@ -15,12 +15,13 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.createJavaScriptLanguageBuilder = void 0;
18
19
  class JavaScriptLanguage {
19
20
  switchCase(expr, cases) {
20
- return `switch (${expr}) { ${cases.join("")} }`;
21
+ return `switch (${expr}) { ${cases.join('')} }`;
21
22
  }
22
23
  caseIf(cond, expr) {
23
- return `${cond.map((x) => `case ${x}:`).join(" ")} { ${expr} break; }`;
24
+ return `${cond.map((x) => `case ${x}:`).join(' ')} { ${expr} break; }`;
24
25
  }
25
26
  caseDefault(expr) {
26
27
  return `default: { ${expr} break; }`;
@@ -40,7 +41,7 @@ class JavaScriptLanguage {
40
41
  return `${expr}.includes(${match})`;
41
42
  }
42
43
  call(fnName, ...args) {
43
- return `${fnName}(${args.join(",")})`;
44
+ return `${fnName}(${args.join(',')})`;
44
45
  }
45
46
  startsWith(expr, match) {
46
47
  return `${expr}.startsWith(${match})`;
@@ -61,21 +62,27 @@ class JavaScriptLanguage {
61
62
  if (conditions.length === 1) {
62
63
  return conditions[0];
63
64
  }
64
- conditions = this._dereplicate(conditions.filter((x) => x !== "true"));
65
+ if (conditions.includes('true')) {
66
+ return 'true';
67
+ }
68
+ conditions = this._dereplicate(conditions.filter((x) => x !== 'false'));
65
69
  if (!conditions.length) {
66
- return "true";
70
+ return 'true';
67
71
  }
68
- return `${conditions.map((x) => `(${x})`).join(" || ")}`;
72
+ return `${conditions.map((x) => `(${x})`).join(' || ')}`;
69
73
  }
70
74
  and(conditions) {
71
75
  if (conditions.length === 1) {
72
76
  return conditions[0];
73
77
  }
74
- conditions = this._dereplicate(conditions.filter((x) => x !== "true"));
78
+ if (conditions.includes('false')) {
79
+ return 'false';
80
+ }
81
+ conditions = this._dereplicate(conditions.filter((x) => x !== 'true'));
75
82
  if (!conditions.length) {
76
- return "true";
83
+ return 'true';
77
84
  }
78
- return `${conditions.map((x) => `(${x})`).join(" && ")}`;
85
+ return `${conditions.map((x) => `(${x})`).join(' && ')}`;
79
86
  }
80
87
  eq(a, b) {
81
88
  return `${a} === ${b}`;
@@ -105,9 +112,9 @@ class JavaScriptLanguage {
105
112
  return `${a} % ${b}`;
106
113
  }
107
114
  matchRegExp(expr, regExp) {
108
- let m = regExp.match(/^\/(.+)\/([a-z]*)$/i);
115
+ const m = /^\/(.+)\/([a-z]*)$/i.exec(regExp);
109
116
  if (m) {
110
- return `/${m[1]}/${m[2] || ""}.test(${expr})`;
117
+ return `/${m[1]}/${m[2] || ''}.test(${expr})`;
111
118
  }
112
119
  return `/${regExp}/.test(${expr})`;
113
120
  }
@@ -118,10 +125,10 @@ class JavaScriptLanguage {
118
125
  return `${vn} ${this._equal(positive)} undefined`;
119
126
  }
120
127
  _equal(positive = true) {
121
- return positive ? "===" : "!==";
128
+ return positive ? '===' : '!==';
122
129
  }
123
130
  _not(positive = true) {
124
- return positive ? "" : "!";
131
+ return positive ? '' : '!';
125
132
  }
126
133
  isString(vn, positive = true) {
127
134
  return `typeof ${vn} ${this._equal(positive)} "string"`;
@@ -144,13 +151,13 @@ class JavaScriptLanguage {
144
151
  this.isNumber(vn, true),
145
152
  this.and([
146
153
  this.isString(vn, true),
147
- this.matchRegExp(vn, "^[+-]?\\d+(\\.\\d+)?$")
154
+ this.matchRegExp(vn, '^[+-]?\\d+(\\.\\d+)?$')
148
155
  ])
149
156
  ]) : this.and([
150
157
  this.isNumber(vn, false),
151
158
  this.or([
152
159
  this.isString(vn, false),
153
- this.not(this.matchRegExp(vn, "^[+-]?\\d+(\\.\\d+)?$"))
160
+ this.not(this.matchRegExp(vn, '^[+-]?\\d+(\\.\\d+)?$'))
154
161
  ])
155
162
  ]);
156
163
  }
@@ -175,7 +182,7 @@ class JavaScriptLanguage {
175
182
  }`;
176
183
  }
177
184
  series(statements) {
178
- return statements.map((s) => s.endsWith(";") ? s : `${s};`).join("");
185
+ return statements.map((s) => s.endsWith(';') ? s : `${s};`).join('');
179
186
  }
180
187
  ifThen(condition, ifBody, elseBody) {
181
188
  if (elseBody) {
@@ -212,16 +219,16 @@ class JavaScriptLanguage {
212
219
  return `${a}[${i}]`;
213
220
  }
214
221
  get literalFalse() {
215
- return `false`;
222
+ return 'false';
216
223
  }
217
224
  get literalTrue() {
218
- return `true`;
225
+ return 'true';
219
226
  }
220
227
  get maxSafeInteger() {
221
- return "0X1FFFFFFFFFFFFF";
228
+ return '0X1FFFFFFFFFFFFF';
222
229
  }
223
230
  get minSafeInteger() {
224
- return "-0X1FFFFFFFFFFFFF";
231
+ return '-0X1FFFFFFFFFFFFF';
225
232
  }
226
233
  isTrueValue(vn) {
227
234
  return `!!${vn}`;
@@ -233,9 +240,9 @@ class JavaScriptLanguage {
233
240
  return `return ${vn};`;
234
241
  }
235
242
  closure(params, args, body) {
236
- return `(function(${params.join(", ")}) {
243
+ return `(function(${params.join(', ')}) {
237
244
  ${body}
238
- })(${args.join(", ")})`;
245
+ })(${args.join(', ')})`;
239
246
  }
240
247
  }
241
248
  /**