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