@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.
- package/CHANGES.md +15 -0
- package/lib/BuiltInTypeCompiler.d.ts +4 -4
- package/lib/BuiltInTypeCompiler.d.ts.map +1 -1
- package/lib/BuiltInTypeCompiler.js +167 -166
- package/lib/BuiltInTypeCompiler.js.map +1 -1
- package/lib/BuiltInTypes.d.ts +1 -1
- package/lib/BuiltInTypes.js +37 -36
- package/lib/BuiltInTypes.js.map +1 -1
- package/lib/Common.d.ts +13 -9
- package/lib/Common.d.ts.map +1 -1
- package/lib/Common.js +1 -1
- package/lib/Compiler.d.ts +2 -2
- package/lib/Compiler.d.ts.map +1 -1
- package/lib/Compiler.js +77 -72
- package/lib/Compiler.js.map +1 -1
- package/lib/Context.d.ts +2 -2
- package/lib/Context.js +3 -2
- package/lib/Context.js.map +1 -1
- package/lib/FilterCompiler.d.ts +5 -5
- package/lib/FilterCompiler.d.ts.map +1 -1
- package/lib/FilterCompiler.js +25 -24
- package/lib/FilterCompiler.js.map +1 -1
- package/lib/InlineCompiler.d.ts +12 -5
- package/lib/InlineCompiler.d.ts.map +1 -1
- package/lib/InlineCompiler.js +14 -5
- package/lib/InlineCompiler.js.map +1 -1
- package/lib/Internal.d.ts +2 -1
- package/lib/Internal.d.ts.map +1 -1
- package/lib/Internal.js +12 -10
- package/lib/Internal.js.map +1 -1
- package/lib/Modifiers.d.ts +1 -1
- package/lib/Modifiers.js +2 -1
- package/lib/Modifiers.js.map +1 -1
- package/lib/index.d.ts +5 -5
- package/lib/index.js +19 -7
- package/lib/index.js.map +1 -1
- package/lib/langs/JavaScript.d.ts +2 -2
- package/lib/langs/JavaScript.d.ts.map +1 -1
- package/lib/langs/JavaScript.js +30 -23
- package/lib/langs/JavaScript.js.map +1 -1
- package/package.json +18 -13
- package/src/{samples → examples}/quick-start.ts +22 -12
- package/src/lib/BuiltInTypeCompiler.ts +171 -171
- package/src/lib/BuiltInTypes.ts +36 -36
- package/src/lib/Common.ts +15 -10
- package/src/lib/Compiler.ts +213 -208
- package/src/lib/Context.ts +3 -3
- package/src/lib/FilterCompiler.ts +84 -84
- package/src/lib/InlineCompiler.ts +35 -14
- package/src/lib/Internal.ts +12 -10
- package/src/lib/Modifiers.ts +2 -2
- package/src/lib/index.ts +5 -5
- package/src/lib/langs/JavaScript.ts +34 -24
- package/src/test/00-all.ts +11 -9
- package/src/test/01-elemental-types.ts +1111 -1110
- package/src/test/02-array-and-list.ts +75 -75
- package/src/test/03-tuple.ts +87 -87
- package/src/test/04-from-string.ts +849 -848
- package/src/test/05-string-asserts.ts +422 -422
- package/src/test/06-structure.ts +107 -107
- package/src/test/07-modifiers.ts +151 -42
- package/src/test/08-map-and-dict.ts +46 -46
- package/src/test/09-exceptions.ts +67 -0
- package/src/test/abstracts.ts +52 -43
- package/dist/typeguard.amd.d.ts +0 -588
- package/dist/typeguard.amd.d.ts.map +0 -1
- package/dist/typeguard.amd.js +0 -2063
- package/dist/typeguard.amd.js.map +0 -1
- package/dist/typeguard.system.d.ts +0 -588
- package/dist/typeguard.system.d.ts.map +0 -1
- package/dist/typeguard.system.js +0 -2179
- package/dist/typeguard.system.js.map +0 -1
- package/tsconfig-amd.json +0 -72
- package/tsconfig-systemjs.json +0 -72
package/lib/FilterCompiler.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Copyright
|
|
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(
|
|
28
|
+
throw new TypeError('Only number is allowed as filter arguments.');
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
+
const ret = [];
|
|
30
31
|
switch (filter[0]) {
|
|
31
|
-
case
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
62
|
-
case
|
|
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
|
|
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
|
|
77
|
-
case
|
|
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
|
|
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
|
|
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
|
|
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]),
|
|
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":";AAAA;;;;;;;;;;;;;;GAcG
|
|
1
|
+
{"version":3,"file":"FilterCompiler.js","sourceRoot":"","sources":["../src/lib/FilterCompiler.ts"],"names":[],"mappings":"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"}
|
package/lib/InlineCompiler.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
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
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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;
|
|
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"}
|
package/lib/InlineCompiler.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Copyright
|
|
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 (
|
|
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 ?
|
|
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
|
|
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
|
|
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
|
package/lib/Internal.d.ts.map
CHANGED
|
@@ -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
|
|
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.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.
|
|
24
|
-
exports.
|
|
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
|
package/lib/Internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Internal.js","sourceRoot":"","sources":["../src/lib/Internal.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG
|
|
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"}
|
package/lib/Modifiers.d.ts
CHANGED
package/lib/Modifiers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Copyright
|
|
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`;
|
package/lib/Modifiers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modifiers.js","sourceRoot":"","sources":["../src/lib/Modifiers.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG
|
|
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
|
|
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
|
|
17
|
-
export * from
|
|
18
|
-
export * from
|
|
19
|
-
export * from
|
|
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
|
|
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
|
|
18
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
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
|
|
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
|
|
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;
|
|
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"}
|
package/lib/langs/JavaScript.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Copyright
|
|
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(
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
115
|
+
const m = /^\/(.+)\/([a-z]*)$/i.exec(regExp);
|
|
109
116
|
if (m) {
|
|
110
|
-
return `/${m[1]}/${m[2] ||
|
|
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,
|
|
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,
|
|
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(
|
|
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
|
|
222
|
+
return 'false';
|
|
216
223
|
}
|
|
217
224
|
get literalTrue() {
|
|
218
|
-
return
|
|
225
|
+
return 'true';
|
|
219
226
|
}
|
|
220
227
|
get maxSafeInteger() {
|
|
221
|
-
return
|
|
228
|
+
return '0X1FFFFFFFFFFFFF';
|
|
222
229
|
}
|
|
223
230
|
get minSafeInteger() {
|
|
224
|
-
return
|
|
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
|
/**
|