@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.
- package/AST.d.ts +60 -29
- package/ASTAnnotationMap.d.ts +4 -1
- package/LICENSE +26 -0
- package/ParseError/ParseError.d.ts +28 -13
- package/_cjs/AST.cjs +1096 -1087
- package/_cjs/AST.cjs.map +1 -1
- package/_cjs/ASTAnnotation.cjs +114 -83
- package/_cjs/ASTAnnotation.cjs.map +1 -1
- package/_cjs/ASTAnnotationMap.cjs +43 -32
- package/_cjs/ASTAnnotationMap.cjs.map +1 -1
- package/_cjs/Eq.cjs +113 -145
- package/_cjs/Eq.cjs.map +1 -1
- package/_cjs/Gen.cjs +131 -167
- package/_cjs/Gen.cjs.map +1 -1
- package/_cjs/Guard.cjs +167 -267
- package/_cjs/Guard.cjs.map +1 -1
- package/_cjs/InvalidInterpretationError.cjs +9 -15
- package/_cjs/InvalidInterpretationError.cjs.map +1 -1
- package/_cjs/ParseError/ParseError.cjs +285 -209
- package/_cjs/ParseError/ParseError.cjs.map +1 -1
- package/_cjs/ParseError/ParseErrorFormatter.cjs +0 -2
- package/_cjs/ParseError/PathFormatter.cjs +55 -87
- package/_cjs/ParseError/PathFormatter.cjs.map +1 -1
- package/_cjs/ParseError/TreeFormatter.cjs +70 -102
- package/_cjs/ParseError/TreeFormatter.cjs.map +1 -1
- package/_cjs/ParseError.cjs +35 -50
- package/_cjs/ParseResult.cjs +15 -15
- package/_cjs/ParseResult.cjs.map +1 -1
- package/_cjs/Parser/api.cjs +54 -50
- package/_cjs/Parser/api.cjs.map +1 -1
- package/_cjs/Parser/definition.cjs +17 -16
- package/_cjs/Parser/definition.cjs.map +1 -1
- package/_cjs/Parser/interpreter.cjs +276 -358
- package/_cjs/Parser/interpreter.cjs.map +1 -1
- package/_cjs/Parser.cjs +12 -39
- package/_cjs/Schema/api/conc.cjs +64 -59
- package/_cjs/Schema/api/conc.cjs.map +1 -1
- package/_cjs/Schema/api/either.cjs +73 -72
- package/_cjs/Schema/api/either.cjs.map +1 -1
- package/_cjs/Schema/api/hashMap.cjs +85 -85
- package/_cjs/Schema/api/hashMap.cjs.map +1 -1
- package/_cjs/Schema/api/hashSet.cjs +75 -69
- package/_cjs/Schema/api/hashSet.cjs.map +1 -1
- package/_cjs/Schema/api/list.cjs +74 -64
- package/_cjs/Schema/api/list.cjs.map +1 -1
- package/_cjs/Schema/api/map.cjs +81 -83
- package/_cjs/Schema/api/map.cjs.map +1 -1
- package/_cjs/Schema/api/maybe.cjs +56 -49
- package/_cjs/Schema/api/maybe.cjs.map +1 -1
- package/_cjs/Schema/api/set.cjs +68 -61
- package/_cjs/Schema/api/set.cjs.map +1 -1
- package/_cjs/Schema/api.cjs +332 -350
- package/_cjs/Schema/api.cjs.map +1 -1
- package/_cjs/Schema/definition.cjs +28 -27
- package/_cjs/Schema/definition.cjs.map +1 -1
- package/_cjs/Schema/derivations.cjs +85 -100
- package/_cjs/Schema/derivations.cjs.map +1 -1
- package/_cjs/Schema.cjs +95 -127
- package/_cjs/Show.cjs +91 -151
- package/_cjs/Show.cjs.map +1 -1
- package/_cjs/chunk.cjs +28 -0
- package/_cjs/global.cjs +0 -2
- package/_cjs/index.cjs +0 -2
- package/_cjs/utils.cjs +41 -46
- package/_cjs/utils.cjs.map +1 -1
- package/_mjs/AST.mjs +1007 -1031
- package/_mjs/AST.mjs.map +1 -1
- package/_mjs/ASTAnnotation.mjs +77 -71
- package/_mjs/ASTAnnotation.mjs.map +1 -1
- package/_mjs/ASTAnnotationMap.mjs +36 -25
- package/_mjs/ASTAnnotationMap.mjs.map +1 -1
- package/_mjs/Eq.mjs +101 -134
- package/_mjs/Eq.mjs.map +1 -1
- package/_mjs/Gen.mjs +117 -157
- package/_mjs/Gen.mjs.map +1 -1
- package/_mjs/Guard.mjs +154 -257
- package/_mjs/Guard.mjs.map +1 -1
- package/_mjs/InvalidInterpretationError.mjs +8 -9
- package/_mjs/InvalidInterpretationError.mjs.map +1 -1
- package/_mjs/ParseError/ParseError.mjs +270 -190
- package/_mjs/ParseError/ParseError.mjs.map +1 -1
- package/_mjs/ParseError/ParseErrorFormatter.mjs +0 -2
- package/_mjs/ParseError/PathFormatter.mjs +51 -80
- package/_mjs/ParseError/PathFormatter.mjs.map +1 -1
- package/_mjs/ParseError/TreeFormatter.mjs +62 -94
- package/_mjs/ParseError/TreeFormatter.mjs.map +1 -1
- package/_mjs/ParseError.mjs +5 -6
- package/_mjs/ParseResult.mjs +13 -9
- package/_mjs/ParseResult.mjs.map +1 -1
- package/_mjs/Parser/api.mjs +43 -39
- package/_mjs/Parser/api.mjs.map +1 -1
- package/_mjs/Parser/definition.mjs +12 -8
- package/_mjs/Parser/definition.mjs.map +1 -1
- package/_mjs/Parser/interpreter.mjs +262 -348
- package/_mjs/Parser/interpreter.mjs.map +1 -1
- package/_mjs/Parser.mjs +4 -5
- package/_mjs/Schema/api/conc.mjs +41 -45
- package/_mjs/Schema/api/conc.mjs.map +1 -1
- package/_mjs/Schema/api/either.mjs +55 -61
- package/_mjs/Schema/api/either.mjs.map +1 -1
- package/_mjs/Schema/api/hashMap.mjs +61 -71
- package/_mjs/Schema/api/hashMap.mjs.map +1 -1
- package/_mjs/Schema/api/hashSet.mjs +53 -56
- package/_mjs/Schema/api/hashSet.mjs.map +1 -1
- package/_mjs/Schema/api/list.mjs +50 -51
- package/_mjs/Schema/api/list.mjs.map +1 -1
- package/_mjs/Schema/api/map.mjs +59 -69
- package/_mjs/Schema/api/map.mjs.map +1 -1
- package/_mjs/Schema/api/maybe.mjs +34 -36
- package/_mjs/Schema/api/maybe.mjs.map +1 -1
- package/_mjs/Schema/api/set.mjs +47 -48
- package/_mjs/Schema/api/set.mjs.map +1 -1
- package/_mjs/Schema/api.mjs +304 -346
- package/_mjs/Schema/api.mjs.map +1 -1
- package/_mjs/Schema/definition.mjs +21 -18
- package/_mjs/Schema/definition.mjs.map +1 -1
- package/_mjs/Schema/derivations.mjs +71 -90
- package/_mjs/Schema/derivations.mjs.map +1 -1
- package/_mjs/Schema.mjs +12 -15
- package/_mjs/Show.mjs +79 -139
- package/_mjs/Show.mjs.map +1 -1
- package/_mjs/global.mjs +0 -2
- package/_mjs/index.mjs +0 -2
- package/_mjs/utils.mjs +35 -37
- package/_mjs/utils.mjs.map +1 -1
- package/_src/AST.ts +226 -28
- package/_src/ASTAnnotationMap.ts +14 -1
- package/_src/ParseError/ParseError.ts +128 -13
- package/_src/Schema/api/hashMap.ts +1 -1
- package/_src/Schema/api/hashSet.ts +1 -1
- package/_src/Schema/api/list.ts +3 -1
- package/_src/Schema/api/map.ts +1 -1
- package/_src/Schema/api/set.ts +1 -1
- package/package.json +7 -3
- package/_cjs/ParseError/ParseErrorFormatter.cjs.map +0 -1
- package/_cjs/ParseError.cjs.map +0 -1
- package/_cjs/Parser.cjs.map +0 -1
- package/_cjs/Schema.cjs.map +0 -1
- package/_cjs/global.cjs.map +0 -1
- package/_cjs/index.cjs.map +0 -1
- package/_mjs/ParseError/ParseErrorFormatter.mjs.map +0 -1
- package/_mjs/ParseError.mjs.map +0 -1
- package/_mjs/Parser.mjs.map +0 -1
- package/_mjs/Schema.mjs.map +0 -1
- package/_mjs/global.mjs.map +0 -1
- package/_mjs/index.mjs.map +0 -1
|
@@ -1,34 +1,45 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_chunk = require("./chunk.cjs");
|
|
3
|
+
let _fncts_base_data_Maybe_destructors = require("@fncts/base/data/Maybe/destructors");
|
|
4
|
+
_fncts_base_data_Maybe_destructors = require_chunk.__toESM(_fncts_base_data_Maybe_destructors, 1);
|
|
5
|
+
let _fncts_base_data_Equatable_definition = require("@fncts/base/data/Equatable/definition");
|
|
6
|
+
_fncts_base_data_Equatable_definition = require_chunk.__toESM(_fncts_base_data_Equatable_definition, 1);
|
|
7
|
+
let _fncts_base_collection_Iterable_api = require("@fncts/base/collection/Iterable/api");
|
|
8
|
+
_fncts_base_collection_Iterable_api = require_chunk.__toESM(_fncts_base_collection_Iterable_api, 1);
|
|
9
|
+
let _fncts_base_collection_immutable_HashMap_api = require("@fncts/base/collection/immutable/HashMap/api");
|
|
10
|
+
_fncts_base_collection_immutable_HashMap_api = require_chunk.__toESM(_fncts_base_collection_immutable_HashMap_api, 1);
|
|
11
|
+
let _fncts_base_collection_immutable_Conc_constructors = require("@fncts/base/collection/immutable/Conc/constructors");
|
|
12
|
+
_fncts_base_collection_immutable_Conc_constructors = require_chunk.__toESM(_fncts_base_collection_immutable_Conc_constructors, 1);
|
|
13
|
+
let _fncts_base_collection_immutable_Conc_api = require("@fncts/base/collection/immutable/Conc/api");
|
|
14
|
+
_fncts_base_collection_immutable_Conc_api = require_chunk.__toESM(_fncts_base_collection_immutable_Conc_api, 1);
|
|
15
|
+
//#region build/esm/ASTAnnotationMap.js
|
|
16
|
+
var ASTAnnotationMap = class ASTAnnotationMap {
|
|
17
|
+
map;
|
|
18
|
+
constructor(map) {
|
|
19
|
+
this.map = map;
|
|
20
|
+
}
|
|
21
|
+
[_fncts_base_data_Equatable_definition.equalsSymbol](that, context) {
|
|
22
|
+
if (!(that instanceof ASTAnnotationMap) || this.map.size !== that.map.size) return false;
|
|
23
|
+
return _fncts_base_collection_Iterable_api.corresponds(that.map, ([k1, v1], [k2, v2]) => context.comparator(k1, k2) && context.comparator(v1, v2))(this.map);
|
|
24
|
+
}
|
|
25
|
+
combine(that) {
|
|
26
|
+
return new ASTAnnotationMap(_fncts_base_collection_immutable_Conc_api.foldLeft(_fncts_base_collection_immutable_HashMap_api.empty(), (acc, [k, v]) => _fncts_base_collection_immutable_HashMap_api.set(k, _fncts_base_data_Maybe_destructors.match(() => v, (_) => k.combine(_, v))(_fncts_base_collection_immutable_HashMap_api.get(k)(acc)))(acc))(_fncts_base_collection_immutable_Conc_api.concat(_fncts_base_collection_immutable_Conc_constructors.from(that.map))(_fncts_base_collection_immutable_Conc_constructors.from(this.map))));
|
|
27
|
+
}
|
|
28
|
+
get(key) {
|
|
29
|
+
return _fncts_base_collection_immutable_HashMap_api.get(key)(this.map);
|
|
30
|
+
}
|
|
31
|
+
overwrite(key, value) {
|
|
32
|
+
return new ASTAnnotationMap(_fncts_base_collection_immutable_HashMap_api.set(key, value)(this.map));
|
|
33
|
+
}
|
|
34
|
+
update(key, f) {
|
|
35
|
+
return this.overwrite(key, f(this.get(key)));
|
|
36
|
+
}
|
|
37
|
+
annotate(key, value) {
|
|
38
|
+
return this.update(key, (v) => _fncts_base_data_Maybe_destructors.match(() => value, (v) => key.combine(v, value))(v));
|
|
39
|
+
}
|
|
40
|
+
static empty = new ASTAnnotationMap(_fncts_base_collection_immutable_HashMap_api.empty());
|
|
41
|
+
};
|
|
42
|
+
//#endregion
|
|
32
43
|
exports.ASTAnnotationMap = ASTAnnotationMap;
|
|
33
|
-
|
|
44
|
+
|
|
34
45
|
//# sourceMappingURL=ASTAnnotationMap.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ASTAnnotationMap.cjs","names":["
|
|
1
|
+
{"version":3,"file":"ASTAnnotationMap.cjs","names":["tsplus_module_1","tsplus_module_2","tsplus_module_6","tsplus_module_3","tsplus_module_4","tsplus_module_5"],"sources":["../esm/ASTAnnotationMap.js"],"sourcesContent":["import * as tsplus_module_1 from \"@fncts/base/data/Equatable/definition\";\nimport * as tsplus_module_2 from \"@fncts/base/collection/Iterable/api\";\nimport * as tsplus_module_3 from \"@fncts/base/collection/immutable/HashMap/api\";\nimport * as tsplus_module_4 from \"@fncts/base/data/Maybe/destructors\";\nimport * as tsplus_module_5 from \"@fncts/base/collection/immutable/Conc/constructors\";\nimport * as tsplus_module_6 from \"@fncts/base/collection/immutable/Conc/api\";\nexport class ASTAnnotationMap {\n map;\n constructor(map) {\n this.map = map;\n }\n [tsplus_module_1.equalsSymbol](that, context) {\n if (!(that instanceof ASTAnnotationMap) || this.map.size !== that.map.size) {\n return false;\n }\n return tsplus_module_2.corresponds(that.map, ([k1, v1], [k2, v2]) => context.comparator(k1, k2) && context.comparator(v1, v2))(this.map);\n }\n combine(that) {\n return new ASTAnnotationMap(tsplus_module_6.foldLeft(tsplus_module_3.empty(), (acc, [k, v]) => tsplus_module_3.set(k, tsplus_module_4.match(() => v, (_) => k.combine(_, v))(tsplus_module_3.get(k)(acc)))(acc))(tsplus_module_6.concat(tsplus_module_5.from(that.map))(tsplus_module_5.from(this.map))));\n }\n get(key) {\n return tsplus_module_3.get(key)(this.map);\n }\n overwrite(key, value) {\n return new ASTAnnotationMap(tsplus_module_3.set(key, value)(this.map));\n }\n update(key, f) {\n return this.overwrite(key, f(this.get(key)));\n }\n annotate(key, value) {\n return this.update(key, (v) => tsplus_module_4.match(() => value, (v) => key.combine(v, value))(v));\n }\n static empty = new ASTAnnotationMap(tsplus_module_3.empty());\n}\n//# sourceMappingURL=ASTAnnotationMap.js.map"],"mappings":";;;;;;;;;;;;;;;AAMA,IAAa,mBAAb,MAAa,iBAAiB;CAC1B;CACA,YAAY,KAAK;AACb,OAAK,MAAM;;CAEf,CAACA,sCAAgB,cAAc,MAAM,SAAS;AAC1C,MAAI,EAAE,gBAAgB,qBAAqB,KAAK,IAAI,SAAS,KAAK,IAAI,KAClE,QAAO;AAEX,SAAOC,oCAAgB,YAAY,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,QAAQ,QAAQ,WAAW,IAAI,GAAG,IAAI,QAAQ,WAAW,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI;;CAE5I,QAAQ,MAAM;AACV,SAAO,IAAI,iBAAiBC,0CAAgB,SAASC,6CAAgB,OAAO,GAAG,KAAK,CAAC,GAAG,OAAOA,6CAAgB,IAAI,GAAGC,mCAAgB,YAAY,IAAI,MAAM,EAAE,QAAQ,GAAG,EAAE,CAAC,CAACD,6CAAgB,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAACD,0CAAgB,OAAOG,mDAAgB,KAAK,KAAK,IAAI,CAAC,CAACA,mDAAgB,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;;CAE7S,IAAI,KAAK;AACL,SAAOF,6CAAgB,IAAI,IAAI,CAAC,KAAK,IAAI;;CAE7C,UAAU,KAAK,OAAO;AAClB,SAAO,IAAI,iBAAiBA,6CAAgB,IAAI,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC;;CAE1E,OAAO,KAAK,GAAG;AACX,SAAO,KAAK,UAAU,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC;;CAEhD,SAAS,KAAK,OAAO;AACjB,SAAO,KAAK,OAAO,MAAM,MAAMC,mCAAgB,YAAY,QAAQ,MAAM,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC;;CAEvG,OAAO,QAAQ,IAAI,iBAAiBD,6CAAgB,OAAO,CAAC"}
|
package/_cjs/Eq.cjs
CHANGED
|
@@ -1,156 +1,124 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_chunk = require("./chunk.cjs");
|
|
3
|
+
const require_utils = require("./utils.cjs");
|
|
4
|
+
let _fncts_base_collection_immutable_Vector_api = require("@fncts/base/collection/immutable/Vector/api");
|
|
5
|
+
_fncts_base_collection_immutable_Vector_api = require_chunk.__toESM(_fncts_base_collection_immutable_Vector_api, 1);
|
|
6
|
+
let _fncts_base_data_Maybe_api = require("@fncts/base/data/Maybe/api");
|
|
7
|
+
_fncts_base_data_Maybe_api = require_chunk.__toESM(_fncts_base_data_Maybe_api, 1);
|
|
8
|
+
let _fncts_base_data_Global = require("@fncts/base/data/Global");
|
|
9
|
+
let _fncts_schema_ASTAnnotation = require("@fncts/schema/ASTAnnotation");
|
|
10
|
+
_fncts_schema_ASTAnnotation = require_chunk.__toESM(_fncts_schema_ASTAnnotation, 1);
|
|
11
|
+
let _fncts_base_data_Maybe_definition = require("@fncts/base/data/Maybe/definition");
|
|
12
|
+
_fncts_base_data_Maybe_definition = require_chunk.__toESM(_fncts_base_data_Maybe_definition, 1);
|
|
13
|
+
let _fncts_base_data_Eq_api = require("@fncts/base/data/Eq/api");
|
|
14
|
+
_fncts_base_data_Eq_api = require_chunk.__toESM(_fncts_base_data_Eq_api, 1);
|
|
15
|
+
let _fncts_base_data_Eq_definition = require("@fncts/base/data/Eq/definition");
|
|
16
|
+
_fncts_base_data_Eq_definition = require_chunk.__toESM(_fncts_base_data_Eq_definition, 1);
|
|
17
|
+
//#region build/esm/Eq.js
|
|
18
|
+
const eq = eq_1;
|
|
18
19
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
* @tsplus getter fncts.schema.Schema equals
|
|
21
|
+
*/
|
|
21
22
|
function equals(self) {
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
const eq = eq_1(self);
|
|
24
|
+
return (a, b) => eq.equals(b)(a);
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
* @tsplus getter fncts.schema.Schema eq
|
|
28
|
+
*/
|
|
28
29
|
function eq_1(self) {
|
|
29
|
-
|
|
30
|
+
return goMemo(self.ast);
|
|
30
31
|
}
|
|
31
|
-
const eqMemoMap =
|
|
32
|
+
const eqMemoMap = (0, _fncts_base_data_Global.globalValue)(Symbol.for("fncts.schema.Eq.eqMemoMap"), () => /* @__PURE__ */ new WeakMap());
|
|
32
33
|
function goMemo(ast) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
eqMemoMap.set(ast, eq);
|
|
39
|
-
return eq;
|
|
34
|
+
const memo = eqMemoMap.get(ast);
|
|
35
|
+
if (memo) return memo;
|
|
36
|
+
const eq = go(ast);
|
|
37
|
+
eqMemoMap.set(ast, eq);
|
|
38
|
+
return eq;
|
|
40
39
|
}
|
|
41
40
|
function go(ast) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
output = tsplus_module_1.intersection(tsplus_module_6.makeEq({
|
|
121
|
-
equals: y => x => {
|
|
122
|
-
for (const key of (0, _utils.getKeysForIndexSignature)(x, tsplus_module_2.unsafeGet(i)(ast.indexSignatures).parameter)) {
|
|
123
|
-
if (key in requiredEqs || key in optionalEqs) {
|
|
124
|
-
continue;
|
|
125
|
-
}
|
|
126
|
-
if (!type.equals(y[key])(x[key])) {
|
|
127
|
-
return false;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
}))(output);
|
|
133
|
-
}
|
|
134
|
-
return output;
|
|
135
|
-
}
|
|
136
|
-
case 18 /* ASTTag.Union */:
|
|
137
|
-
return tsplus_module_1.union(tsplus_module_2.toArray(tsplus_module_2.map(goMemo)(ast.types)));
|
|
138
|
-
case 19 /* ASTTag.Lazy */:
|
|
139
|
-
{
|
|
140
|
-
const f = () => goMemo(ast.getAST());
|
|
141
|
-
const get = (0, _utils.memoize)(f);
|
|
142
|
-
return tsplus_module_6.makeEq({
|
|
143
|
-
equals: y => x => get(f).equals(y)(x)
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
case 14 /* ASTTag.Enum */:
|
|
147
|
-
return tsplus_module_1.strict;
|
|
148
|
-
case 21 /* ASTTag.Transform */:
|
|
149
|
-
return goMemo(ast.to);
|
|
150
|
-
case 20 /* ASTTag.Refinement */:
|
|
151
|
-
return goMemo(ast.from);
|
|
152
|
-
case 22 /* ASTTag.Validation */:
|
|
153
|
-
return goMemo(ast.from);
|
|
154
|
-
}
|
|
41
|
+
switch (ast._tag) {
|
|
42
|
+
case 0: return _fncts_base_data_Maybe_api.getOrElse(() => _fncts_base_data_Eq_api.strict)(_fncts_base_data_Maybe_api.map((eq) => eq(..._fncts_base_collection_immutable_Vector_api.map(go)(ast.typeParameters)))(ast.annotations.get(_fncts_schema_ASTAnnotation.EqHook)));
|
|
43
|
+
case 1:
|
|
44
|
+
case 2:
|
|
45
|
+
case 3:
|
|
46
|
+
case 4:
|
|
47
|
+
case 6:
|
|
48
|
+
case 7:
|
|
49
|
+
case 9:
|
|
50
|
+
case 10:
|
|
51
|
+
case 11:
|
|
52
|
+
case 12:
|
|
53
|
+
case 13:
|
|
54
|
+
case 15:
|
|
55
|
+
case 8: return _fncts_base_data_Eq_api.strict;
|
|
56
|
+
case 5: return _fncts_base_data_Eq_api.never;
|
|
57
|
+
case 16: {
|
|
58
|
+
const elements = _fncts_base_collection_immutable_Vector_api.map((element) => goMemo(element.type))(ast.elements);
|
|
59
|
+
const rest = _fncts_base_data_Maybe_api.map((rest) => _fncts_base_collection_immutable_Vector_api.map((ast) => goMemo(ast))(rest))(ast.rest);
|
|
60
|
+
return _fncts_base_data_Eq_definition.makeEq({ equals: (y) => (x) => {
|
|
61
|
+
if (x.length !== y.length) return false;
|
|
62
|
+
let i = 0;
|
|
63
|
+
for (; i < elements.length; i++) {
|
|
64
|
+
const eq = _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(elements);
|
|
65
|
+
const xi = x[i];
|
|
66
|
+
const yi = y[i];
|
|
67
|
+
if (!eq.equals(yi)(xi)) return false;
|
|
68
|
+
}
|
|
69
|
+
if (_fncts_base_data_Maybe_definition.isJust(rest)) {
|
|
70
|
+
const head = _fncts_base_collection_immutable_Vector_api.unsafeHead(rest.value);
|
|
71
|
+
const tail = _fncts_base_collection_immutable_Vector_api.tail(rest.value);
|
|
72
|
+
for (; i < x.length - tail.length; i++) if (!head.equals(y[i])(x[i])) return false;
|
|
73
|
+
for (let j = 0; j < tail.length; j++) {
|
|
74
|
+
i += j;
|
|
75
|
+
const eq = _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(elements);
|
|
76
|
+
const xi = x[i];
|
|
77
|
+
const yi = y[i];
|
|
78
|
+
if (!eq.equals(yi)(xi)) return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
} });
|
|
83
|
+
}
|
|
84
|
+
case 17: {
|
|
85
|
+
const propertySignatureTypes = _fncts_base_collection_immutable_Vector_api.map((ps) => go(ps.type))(ast.propertySignatures);
|
|
86
|
+
const indexSignatures = _fncts_base_collection_immutable_Vector_api.map((is) => [go(is.parameter), go(is.type)])(ast.indexSignatures);
|
|
87
|
+
const requiredEqs = {};
|
|
88
|
+
const optionalEqs = {};
|
|
89
|
+
for (let i = 0; i < propertySignatureTypes.length; i++) {
|
|
90
|
+
const ps = _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(ast.propertySignatures);
|
|
91
|
+
const name = ps.name;
|
|
92
|
+
if (!ps.isOptional) requiredEqs[name] = _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(propertySignatureTypes);
|
|
93
|
+
else optionalEqs[name] = _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(propertySignatureTypes);
|
|
94
|
+
}
|
|
95
|
+
let output = _fncts_base_data_Eq_api.struct(requiredEqs, optionalEqs);
|
|
96
|
+
for (let i = 0; i < indexSignatures.length; i++) {
|
|
97
|
+
const [, type] = _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(indexSignatures);
|
|
98
|
+
output = _fncts_base_data_Eq_api.intersection(_fncts_base_data_Eq_definition.makeEq({ equals: (y) => (x) => {
|
|
99
|
+
for (const key of require_utils.getKeysForIndexSignature(x, _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(ast.indexSignatures).parameter)) {
|
|
100
|
+
if (key in requiredEqs || key in optionalEqs) continue;
|
|
101
|
+
if (!type.equals(y[key])(x[key])) return false;
|
|
102
|
+
}
|
|
103
|
+
return true;
|
|
104
|
+
} }))(output);
|
|
105
|
+
}
|
|
106
|
+
return output;
|
|
107
|
+
}
|
|
108
|
+
case 18: return _fncts_base_data_Eq_api.union(_fncts_base_collection_immutable_Vector_api.toArray(_fncts_base_collection_immutable_Vector_api.map(goMemo)(ast.types)));
|
|
109
|
+
case 19: {
|
|
110
|
+
const f = () => goMemo(ast.getAST());
|
|
111
|
+
const get = require_utils.memoize(f);
|
|
112
|
+
return _fncts_base_data_Eq_definition.makeEq({ equals: (y) => (x) => get(f).equals(y)(x) });
|
|
113
|
+
}
|
|
114
|
+
case 14: return _fncts_base_data_Eq_api.strict;
|
|
115
|
+
case 21: return goMemo(ast.to);
|
|
116
|
+
case 20: return goMemo(ast.from);
|
|
117
|
+
case 22: return goMemo(ast.from);
|
|
118
|
+
}
|
|
155
119
|
}
|
|
120
|
+
//#endregion
|
|
121
|
+
exports.eq = eq;
|
|
122
|
+
exports.equals = equals;
|
|
123
|
+
|
|
156
124
|
//# sourceMappingURL=Eq.cjs.map
|
package/_cjs/Eq.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Eq.cjs","names":["
|
|
1
|
+
{"version":3,"file":"Eq.cjs","names":["tsplus_module_4","tsplus_module_1","tsplus_module_2","tsplus_module_3","tsplus_module_6","tsplus_module_5","getKeysForIndexSignature","memoize"],"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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"}
|