@kaiko.io/rescript-deser 6.0.1 → 7.0.0-alpha.2

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 (56) hide show
  1. package/README.md +16 -5
  2. package/lib/bs/.compiler.log +2 -2
  3. package/lib/bs/build.ninja +0 -27
  4. package/lib/bs/compiler-info.json +8 -0
  5. package/lib/bs/src/Deser.ast +0 -0
  6. package/lib/bs/src/Deser.cmi +0 -0
  7. package/lib/bs/src/Deser.cmj +0 -0
  8. package/lib/bs/src/Deser.cmt +0 -0
  9. package/lib/bs/src/Deser.res +341 -0
  10. package/lib/bs/tests/QUnit.ast +0 -0
  11. package/lib/bs/tests/QUnit.cmi +0 -0
  12. package/lib/bs/tests/QUnit.cmj +0 -0
  13. package/lib/bs/tests/QUnit.cmt +0 -0
  14. package/lib/bs/tests/QUnit.res +72 -0
  15. package/lib/bs/tests/index.ast +0 -0
  16. package/lib/bs/tests/index.cmi +0 -0
  17. package/lib/bs/tests/index.cmj +0 -0
  18. package/lib/bs/tests/index.cmt +0 -0
  19. package/lib/bs/tests/index.res +212 -0
  20. package/lib/es6/src/Deser.js +302 -477
  21. package/lib/es6/tests/index.js +260 -241
  22. package/lib/js/src/Deser.js +298 -473
  23. package/lib/js/tests/index.js +261 -242
  24. package/lib/ocaml/.compiler.log +2 -0
  25. package/lib/ocaml/Deser.ast +0 -0
  26. package/lib/ocaml/Deser.cmi +0 -0
  27. package/lib/ocaml/Deser.cmj +0 -0
  28. package/lib/ocaml/Deser.cmt +0 -0
  29. package/lib/ocaml/Deser.res +341 -0
  30. package/lib/ocaml/QUnit.ast +0 -0
  31. package/lib/ocaml/QUnit.cmi +0 -0
  32. package/lib/ocaml/QUnit.cmj +0 -0
  33. package/lib/ocaml/QUnit.cmt +0 -0
  34. package/lib/ocaml/QUnit.res +72 -0
  35. package/lib/ocaml/index.ast +0 -0
  36. package/lib/ocaml/index.cmi +0 -0
  37. package/lib/ocaml/index.cmj +0 -0
  38. package/lib/ocaml/index.cmt +0 -0
  39. package/lib/ocaml/index.res +212 -0
  40. package/lib/rescript.lock +1 -0
  41. package/package.json +5 -6
  42. package/rescript.json +4 -6
  43. package/src/Deser.res +86 -97
  44. package/tests/QUnit.res +4 -4
  45. package/tests/index.res +34 -11
  46. package/tests/run-tests.js +192 -0
  47. package/yarn.lock +683 -0
  48. package/lib/bs/.bsbuild +0 -0
  49. package/lib/bs/.bsdeps +0 -9
  50. package/lib/bs/.ninja_log +0 -93
  51. package/lib/bs/.project-files-cache +0 -0
  52. package/lib/bs/.sourcedirs.json +0 -1
  53. package/lib/bs/install.ninja +0 -10
  54. package/lib/bs/src/Deser.d +0 -0
  55. package/lib/bs/tests/QUnit.d +0 -0
  56. package/lib/bs/tests/index.d +0 -1
@@ -1,608 +1,436 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
2
  'use strict';
3
3
 
4
- var Js_json = require("rescript/lib/js/js_json.js");
5
- var Belt_Array = require("rescript/lib/js/belt_Array.js");
6
- var Core__Dict = require("@rescript/core/lib/js/src/Core__Dict.js");
7
- var Caml_option = require("rescript/lib/js/caml_option.js");
8
- var Core__Array = require("@rescript/core/lib/js/src/Core__Array.js");
9
- var Core__Option = require("@rescript/core/lib/js/src/Core__Option.js");
10
- var Core__Result = require("@rescript/core/lib/js/src/Core__Result.js");
11
- var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js");
12
- var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js");
4
+ let Belt_Array = require("@rescript/runtime/lib/js/Belt_Array.js");
5
+ let Stdlib_Dict = require("@rescript/runtime/lib/js/Stdlib_Dict.js");
6
+ let Stdlib_Array = require("@rescript/runtime/lib/js/Stdlib_Array.js");
7
+ let Stdlib_Option = require("@rescript/runtime/lib/js/Stdlib_Option.js");
8
+ let Stdlib_Result = require("@rescript/runtime/lib/js/Stdlib_Result.js");
9
+ let Primitive_option = require("@rescript/runtime/lib/js/Primitive_option.js");
10
+ let Primitive_exceptions = require("@rescript/runtime/lib/js/Primitive_exceptions.js");
13
11
 
14
- var FieldValue = {};
12
+ let FieldValue = {};
15
13
 
16
- var $$TypeError = /* @__PURE__ */Caml_exceptions.create("Deser.TypeError");
14
+ let $$TypeError = /* @__PURE__ */Primitive_exceptions.create("Deser.TypeError");
17
15
 
18
16
  function usingString(f) {
19
- return function (value) {
20
- return f(value);
21
- };
17
+ return value => f(value);
22
18
  }
23
19
 
24
20
  function usingInt(f) {
25
- return function (value) {
26
- return f(value);
27
- };
21
+ return value => f(value);
28
22
  }
29
23
 
30
24
  function usingFloat(f) {
31
- return function (value) {
32
- return f(value);
33
- };
25
+ return value => f(value);
34
26
  }
35
27
 
36
28
  function usingBoolean(f) {
37
- return function (value) {
38
- return f(value);
39
- };
29
+ return value => f(value);
40
30
  }
41
31
 
42
32
  function usingArray(f) {
43
- return function (value) {
44
- return f(value);
45
- };
33
+ return value => f(value);
46
34
  }
47
35
 
48
36
  function usingObject(f) {
49
- return function (value) {
50
- return f(value);
51
- };
37
+ return value => f(value);
52
38
  }
53
39
 
54
40
  function variadicInt(hint, fromJs) {
55
41
  return {
56
- TAG: "Morphism",
57
- _0: "Int",
58
- _1: (function (value) {
59
- var internalValue = fromJs(value);
60
- if (internalValue !== undefined) {
61
- return Caml_option.valFromOption(internalValue);
62
- }
63
- throw {
64
- RE_EXN_ID: $$TypeError,
65
- _1: "This Int(" + value.toString() + ") not a valid value here. Hint: " + hint,
66
- Error: new Error()
67
- };
68
- })
69
- };
42
+ TAG: "Morphism",
43
+ _0: "Int",
44
+ _1: value => {
45
+ let internalValue = fromJs(value);
46
+ if (internalValue !== undefined) {
47
+ return Primitive_option.valFromOption(internalValue);
48
+ }
49
+ throw {
50
+ RE_EXN_ID: $$TypeError,
51
+ _1: `This Int(` + value.toString() + `) not a valid value here. Hint: ` + hint,
52
+ Error: new Error()
53
+ };
54
+ }
55
+ };
70
56
  }
71
57
 
72
58
  function variadicString(hint, fromJs) {
73
59
  return {
74
- TAG: "Morphism",
75
- _0: "String",
76
- _1: (function (value) {
77
- var internalValue = fromJs(value);
78
- if (internalValue !== undefined) {
79
- return Caml_option.valFromOption(internalValue);
80
- }
81
- throw {
82
- RE_EXN_ID: $$TypeError,
83
- _1: "This String(\"" + value + "\") not a valid value here. Hint: " + hint,
84
- Error: new Error()
85
- };
86
- })
87
- };
60
+ TAG: "Morphism",
61
+ _0: "String",
62
+ _1: value => {
63
+ let internalValue = fromJs(value);
64
+ if (internalValue !== undefined) {
65
+ return Primitive_option.valFromOption(internalValue);
66
+ }
67
+ throw {
68
+ RE_EXN_ID: $$TypeError,
69
+ _1: `This String("` + value + `") not a valid value here. Hint: ` + hint,
70
+ Error: new Error()
71
+ };
72
+ }
73
+ };
88
74
  }
89
75
 
90
76
  function toString(type_) {
91
77
  if (typeof type_ !== "object") {
92
78
  switch (type_) {
93
79
  case "Any" :
94
- return "Any";
80
+ return "Any";
95
81
  case "String" :
96
- return "String";
82
+ return "String";
97
83
  case "Int" :
98
- return "Integer";
84
+ return "Integer";
99
85
  case "Float" :
100
- return "Float";
86
+ return "Float";
101
87
  case "Boolean" :
102
- return "Boolean";
88
+ return "Boolean";
103
89
  case "Date" :
104
90
  case "Datetime" :
105
- return "Date";
91
+ return "Date";
106
92
  case "Self" :
107
- return "Self (recursive)";
108
-
93
+ return "Self (recursive)";
109
94
  }
110
95
  } else {
111
96
  switch (type_.TAG) {
112
97
  case "Literal" :
113
- return "Literal: " + type_._0;
98
+ return `Literal: ` + type_._0;
114
99
  case "Array" :
115
- return "Array of " + toString(type_._0);
100
+ return "Array of " + toString(type_._0);
116
101
  case "Tuple" :
117
- return "Tuple of (" + type_._0.map(toString).join(", ") + ")";
102
+ return `Tuple of (` + type_._0.map(toString).join(", ") + `)`;
118
103
  case "Object" :
119
- var desc = type_._0.map(function (param) {
120
- return param[0] + ": " + toString(param[1]);
121
- }).join(", ");
122
- return "Object of {" + desc + "}";
104
+ let desc = type_._0.map(param => param[0] + `: ` + toString(param[1])).join(", ");
105
+ return `Object of {` + desc + `}`;
123
106
  case "Optional" :
124
107
  case "OptionalWithDefault" :
125
- return "Null of " + toString(type_._0);
108
+ return "Null of " + toString(type_._0);
126
109
  case "Mapping" :
127
- return "Mapping of " + toString(type_._0);
110
+ return `Mapping of ` + toString(type_._0);
128
111
  case "Deserializer" :
129
- return type_._0.name;
112
+ return type_._0.name;
130
113
  case "Collection" :
131
- return "Collection of " + type_._0.name;
114
+ return "Collection of " + type_._0.name;
132
115
  case "DefaultWhenInvalid" :
133
- return "Protected " + toString(type_._0);
116
+ return `Protected ` + toString(type_._0);
134
117
  case "Morphism" :
135
- return toString(type_._0) + " to apply a morphism";
136
-
118
+ return toString(type_._0) + " to apply a morphism";
137
119
  }
138
120
  }
139
121
  }
140
122
 
141
123
  function _taggedToString(tagged) {
142
- if (typeof tagged !== "object") {
143
- switch (tagged) {
144
- case "JSONFalse" :
145
- return "Boolean(false)";
146
- case "JSONTrue" :
147
- return "Boolean(true)";
148
- case "JSONNull" :
149
- return "Null";
150
-
151
- }
152
- } else {
153
- switch (tagged.TAG) {
154
- case "JSONString" :
155
- return "String(\"" + tagged._0 + "\")";
156
- case "JSONNumber" :
157
- return "Number(" + tagged._0.toString() + ")";
158
- case "JSONObject" :
159
- return "Object(" + Core__Option.getOr(JSON.stringify(tagged._0), "...") + ")";
160
- case "JSONArray" :
161
- return "Array(" + Core__Option.getOr(JSON.stringify(tagged._0), "...") + ")";
162
-
163
- }
124
+ if (tagged === null) {
125
+ return "Null";
126
+ }
127
+ if (Array.isArray(tagged)) {
128
+ return `Array(` + Stdlib_Option.getOr(JSON.stringify(tagged), "...") + `)`;
129
+ }
130
+ switch (typeof tagged) {
131
+ case "boolean" :
132
+ if (tagged) {
133
+ return "Boolean(true)";
134
+ } else {
135
+ return "Boolean(false)";
136
+ }
137
+ case "string" :
138
+ return `String("` + tagged + `")`;
139
+ case "number" :
140
+ return `Number(` + tagged.toString() + `)`;
141
+ case "object" :
142
+ return `Object(` + Stdlib_Option.getOr(JSON.stringify(tagged), "...") + `)`;
164
143
  }
165
144
  }
166
145
 
167
146
  function extractValue(values, field, shape, self) {
168
- var value = values[field];
147
+ let value = values[field];
169
148
  if (value !== undefined) {
170
149
  return fromUntagged(value, shape, self);
171
150
  }
172
151
  if (typeof shape === "object") {
173
152
  switch (shape.TAG) {
174
153
  case "OptionalWithDefault" :
175
- return shape._1;
154
+ return shape._1;
176
155
  case "Optional" :
177
156
  case "DefaultWhenInvalid" :
178
- return fromUntagged(null, shape, self);
179
- default:
180
-
157
+ return fromUntagged(null, shape, self);
181
158
  }
182
159
  }
183
160
  throw {
184
- RE_EXN_ID: $$TypeError,
185
- _1: "Missing non-optional field '" + field + "'",
186
- Error: new Error()
187
- };
161
+ RE_EXN_ID: $$TypeError,
162
+ _1: `Missing non-optional field '` + field + `'`,
163
+ Error: new Error()
164
+ };
188
165
  }
189
166
 
190
167
  function fromUntagged(untagged, _shape, self) {
191
- while(true) {
192
- var shape = _shape;
193
- var match = Js_json.classify(untagged);
194
- var exit = 0;
195
- var s;
196
- var f;
168
+ while (true) {
169
+ let shape = _shape;
170
+ let exit = 0;
197
171
  if (typeof shape !== "object") {
198
172
  switch (shape) {
199
173
  case "Any" :
200
- return untagged;
174
+ return untagged;
201
175
  case "String" :
202
- if (typeof match !== "object") {
203
- exit = 1;
204
- } else {
205
- if (match.TAG === "JSONString") {
206
- return match._0;
207
- }
208
- exit = 1;
209
- }
210
- break;
176
+ if (typeof untagged === "string") {
177
+ return untagged;
178
+ }
179
+ break;
211
180
  case "Int" :
212
- if (typeof match !== "object") {
213
- exit = 1;
214
- } else {
215
- if (match.TAG === "JSONNumber") {
216
- return match._0 | 0;
217
- }
218
- exit = 1;
219
- }
220
- break;
181
+ if (typeof untagged === "number") {
182
+ return untagged | 0;
183
+ }
184
+ break;
221
185
  case "Float" :
222
- if (typeof match !== "object") {
223
- exit = 1;
224
- } else {
225
- if (match.TAG === "JSONNumber") {
226
- return match._0;
227
- }
228
- exit = 1;
229
- }
230
- break;
186
+ if (typeof untagged === "number") {
187
+ return untagged;
188
+ }
189
+ break;
231
190
  case "Boolean" :
232
- if (typeof match !== "object") {
233
- switch (match) {
234
- case "JSONFalse" :
235
- return false;
236
- case "JSONTrue" :
237
- return true;
238
- default:
239
- exit = 1;
240
- }
241
- } else {
242
- exit = 1;
243
- }
244
- break;
191
+ if (typeof untagged === "boolean") {
192
+ return untagged;
193
+ }
194
+ break;
245
195
  case "Date" :
246
- if (typeof match !== "object") {
247
- exit = 1;
248
- } else {
249
- switch (match.TAG) {
250
- case "JSONString" :
251
- s = match._0;
252
- exit = 2;
253
- break;
254
- case "JSONNumber" :
255
- f = match._0;
256
- exit = 3;
257
- break;
258
- default:
259
- exit = 1;
260
- }
261
- }
262
- break;
263
196
  case "Datetime" :
264
- if (typeof match !== "object") {
265
- exit = 1;
266
- } else {
267
- switch (match.TAG) {
268
- case "JSONString" :
269
- s = match._0;
270
- exit = 2;
271
- break;
272
- case "JSONNumber" :
273
- f = match._0;
274
- exit = 3;
275
- break;
276
- default:
277
- exit = 1;
278
- }
279
- }
280
- break;
197
+ exit = 2;
198
+ break;
281
199
  case "Self" :
282
- _shape = self;
283
- continue ;
284
-
200
+ _shape = self;
201
+ continue;
285
202
  }
286
203
  } else {
287
204
  switch (shape.TAG) {
288
205
  case "Literal" :
289
- if (typeof match !== "object") {
290
- exit = 1;
291
- } else {
292
- if (match.TAG === "JSONString") {
293
- var text = match._0;
294
- var expected = shape._0;
295
- if (text === expected) {
296
- return text;
297
- }
298
- throw {
299
- RE_EXN_ID: $$TypeError,
300
- _1: "Expecting literal " + expected + ", got " + text,
301
- Error: new Error()
302
- };
303
- }
304
- exit = 1;
206
+ if (typeof untagged === "string") {
207
+ let expected = shape._0;
208
+ if (untagged === expected) {
209
+ return untagged;
305
210
  }
306
- break;
211
+ throw {
212
+ RE_EXN_ID: $$TypeError,
213
+ _1: `Expecting literal ` + expected + `, got ` + untagged,
214
+ Error: new Error()
215
+ };
216
+ }
217
+ break;
307
218
  case "Array" :
308
- if (typeof match !== "object") {
309
- exit = 1;
310
- } else {
311
- if (match.TAG === "JSONArray") {
312
- var shape$1 = shape._0;
313
- return match._0.map((function(shape$1){
314
- return function (item) {
315
- return fromUntagged(item, shape$1, self);
316
- }
317
- }(shape$1)));
318
- }
319
- exit = 1;
320
- }
321
- break;
219
+ if (Array.isArray(untagged)) {
220
+ let shape$1 = shape._0;
221
+ return untagged.map(item => fromUntagged(item, shape$1, self));
222
+ }
223
+ break;
322
224
  case "Tuple" :
323
- if (typeof match !== "object") {
324
- exit = 1;
325
- } else {
326
- if (match.TAG === "JSONArray") {
327
- var items = match._0;
328
- var bases = shape._0;
329
- var lenbases = bases.length;
330
- var lenitems = items.length;
331
- if (lenbases === lenitems) {
332
- return Belt_Array.zipBy(items, bases, (function (i, b) {
333
- return fromUntagged(i, b, self);
334
- }));
335
- }
336
- throw {
337
- RE_EXN_ID: $$TypeError,
338
- _1: "Expecting " + lenbases.toString() + " items, got " + lenitems.toString(),
339
- Error: new Error()
340
- };
341
- }
342
- exit = 1;
225
+ if (Array.isArray(untagged)) {
226
+ let bases = shape._0;
227
+ let lenbases = bases.length;
228
+ let lenitems = untagged.length;
229
+ if (lenbases === lenitems) {
230
+ return Belt_Array.zipBy(untagged, bases, (i, b) => fromUntagged(i, b, self));
343
231
  }
344
- break;
232
+ throw {
233
+ RE_EXN_ID: $$TypeError,
234
+ _1: `Expecting ` + lenbases.toString() + ` items, got ` + lenitems.toString(),
235
+ Error: new Error()
236
+ };
237
+ }
238
+ break;
345
239
  case "Object" :
346
- if (typeof match !== "object") {
347
- exit = 1;
348
- } else {
349
- if (match.TAG === "JSONObject") {
350
- var values = match._0;
351
- return Object.fromEntries(shape._0.map((function(values){
352
- return function (param) {
353
- var field = param[0];
354
- var value;
355
- try {
356
- value = extractValue(values, field, param[1], self);
357
- }
358
- catch (raw_msg){
359
- var msg = Caml_js_exceptions.internalToOCamlException(raw_msg);
360
- if (msg.RE_EXN_ID === $$TypeError) {
361
- throw {
362
- RE_EXN_ID: $$TypeError,
363
- _1: "Field \"" + field + "\": " + msg._1,
364
- Error: new Error()
365
- };
366
- }
367
- throw msg;
368
- }
369
- return [
370
- field,
371
- value
372
- ];
373
- }
374
- }(values))));
240
+ if (typeof untagged === "object" && untagged !== null && !Array.isArray(untagged)) {
241
+ return Object.fromEntries(shape._0.map(param => {
242
+ let field = param[0];
243
+ let value;
244
+ try {
245
+ value = extractValue(untagged, field, param[1], self);
246
+ } catch (raw_msg) {
247
+ let msg = Primitive_exceptions.internalToException(raw_msg);
248
+ if (msg.RE_EXN_ID === $$TypeError) {
249
+ throw {
250
+ RE_EXN_ID: $$TypeError,
251
+ _1: `Field "` + field + `": ` + msg._1,
252
+ Error: new Error()
253
+ };
254
+ }
255
+ throw msg;
375
256
  }
376
- exit = 1;
377
- }
378
- break;
257
+ return [
258
+ field,
259
+ value
260
+ ];
261
+ }));
262
+ }
263
+ break;
379
264
  case "Optional" :
380
- var shape$2 = shape._0;
381
- if (typeof match !== "object") {
382
- if (match === "JSONNull") {
383
- return undefined;
384
- }
385
- _shape = shape$2;
386
- continue ;
387
- } else {
388
- _shape = shape$2;
389
- continue ;
390
- }
265
+ if (untagged === null) {
266
+ return undefined;
267
+ }
268
+ _shape = shape._0;
269
+ continue;
391
270
  case "OptionalWithDefault" :
392
- var shape$3 = shape._0;
393
- if (typeof match !== "object") {
394
- if (match === "JSONNull") {
395
- return shape._1;
396
- }
397
- _shape = shape$3;
398
- continue ;
399
- } else {
400
- _shape = shape$3;
401
- continue ;
402
- }
271
+ if (untagged === null) {
272
+ return shape._1;
273
+ }
274
+ _shape = shape._0;
275
+ continue;
403
276
  case "Mapping" :
404
- if (typeof match !== "object") {
405
- exit = 1;
406
- } else {
407
- if (match.TAG === "JSONObject") {
408
- var f$1 = shape._0;
409
- return Core__Dict.mapValues(match._0, (function(f$1){
410
- return function (v) {
411
- return fromUntagged(v, f$1, self);
412
- }
413
- }(f$1)));
414
- }
415
- exit = 1;
416
- }
417
- break;
277
+ if (typeof untagged === "object" && untagged !== null && !Array.isArray(untagged)) {
278
+ let f = shape._0;
279
+ return Stdlib_Dict.mapValues(untagged, v => fromUntagged(v, f, self));
280
+ }
281
+ break;
418
282
  case "Deserializer" :
419
- var res = shape._0.fromJSON(untagged);
420
- if (res.TAG === "Ok") {
421
- return res._0;
422
- }
423
- throw {
424
- RE_EXN_ID: $$TypeError,
425
- _1: res._0,
426
- Error: new Error()
427
- };
283
+ let res = shape._0.fromJSON(untagged);
284
+ if (res.TAG === "Ok") {
285
+ return res._0;
286
+ }
287
+ throw {
288
+ RE_EXN_ID: $$TypeError,
289
+ _1: res._0,
290
+ Error: new Error()
291
+ };
428
292
  case "Collection" :
429
- if (typeof match !== "object") {
430
- exit = 1;
431
- } else {
432
- if (match.TAG === "JSONArray") {
433
- return Core__Array.filterMap(match._0.map(shape._0.fromJSON), (function (x) {
434
- if (x.TAG === "Ok") {
435
- return Caml_option.some(x._0);
436
- }
437
- console.warn("Deser", "Could not deserialize value in the collection", x._0);
438
- })).map(function (prim) {
439
- return prim;
440
- });
293
+ if (Array.isArray(untagged)) {
294
+ return Stdlib_Array.filterMap(untagged.map(shape._0.fromJSON), x => {
295
+ if (x.TAG === "Ok") {
296
+ return Primitive_option.some(x._0);
441
297
  }
442
- exit = 1;
443
- }
444
- break;
298
+ console.warn("Deser", "Could not deserialize value in the collection", x._0);
299
+ }).map(prim => prim);
300
+ }
301
+ break;
445
302
  case "DefaultWhenInvalid" :
446
- try {
447
- return fromUntagged(untagged, shape._0, self);
448
- }
449
- catch (raw_msg){
450
- var msg = Caml_js_exceptions.internalToOCamlException(raw_msg);
451
- if (msg.RE_EXN_ID === $$TypeError) {
452
- console.warn("Detected and ignore (with default): ", msg._1);
453
- return shape._1;
454
- }
455
- throw msg;
303
+ try {
304
+ return fromUntagged(untagged, shape._0, self);
305
+ } catch (raw_msg) {
306
+ let msg = Primitive_exceptions.internalToException(raw_msg);
307
+ if (msg.RE_EXN_ID === $$TypeError) {
308
+ console.warn("Detected and ignore (with default): ", msg._1);
309
+ return shape._1;
456
310
  }
311
+ throw msg;
312
+ }
457
313
  case "Morphism" :
458
- return shape._1(fromUntagged(untagged, shape._0, self));
459
-
314
+ return shape._1(fromUntagged(untagged, shape._0, self));
460
315
  }
461
316
  }
462
- switch (exit) {
463
- case 1 :
464
- throw {
465
- RE_EXN_ID: $$TypeError,
466
- _1: "Expected " + toString(shape) + ", but got " + _taggedToString(match) + " instead",
467
- Error: new Error()
468
- };
469
- case 2 :
470
- var r = new Date(s);
317
+ if (exit === 2) {
318
+ switch (typeof untagged) {
319
+ case "string" :
320
+ let r = new Date(untagged);
471
321
  if (Number.isNaN(r.getDate())) {
472
322
  throw {
473
- RE_EXN_ID: $$TypeError,
474
- _1: "Invalid date " + s,
475
- Error: new Error()
476
- };
323
+ RE_EXN_ID: $$TypeError,
324
+ _1: `Invalid date ` + untagged,
325
+ Error: new Error()
326
+ };
477
327
  }
478
328
  return r;
479
- case 3 :
480
- var r$1 = new Date(f);
329
+ case "number" :
330
+ let r$1 = new Date(untagged);
481
331
  if (Number.isNaN(r$1.getDate())) {
482
332
  throw {
483
- RE_EXN_ID: $$TypeError,
484
- _1: "Invalid date " + f.toString(),
485
- Error: new Error()
486
- };
333
+ RE_EXN_ID: $$TypeError,
334
+ _1: `Invalid date ` + untagged.toString(),
335
+ Error: new Error()
336
+ };
487
337
  }
488
338
  return r$1;
489
-
339
+ }
490
340
  }
341
+ throw {
342
+ RE_EXN_ID: $$TypeError,
343
+ _1: `Expected ` + toString(shape) + `, but got ` + _taggedToString(untagged) + ` instead`,
344
+ Error: new Error()
345
+ };
491
346
  };
492
347
  }
493
348
 
494
349
  function checkFieldsSanity(name, _fields, _optional) {
495
- while(true) {
496
- var optional = _optional;
497
- var fields = _fields;
498
- var exit = 0;
350
+ while (true) {
351
+ let optional = _optional;
352
+ let fields = _fields;
353
+ let exit = 0;
499
354
  if (typeof fields !== "object") {
500
355
  switch (fields) {
501
356
  case "Self" :
502
- if (optional) {
503
- return {
504
- TAG: "Ok",
505
- _0: undefined
506
- };
507
- } else {
508
- return {
509
- TAG: "Error",
510
- _0: name + ": Trivial infinite recursion 'let fields = Self'"
511
- };
512
- }
357
+ if (optional) {
358
+ return {
359
+ TAG: "Ok",
360
+ _0: undefined
361
+ };
362
+ } else {
363
+ return {
364
+ TAG: "Error",
365
+ _0: name + `: Trivial infinite recursion 'let fields = Self'`
366
+ };
367
+ }
513
368
  default:
514
369
  return {
515
- TAG: "Ok",
516
- _0: undefined
517
- };
370
+ TAG: "Ok",
371
+ _0: undefined
372
+ };
518
373
  }
519
374
  } else {
520
375
  switch (fields.TAG) {
521
376
  case "Tuple" :
522
- return Core__Result.map(Core__Array.reduce(fields._0.map((function(optional){
523
- return function (field, index) {
524
- return function () {
525
- return checkFieldsSanity(name + "[" + index.toString() + "]", field, optional);
526
- };
527
- }
528
- }(optional))), {
529
- TAG: "Ok",
530
- _0: []
531
- }, (function (res, nextitem) {
532
- return Core__Result.flatMap(res, (function (arr) {
533
- return Core__Result.map(nextitem(), (function (i) {
534
- return arr.concat([i]);
535
- }));
536
- }));
537
- })), (function (param) {
538
-
539
- }));
377
+ return Stdlib_Result.map(Stdlib_Array.reduce(fields._0.map((field, index) => (() => checkFieldsSanity(name + `[` + index.toString() + `]`, field, optional))), {
378
+ TAG: "Ok",
379
+ _0: []
380
+ }, (res, nextitem) => Stdlib_Result.flatMap(res, arr => Stdlib_Result.map(nextitem(), i => arr.concat([i])))), param => {});
540
381
  case "Object" :
541
- return Core__Result.map(Core__Array.reduce(fields._0.map((function(optional){
542
- return function (param) {
543
- var field = param[1];
544
- var fieldName = param[0];
545
- return function () {
546
- return checkFieldsSanity(name + "::" + fieldName, field, optional);
547
- };
548
- }
549
- }(optional))), {
550
- TAG: "Ok",
551
- _0: []
552
- }, (function (res, nextitem) {
553
- return Core__Result.flatMap(res, (function (arr) {
554
- return Core__Result.map(nextitem(), (function (i) {
555
- return arr.concat([i]);
556
- }));
557
- }));
558
- })), (function (param) {
559
-
560
- }));
382
+ return Stdlib_Result.map(Stdlib_Array.reduce(fields._0.map(param => {
383
+ let field = param[1];
384
+ let fieldName = param[0];
385
+ return () => checkFieldsSanity(name + `::` + fieldName, field, optional);
386
+ }), {
387
+ TAG: "Ok",
388
+ _0: []
389
+ }, (res, nextitem) => Stdlib_Result.flatMap(res, arr => Stdlib_Result.map(nextitem(), i => arr.concat([i])))), param => {});
561
390
  case "Array" :
562
391
  case "Mapping" :
563
- _optional = true;
564
- _fields = fields._0;
565
- continue ;
392
+ _optional = true;
393
+ _fields = fields._0;
394
+ continue;
566
395
  case "Deserializer" :
567
396
  case "Collection" :
568
- exit = 2;
569
- break;
397
+ exit = 2;
398
+ break;
570
399
  case "Optional" :
571
400
  case "OptionalWithDefault" :
572
401
  case "DefaultWhenInvalid" :
573
- exit = 1;
574
- break;
402
+ exit = 1;
403
+ break;
575
404
  default:
576
405
  return {
577
- TAG: "Ok",
578
- _0: undefined
579
- };
406
+ TAG: "Ok",
407
+ _0: undefined
408
+ };
580
409
  }
581
410
  }
582
411
  switch (exit) {
583
412
  case 1 :
584
- _optional = true;
585
- _fields = fields._0;
586
- continue ;
413
+ _optional = true;
414
+ _fields = fields._0;
415
+ continue;
587
416
  case 2 :
588
- var msg = fields._0.checkFieldsSanity();
589
- if (msg.TAG === "Ok") {
590
- return {
591
- TAG: "Ok",
592
- _0: undefined
593
- };
594
- } else {
595
- return {
596
- TAG: "Error",
597
- _0: name + "/ " + msg._0
598
- };
599
- }
600
-
417
+ let msg = fields._0.checkFieldsSanity();
418
+ if (msg.TAG === "Ok") {
419
+ return {
420
+ TAG: "Ok",
421
+ _0: undefined
422
+ };
423
+ } else {
424
+ return {
425
+ TAG: "Error",
426
+ _0: name + `/ ` + msg._0
427
+ };
428
+ }
601
429
  }
602
430
  };
603
431
  }
604
432
 
605
- var Field = {
433
+ let Field = {
606
434
  usingString: usingString,
607
435
  usingInt: usingInt,
608
436
  usingFloat: usingFloat,
@@ -619,36 +447,33 @@ var Field = {
619
447
  };
620
448
 
621
449
  function MakeDeserializer(S) {
622
- var fields = S.fields;
623
- var name = "Deserializer " + "Deser" + ", " + "File \"Deser.res\", line 329, characters 39-47";
624
- var checkFieldsSanity$1 = function () {
625
- return checkFieldsSanity(name, fields, false);
626
- };
627
- var fromJSON = function (json) {
628
- var res;
450
+ let fields = S.fields;
451
+ let name = `Deserializer ` + "Deser" + `, ` + "File \"Deser.res\", line 318, characters 39-47";
452
+ let checkFieldsSanity$1 = () => checkFieldsSanity(name, fields, false);
453
+ let fromJSON = json => {
454
+ let res;
629
455
  try {
630
456
  res = fromUntagged(json, fields, fields);
631
- }
632
- catch (raw_e){
633
- var e = Caml_js_exceptions.internalToOCamlException(raw_e);
457
+ } catch (raw_e) {
458
+ let e = Primitive_exceptions.internalToException(raw_e);
634
459
  if (e.RE_EXN_ID === $$TypeError) {
635
460
  return {
636
- TAG: "Error",
637
- _0: e._1
638
- };
461
+ TAG: "Error",
462
+ _0: e._1
463
+ };
639
464
  }
640
465
  throw e;
641
466
  }
642
467
  return {
643
- TAG: "Ok",
644
- _0: res
645
- };
468
+ TAG: "Ok",
469
+ _0: res
470
+ };
646
471
  };
647
472
  return {
648
- name: name,
649
- fromJSON: fromJSON,
650
- checkFieldsSanity: checkFieldsSanity$1
651
- };
473
+ name: name,
474
+ fromJSON: fromJSON,
475
+ checkFieldsSanity: checkFieldsSanity$1
476
+ };
652
477
  }
653
478
 
654
479
  exports.FieldValue = FieldValue;