@fncts/schema 0.0.23 → 0.0.25

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 (146) hide show
  1. package/AST.d.ts +60 -29
  2. package/ASTAnnotationMap.d.ts +4 -1
  3. package/LICENSE +26 -0
  4. package/ParseError/ParseError.d.ts +28 -13
  5. package/_cjs/AST.cjs +1096 -1087
  6. package/_cjs/AST.cjs.map +1 -1
  7. package/_cjs/ASTAnnotation.cjs +114 -83
  8. package/_cjs/ASTAnnotation.cjs.map +1 -1
  9. package/_cjs/ASTAnnotationMap.cjs +43 -32
  10. package/_cjs/ASTAnnotationMap.cjs.map +1 -1
  11. package/_cjs/Eq.cjs +113 -145
  12. package/_cjs/Eq.cjs.map +1 -1
  13. package/_cjs/Gen.cjs +131 -167
  14. package/_cjs/Gen.cjs.map +1 -1
  15. package/_cjs/Guard.cjs +167 -267
  16. package/_cjs/Guard.cjs.map +1 -1
  17. package/_cjs/InvalidInterpretationError.cjs +9 -15
  18. package/_cjs/InvalidInterpretationError.cjs.map +1 -1
  19. package/_cjs/ParseError/ParseError.cjs +285 -209
  20. package/_cjs/ParseError/ParseError.cjs.map +1 -1
  21. package/_cjs/ParseError/ParseErrorFormatter.cjs +0 -2
  22. package/_cjs/ParseError/PathFormatter.cjs +55 -87
  23. package/_cjs/ParseError/PathFormatter.cjs.map +1 -1
  24. package/_cjs/ParseError/TreeFormatter.cjs +70 -102
  25. package/_cjs/ParseError/TreeFormatter.cjs.map +1 -1
  26. package/_cjs/ParseError.cjs +35 -50
  27. package/_cjs/ParseResult.cjs +15 -15
  28. package/_cjs/ParseResult.cjs.map +1 -1
  29. package/_cjs/Parser/api.cjs +54 -50
  30. package/_cjs/Parser/api.cjs.map +1 -1
  31. package/_cjs/Parser/definition.cjs +17 -16
  32. package/_cjs/Parser/definition.cjs.map +1 -1
  33. package/_cjs/Parser/interpreter.cjs +276 -358
  34. package/_cjs/Parser/interpreter.cjs.map +1 -1
  35. package/_cjs/Parser.cjs +12 -39
  36. package/_cjs/Schema/api/conc.cjs +64 -59
  37. package/_cjs/Schema/api/conc.cjs.map +1 -1
  38. package/_cjs/Schema/api/either.cjs +73 -72
  39. package/_cjs/Schema/api/either.cjs.map +1 -1
  40. package/_cjs/Schema/api/hashMap.cjs +85 -85
  41. package/_cjs/Schema/api/hashMap.cjs.map +1 -1
  42. package/_cjs/Schema/api/hashSet.cjs +75 -69
  43. package/_cjs/Schema/api/hashSet.cjs.map +1 -1
  44. package/_cjs/Schema/api/list.cjs +74 -64
  45. package/_cjs/Schema/api/list.cjs.map +1 -1
  46. package/_cjs/Schema/api/map.cjs +81 -83
  47. package/_cjs/Schema/api/map.cjs.map +1 -1
  48. package/_cjs/Schema/api/maybe.cjs +56 -49
  49. package/_cjs/Schema/api/maybe.cjs.map +1 -1
  50. package/_cjs/Schema/api/set.cjs +68 -61
  51. package/_cjs/Schema/api/set.cjs.map +1 -1
  52. package/_cjs/Schema/api.cjs +332 -350
  53. package/_cjs/Schema/api.cjs.map +1 -1
  54. package/_cjs/Schema/definition.cjs +28 -27
  55. package/_cjs/Schema/definition.cjs.map +1 -1
  56. package/_cjs/Schema/derivations.cjs +85 -100
  57. package/_cjs/Schema/derivations.cjs.map +1 -1
  58. package/_cjs/Schema.cjs +95 -127
  59. package/_cjs/Show.cjs +91 -151
  60. package/_cjs/Show.cjs.map +1 -1
  61. package/_cjs/chunk.cjs +28 -0
  62. package/_cjs/global.cjs +0 -2
  63. package/_cjs/index.cjs +0 -2
  64. package/_cjs/utils.cjs +41 -46
  65. package/_cjs/utils.cjs.map +1 -1
  66. package/_mjs/AST.mjs +1007 -1031
  67. package/_mjs/AST.mjs.map +1 -1
  68. package/_mjs/ASTAnnotation.mjs +77 -71
  69. package/_mjs/ASTAnnotation.mjs.map +1 -1
  70. package/_mjs/ASTAnnotationMap.mjs +36 -25
  71. package/_mjs/ASTAnnotationMap.mjs.map +1 -1
  72. package/_mjs/Eq.mjs +101 -134
  73. package/_mjs/Eq.mjs.map +1 -1
  74. package/_mjs/Gen.mjs +117 -157
  75. package/_mjs/Gen.mjs.map +1 -1
  76. package/_mjs/Guard.mjs +154 -257
  77. package/_mjs/Guard.mjs.map +1 -1
  78. package/_mjs/InvalidInterpretationError.mjs +8 -9
  79. package/_mjs/InvalidInterpretationError.mjs.map +1 -1
  80. package/_mjs/ParseError/ParseError.mjs +270 -190
  81. package/_mjs/ParseError/ParseError.mjs.map +1 -1
  82. package/_mjs/ParseError/ParseErrorFormatter.mjs +0 -2
  83. package/_mjs/ParseError/PathFormatter.mjs +51 -80
  84. package/_mjs/ParseError/PathFormatter.mjs.map +1 -1
  85. package/_mjs/ParseError/TreeFormatter.mjs +62 -94
  86. package/_mjs/ParseError/TreeFormatter.mjs.map +1 -1
  87. package/_mjs/ParseError.mjs +5 -6
  88. package/_mjs/ParseResult.mjs +13 -9
  89. package/_mjs/ParseResult.mjs.map +1 -1
  90. package/_mjs/Parser/api.mjs +43 -39
  91. package/_mjs/Parser/api.mjs.map +1 -1
  92. package/_mjs/Parser/definition.mjs +12 -8
  93. package/_mjs/Parser/definition.mjs.map +1 -1
  94. package/_mjs/Parser/interpreter.mjs +262 -348
  95. package/_mjs/Parser/interpreter.mjs.map +1 -1
  96. package/_mjs/Parser.mjs +4 -5
  97. package/_mjs/Schema/api/conc.mjs +41 -45
  98. package/_mjs/Schema/api/conc.mjs.map +1 -1
  99. package/_mjs/Schema/api/either.mjs +55 -61
  100. package/_mjs/Schema/api/either.mjs.map +1 -1
  101. package/_mjs/Schema/api/hashMap.mjs +61 -71
  102. package/_mjs/Schema/api/hashMap.mjs.map +1 -1
  103. package/_mjs/Schema/api/hashSet.mjs +53 -56
  104. package/_mjs/Schema/api/hashSet.mjs.map +1 -1
  105. package/_mjs/Schema/api/list.mjs +50 -51
  106. package/_mjs/Schema/api/list.mjs.map +1 -1
  107. package/_mjs/Schema/api/map.mjs +59 -69
  108. package/_mjs/Schema/api/map.mjs.map +1 -1
  109. package/_mjs/Schema/api/maybe.mjs +34 -36
  110. package/_mjs/Schema/api/maybe.mjs.map +1 -1
  111. package/_mjs/Schema/api/set.mjs +47 -48
  112. package/_mjs/Schema/api/set.mjs.map +1 -1
  113. package/_mjs/Schema/api.mjs +304 -346
  114. package/_mjs/Schema/api.mjs.map +1 -1
  115. package/_mjs/Schema/definition.mjs +21 -18
  116. package/_mjs/Schema/definition.mjs.map +1 -1
  117. package/_mjs/Schema/derivations.mjs +71 -90
  118. package/_mjs/Schema/derivations.mjs.map +1 -1
  119. package/_mjs/Schema.mjs +12 -15
  120. package/_mjs/Show.mjs +79 -139
  121. package/_mjs/Show.mjs.map +1 -1
  122. package/_mjs/global.mjs +0 -2
  123. package/_mjs/index.mjs +0 -2
  124. package/_mjs/utils.mjs +35 -37
  125. package/_mjs/utils.mjs.map +1 -1
  126. package/_src/AST.ts +226 -28
  127. package/_src/ASTAnnotationMap.ts +14 -1
  128. package/_src/ParseError/ParseError.ts +128 -13
  129. package/_src/Schema/api/hashMap.ts +1 -1
  130. package/_src/Schema/api/hashSet.ts +1 -1
  131. package/_src/Schema/api/list.ts +3 -1
  132. package/_src/Schema/api/map.ts +1 -1
  133. package/_src/Schema/api/set.ts +1 -1
  134. package/package.json +7 -3
  135. package/_cjs/ParseError/ParseErrorFormatter.cjs.map +0 -1
  136. package/_cjs/ParseError.cjs.map +0 -1
  137. package/_cjs/Parser.cjs.map +0 -1
  138. package/_cjs/Schema.cjs.map +0 -1
  139. package/_cjs/global.cjs.map +0 -1
  140. package/_cjs/index.cjs.map +0 -1
  141. package/_mjs/ParseError/ParseErrorFormatter.mjs.map +0 -1
  142. package/_mjs/ParseError.mjs.map +0 -1
  143. package/_mjs/Parser.mjs.map +0 -1
  144. package/_mjs/Schema.mjs.map +0 -1
  145. package/_mjs/global.mjs.map +0 -1
  146. package/_mjs/index.mjs.map +0 -1
package/_mjs/Eq.mjs CHANGED
@@ -1,148 +1,115 @@
1
- import * as tsplus_module_1 from "@fncts/base/data/Eq/api";
1
+ import { getKeysForIndexSignature, memoize } from "./utils.mjs";
2
2
  import * as tsplus_module_2 from "@fncts/base/collection/immutable/Vector/api";
3
- import * as tsplus_module_3 from "@fncts/schema/ASTAnnotation";
4
3
  import * as tsplus_module_4 from "@fncts/base/data/Maybe/api";
4
+ import { globalValue } from "@fncts/base/data/Global";
5
+ import * as tsplus_module_3 from "@fncts/schema/ASTAnnotation";
5
6
  import * as tsplus_module_5 from "@fncts/base/data/Maybe/definition";
7
+ import * as tsplus_module_1 from "@fncts/base/data/Eq/api";
6
8
  import * as tsplus_module_6 from "@fncts/base/data/Eq/definition";
7
- export const eq = eq_1;
8
- import { globalValue } from "@fncts/base/data/Global";
9
- import { getKeysForIndexSignature, memoize } from "./utils.mjs";
9
+ //#region build/esm/Eq.js
10
+ const eq = eq_1;
10
11
  /**
11
- * @tsplus getter fncts.schema.Schema equals
12
- */
13
- export function equals(self) {
14
- const eq = eq_1(self);
15
- return (a, b) => eq.equals(b)(a);
12
+ * @tsplus getter fncts.schema.Schema equals
13
+ */
14
+ function equals(self) {
15
+ const eq = eq_1(self);
16
+ return (a, b) => eq.equals(b)(a);
16
17
  }
17
18
  /**
18
- * @tsplus getter fncts.schema.Schema eq
19
- */
19
+ * @tsplus getter fncts.schema.Schema eq
20
+ */
20
21
  function eq_1(self) {
21
- return goMemo(self.ast);
22
+ return goMemo(self.ast);
22
23
  }
23
- const eqMemoMap = /*#__PURE__*/globalValue(/*#__PURE__*/Symbol.for("fncts.schema.Eq.eqMemoMap"), () => new WeakMap());
24
+ const eqMemoMap = globalValue(Symbol.for("fncts.schema.Eq.eqMemoMap"), () => /* @__PURE__ */ new WeakMap());
24
25
  function goMemo(ast) {
25
- const memo = eqMemoMap.get(ast);
26
- if (memo) {
27
- return memo;
28
- }
29
- const eq = go(ast);
30
- eqMemoMap.set(ast, eq);
31
- return eq;
26
+ const memo = eqMemoMap.get(ast);
27
+ if (memo) return memo;
28
+ const eq = go(ast);
29
+ eqMemoMap.set(ast, eq);
30
+ return eq;
32
31
  }
33
32
  function go(ast) {
34
- void 0;
35
- switch (ast._tag) {
36
- case 0 /* ASTTag.Declaration */:
37
- return tsplus_module_4.getOrElse(() => tsplus_module_1.strict)(tsplus_module_4.map(eq => eq(...tsplus_module_2.map(go)(ast.typeParameters)))(ast.annotations.get(tsplus_module_3.EqHook)));
38
- case 1 /* ASTTag.Literal */:
39
- case 2 /* ASTTag.UniqueSymbol */:
40
- case 3 /* ASTTag.UndefinedKeyword */:
41
- case 4 /* ASTTag.VoidKeyword */:
42
- case 6 /* ASTTag.UnknownKeyword */:
43
- case 7 /* ASTTag.AnyKeyword */:
44
- case 9 /* ASTTag.NumberKeyword */:
45
- case 10 /* ASTTag.BooleanKeyword */:
46
- case 11 /* ASTTag.BigIntKeyword */:
47
- case 12 /* ASTTag.SymbolKeyword */:
48
- case 13 /* ASTTag.ObjectKeyword */:
49
- case 15 /* ASTTag.TemplateLiteral */:
50
- case 8 /* ASTTag.StringKeyword */:
51
- return tsplus_module_1.strict;
52
- case 5 /* ASTTag.NeverKeyword */:
53
- return tsplus_module_1.never;
54
- case 16 /* ASTTag.Tuple */:
55
- {
56
- const elements = tsplus_module_2.map(element => goMemo(element.type))(ast.elements);
57
- const rest = tsplus_module_4.map(rest => tsplus_module_2.map(ast => goMemo(ast))(rest))(ast.rest);
58
- return tsplus_module_6.makeEq({
59
- equals: y => x => {
60
- if (x.length !== y.length) {
61
- return false;
62
- }
63
- let i = 0;
64
- for (; i < elements.length; i++) {
65
- const eq = tsplus_module_2.unsafeGet(i)(elements);
66
- const xi = x[i];
67
- const yi = y[i];
68
- if (!eq.equals(yi)(xi)) {
69
- return false;
70
- }
71
- }
72
- if (tsplus_module_5.isJust(rest)) {
73
- const head = tsplus_module_2.unsafeHead(rest.value);
74
- const tail = tsplus_module_2.tail(rest.value);
75
- for (; i < x.length - tail.length; i++) {
76
- if (!head.equals(y[i])(x[i])) {
77
- return false;
78
- }
79
- }
80
- for (let j = 0; j < tail.length; j++) {
81
- i += j;
82
- const eq = tsplus_module_2.unsafeGet(i)(elements);
83
- const xi = x[i];
84
- const yi = y[i];
85
- if (!eq.equals(yi)(xi)) {
86
- return false;
87
- }
88
- }
89
- }
90
- return true;
91
- }
92
- });
93
- }
94
- case 17 /* ASTTag.TypeLiteral */:
95
- {
96
- const propertySignatureTypes = tsplus_module_2.map(ps => go(ps.type))(ast.propertySignatures);
97
- const indexSignatures = tsplus_module_2.map(is => [go(is.parameter), go(is.type)])(ast.indexSignatures);
98
- const requiredEqs = {};
99
- const optionalEqs = {};
100
- for (let i = 0; i < propertySignatureTypes.length; i++) {
101
- const ps = tsplus_module_2.unsafeGet(i)(ast.propertySignatures);
102
- const name = ps.name;
103
- if (!ps.isOptional) {
104
- requiredEqs[name] = tsplus_module_2.unsafeGet(i)(propertySignatureTypes);
105
- } else {
106
- optionalEqs[name] = tsplus_module_2.unsafeGet(i)(propertySignatureTypes);
107
- }
108
- }
109
- let output = tsplus_module_1.struct(requiredEqs, optionalEqs);
110
- for (let i = 0; i < indexSignatures.length; i++) {
111
- const [, type] = tsplus_module_2.unsafeGet(i)(indexSignatures);
112
- output = tsplus_module_1.intersection(tsplus_module_6.makeEq({
113
- equals: y => x => {
114
- for (const key of getKeysForIndexSignature(x, tsplus_module_2.unsafeGet(i)(ast.indexSignatures).parameter)) {
115
- if (key in requiredEqs || key in optionalEqs) {
116
- continue;
117
- }
118
- if (!type.equals(y[key])(x[key])) {
119
- return false;
120
- }
121
- }
122
- return true;
123
- }
124
- }))(output);
125
- }
126
- return output;
127
- }
128
- case 18 /* ASTTag.Union */:
129
- return tsplus_module_1.union(tsplus_module_2.toArray(tsplus_module_2.map(goMemo)(ast.types)));
130
- case 19 /* ASTTag.Lazy */:
131
- {
132
- const f = () => goMemo(ast.getAST());
133
- const get = memoize(f);
134
- return tsplus_module_6.makeEq({
135
- equals: y => x => get(f).equals(y)(x)
136
- });
137
- }
138
- case 14 /* ASTTag.Enum */:
139
- return tsplus_module_1.strict;
140
- case 21 /* ASTTag.Transform */:
141
- return goMemo(ast.to);
142
- case 20 /* ASTTag.Refinement */:
143
- return goMemo(ast.from);
144
- case 22 /* ASTTag.Validation */:
145
- return goMemo(ast.from);
146
- }
33
+ switch (ast._tag) {
34
+ case 0: return tsplus_module_4.getOrElse(() => tsplus_module_1.strict)(tsplus_module_4.map((eq) => eq(...tsplus_module_2.map(go)(ast.typeParameters)))(ast.annotations.get(tsplus_module_3.EqHook)));
35
+ case 1:
36
+ case 2:
37
+ case 3:
38
+ case 4:
39
+ case 6:
40
+ case 7:
41
+ case 9:
42
+ case 10:
43
+ case 11:
44
+ case 12:
45
+ case 13:
46
+ case 15:
47
+ case 8: return tsplus_module_1.strict;
48
+ case 5: return tsplus_module_1.never;
49
+ case 16: {
50
+ const elements = tsplus_module_2.map((element) => goMemo(element.type))(ast.elements);
51
+ const rest = tsplus_module_4.map((rest) => tsplus_module_2.map((ast) => goMemo(ast))(rest))(ast.rest);
52
+ return tsplus_module_6.makeEq({ equals: (y) => (x) => {
53
+ if (x.length !== y.length) return false;
54
+ let i = 0;
55
+ for (; i < elements.length; i++) {
56
+ const eq = tsplus_module_2.unsafeGet(i)(elements);
57
+ const xi = x[i];
58
+ const yi = y[i];
59
+ if (!eq.equals(yi)(xi)) return false;
60
+ }
61
+ if (tsplus_module_5.isJust(rest)) {
62
+ const head = tsplus_module_2.unsafeHead(rest.value);
63
+ const tail = tsplus_module_2.tail(rest.value);
64
+ for (; i < x.length - tail.length; i++) if (!head.equals(y[i])(x[i])) return false;
65
+ for (let j = 0; j < tail.length; j++) {
66
+ i += j;
67
+ const eq = tsplus_module_2.unsafeGet(i)(elements);
68
+ const xi = x[i];
69
+ const yi = y[i];
70
+ if (!eq.equals(yi)(xi)) return false;
71
+ }
72
+ }
73
+ return true;
74
+ } });
75
+ }
76
+ case 17: {
77
+ const propertySignatureTypes = tsplus_module_2.map((ps) => go(ps.type))(ast.propertySignatures);
78
+ const indexSignatures = tsplus_module_2.map((is) => [go(is.parameter), go(is.type)])(ast.indexSignatures);
79
+ const requiredEqs = {};
80
+ const optionalEqs = {};
81
+ for (let i = 0; i < propertySignatureTypes.length; i++) {
82
+ const ps = tsplus_module_2.unsafeGet(i)(ast.propertySignatures);
83
+ const name = ps.name;
84
+ if (!ps.isOptional) requiredEqs[name] = tsplus_module_2.unsafeGet(i)(propertySignatureTypes);
85
+ else optionalEqs[name] = tsplus_module_2.unsafeGet(i)(propertySignatureTypes);
86
+ }
87
+ let output = tsplus_module_1.struct(requiredEqs, optionalEqs);
88
+ for (let i = 0; i < indexSignatures.length; i++) {
89
+ const [, type] = tsplus_module_2.unsafeGet(i)(indexSignatures);
90
+ output = tsplus_module_1.intersection(tsplus_module_6.makeEq({ equals: (y) => (x) => {
91
+ for (const key of getKeysForIndexSignature(x, tsplus_module_2.unsafeGet(i)(ast.indexSignatures).parameter)) {
92
+ if (key in requiredEqs || key in optionalEqs) continue;
93
+ if (!type.equals(y[key])(x[key])) return false;
94
+ }
95
+ return true;
96
+ } }))(output);
97
+ }
98
+ return output;
99
+ }
100
+ case 18: return tsplus_module_1.union(tsplus_module_2.toArray(tsplus_module_2.map(goMemo)(ast.types)));
101
+ case 19: {
102
+ const f = () => goMemo(ast.getAST());
103
+ const get = memoize(f);
104
+ return tsplus_module_6.makeEq({ equals: (y) => (x) => get(f).equals(y)(x) });
105
+ }
106
+ case 14: return tsplus_module_1.strict;
107
+ case 21: return goMemo(ast.to);
108
+ case 20: return goMemo(ast.from);
109
+ case 22: return goMemo(ast.from);
110
+ }
147
111
  }
112
+ //#endregion
113
+ export { eq, equals };
114
+
148
115
  //# sourceMappingURL=Eq.mjs.map
package/_mjs/Eq.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Eq.mjs","names":["eq","eq_1","globalValue","getKeysForIndexSignature","memoize","equals","self","a","b","goMemo","ast","eqMemoMap","Symbol","for","WeakMap","memo","get","go","set","_tag","tsplus_module_4","getOrElse","tsplus_module_1","strict","map","tsplus_module_2","typeParameters","annotations","tsplus_module_3","EqHook","never","elements","element","type","rest","tsplus_module_6","makeEq","y","x","length","i","unsafeGet","xi","yi","tsplus_module_5","isJust","head","unsafeHead","value","tail","j","propertySignatureTypes","ps","propertySignatures","indexSignatures","is","parameter","requiredEqs","optionalEqs","name","isOptional","output","struct","intersection","key","union","toArray","types","f","getAST","to","from"],"sources":["../_src/Eq.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Eq.mjs","names":[],"sources":["../esm/Eq.js"],"sourcesContent":["import * as tsplus_module_1 from \"@fncts/base/data/Eq/api\";\nimport * as tsplus_module_2 from \"@fncts/base/collection/immutable/Vector/api\";\nimport * as tsplus_module_3 from \"@fncts/schema/ASTAnnotation\";\nimport * as tsplus_module_4 from \"@fncts/base/data/Maybe/api\";\nimport * as tsplus_module_5 from \"@fncts/base/data/Maybe/definition\";\nimport * as tsplus_module_6 from \"@fncts/base/data/Eq/definition\";\nexport const eq = eq_1;\nimport { globalValue } from \"@fncts/base/data/Global\";\nimport { getKeysForIndexSignature, memoize } from \"./utils.js\";\n/**\n * @tsplus getter fncts.schema.Schema equals\n */\nexport function equals(self) {\n const eq = eq_1(self);\n return (a, b) => eq.equals(b)(a);\n}\n/**\n * @tsplus getter fncts.schema.Schema eq\n */\nfunction eq_1(self) {\n return goMemo(self.ast);\n}\nconst eqMemoMap = globalValue(Symbol.for(\"fncts.schema.Eq.eqMemoMap\"), () => new WeakMap());\nfunction goMemo(ast) {\n const memo = eqMemoMap.get(ast);\n if (memo) {\n return memo;\n }\n const eq = go(ast);\n eqMemoMap.set(ast, eq);\n return eq;\n}\nfunction go(ast) {\n void 0;\n switch (ast._tag) {\n case 0 /* ASTTag.Declaration */:\n return tsplus_module_4.getOrElse(() => tsplus_module_1.strict)(tsplus_module_4.map((eq) => eq(...tsplus_module_2.map(go)(ast.typeParameters)))(ast.annotations\n .get(tsplus_module_3.EqHook)));\n case 1 /* ASTTag.Literal */:\n case 2 /* ASTTag.UniqueSymbol */:\n case 3 /* ASTTag.UndefinedKeyword */:\n case 4 /* ASTTag.VoidKeyword */:\n case 6 /* ASTTag.UnknownKeyword */:\n case 7 /* ASTTag.AnyKeyword */:\n case 9 /* ASTTag.NumberKeyword */:\n case 10 /* ASTTag.BooleanKeyword */:\n case 11 /* ASTTag.BigIntKeyword */:\n case 12 /* ASTTag.SymbolKeyword */:\n case 13 /* ASTTag.ObjectKeyword */:\n case 15 /* ASTTag.TemplateLiteral */:\n case 8 /* ASTTag.StringKeyword */:\n return tsplus_module_1.strict;\n case 5 /* ASTTag.NeverKeyword */:\n return tsplus_module_1.never;\n case 16 /* ASTTag.Tuple */: {\n const elements = tsplus_module_2.map((element) => goMemo(element.type))(ast.elements);\n const rest = tsplus_module_4.map((rest) => tsplus_module_2.map((ast) => goMemo(ast))(rest))(ast.rest);\n return tsplus_module_6.makeEq({\n equals: (y) => (x) => {\n if (x.length !== y.length) {\n return false;\n }\n let i = 0;\n for (; i < elements.length; i++) {\n const eq = tsplus_module_2.unsafeGet(i)(elements);\n const xi = x[i];\n const yi = y[i];\n if (!eq.equals(yi)(xi)) {\n return false;\n }\n }\n if (tsplus_module_5.isJust(rest)) {\n const head = tsplus_module_2.unsafeHead(rest.value);\n const tail = tsplus_module_2.tail(rest.value);\n for (; i < x.length - tail.length; i++) {\n if (!head.equals(y[i])(x[i])) {\n return false;\n }\n }\n for (let j = 0; j < tail.length; j++) {\n i += j;\n const eq = tsplus_module_2.unsafeGet(i)(elements);\n const xi = x[i];\n const yi = y[i];\n if (!eq.equals(yi)(xi)) {\n return false;\n }\n }\n }\n return true;\n },\n });\n }\n case 17 /* ASTTag.TypeLiteral */: {\n const propertySignatureTypes = tsplus_module_2.map((ps) => go(ps.type))(ast.propertySignatures);\n const indexSignatures = tsplus_module_2.map((is) => [go(is.parameter), go(is.type)])(ast.indexSignatures);\n const requiredEqs = {};\n const optionalEqs = {};\n for (let i = 0; i < propertySignatureTypes.length; i++) {\n const ps = tsplus_module_2.unsafeGet(i)(ast.propertySignatures);\n const name = ps.name;\n if (!ps.isOptional) {\n requiredEqs[name] = tsplus_module_2.unsafeGet(i)(propertySignatureTypes);\n }\n else {\n optionalEqs[name] = tsplus_module_2.unsafeGet(i)(propertySignatureTypes);\n }\n }\n let output = tsplus_module_1.struct(requiredEqs, optionalEqs);\n for (let i = 0; i < indexSignatures.length; i++) {\n const [, type] = tsplus_module_2.unsafeGet(i)(indexSignatures);\n output = tsplus_module_1.intersection(tsplus_module_6.makeEq({\n equals: (y) => (x) => {\n for (const key of getKeysForIndexSignature(x, tsplus_module_2.unsafeGet(i)(ast.indexSignatures).parameter)) {\n if (key in requiredEqs || key in optionalEqs) {\n continue;\n }\n if (!type.equals(y[key])(x[key])) {\n return false;\n }\n }\n return true;\n },\n }))(output);\n }\n return output;\n }\n case 18 /* ASTTag.Union */:\n return tsplus_module_1.union(tsplus_module_2.toArray(tsplus_module_2.map(goMemo)(ast.types)));\n case 19 /* ASTTag.Lazy */: {\n const f = () => goMemo(ast.getAST());\n const get = memoize(f);\n return tsplus_module_6.makeEq({\n equals: (y) => (x) => get(f).equals(y)(x),\n });\n }\n case 14 /* ASTTag.Enum */:\n return tsplus_module_1.strict;\n case 21 /* ASTTag.Transform */:\n return goMemo(ast.to);\n case 20 /* ASTTag.Refinement */:\n return goMemo(ast.from);\n case 22 /* ASTTag.Validation */:\n return goMemo(ast.from);\n }\n}\n//# sourceMappingURL=Eq.js.map"],"mappings":"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"}
package/_mjs/Gen.mjs CHANGED
@@ -1,172 +1,132 @@
1
- const fileName_1 = "(@fncts/schema) src/Gen.ts";
2
- import * as tsplus_module_1 from "@fncts/schema/AST";
3
- import * as tsplus_module_2 from "@fncts/schema/ASTAnnotation";
4
- import * as tsplus_module_3 from "@fncts/test/control/Gen/api";
5
- import * as tsplus_module_4 from "@fncts/io/IO/api";
6
1
  import * as tsplus_module_5 from "@fncts/base/collection/immutable/Vector/api";
7
- import * as tsplus_module_6 from "@fncts/base/data/Maybe/destructors";
2
+ import * as tsplus_module_1 from "@fncts/schema/AST";
8
3
  import * as tsplus_module_7 from "@fncts/base/data/Maybe/api";
4
+ import * as tsplus_module_6 from "@fncts/base/data/Maybe/destructors";
5
+ import { memoize } from "@fncts/schema/utils";
6
+ import * as tsplus_module_2 from "@fncts/schema/ASTAnnotation";
9
7
  import * as tsplus_module_8 from "@fncts/base/data/Maybe/definition";
10
8
  import * as tsplus_module_9 from "@fncts/base/data/Either/api";
9
+ import * as tsplus_module_3 from "@fncts/test/control/Gen/api";
10
+ import * as tsplus_module_4 from "@fncts/io/IO/api";
11
11
  import { InvalidInterpretationError } from "@fncts/schema/InvalidInterpretationError";
12
- import { memoize } from "@fncts/schema/utils";
12
+ //#region build/esm/Gen.js
13
+ const fileName_1 = "(@fncts/schema) src/Gen.ts";
13
14
  /**
14
- * @tsplus getter fncts.schema.Schema genFrom
15
- */
16
- export function genFrom(self) {
17
- return go(tsplus_module_1.getFrom(self.ast));
15
+ * @tsplus getter fncts.schema.Schema genFrom
16
+ */
17
+ function genFrom(self) {
18
+ return go(tsplus_module_1.getFrom(self.ast));
18
19
  }
19
20
  /**
20
- * @tsplus getter fncts.schema.Schema genTo
21
- */
22
- export function genTo(self) {
23
- return go(self.ast);
21
+ * @tsplus getter fncts.schema.Schema genTo
22
+ */
23
+ function genTo(self) {
24
+ return go(self.ast);
24
25
  }
25
26
  function getHook(ast) {
26
- return ast.annotations.get(tsplus_module_2.GenHook);
27
+ return ast.annotations.get(tsplus_module_2.GenHook);
27
28
  }
28
29
  function record(key, value) {
29
- return tsplus_module_3.map(tuples => {
30
- const out = {};
31
- for (const [k, v] of tuples) {
32
- out[k] = v;
33
- }
34
- return out;
35
- })(tsplus_module_3.arrayWith({
36
- maxLength: 10
37
- })(tsplus_module_3.tuple(key, value)));
30
+ return tsplus_module_3.map((tuples) => {
31
+ const out = {};
32
+ for (const [k, v] of tuples) out[k] = v;
33
+ return out;
34
+ })(tsplus_module_3.arrayWith({ maxLength: 10 })(tsplus_module_3.tuple(key, value)));
38
35
  }
39
- const go = /*#__PURE__*/memoize(function go(ast) {
40
- void 0;
41
- switch (ast._tag) {
42
- case 0 /* ASTTag.Declaration */:
43
- return tsplus_module_6.match(() => tsplus_module_3.fromIO(tsplus_module_4.haltNow(new InvalidInterpretationError("cannot build a Gen for a Declaration without a Gen hook"), fileName_1 + ":49:23")), hook => hook(...tsplus_module_5.map(go)(ast.typeParameters)))(getHook(ast));
44
- case 1 /* ASTTag.Literal */:
45
- return tsplus_module_3.constant(ast.literal);
46
- case 2 /* ASTTag.UniqueSymbol */:
47
- return tsplus_module_3.constant(ast.symbol);
48
- case 3 /* ASTTag.UndefinedKeyword */:
49
- return tsplus_module_3.constant(undefined);
50
- case 4 /* ASTTag.VoidKeyword */:
51
- return tsplus_module_3.constant(undefined);
52
- case 5 /* ASTTag.NeverKeyword */:
53
- return tsplus_module_3.fromIO(tsplus_module_4.haltNow(new InvalidInterpretationError("cannot build a Gen for `never`"), fileName_1 + ":62:35"));
54
- case 6 /* ASTTag.UnknownKeyword */:
55
- return tsplus_module_3.anything();
56
- case 7 /* ASTTag.AnyKeyword */:
57
- return tsplus_module_3.anything();
58
- case 8 /* ASTTag.StringKeyword */:
59
- return tsplus_module_3.fullUnicodeString();
60
- case 9 /* ASTTag.NumberKeyword */:
61
- return tsplus_module_3.float;
62
- case 10 /* ASTTag.BooleanKeyword */:
63
- return tsplus_module_3.boolean;
64
- case 11 /* ASTTag.BigIntKeyword */:
65
- return tsplus_module_3.bigInt;
66
- case 12 /* ASTTag.SymbolKeyword */:
67
- return tsplus_module_3.map(s => Symbol.for(s))(tsplus_module_3.fullUnicodeString());
68
- case 13 /* ASTTag.ObjectKeyword */:
69
- return tsplus_module_3.anything();
70
- case 15 /* ASTTag.TemplateLiteral */:
71
- {
72
- const components = [tsplus_module_3.constant(ast.head)];
73
- for (const span of ast.spans) {
74
- components.push(tsplus_module_3.fullUnicodeString({
75
- maxLength: 5
76
- }));
77
- components.push(tsplus_module_3.constant(span.literal));
78
- }
79
- return tsplus_module_3.map(spans => spans.join(""))(tsplus_module_3.tuple(...components));
80
- }
81
- case 16 /* ASTTag.Tuple */:
82
- {
83
- const elements = tsplus_module_5.map(e => go(e.type))(ast.elements);
84
- const rest = tsplus_module_7.map(restElement => tsplus_module_5.map(go)(restElement))(ast.rest);
85
- let output = tsplus_module_3.tuple(...elements);
86
- if (elements.length > 0 && tsplus_module_8.isNothing(rest)) {
87
- const firstOptionalIndex = tsplus_module_5.findIndex(e => e.isOptional)(ast.elements);
88
- if (firstOptionalIndex !== -1) {
89
- output = tsplus_module_3.flatMap(as => tsplus_module_3.map(i => as.slice(0, i))(tsplus_module_3.intWith({
90
- min: firstOptionalIndex,
91
- max: elements.length - 1
92
- })))(output);
93
- }
94
- }
95
- if (tsplus_module_8.isJust(rest)) {
96
- const head = tsplus_module_5.unsafeHead(rest.value);
97
- const tail = tsplus_module_5.tail(rest.value);
98
- output = tsplus_module_3.flatMap(as => tsplus_module_3.map(rest => [...as, ...rest])(tsplus_module_3.arrayWith({
99
- maxLength: 5
100
- })(head)))(output);
101
- for (let j = 0; j < tail.length; j++) {
102
- output = tsplus_module_3.flatMap(as => tsplus_module_3.map(a => [...as, a])(tsplus_module_5.unsafeGet(j)(tail)))(output);
103
- }
104
- }
105
- return output;
106
- }
107
- case 17 /* ASTTag.TypeLiteral */:
108
- {
109
- const propertySignatureTypes = tsplus_module_5.map(ps => go(ps.type))(ast.propertySignatures);
110
- const indexSignatures = tsplus_module_5.map(is => [go(is.parameter), go(is.type)])(ast.indexSignatures);
111
- const requiredGens = {};
112
- const optionalGens = {};
113
- for (let i = 0; i < propertySignatureTypes.length; i++) {
114
- const ps = tsplus_module_5.unsafeGet(i)(ast.propertySignatures);
115
- const name = ps.name;
116
- if (!ps.isOptional) {
117
- requiredGens[name] = tsplus_module_5.unsafeGet(i)(propertySignatureTypes);
118
- } else {
119
- optionalGens[name] = tsplus_module_5.unsafeGet(i)(propertySignatureTypes);
120
- }
121
- }
122
- let output = tsplus_module_3.zipWith(tsplus_module_3.partial(optionalGens), (a, b) => ({
123
- ...a,
124
- ...b
125
- }))(tsplus_module_3.struct(requiredGens));
126
- for (let i = 0; i < indexSignatures.length; i++) {
127
- const parameter = tsplus_module_5.unsafeGet(i)(indexSignatures)[0];
128
- const type = tsplus_module_5.unsafeGet(i)(indexSignatures)[1];
129
- output = tsplus_module_3.flatMap(o => {
130
- return tsplus_module_3.map(d => ({
131
- ...d,
132
- ...o
133
- }))(record(parameter, type));
134
- })(output);
135
- }
136
- return output;
137
- }
138
- case 18 /* ASTTag.Union */:
139
- {
140
- const types = tsplus_module_5.map(go)(ast.types);
141
- return tsplus_module_3.oneOf(...types);
142
- }
143
- case 19 /* ASTTag.Lazy */:
144
- {
145
- return tsplus_module_6.match(() => {
146
- const f = () => go(ast.getAST());
147
- const get = memoize(f);
148
- return tsplus_module_3.defer(() => get(f));
149
- }, handler => handler())(getHook(ast));
150
- }
151
- case 14 /* ASTTag.Enum */:
152
- {
153
- if (ast.enums.length === 0) {
154
- return tsplus_module_3.fromIO(tsplus_module_4.haltNow(new InvalidInterpretationError("cannot build a Gen for an empty enum"), fileName_1 + ":149:37"));
155
- }
156
- return tsplus_module_3.oneOf(...tsplus_module_5.map(([_, value]) => tsplus_module_3.constant(value))(ast.enums));
157
- }
158
- case 20 /* ASTTag.Refinement */:
159
- {
160
- const from = go(ast.from);
161
- return tsplus_module_6.match(() => tsplus_module_3.filter(a => tsplus_module_9.isRight(ast.decode(a)))(from), handler => handler(from))(getHook(ast));
162
- }
163
- case 21 /* ASTTag.Transform */:
164
- return go(ast.to);
165
- case 22 /* ASTTag.Validation */:
166
- {
167
- const from = go(ast.from);
168
- return tsplus_module_6.match(() => tsplus_module_3.filter(a => tsplus_module_5.every(v => v.validate(a))(ast.validation))(from), handler => handler(from))(getHook(ast));
169
- }
170
- }
36
+ const go = memoize(function go(ast) {
37
+ switch (ast._tag) {
38
+ case 0: return tsplus_module_6.match(() => tsplus_module_3.fromIO(tsplus_module_4.haltNow(new InvalidInterpretationError("cannot build a Gen for a Declaration without a Gen hook"), fileName_1 + ":49:23")), (hook) => hook(...tsplus_module_5.map(go)(ast.typeParameters)))(getHook(ast));
39
+ case 1: return tsplus_module_3.constant(ast.literal);
40
+ case 2: return tsplus_module_3.constant(ast.symbol);
41
+ case 3: return tsplus_module_3.constant(void 0);
42
+ case 4: return tsplus_module_3.constant(void 0);
43
+ case 5: return tsplus_module_3.fromIO(tsplus_module_4.haltNow(new InvalidInterpretationError("cannot build a Gen for `never`"), fileName_1 + ":62:35"));
44
+ case 6: return tsplus_module_3.anything();
45
+ case 7: return tsplus_module_3.anything();
46
+ case 8: return tsplus_module_3.fullUnicodeString();
47
+ case 9: return tsplus_module_3.float;
48
+ case 10: return tsplus_module_3.boolean;
49
+ case 11: return tsplus_module_3.bigInt;
50
+ case 12: return tsplus_module_3.map((s) => Symbol.for(s))(tsplus_module_3.fullUnicodeString());
51
+ case 13: return tsplus_module_3.anything();
52
+ case 15: {
53
+ const components = [tsplus_module_3.constant(ast.head)];
54
+ for (const span of ast.spans) {
55
+ components.push(tsplus_module_3.fullUnicodeString({ maxLength: 5 }));
56
+ components.push(tsplus_module_3.constant(span.literal));
57
+ }
58
+ return tsplus_module_3.map((spans) => spans.join(""))(tsplus_module_3.tuple(...components));
59
+ }
60
+ case 16: {
61
+ const elements = tsplus_module_5.map((e) => go(e.type))(ast.elements);
62
+ const rest = tsplus_module_7.map((restElement) => tsplus_module_5.map(go)(restElement))(ast.rest);
63
+ let output = tsplus_module_3.tuple(...elements);
64
+ if (elements.length > 0 && tsplus_module_8.isNothing(rest)) {
65
+ const firstOptionalIndex = tsplus_module_5.findIndex((e) => e.isOptional)(ast.elements);
66
+ if (firstOptionalIndex !== -1) output = tsplus_module_3.flatMap((as) => tsplus_module_3.map((i) => as.slice(0, i))(tsplus_module_3.intWith({
67
+ min: firstOptionalIndex,
68
+ max: elements.length - 1
69
+ })))(output);
70
+ }
71
+ if (tsplus_module_8.isJust(rest)) {
72
+ const head = tsplus_module_5.unsafeHead(rest.value);
73
+ const tail = tsplus_module_5.tail(rest.value);
74
+ output = tsplus_module_3.flatMap((as) => tsplus_module_3.map((rest) => [...as, ...rest])(tsplus_module_3.arrayWith({ maxLength: 5 })(head)))(output);
75
+ for (let j = 0; j < tail.length; j++) output = tsplus_module_3.flatMap((as) => tsplus_module_3.map((a) => [...as, a])(tsplus_module_5.unsafeGet(j)(tail)))(output);
76
+ }
77
+ return output;
78
+ }
79
+ case 17: {
80
+ const propertySignatureTypes = tsplus_module_5.map((ps) => go(ps.type))(ast.propertySignatures);
81
+ const indexSignatures = tsplus_module_5.map((is) => [go(is.parameter), go(is.type)])(ast.indexSignatures);
82
+ const requiredGens = {};
83
+ const optionalGens = {};
84
+ for (let i = 0; i < propertySignatureTypes.length; i++) {
85
+ const ps = tsplus_module_5.unsafeGet(i)(ast.propertySignatures);
86
+ const name = ps.name;
87
+ if (!ps.isOptional) requiredGens[name] = tsplus_module_5.unsafeGet(i)(propertySignatureTypes);
88
+ else optionalGens[name] = tsplus_module_5.unsafeGet(i)(propertySignatureTypes);
89
+ }
90
+ let output = tsplus_module_3.zipWith(tsplus_module_3.partial(optionalGens), (a, b) => ({
91
+ ...a,
92
+ ...b
93
+ }))(tsplus_module_3.struct(requiredGens));
94
+ for (let i = 0; i < indexSignatures.length; i++) {
95
+ const parameter = tsplus_module_5.unsafeGet(i)(indexSignatures)[0];
96
+ const type = tsplus_module_5.unsafeGet(i)(indexSignatures)[1];
97
+ output = tsplus_module_3.flatMap((o) => {
98
+ return tsplus_module_3.map((d) => ({
99
+ ...d,
100
+ ...o
101
+ }))(record(parameter, type));
102
+ })(output);
103
+ }
104
+ return output;
105
+ }
106
+ case 18: {
107
+ const types = tsplus_module_5.map(go)(ast.types);
108
+ return tsplus_module_3.oneOf(...types);
109
+ }
110
+ case 19: return tsplus_module_6.match(() => {
111
+ const f = () => go(ast.getAST());
112
+ const get = memoize(f);
113
+ return tsplus_module_3.defer(() => get(f));
114
+ }, (handler) => handler())(getHook(ast));
115
+ case 14:
116
+ if (ast.enums.length === 0) return tsplus_module_3.fromIO(tsplus_module_4.haltNow(new InvalidInterpretationError("cannot build a Gen for an empty enum"), fileName_1 + ":149:37"));
117
+ return tsplus_module_3.oneOf(...tsplus_module_5.map(([_, value]) => tsplus_module_3.constant(value))(ast.enums));
118
+ case 20: {
119
+ const from = go(ast.from);
120
+ return tsplus_module_6.match(() => tsplus_module_3.filter((a) => tsplus_module_9.isRight(ast.decode(a)))(from), (handler) => handler(from))(getHook(ast));
121
+ }
122
+ case 21: return go(ast.to);
123
+ case 22: {
124
+ const from = go(ast.from);
125
+ return tsplus_module_6.match(() => tsplus_module_3.filter((a) => tsplus_module_5.every((v) => v.validate(a))(ast.validation))(from), (handler) => handler(from))(getHook(ast));
126
+ }
127
+ }
171
128
  });
129
+ //#endregion
130
+ export { genFrom, genTo };
131
+
172
132
  //# sourceMappingURL=Gen.mjs.map