@litert/typeguard 1.1.0 → 1.3.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 +10 -0
- package/lib/BuiltInTypeCompiler.d.ts +2 -2
- package/lib/BuiltInTypeCompiler.d.ts.map +1 -1
- package/lib/BuiltInTypeCompiler.js +1 -1
- package/lib/BuiltInTypeCompiler.js.map +1 -1
- package/lib/BuiltInTypes.d.ts +1 -1
- package/lib/BuiltInTypes.js +1 -1
- package/lib/Common.d.ts +19 -2
- package/lib/Common.d.ts.map +1 -1
- package/lib/Common.js +1 -1
- package/lib/Compiler.d.ts +1 -1
- package/lib/Compiler.d.ts.map +1 -1
- package/lib/Compiler.js +93 -39
- package/lib/Compiler.js.map +1 -1
- package/lib/Context.d.ts +5 -4
- package/lib/Context.d.ts.map +1 -1
- package/lib/Context.js +9 -6
- package/lib/Context.js.map +1 -1
- package/lib/FilterCompiler.d.ts +3 -3
- package/lib/FilterCompiler.d.ts.map +1 -1
- package/lib/FilterCompiler.js +2 -2
- package/lib/FilterCompiler.js.map +1 -1
- package/lib/InlineCompiler.d.ts +10 -3
- package/lib/InlineCompiler.d.ts.map +1 -1
- package/lib/InlineCompiler.js +16 -5
- package/lib/InlineCompiler.js.map +1 -1
- package/lib/Internal.d.ts +6 -4
- package/lib/Internal.d.ts.map +1 -1
- package/lib/Internal.js +3 -2
- package/lib/Internal.js.map +1 -1
- package/lib/Modifiers.d.ts +1 -1
- package/lib/Modifiers.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +6 -2
- package/lib/index.js.map +1 -1
- package/lib/langs/JavaScript.d.ts +1 -1
- package/lib/langs/JavaScript.d.ts.map +1 -1
- package/lib/langs/JavaScript.js +29 -4
- package/lib/langs/JavaScript.js.map +1 -1
- package/package.json +12 -12
- package/src/examples/quick-start.ts +118 -2
- package/src/lib/BuiltInTypeCompiler.ts +2 -2
- package/src/lib/BuiltInTypes.ts +1 -1
- package/src/lib/Common.ts +41 -2
- package/src/lib/Compiler.ts +155 -50
- package/src/lib/Context.ts +9 -11
- package/src/lib/FilterCompiler.ts +4 -4
- package/src/lib/InlineCompiler.ts +36 -10
- package/src/lib/Internal.ts +8 -4
- package/src/lib/Modifiers.ts +1 -1
- package/src/lib/index.ts +1 -1
- package/src/lib/langs/JavaScript.ts +58 -5
- package/src/test/00-all.ts +1 -1
- package/src/test/01-elemental-types.ts +2 -1
- package/src/test/02-array-and-list.ts +18 -18
- package/src/test/03-tuple.ts +1 -1
- package/src/test/04-from-string.ts +2 -1
- package/src/test/05-string-asserts.ts +1 -1
- package/src/test/06-structure.ts +26 -26
- package/src/test/07-modifiers.ts +71 -10
- package/src/test/08-map-and-dict.ts +20 -20
- package/src/test/09-exceptions.ts +4 -4
- package/src/test/abstracts.ts +45 -7
package/CHANGES.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changes Logs
|
|
2
2
|
|
|
3
|
+
## v1.3.0
|
|
4
|
+
|
|
5
|
+
- fix(project): replaced substr with slice.
|
|
6
|
+
- feat(compiler): added experimental failure tracing info.
|
|
7
|
+
|
|
8
|
+
## v1.2.0
|
|
9
|
+
|
|
10
|
+
- Added API `IInlineCompiler.addPredefinedType`.
|
|
11
|
+
- Deprecated type `TypeChecker` with new type `ITypeChecker`.
|
|
12
|
+
|
|
3
13
|
## v1.1.0
|
|
4
14
|
|
|
5
15
|
- Allows characters `.:-` in predefined type names.
|
|
@@ -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.
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import * as C from './Common';
|
|
17
17
|
import * as I from './Internal';
|
|
18
18
|
export declare class BuiltInTypeCompiler implements I.IBuiltInTypeCompiler {
|
|
19
|
-
private _lang;
|
|
19
|
+
private readonly _lang;
|
|
20
20
|
constructor(_lang: C.ILanguageBuilder);
|
|
21
21
|
isStringType(type: string): boolean;
|
|
22
22
|
isConstructed(type: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuiltInTypeCompiler.d.ts","sourceRoot":"","sources":["../src/lib/BuiltInTypeCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;AAmOhC,qBAAa,mBACb,YAAW,CAAC,CAAC,oBAAoB;IAGzB,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,CAAC,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"BuiltInTypeCompiler.d.ts","sourceRoot":"","sources":["../src/lib/BuiltInTypeCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;AAmOhC,qBAAa,mBACb,YAAW,CAAC,CAAC,oBAAoB;IAGzB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,CAAC,CAAC,gBAAgB;IAGvC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKpC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKlC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKpC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;IAiQrE,OAAO,CAAC,UAAU;IAiFlB,OAAO,CAAC,QAAQ;IAgEhB,OAAO,CAAC,SAAS;IA+FjB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,UAAU;IAuGlB,OAAO,CAAC,SAAS;CAuHpB"}
|
|
@@ -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.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuiltInTypeCompiler.js","sourceRoot":"","sources":["../src/lib/BuiltInTypeCompiler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BuiltInTypeCompiler.js","sourceRoot":"","sources":["../src/lib/BuiltInTypeCompiler.ts"],"names":[],"mappings":"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"}
|
package/lib/BuiltInTypes.d.ts
CHANGED
package/lib/BuiltInTypes.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.
|
package/lib/Common.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
export declare type
|
|
1
|
+
export declare type ITypeChecker<T> = (v: unknown, errorTraces?: string[]) => v is T;
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use `ITypeChecker` instead.
|
|
4
|
+
*/
|
|
5
|
+
export declare type TypeChecker<T> = ITypeChecker<T>;
|
|
2
6
|
export interface ICompileOutputArgument {
|
|
3
7
|
/**
|
|
4
8
|
* The name of argument.
|
|
@@ -8,6 +12,7 @@ export interface ICompileOutputArgument {
|
|
|
8
12
|
* The type of argument.
|
|
9
13
|
*/
|
|
10
14
|
'type': string;
|
|
15
|
+
'initial': string;
|
|
11
16
|
}
|
|
12
17
|
export interface ICompileResult {
|
|
13
18
|
/**
|
|
@@ -36,6 +41,12 @@ export interface ICompileOptions {
|
|
|
36
41
|
* Give this type a name, so it could be used as a pre-defined type.
|
|
37
42
|
*/
|
|
38
43
|
'name'?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Enable adding failed asserts tracing info to the second argument.
|
|
46
|
+
*
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
49
|
+
'traceErrors'?: boolean;
|
|
39
50
|
}
|
|
40
51
|
export interface ILanguageBuilder {
|
|
41
52
|
/**
|
|
@@ -52,6 +63,11 @@ export interface ILanguageBuilder {
|
|
|
52
63
|
* @param expr The statements
|
|
53
64
|
*/
|
|
54
65
|
caseIf(cond: string[], expr: string): string;
|
|
66
|
+
orAddTrace(expr: string, vTrace: string, vTraceStack: string, path: string): string;
|
|
67
|
+
addTrace(vTrace: string, vTraceStack: string, path: string): string;
|
|
68
|
+
stringTemplateVar(varExpr: string): string;
|
|
69
|
+
numberTemplateVar(varExpr: string): string;
|
|
70
|
+
escape(str: string): string;
|
|
55
71
|
caseDefault(expr: string): string;
|
|
56
72
|
array(v: any[]): string;
|
|
57
73
|
/**
|
|
@@ -202,11 +218,12 @@ export interface ILanguageBuilder {
|
|
|
202
218
|
* @param expr The expression of dictionary.
|
|
203
219
|
*/
|
|
204
220
|
keys(expr: string): string;
|
|
205
|
-
forEach(arrayName: string, itemName: string, forBody: string): string;
|
|
221
|
+
forEach(arrayName: string, elName: string, itemName: string, forBody: string): string;
|
|
206
222
|
ifThen(condition: string, ifBody: string, elseBody?: string): string;
|
|
207
223
|
forIn(objectName: string, keyName: string, itemName: string, forBody: string): string;
|
|
208
224
|
fieldIndex(objectName: string, key: string): string;
|
|
209
225
|
arrayIndex(arrayName: string, index: string | number): string;
|
|
226
|
+
add(expr1: string | number, expr2: string | number): string;
|
|
210
227
|
arraySlice(arrayName: string, start: string | number, end?: string | number): string;
|
|
211
228
|
closure(params: string[], args: string[], body: string): string;
|
|
212
229
|
readonly literalFalse: string;
|
package/lib/Common.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../src/lib/Common.ts"],"names":[],"mappings":"AAgBA,oBAAY,
|
|
1
|
+
{"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../src/lib/Common.ts"],"names":[],"mappings":"AAgBA,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAE7E;;GAEG;AACH,oBAAY,WAAW,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,WAAW,sBAAsB;IAEnC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAE3B;;OAEG;IACH,WAAW,EAAE,sBAAsB,EAAE,CAAC;IAEtC;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAE5B;;OAEG;IACH,MAAM,EAAE,GAAG,CAAC;IAEZ;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAE7B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAElD;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAE7C,UAAU,CACN,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACb,MAAM,CAAC;IAEV,QAAQ,CACJ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACb,MAAM,CAAC;IAEV,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAE3C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAE3C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAElC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAExB;;;;;OAKG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEhD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAExC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEjC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAElC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAE1C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAEvE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAE1C,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAE1C,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAE3C,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAE1C,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAE3C,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE7B;;;;OAIG;IACH,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEpC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAEhD;;;;;;OAMG;IACH,KAAK,CACD,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACd,MAAM,CAAC;IAEV;;;;;;OAMG;IACH,UAAU,CACN,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACd,MAAM,CAAC;IAEV;;;;;;OAMG;IACH,QAAQ,CACJ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACd,MAAM,CAAC;IAEV;;;;;;OAMG;IACH,WAAW,CACP,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACf,MAAM,CAAC;IAEV;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAEhD;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAErD;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAElD;;;;;;;OAOG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAErD;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAEnD;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAEnD;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAEnD;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAElD;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAEjD;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAElC;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAEnC;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAE3B,OAAO,CACH,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAChB,MAAM,CAAC;IAEV,MAAM,CACF,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAClB,MAAM,CAAC;IAEV,KAAK,CACD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAChB,MAAM,CAAC;IAEV,UAAU,CACN,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,GACZ,MAAM,CAAC;IAEV,UAAU,CACN,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GAAG,MAAM,GACvB,MAAM,CAAC;IAEV,GAAG,CACC,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,KAAK,EAAE,MAAM,GAAG,MAAM,GACvB,MAAM,CAAC;IAEV,UAAU,CACN,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GACtB,MAAM,CAAC;IAEV,OAAO,CACH,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,GACb,MAAM,CAAC;IAEV,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAElC;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAEnC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAElC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,SAAS;IAEtB;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;IAEvD;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAAC;CACrD"}
|
package/lib/Common.js
CHANGED
package/lib/Compiler.d.ts
CHANGED
package/lib/Compiler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Compiler.d.ts","sourceRoot":"","sources":["../src/lib/Compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Compiler.d.ts","sourceRoot":"","sources":["../src/lib/Compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AA62C9B;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,SAAS,CAOpE"}
|
package/lib/Compiler.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.
|
|
@@ -35,9 +35,21 @@ class Compiler {
|
|
|
35
35
|
}
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
|
+
_addTrace(ctx) {
|
|
39
|
+
if (!ctx.vTraceName) {
|
|
40
|
+
return this._lang.literalFalse;
|
|
41
|
+
}
|
|
42
|
+
return this._lang.addTrace(ctx.vTraceName, ctx.vTracePrefix, ctx.tracePath);
|
|
43
|
+
}
|
|
44
|
+
_addTraceOr(ctx, expr, subPath = '') {
|
|
45
|
+
if (!ctx.vTraceName) {
|
|
46
|
+
return expr;
|
|
47
|
+
}
|
|
48
|
+
return this._lang.orAddTrace(expr, ctx.vTraceName, ctx.vTracePrefix, `${ctx.tracePath}${subPath}`);
|
|
49
|
+
}
|
|
38
50
|
compile(options) {
|
|
39
51
|
const referredTypes = {};
|
|
40
|
-
const ctx = new Context_1.Context(this._lang.varName('entry'), this._lang.varName('types'), referredTypes);
|
|
52
|
+
const ctx = new Context_1.Context(this._lang.varName('entry'), options.traceErrors ? this._lang.varName('failedAsserts') : '', options.traceErrors ? this._lang.varName('tracePrefix') : '', this._lang.varName('types'), referredTypes);
|
|
41
53
|
if (options.name) {
|
|
42
54
|
this._compile(ctx, [M.TYPE, options.name, options.rule]);
|
|
43
55
|
return this._defTypes[options.name];
|
|
@@ -47,11 +59,24 @@ class Compiler {
|
|
|
47
59
|
source: '',
|
|
48
60
|
arguments: [{
|
|
49
61
|
'name': ctx.vName,
|
|
50
|
-
'type': 'unknown'
|
|
62
|
+
'type': 'unknown',
|
|
63
|
+
'initial': ''
|
|
51
64
|
}],
|
|
52
65
|
typeSlotName: ctx.typeSlotName,
|
|
53
66
|
referredTypes: []
|
|
54
67
|
};
|
|
68
|
+
if (ctx.vTraceName) {
|
|
69
|
+
ret.arguments.push({
|
|
70
|
+
'name': ctx.vTraceName,
|
|
71
|
+
'type': 'string[]',
|
|
72
|
+
'initial': '[]'
|
|
73
|
+
});
|
|
74
|
+
ret.arguments.push({
|
|
75
|
+
'name': ctx.vTracePrefix,
|
|
76
|
+
'type': 'string',
|
|
77
|
+
'initial': this._lang.literal('data')
|
|
78
|
+
});
|
|
79
|
+
}
|
|
55
80
|
ret.source = this._compile(ctx, options.rule);
|
|
56
81
|
ret.referredTypes = Object.keys(ctx.referredTypes);
|
|
57
82
|
return ret;
|
|
@@ -93,6 +118,8 @@ class Compiler {
|
|
|
93
118
|
return this._compileStructuredRule(ctx, rules);
|
|
94
119
|
case 'undefined':
|
|
95
120
|
return this._lang.isUndefined(ctx.vName, true);
|
|
121
|
+
default:
|
|
122
|
+
break;
|
|
96
123
|
}
|
|
97
124
|
throw new TypeError('Unknwn rules.');
|
|
98
125
|
}
|
|
@@ -115,44 +142,56 @@ class Compiler {
|
|
|
115
142
|
}
|
|
116
143
|
let regResult = /\[\s*(\d*|\d+\s*,\s*\d*)\s*\]$/.exec(rule);
|
|
117
144
|
/**
|
|
118
|
-
* For rules like `xxx[123]` or `xxx[1,5]`.
|
|
145
|
+
* For rules like `xxx[123]` or `xxx[1,5]` or `xxx[1,]`.
|
|
119
146
|
*/
|
|
120
147
|
if (regResult) {
|
|
121
148
|
if (regResult[1]) {
|
|
122
|
-
|
|
149
|
+
const range = regResult[1].split(',').map((x) => parseInt(x.trim()));
|
|
123
150
|
if (range.length === 1) {
|
|
151
|
+
/**
|
|
152
|
+
* For rules like `xxx[123]`.
|
|
153
|
+
*/
|
|
124
154
|
return this._compileModifiedRule(ctx, [
|
|
125
155
|
M.ARRAY,
|
|
126
156
|
range[0],
|
|
127
|
-
rule.
|
|
157
|
+
rule.slice(0, regResult.index)
|
|
128
158
|
]);
|
|
129
159
|
}
|
|
130
160
|
else if (Number.isNaN(range[1])) {
|
|
161
|
+
/**
|
|
162
|
+
* For rules like `xxx[1,]`.
|
|
163
|
+
*/
|
|
131
164
|
return this._compileModifiedRule(ctx, [
|
|
132
165
|
M.ARRAY,
|
|
133
166
|
[range[0]],
|
|
134
|
-
rule.
|
|
167
|
+
rule.slice(0, regResult.index)
|
|
135
168
|
]);
|
|
136
169
|
}
|
|
137
170
|
else {
|
|
171
|
+
/**
|
|
172
|
+
* For rules like `xxx[1,5]`.
|
|
173
|
+
*/
|
|
138
174
|
return this._compileModifiedRule(ctx, [
|
|
139
175
|
M.ARRAY,
|
|
140
176
|
range,
|
|
141
|
-
rule.
|
|
177
|
+
rule.slice(0, regResult.index)
|
|
142
178
|
]);
|
|
143
179
|
}
|
|
144
180
|
}
|
|
145
181
|
else {
|
|
182
|
+
/**
|
|
183
|
+
* For rules like `xxx[]`.
|
|
184
|
+
*/
|
|
146
185
|
return this._compileModifiedRule(ctx, [
|
|
147
186
|
M.LIST,
|
|
148
|
-
rule.
|
|
187
|
+
rule.slice(0, regResult.index)
|
|
149
188
|
]);
|
|
150
189
|
}
|
|
151
190
|
}
|
|
152
|
-
/**
|
|
153
|
-
* For rules like `xxx{}`.
|
|
154
|
-
*/
|
|
155
191
|
if (rule.endsWith(I.MAP_SUFFIX)) {
|
|
192
|
+
/**
|
|
193
|
+
* For rules like `xxx{}`.
|
|
194
|
+
*/
|
|
156
195
|
return this._lang.and([
|
|
157
196
|
this._compileModifiedRule(ctx, [
|
|
158
197
|
M.MAP,
|
|
@@ -193,7 +232,7 @@ class Compiler {
|
|
|
193
232
|
var _a;
|
|
194
233
|
const assertRule = /^:([-\w]+):/.exec(rule);
|
|
195
234
|
const offset = assertRule ? assertRule[1].length + 2 : 2;
|
|
196
|
-
switch ((_a = (assertRule === null || assertRule === void 0 ? void 0 : assertRule[1])) !== null && _a !== void 0 ? _a : rule.
|
|
235
|
+
switch ((_a = (assertRule === null || assertRule === void 0 ? void 0 : assertRule[1])) !== null && _a !== void 0 ? _a : rule.slice(0, 2)) {
|
|
197
236
|
case '==':
|
|
198
237
|
case 'equal':
|
|
199
238
|
return this._lang.eq(ctx.vName, this._lang.literal(rule.slice(offset)));
|
|
@@ -316,7 +355,7 @@ class Compiler {
|
|
|
316
355
|
return result;
|
|
317
356
|
}
|
|
318
357
|
_compileModifierOR(ctx, rules) {
|
|
319
|
-
|
|
358
|
+
const result = [];
|
|
320
359
|
for (const r of rules) {
|
|
321
360
|
ctx.trap();
|
|
322
361
|
result.push(this._compile(ctx, r));
|
|
@@ -327,7 +366,7 @@ class Compiler {
|
|
|
327
366
|
_compileModifierAND(ctx, rules) {
|
|
328
367
|
return this._lang.and(rules.map((rule) => this._compile(ctx, rule)));
|
|
329
368
|
}
|
|
330
|
-
_compileModifierLIST(ctx, rules) {
|
|
369
|
+
_compileModifierLIST(ctx, rules, traceOffset = 0) {
|
|
331
370
|
const result = [];
|
|
332
371
|
if (!ctx.flags[I.EFlags.ARRAY]) {
|
|
333
372
|
result.push(this._lang.isArray(ctx.vName, true));
|
|
@@ -337,16 +376,18 @@ class Compiler {
|
|
|
337
376
|
const CLOSURE_ARG = ctx.vName;
|
|
338
377
|
const CLOSURE_PARAM = this._lang.varName(ctx.vCursor++);
|
|
339
378
|
ctx.vName = this._lang.varName(ctx.vCursor++);
|
|
379
|
+
const vIter = this._lang.varName(ctx.vCursor++);
|
|
380
|
+
ctx.tracePath = `${ctx.tracePath}[${this._lang.numberTemplateVar(traceOffset ? this._lang.add(traceOffset, vIter) : vIter)}]`;
|
|
340
381
|
if (rules[0] !== B.ANY) {
|
|
341
382
|
result.push(this._lang.closure([CLOSURE_PARAM], [CLOSURE_ARG], this._lang.series([
|
|
342
|
-
this._lang.forEach(CLOSURE_PARAM, ctx.vName, this._lang.ifThen(this._lang.not(this._compile(ctx, rules)), this._lang.returnValue(this.
|
|
383
|
+
this._lang.forEach(CLOSURE_PARAM, vIter, ctx.vName, this._lang.ifThen(this._lang.not(this._compile(ctx, rules)), this._lang.returnValue(this._addTrace(ctx)))),
|
|
343
384
|
this._lang.returnValue(this._lang.literal(true))
|
|
344
385
|
])));
|
|
345
386
|
}
|
|
346
387
|
ctx.untrap();
|
|
347
388
|
return this._lang.and(result);
|
|
348
389
|
}
|
|
349
|
-
_compileModifierARRAY(ctx, rules) {
|
|
390
|
+
_compileModifierARRAY(ctx, rules, traceOffset = 0) {
|
|
350
391
|
let a = 0;
|
|
351
392
|
let b = -1;
|
|
352
393
|
if (Number.isInteger(rules[0]) && rules[0] >= 0) {
|
|
@@ -392,6 +433,8 @@ class Compiler {
|
|
|
392
433
|
const CLOSURE_ARG = ctx.vName;
|
|
393
434
|
const CLOSURE_PARAM = this._lang.varName(ctx.vCursor++);
|
|
394
435
|
ctx.vName = this._lang.varName(ctx.vCursor++);
|
|
436
|
+
const vIter = this._lang.varName(ctx.vCursor++);
|
|
437
|
+
ctx.tracePath = `${ctx.tracePath}[${this._lang.numberTemplateVar(traceOffset ? this._lang.add(traceOffset, vIter) : vIter)}]`;
|
|
395
438
|
switch (b) {
|
|
396
439
|
case -1: {
|
|
397
440
|
result.push(this._lang.eq(this._lang.arrayLength(CLOSURE_ARG), a));
|
|
@@ -408,7 +451,7 @@ class Compiler {
|
|
|
408
451
|
}
|
|
409
452
|
if (rules[1] !== B.ANY) {
|
|
410
453
|
result.push(this._lang.closure([CLOSURE_PARAM], [CLOSURE_ARG], this._lang.series([
|
|
411
|
-
this._lang.forEach(CLOSURE_PARAM, ctx.vName, this._lang.ifThen(this._lang.not(this._compile(ctx, rules.slice(1))), this._lang.returnValue(this.
|
|
454
|
+
this._lang.forEach(CLOSURE_PARAM, vIter, ctx.vName, this._lang.ifThen(this._lang.not(this._compile(ctx, rules.slice(1))), this._lang.returnValue(this._addTrace(ctx)))),
|
|
412
455
|
this._lang.returnValue(this._lang.literal(true))
|
|
413
456
|
])));
|
|
414
457
|
}
|
|
@@ -426,6 +469,7 @@ class Compiler {
|
|
|
426
469
|
let i = 0;
|
|
427
470
|
const types = rules.slice();
|
|
428
471
|
let tupleLength = 0;
|
|
472
|
+
let tupleLengthMin = 0;
|
|
429
473
|
while (1) {
|
|
430
474
|
type = types.shift();
|
|
431
475
|
if (type === undefined) {
|
|
@@ -446,8 +490,9 @@ class Compiler {
|
|
|
446
490
|
}
|
|
447
491
|
ctx.vName = this._lang.arraySlice(ctx.vName, i);
|
|
448
492
|
if (type !== 'any') {
|
|
449
|
-
result.push(this._compileModifierLIST(ctx, type));
|
|
493
|
+
result.push(this._compileModifierLIST(ctx, type, i));
|
|
450
494
|
}
|
|
495
|
+
tupleLengthMin = tupleLength;
|
|
451
496
|
tupleLength = -1;
|
|
452
497
|
}
|
|
453
498
|
else if (!/^\d+$/.test(dots.slice(3))) {
|
|
@@ -455,16 +500,18 @@ class Compiler {
|
|
|
455
500
|
}
|
|
456
501
|
else {
|
|
457
502
|
const length = parseInt(dots.slice(3));
|
|
458
|
-
if (length
|
|
503
|
+
if (length === 0) {
|
|
504
|
+
throw new TypeError(`Invalid syntax for tuple: ${dots}`);
|
|
505
|
+
}
|
|
506
|
+
else if (length === 1) {
|
|
459
507
|
const vName = ctx.vName;
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
}
|
|
508
|
+
ctx.tracePath = `${ctx.tracePath}[${i}]`;
|
|
509
|
+
ctx.vName = this._lang.arrayIndex(vName, i++);
|
|
510
|
+
result.push(this._addTraceOr(ctx, this._compile(ctx, type)));
|
|
464
511
|
}
|
|
465
512
|
else {
|
|
466
513
|
ctx.vName = this._lang.arraySlice(ctx.vName, i, i + length);
|
|
467
|
-
result.push(this._compileModifierARRAY(ctx, [length, type]));
|
|
514
|
+
result.push(this._compileModifierARRAY(ctx, [length, type], i));
|
|
468
515
|
i += length;
|
|
469
516
|
}
|
|
470
517
|
tupleLength += length;
|
|
@@ -472,19 +519,23 @@ class Compiler {
|
|
|
472
519
|
}
|
|
473
520
|
else {
|
|
474
521
|
ctx.trap(true);
|
|
522
|
+
ctx.tracePath = `${ctx.tracePath}[${i}]`;
|
|
475
523
|
ctx.vName = this._lang.arrayIndex(ctx.vName, i++);
|
|
476
|
-
result.push(this._compile(ctx, type));
|
|
524
|
+
result.push(this._addTraceOr(ctx, this._compile(ctx, type)));
|
|
477
525
|
tupleLength++;
|
|
478
526
|
}
|
|
479
527
|
ctx.untrap();
|
|
480
528
|
}
|
|
481
529
|
if (tupleLength >= 0) {
|
|
482
|
-
result.splice(1, -1, this._lang.eq(this._lang.arrayLength(ctx.vName), tupleLength));
|
|
530
|
+
result.splice(1, -1, this._addTraceOr(ctx, this._lang.eq(this._lang.arrayLength(ctx.vName), tupleLength), '.length'));
|
|
531
|
+
}
|
|
532
|
+
else if (tupleLengthMin >= 0) {
|
|
533
|
+
result.splice(1, -1, this._addTraceOr(ctx, this._lang.gte(this._lang.arrayLength(ctx.vName), tupleLengthMin), '.length'));
|
|
483
534
|
}
|
|
484
535
|
return this._lang.and(result);
|
|
485
536
|
}
|
|
486
537
|
_validateTypeName(name) {
|
|
487
|
-
if (typeof name !== 'string' ||
|
|
538
|
+
if (typeof name !== 'string' || !I.RE_VALID_CUSTOM_TYPE_NAME.test(name)) {
|
|
488
539
|
throw new TypeError(`Invalid name ${JSON.stringify(name)} for a pre-defined type.`);
|
|
489
540
|
}
|
|
490
541
|
}
|
|
@@ -494,7 +545,8 @@ class Compiler {
|
|
|
494
545
|
throw new Error(`Dplicated name ${JSON.stringify(rules[0])} for a pre-defined type.`);
|
|
495
546
|
}
|
|
496
547
|
this._defTypes[rules[0]] = this.compile({
|
|
497
|
-
rule: rules.slice(1)
|
|
548
|
+
rule: rules.slice(1),
|
|
549
|
+
traceErrors: !!ctx.vTraceName
|
|
498
550
|
});
|
|
499
551
|
return this._usePredefinedType(ctx, rules[0]);
|
|
500
552
|
}
|
|
@@ -523,14 +575,15 @@ class Compiler {
|
|
|
523
575
|
rules = rules[0];
|
|
524
576
|
}
|
|
525
577
|
ctx.trap(true);
|
|
526
|
-
const
|
|
527
|
-
const
|
|
528
|
-
const
|
|
578
|
+
const vCArg = ctx.vName;
|
|
579
|
+
const vCParam = this._lang.varName(ctx.vCursor++);
|
|
580
|
+
const vKey = this._lang.varName(ctx.vCursor++);
|
|
529
581
|
ctx.vName = this._lang.varName(ctx.vCursor++);
|
|
582
|
+
ctx.tracePath = `${ctx.tracePath}[${this._lang.stringTemplateVar(vKey)}]`;
|
|
530
583
|
const result = this._lang.and([
|
|
531
|
-
this._lang.isStrucutre(
|
|
532
|
-
this._lang.closure([
|
|
533
|
-
this._lang.forIn(
|
|
584
|
+
this._lang.isStrucutre(vCArg, true),
|
|
585
|
+
this._lang.closure([vCParam], [vCArg], this._lang.series([
|
|
586
|
+
this._lang.forIn(vCParam, vKey, ctx.vName, this._lang.ifThen(this._lang.not(this._compile(ctx, rules)), this._lang.returnValue(this._addTrace(ctx)))),
|
|
534
587
|
this._lang.returnValue(this._lang.literal(true))
|
|
535
588
|
]))
|
|
536
589
|
]);
|
|
@@ -541,14 +594,14 @@ class Compiler {
|
|
|
541
594
|
if (rules.length < 2 || !Array.isArray(rules[0])) {
|
|
542
595
|
throw new SyntaxError(`Invalid dict ${JSON.stringify(rules)}.`);
|
|
543
596
|
}
|
|
544
|
-
|
|
597
|
+
const tmp = {};
|
|
545
598
|
const id = `${Date.now()}${Math.floor(Math.random() * Number.MAX_SAFE_INTEGER)}`;
|
|
546
599
|
this._compileModifierTYPE(ctx, [
|
|
547
600
|
this._lang.varName(id),
|
|
548
601
|
rules.slice(1)
|
|
549
602
|
]);
|
|
550
603
|
const type = `${I.PREDEF_TYPE_SYMBOL}${this._lang.varName(id)}`;
|
|
551
|
-
for (
|
|
604
|
+
for (const key of rules[0]) {
|
|
552
605
|
if (typeof key !== 'string') {
|
|
553
606
|
throw new SyntaxError(`Invalid key ${JSON.stringify(key)} for dict.`);
|
|
554
607
|
}
|
|
@@ -559,7 +612,7 @@ class Compiler {
|
|
|
559
612
|
_compileSimpleStructure(ctx, rules) {
|
|
560
613
|
const strict = !!ctx.flags[I.EFlags.STRICT];
|
|
561
614
|
const result = [
|
|
562
|
-
this._lang.isStrucutre(ctx.vName, true)
|
|
615
|
+
this._addTraceOr(ctx, this._lang.isStrucutre(ctx.vName, true), '!object')
|
|
563
616
|
];
|
|
564
617
|
const keys = [];
|
|
565
618
|
for (let k in rules) {
|
|
@@ -618,7 +671,8 @@ class Compiler {
|
|
|
618
671
|
}
|
|
619
672
|
keys.push(k);
|
|
620
673
|
ctx.vName = this._lang.fieldIndex(ctx.vName, this._lang.literal(k));
|
|
621
|
-
|
|
674
|
+
ctx.tracePath = `${ctx.tracePath}[${this._lang.literal(k)}]`;
|
|
675
|
+
result.push(this._addTraceOr(ctx, this._compile(ctx, rule)));
|
|
622
676
|
ctx.untrap();
|
|
623
677
|
}
|
|
624
678
|
if (strict && keys.length) {
|