@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.
Files changed (63) hide show
  1. package/CHANGES.md +10 -0
  2. package/lib/BuiltInTypeCompiler.d.ts +2 -2
  3. package/lib/BuiltInTypeCompiler.d.ts.map +1 -1
  4. package/lib/BuiltInTypeCompiler.js +1 -1
  5. package/lib/BuiltInTypeCompiler.js.map +1 -1
  6. package/lib/BuiltInTypes.d.ts +1 -1
  7. package/lib/BuiltInTypes.js +1 -1
  8. package/lib/Common.d.ts +19 -2
  9. package/lib/Common.d.ts.map +1 -1
  10. package/lib/Common.js +1 -1
  11. package/lib/Compiler.d.ts +1 -1
  12. package/lib/Compiler.d.ts.map +1 -1
  13. package/lib/Compiler.js +93 -39
  14. package/lib/Compiler.js.map +1 -1
  15. package/lib/Context.d.ts +5 -4
  16. package/lib/Context.d.ts.map +1 -1
  17. package/lib/Context.js +9 -6
  18. package/lib/Context.js.map +1 -1
  19. package/lib/FilterCompiler.d.ts +3 -3
  20. package/lib/FilterCompiler.d.ts.map +1 -1
  21. package/lib/FilterCompiler.js +2 -2
  22. package/lib/FilterCompiler.js.map +1 -1
  23. package/lib/InlineCompiler.d.ts +10 -3
  24. package/lib/InlineCompiler.d.ts.map +1 -1
  25. package/lib/InlineCompiler.js +16 -5
  26. package/lib/InlineCompiler.js.map +1 -1
  27. package/lib/Internal.d.ts +6 -4
  28. package/lib/Internal.d.ts.map +1 -1
  29. package/lib/Internal.js +3 -2
  30. package/lib/Internal.js.map +1 -1
  31. package/lib/Modifiers.d.ts +1 -1
  32. package/lib/Modifiers.js +1 -1
  33. package/lib/index.d.ts +1 -1
  34. package/lib/index.js +6 -2
  35. package/lib/index.js.map +1 -1
  36. package/lib/langs/JavaScript.d.ts +1 -1
  37. package/lib/langs/JavaScript.d.ts.map +1 -1
  38. package/lib/langs/JavaScript.js +29 -4
  39. package/lib/langs/JavaScript.js.map +1 -1
  40. package/package.json +12 -12
  41. package/src/examples/quick-start.ts +118 -2
  42. package/src/lib/BuiltInTypeCompiler.ts +2 -2
  43. package/src/lib/BuiltInTypes.ts +1 -1
  44. package/src/lib/Common.ts +41 -2
  45. package/src/lib/Compiler.ts +155 -50
  46. package/src/lib/Context.ts +9 -11
  47. package/src/lib/FilterCompiler.ts +4 -4
  48. package/src/lib/InlineCompiler.ts +36 -10
  49. package/src/lib/Internal.ts +8 -4
  50. package/src/lib/Modifiers.ts +1 -1
  51. package/src/lib/index.ts +1 -1
  52. package/src/lib/langs/JavaScript.ts +58 -5
  53. package/src/test/00-all.ts +1 -1
  54. package/src/test/01-elemental-types.ts +2 -1
  55. package/src/test/02-array-and-list.ts +18 -18
  56. package/src/test/03-tuple.ts +1 -1
  57. package/src/test/04-from-string.ts +2 -1
  58. package/src/test/05-string-asserts.ts +1 -1
  59. package/src/test/06-structure.ts +26 -26
  60. package/src/test/07-modifiers.ts +71 -10
  61. package/src/test/08-map-and-dict.ts +20 -20
  62. package/src/test/09-exceptions.ts +4 -4
  63. 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 2021 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.
@@ -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;IAG9B,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
+ {"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 2021 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.
@@ -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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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2021 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.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright 2021 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.
package/lib/Common.d.ts CHANGED
@@ -1,4 +1,8 @@
1
- export declare type TypeChecker<T> = (v: unknown) => v is T;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../src/lib/Common.ts"],"names":[],"mappings":"AAgBA,oBAAY,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AAEpD,MAAM,WAAW,sBAAsB;IAEnC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAClB;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;CACnB;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,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,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,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"}
1
+ {"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../src/lib/Common.ts"],"names":[],"mappings":"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"}
package/lib/Common.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright 2021 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.
package/lib/Compiler.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2021 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.
@@ -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;AAowC9B;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,SAAS,CAOpE"}
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 2021 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.
@@ -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
- let range = regResult[1].split(',').map((x) => parseInt(x.trim()));
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.substr(0, regResult.index)
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.substr(0, regResult.index)
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.substr(0, regResult.index)
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.substr(0, regResult.index)
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.substr(0, 2)) {
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
- let result = [];
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._lang.literal(false)))),
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._lang.literal(false)))),
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 <= 3) {
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
- for (let j = 0; j < length; j++) {
461
- ctx.vName = this._lang.arrayIndex(vName, i++);
462
- result.push(this._compile(ctx, type));
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' || !/^[-:.\w]+$/.test(name)) {
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 CLOSURE_ARG = ctx.vName;
527
- const CLOSURE_PARAM = this._lang.varName(ctx.vCursor++);
528
- const FOR_IN_KEY = this._lang.varName(ctx.vCursor++);
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(CLOSURE_ARG, true),
532
- this._lang.closure([CLOSURE_PARAM], [CLOSURE_ARG], this._lang.series([
533
- this._lang.forIn(CLOSURE_PARAM, FOR_IN_KEY, ctx.vName, this._lang.ifThen(this._lang.not(this._compile(ctx, rules)), this._lang.returnValue(this._lang.literal(false)))),
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
- let tmp = {};
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 (let key of rules[0]) {
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
- result.push(this._compile(ctx, rule));
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) {