@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 CHANGED
Binary file
package/lib/bs/.bsdeps CHANGED
@@ -1,7 +1,8 @@
1
1
  11.0.0-rc.6
2
- /home/manu/src/merchise/web/photocuba/src/frontend/node_modules/@kaiko.io/rescript-deser
3
- 1 -bs-package-output es6:lib/es6:.js4Automatic
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/merchise/web/photocuba/src/frontend/node_modules/rescript/linux/rescript.exe 0x1.9578a22fcfdf4p+30
8
+ /home/manu/src/kaiko/rescript-deser/node_modules/rescript/linux/rescript.exe 0x1.9578a22fcfdf4p+30
@@ -1,2 +1,2 @@
1
- #Start(1700763106505)
2
- #Done(1700763106531)
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" : [] }
@@ -1,14 +1,27 @@
1
1
  rescript = 1
2
- g_finger := /home/manu/src/merchise/web/photocuba/src/frontend/node_modules/@kaiko.io/rescript-deser/node_modules/@kaiko.io/rescript-prelude/lib/ocaml/install.stamp
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/merchise/web/photocuba/src/frontend/node_modules/rescript/linux/bsc.exe -w a -bs-v 11.0.0-rc.6 -bs-jsx 4 -bs-jsx-mode automatic -absname -bs-ast -o $out $i
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/merchise/web/photocuba/src/frontend/node_modules/rescript/linux/bsb_helper.exe -hash 7f20b6808a5e3c49da192de14dbbf393 $in
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/merchise/web/photocuba/src/frontend/node_modules/rescript/linux/bsc.exe -I src/ -I /home/manu/src/merchise/web/photocuba/src/frontend/node_modules/@kaiko.io/rescript-deser/node_modules/@kaiko.io/rescript-prelude/lib/ocaml -w a -bs-package-name @kaiko.io/rescript-deser -bs-package-output es6:lib/es6/$in_d:.js -bs-v $g_finger $i
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
Binary file
Binary file
Binary file
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
@@ -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 (" + Prelude.$$Array.map(type_._0, toString).join(", ") + ")";
113
+ return "Tuple of (" + type_._0.map(toString).join(", ") + ")";
114
114
  case "Object" :
115
- var desc = Prelude.$$Array.map(type_._0, (function (param) {
116
- return param[0] + ": " + toString(param[1]);
117
- })).join(", ");
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 Prelude.$$Array.map(match._0, (function(shape$1){
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, Prelude.$$Array.map(shape._0, (function(values){
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.map(Prelude.$$Array.keepSome(Prelude.$$Array.map(Prelude.$$Array.map(match._0, shape._0.fromJSON), Prelude.Result.warn)), (function (prim) {
430
- return prim;
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(Prelude.$$Array.mapWithIndex(fields._0, (function(optional){
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(Prelude.$$Array.map(fields._0, (function(optional){
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,2 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+ /* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */
@@ -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 */