@kaiko.io/rescript-deser 4.0.0-rc.3 → 4.0.0-rc.4
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/lib/bs/.bsbuild +0 -0
- package/lib/bs/.bsdeps +4 -3
- package/lib/bs/.compiler.log +2 -2
- package/lib/bs/.ninja_log +21 -0
- package/lib/bs/.sourcedirs.json +1 -0
- package/lib/bs/build.ninja +18 -5
- package/lib/bs/src/JSON.ast +0 -0
- package/lib/bs/src/JSON.cmi +0 -0
- package/lib/bs/src/JSON.cmj +0 -0
- package/lib/bs/src/JSON.cmt +0 -0
- package/lib/bs/tests/QUnit.ast +0 -0
- package/lib/bs/tests/QUnit.cmi +0 -0
- package/lib/bs/tests/QUnit.cmj +0 -0
- package/lib/bs/tests/QUnit.cmt +0 -0
- package/lib/bs/tests/QUnit.d +0 -0
- package/lib/bs/tests/index.ast +0 -0
- package/lib/bs/tests/index.cmi +0 -0
- package/lib/bs/tests/index.cmj +0 -0
- package/lib/bs/tests/index.cmt +0 -0
- package/lib/bs/tests/index.d +1 -0
- package/lib/es6/src/JSON.js +15 -11
- package/lib/es6/tests/QUnit.js +2 -0
- package/lib/es6/tests/index.js +284 -0
- package/lib/js/src/JSON.js +649 -0
- package/lib/js/tests/QUnit.js +2 -0
- package/lib/js/tests/index.js +283 -0
- package/lib/ocaml/.compiler.log +2 -2
- package/lib/ocaml/.ninja_log +1 -0
- package/lib/ocaml/JSON.cmt +0 -0
- package/package.json +2 -2
package/lib/bs/.bsbuild
CHANGED
|
Binary file
|
package/lib/bs/.bsdeps
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
11.0.0-rc.6
|
|
2
|
-
/home/manu/src/
|
|
3
|
-
|
|
2
|
+
/home/manu/src/kaiko/rescript-deser
|
|
3
|
+
0
|
|
4
4
|
rescript.json 0x1.94b3a6a1d2ba4p+30
|
|
5
|
+
tests 0x1.93fb8b23e3f01p+30
|
|
5
6
|
src/ 0x1.957e56214e505p+30
|
|
6
7
|
===
|
|
7
|
-
/home/manu/src/
|
|
8
|
+
/home/manu/src/kaiko/rescript-deser/node_modules/rescript/linux/rescript.exe 0x1.9578a22fcfdf4p+30
|
package/lib/bs/.compiler.log
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#Start(
|
|
2
|
-
#Done(
|
|
1
|
+
#Start(1700765549343)
|
|
2
|
+
#Done(1700765549343)
|
package/lib/bs/.ninja_log
CHANGED
|
@@ -4,3 +4,24 @@
|
|
|
4
4
|
9 26 1700763106529919867 src/JSON.cmj f5326fd4af8f39e2
|
|
5
5
|
9 26 1700763106529919867 src/JSON.cmi f5326fd4af8f39e2
|
|
6
6
|
9 26 1700763106529919867 ../es6/src/JSON.js f5326fd4af8f39e2
|
|
7
|
+
0 16 1700763106513252576 src/JSON.cmj 9477bd76994296b7
|
|
8
|
+
0 16 1700763106513252576 src/JSON.cmi 9477bd76994296b7
|
|
9
|
+
0 16 1700763106513252576 ../es6/src/JSON.js 9477bd76994296b7
|
|
10
|
+
0 6 1700765531805623915 tests/QUnit.ast a6a94a20e20f8557
|
|
11
|
+
1 6 1700765531805623915 tests/index.ast 3c91d8240b8bb4b8
|
|
12
|
+
0 8 1700765531808957333 src/JSON.ast 54dacc9e71f78ec4
|
|
13
|
+
6 8 1700765531808957333 tests/QUnit.d 4a2631c992d93ce7
|
|
14
|
+
6 8 1700765531808957333 tests/index.d 5a4db9cdecd186b3
|
|
15
|
+
8 10 1700765531808957333 src/JSON.d cd2d6773c781340f
|
|
16
|
+
8 15 1700765531815624169 tests/QUnit.cmj e2ba8efce8af03b9
|
|
17
|
+
8 15 1700765531815624169 tests/QUnit.cmi e2ba8efce8af03b9
|
|
18
|
+
8 15 1700765531815624169 ../es6/tests/QUnit.js e2ba8efce8af03b9
|
|
19
|
+
8 15 1700765531815624169 ../js/tests/QUnit.js e2ba8efce8af03b9
|
|
20
|
+
10 28 1700765531828957841 src/JSON.cmj 3da9e5f359841f1a
|
|
21
|
+
10 28 1700765531828957841 src/JSON.cmi 3da9e5f359841f1a
|
|
22
|
+
10 28 1700765531828957841 ../es6/src/JSON.js 3da9e5f359841f1a
|
|
23
|
+
10 28 1700765531828957841 ../js/src/JSON.js 3da9e5f359841f1a
|
|
24
|
+
28 38 1700765531838958094 tests/index.cmj 630554c615a94d8d
|
|
25
|
+
28 38 1700765531838958094 tests/index.cmi 630554c615a94d8d
|
|
26
|
+
28 38 1700765531838958094 ../es6/tests/index.js 630554c615a94d8d
|
|
27
|
+
28 38 1700765531838958094 ../js/tests/index.js 630554c615a94d8d
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "dirs" : [ "tests" , "src/" ] , "pkgs" : [ [ "@kaiko.io/rescript-prelude" , "/home/manu/src/kaiko/rescript-deser/node_modules/@kaiko.io/rescript-prelude" ] ] , "generated" : [] }
|
package/lib/bs/build.ninja
CHANGED
|
@@ -1,14 +1,27 @@
|
|
|
1
1
|
rescript = 1
|
|
2
|
-
g_finger := /home/manu/src/
|
|
2
|
+
g_finger := /home/manu/src/kaiko/rescript-deser/node_modules/@kaiko.io/rescript-prelude/lib/ocaml/install.stamp
|
|
3
3
|
rule astj
|
|
4
|
-
command = /home/manu/src/
|
|
4
|
+
command = /home/manu/src/kaiko/rescript-deser/node_modules/rescript/linux/bsc.exe -warn-error +8+11+26+27+33+56 -bs-v 11.0.0-rc.6 -uncurried -absname -bs-ast -o $out $i
|
|
5
|
+
o tests/index.ast : astj ../../tests/index.res
|
|
6
|
+
rule deps_dev
|
|
7
|
+
command = /home/manu/src/kaiko/rescript-deser/node_modules/rescript/linux/bsb_helper.exe -g -hash 84aecc33f8594375b23a1a137b057f93 $in
|
|
8
|
+
restat = 1
|
|
9
|
+
o tests/index.d : deps_dev tests/index.ast
|
|
10
|
+
rule mij_dev
|
|
11
|
+
command = /home/manu/src/kaiko/rescript-deser/node_modules/rescript/linux/bsc.exe -I tests -I src/ -I /home/manu/src/kaiko/rescript-deser/node_modules/@kaiko.io/rescript-prelude/lib/ocaml -warn-error +8+11+26+27+33+56 -uncurried -bs-package-name @kaiko.io/rescript-deser -bs-package-output commonjs:lib/js/$in_d:.js -bs-package-output es6:lib/es6/$in_d:.js -bs-v $g_finger $i
|
|
12
|
+
dyndep = 1
|
|
13
|
+
restat = 1
|
|
14
|
+
o tests/index.cmj tests/index.cmi ../es6/tests/index.js ../js/tests/index.js : mij_dev tests/index.ast
|
|
15
|
+
o tests/QUnit.ast : astj ../../tests/QUnit.res
|
|
16
|
+
o tests/QUnit.d : deps_dev tests/QUnit.ast
|
|
17
|
+
o tests/QUnit.cmj tests/QUnit.cmi ../es6/tests/QUnit.js ../js/tests/QUnit.js : mij_dev tests/QUnit.ast
|
|
5
18
|
o src/JSON.ast : astj ../../src/JSON.res
|
|
6
19
|
rule deps
|
|
7
|
-
command = /home/manu/src/
|
|
20
|
+
command = /home/manu/src/kaiko/rescript-deser/node_modules/rescript/linux/bsb_helper.exe -hash 84aecc33f8594375b23a1a137b057f93 $in
|
|
8
21
|
restat = 1
|
|
9
22
|
o src/JSON.d : deps src/JSON.ast
|
|
10
23
|
rule mij
|
|
11
|
-
command = /home/manu/src/
|
|
24
|
+
command = /home/manu/src/kaiko/rescript-deser/node_modules/rescript/linux/bsc.exe -I src/ -I /home/manu/src/kaiko/rescript-deser/node_modules/@kaiko.io/rescript-prelude/lib/ocaml -warn-error +8+11+26+27+33+56 -uncurried -bs-package-name @kaiko.io/rescript-deser -bs-package-output commonjs:lib/js/$in_d:.js -bs-package-output es6:lib/es6/$in_d:.js -bs-v $g_finger $i
|
|
12
25
|
dyndep = 1
|
|
13
26
|
restat = 1
|
|
14
|
-
o src/JSON.cmj src/JSON.cmi ../es6/src/JSON.js : mij src/JSON.ast
|
|
27
|
+
o src/JSON.cmj src/JSON.cmi ../es6/src/JSON.js ../js/src/JSON.js : mij src/JSON.ast
|
package/lib/bs/src/JSON.ast
CHANGED
|
Binary file
|
package/lib/bs/src/JSON.cmi
CHANGED
|
Binary file
|
package/lib/bs/src/JSON.cmj
CHANGED
|
Binary file
|
package/lib/bs/src/JSON.cmt
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
tests/index.cmj : src/JSON.cmj src/JSON.cmi tests/QUnit.cmj tests/QUnit.cmi
|
package/lib/es6/src/JSON.js
CHANGED
|
@@ -110,11 +110,11 @@ function toString(type_) {
|
|
|
110
110
|
case "Array" :
|
|
111
111
|
return "Array of " + toString(type_._0);
|
|
112
112
|
case "Tuple" :
|
|
113
|
-
return "Tuple of (" +
|
|
113
|
+
return "Tuple of (" + type_._0.map(toString).join(", ") + ")";
|
|
114
114
|
case "Object" :
|
|
115
|
-
var desc =
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
var desc = type_._0.map(function (param) {
|
|
116
|
+
return param[0] + ": " + toString(param[1]);
|
|
117
|
+
}).join(", ");
|
|
118
118
|
return "Object of {" + desc + "}";
|
|
119
119
|
case "Optional" :
|
|
120
120
|
case "OptionalWithDefault" :
|
|
@@ -306,7 +306,7 @@ function fromUntagged(untagged, _shape, self) {
|
|
|
306
306
|
} else {
|
|
307
307
|
if (match.TAG === "JSONArray") {
|
|
308
308
|
var shape$1 = shape._0;
|
|
309
|
-
return
|
|
309
|
+
return match._0.map((function(shape$1){
|
|
310
310
|
return function (item) {
|
|
311
311
|
return fromUntagged(item, shape$1, self);
|
|
312
312
|
}
|
|
@@ -344,7 +344,7 @@ function fromUntagged(untagged, _shape, self) {
|
|
|
344
344
|
} else {
|
|
345
345
|
if (match.TAG === "JSONObject") {
|
|
346
346
|
var values = match._0;
|
|
347
|
-
return Curry._1(Prelude.Dict.fromArray,
|
|
347
|
+
return Curry._1(Prelude.Dict.fromArray, shape._0.map((function(values){
|
|
348
348
|
return function (param) {
|
|
349
349
|
var field = param[0];
|
|
350
350
|
var value;
|
|
@@ -426,9 +426,13 @@ function fromUntagged(untagged, _shape, self) {
|
|
|
426
426
|
exit = 1;
|
|
427
427
|
} else {
|
|
428
428
|
if (match.TAG === "JSONArray") {
|
|
429
|
-
return Prelude.$$Array.
|
|
430
|
-
|
|
431
|
-
|
|
429
|
+
return Prelude.$$Array.keepSome(match._0.map((function(shape){
|
|
430
|
+
return function (param) {
|
|
431
|
+
return Curry._1(shape._0.fromJSON, param);
|
|
432
|
+
}
|
|
433
|
+
}(shape))).map(Prelude.Result.warn)).map(function (prim) {
|
|
434
|
+
return prim;
|
|
435
|
+
});
|
|
432
436
|
}
|
|
433
437
|
exit = 1;
|
|
434
438
|
}
|
|
@@ -518,7 +522,7 @@ function checkFieldsSanity(name, _fields, _optional) {
|
|
|
518
522
|
} else {
|
|
519
523
|
switch (fields.TAG) {
|
|
520
524
|
case "Tuple" :
|
|
521
|
-
return Curry._2(Prelude.ManyResults.map, Prelude.ManyResults.bailU(
|
|
525
|
+
return Curry._2(Prelude.ManyResults.map, Prelude.ManyResults.bailU(fields._0.map((function(optional){
|
|
522
526
|
return function (field, index) {
|
|
523
527
|
return function () {
|
|
524
528
|
return checkFieldsSanity(name + "[" + String(index) + "]", field, optional);
|
|
@@ -528,7 +532,7 @@ function checkFieldsSanity(name, _fields, _optional) {
|
|
|
528
532
|
|
|
529
533
|
}));
|
|
530
534
|
case "Object" :
|
|
531
|
-
return Curry._2(Prelude.ManyResults.map, Prelude.ManyResults.bailU(
|
|
535
|
+
return Curry._2(Prelude.ManyResults.map, Prelude.ManyResults.bailU(fields._0.map((function(optional){
|
|
532
536
|
return function (param) {
|
|
533
537
|
var field = param[1];
|
|
534
538
|
var fieldName = param[0];
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
|
|
3
|
+
import * as $$JSON from "../src/JSON.js";
|
|
4
|
+
import * as Curry from "rescript/lib/es6/curry.js";
|
|
5
|
+
import * as Qunit from "qunit";
|
|
6
|
+
import * as Prelude from "@kaiko.io/rescript-prelude/lib/es6/src/Prelude.js";
|
|
7
|
+
|
|
8
|
+
var fields = {
|
|
9
|
+
TAG: "Object",
|
|
10
|
+
_0: [
|
|
11
|
+
[
|
|
12
|
+
"note",
|
|
13
|
+
"String"
|
|
14
|
+
],
|
|
15
|
+
[
|
|
16
|
+
"date",
|
|
17
|
+
"Date"
|
|
18
|
+
],
|
|
19
|
+
[
|
|
20
|
+
"extra",
|
|
21
|
+
{
|
|
22
|
+
TAG: "Optional",
|
|
23
|
+
_0: "String"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
]
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
var Deserializer = $$JSON.MakeDeserializer({
|
|
30
|
+
fields: fields
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
var Appointment = {
|
|
34
|
+
Deserializer: Deserializer
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
Qunit.module("Basic deserializer", (function (param) {
|
|
38
|
+
var valid = [
|
|
39
|
+
[
|
|
40
|
+
{"note": "Bicentennial doctor's appointment", "date": "2100-01-01"},
|
|
41
|
+
{
|
|
42
|
+
note: "Bicentennial doctor's appointment",
|
|
43
|
+
date: new Date("2100-01-01"),
|
|
44
|
+
extra: undefined
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
{
|
|
49
|
+
"note": "Bicentennial doctor's appointment",
|
|
50
|
+
"date": "2100-01-01",
|
|
51
|
+
"extra": "Don't take your stop-aging pills the night before the appointment",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
note: "Bicentennial doctor's appointment",
|
|
55
|
+
date: new Date("2100-01-01"),
|
|
56
|
+
extra: "Don't take your stop-aging pills the night before the appointment"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
];
|
|
60
|
+
Qunit.test("Correctly deserializes data", (function (qunit) {
|
|
61
|
+
qunit.expect(valid.length);
|
|
62
|
+
Curry._2(Prelude.$$Array.forEach, valid, (function (param) {
|
|
63
|
+
var data = param[0];
|
|
64
|
+
console.log("Running sample", data);
|
|
65
|
+
var result = Deserializer.fromJSON(data);
|
|
66
|
+
if (result.TAG === "Ok") {
|
|
67
|
+
qunit.deepEqual(result._0, param[1], "result == expected");
|
|
68
|
+
return ;
|
|
69
|
+
}
|
|
70
|
+
console.error(result._0);
|
|
71
|
+
}));
|
|
72
|
+
}));
|
|
73
|
+
var invalid = [[
|
|
74
|
+
"Missing non-optional field",
|
|
75
|
+
{"extra": "Bicentennial doctor's appointment", "date": "2100-01-01"}
|
|
76
|
+
]];
|
|
77
|
+
Qunit.test("Correctly catches invalid data", (function (qunit) {
|
|
78
|
+
qunit.expect(invalid.length);
|
|
79
|
+
Curry._2(Prelude.$$Array.forEach, invalid, (function (param) {
|
|
80
|
+
var data = param[1];
|
|
81
|
+
console.log("Running sample", param[0], data);
|
|
82
|
+
var result = Deserializer.fromJSON(data);
|
|
83
|
+
if (result.TAG === "Ok") {
|
|
84
|
+
console.error("Invalid being accepted: ", result._0);
|
|
85
|
+
return ;
|
|
86
|
+
}
|
|
87
|
+
console.log("Correctly detected:", result._0);
|
|
88
|
+
qunit.ok(true, true);
|
|
89
|
+
}));
|
|
90
|
+
}));
|
|
91
|
+
}));
|
|
92
|
+
|
|
93
|
+
Qunit.module("Recursive deserializer", (function (param) {
|
|
94
|
+
var fields = {
|
|
95
|
+
TAG: "Object",
|
|
96
|
+
_0: [
|
|
97
|
+
[
|
|
98
|
+
"data",
|
|
99
|
+
"Any"
|
|
100
|
+
],
|
|
101
|
+
[
|
|
102
|
+
"children",
|
|
103
|
+
{
|
|
104
|
+
TAG: "Array",
|
|
105
|
+
_0: "Self"
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
]
|
|
109
|
+
};
|
|
110
|
+
var DeserializerImpl = $$JSON.MakeDeserializer({
|
|
111
|
+
fields: fields
|
|
112
|
+
});
|
|
113
|
+
var checkFieldsSanity = DeserializerImpl.checkFieldsSanity;
|
|
114
|
+
var fromJSON = function (data) {
|
|
115
|
+
return Curry._2(Prelude.Result.map, DeserializerImpl.fromJSON(data), (function (prim) {
|
|
116
|
+
return prim;
|
|
117
|
+
}));
|
|
118
|
+
};
|
|
119
|
+
var valid = [[
|
|
120
|
+
{"data": "A", "children": [{"data": "A1", "children": []}, {"data": "B", "children": [{"data": "C", "children": []}, {"data": "D", "children": []}]}]},
|
|
121
|
+
{
|
|
122
|
+
data: "A",
|
|
123
|
+
children: [
|
|
124
|
+
{
|
|
125
|
+
data: "A1",
|
|
126
|
+
children: []
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
data: "B",
|
|
130
|
+
children: [
|
|
131
|
+
{
|
|
132
|
+
data: "C",
|
|
133
|
+
children: []
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
data: "D",
|
|
137
|
+
children: []
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
]];
|
|
144
|
+
Qunit.test("Trivial recursion detection: Ok", (function (qunit) {
|
|
145
|
+
qunit.expect(1);
|
|
146
|
+
qunit.deepEqual(checkFieldsSanity(), {
|
|
147
|
+
TAG: "Ok",
|
|
148
|
+
_0: undefined
|
|
149
|
+
}, "Ok");
|
|
150
|
+
}));
|
|
151
|
+
Qunit.test("Infinite list", (function (qunit) {
|
|
152
|
+
var fields = {
|
|
153
|
+
TAG: "Object",
|
|
154
|
+
_0: [
|
|
155
|
+
[
|
|
156
|
+
"head",
|
|
157
|
+
"String"
|
|
158
|
+
],
|
|
159
|
+
[
|
|
160
|
+
"tail",
|
|
161
|
+
"Self"
|
|
162
|
+
]
|
|
163
|
+
]
|
|
164
|
+
};
|
|
165
|
+
var InfiniteList = $$JSON.MakeDeserializer({
|
|
166
|
+
fields: fields
|
|
167
|
+
});
|
|
168
|
+
qunit.expect(1);
|
|
169
|
+
qunit.deepEqual(Curry._1(Prelude.Result.isError, InfiniteList.checkFieldsSanity()), true, "Ok");
|
|
170
|
+
}));
|
|
171
|
+
Qunit.test("Finite list", (function (qunit) {
|
|
172
|
+
var fields = {
|
|
173
|
+
TAG: "Object",
|
|
174
|
+
_0: [
|
|
175
|
+
[
|
|
176
|
+
"head",
|
|
177
|
+
"String"
|
|
178
|
+
],
|
|
179
|
+
[
|
|
180
|
+
"tail",
|
|
181
|
+
{
|
|
182
|
+
TAG: "Optional",
|
|
183
|
+
_0: "Self"
|
|
184
|
+
}
|
|
185
|
+
]
|
|
186
|
+
]
|
|
187
|
+
};
|
|
188
|
+
var List = $$JSON.MakeDeserializer({
|
|
189
|
+
fields: fields
|
|
190
|
+
});
|
|
191
|
+
qunit.expect(1);
|
|
192
|
+
qunit.deepEqual(List.checkFieldsSanity(), {
|
|
193
|
+
TAG: "Ok",
|
|
194
|
+
_0: undefined
|
|
195
|
+
}, "Ok");
|
|
196
|
+
}));
|
|
197
|
+
Qunit.test("Correctly deserializes recursive data", (function (qunit) {
|
|
198
|
+
qunit.expect(valid.length);
|
|
199
|
+
Curry._2(Prelude.$$Array.forEach, valid, (function (param) {
|
|
200
|
+
var data = param[0];
|
|
201
|
+
console.log("Running sample", data);
|
|
202
|
+
var result = fromJSON(data);
|
|
203
|
+
if (result.TAG === "Ok") {
|
|
204
|
+
qunit.deepEqual(result._0, param[1], "result == expected");
|
|
205
|
+
return ;
|
|
206
|
+
}
|
|
207
|
+
console.error(result._0);
|
|
208
|
+
}));
|
|
209
|
+
}));
|
|
210
|
+
Qunit.test("Recursion in sub-deserializer", (function (qunit) {
|
|
211
|
+
var fields = {
|
|
212
|
+
TAG: "Object",
|
|
213
|
+
_0: [
|
|
214
|
+
[
|
|
215
|
+
"head",
|
|
216
|
+
"String"
|
|
217
|
+
],
|
|
218
|
+
[
|
|
219
|
+
"tail",
|
|
220
|
+
{
|
|
221
|
+
TAG: "Optional",
|
|
222
|
+
_0: "Self"
|
|
223
|
+
}
|
|
224
|
+
]
|
|
225
|
+
]
|
|
226
|
+
};
|
|
227
|
+
var List = $$JSON.MakeDeserializer({
|
|
228
|
+
fields: fields
|
|
229
|
+
});
|
|
230
|
+
var fields$1 = {
|
|
231
|
+
TAG: "Object",
|
|
232
|
+
_0: [
|
|
233
|
+
[
|
|
234
|
+
"records",
|
|
235
|
+
{
|
|
236
|
+
TAG: "Deserializer",
|
|
237
|
+
_0: List
|
|
238
|
+
}
|
|
239
|
+
],
|
|
240
|
+
[
|
|
241
|
+
"next",
|
|
242
|
+
{
|
|
243
|
+
TAG: "Optional",
|
|
244
|
+
_0: "Self"
|
|
245
|
+
}
|
|
246
|
+
]
|
|
247
|
+
]
|
|
248
|
+
};
|
|
249
|
+
var Ledger = $$JSON.MakeDeserializer({
|
|
250
|
+
fields: fields$1
|
|
251
|
+
});
|
|
252
|
+
var data = {"records": {"head": "A", "tail": {"head": "B"}},
|
|
253
|
+
"next": {"records": {"head": "A", "tail": {"head": "B"}}}};
|
|
254
|
+
var expected = {
|
|
255
|
+
records: {
|
|
256
|
+
head: "A",
|
|
257
|
+
tail: {
|
|
258
|
+
head: "B",
|
|
259
|
+
tail: undefined
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
next: {
|
|
263
|
+
records: {
|
|
264
|
+
head: "A",
|
|
265
|
+
tail: {
|
|
266
|
+
head: "B",
|
|
267
|
+
tail: undefined
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
next: undefined
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
qunit.expect(1);
|
|
274
|
+
qunit.deepEqual(Ledger.fromJSON(data), {
|
|
275
|
+
TAG: "Ok",
|
|
276
|
+
_0: expected
|
|
277
|
+
}, "nice ledger");
|
|
278
|
+
}));
|
|
279
|
+
}));
|
|
280
|
+
|
|
281
|
+
export {
|
|
282
|
+
Appointment ,
|
|
283
|
+
}
|
|
284
|
+
/* Deserializer Not a pure module */
|