@greenlabs/ppx-spice 0.1.8-rc1 → 0.1.9-rc1
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/CHANGELOG.md +6 -2
- package/README.md +4 -0
- package/docs/GUIDE.md +139 -0
- package/package.json +1 -1
- package/ppx-windows.exe +0 -0
- package/.github/workflows/build_linux.yml +0 -41
- package/.github/workflows/build_macos.yml +0 -41
- package/.github/workflows/build_windows.yml +0 -41
- package/.github/workflows/print_esy_cache.js +0 -13
- package/.github/workflows/publish.yml +0 -161
- package/.github/workflows/publish_prerelease.yml +0 -177
- package/.vscode/settings.json +0 -6
- package/src/.ocamlformat +0 -0
- package/src/bin/bin.ml +0 -1
- package/src/bin/dune +0 -5
- package/src/dune +0 -1
- package/src/dune-project +0 -2
- package/src/dune-workspace +0 -3
- package/src/esy.lock/.gitattributes +0 -3
- package/src/esy.lock/.gitignore +0 -3
- package/src/esy.lock/index.json +0 -1196
- package/src/esy.lock/opam/astring.0.8.5/opam +0 -37
- package/src/esy.lock/opam/base-bytes.base/opam +0 -9
- package/src/esy.lock/opam/base-threads.base/opam +0 -6
- package/src/esy.lock/opam/base-unix.base/opam +0 -6
- package/src/esy.lock/opam/base.v0.14.1/opam +0 -36
- package/src/esy.lock/opam/biniou.1.2.1/opam +0 -45
- package/src/esy.lock/opam/cmdliner.1.0.4/opam +0 -36
- package/src/esy.lock/opam/cppo.1.6.8/opam +0 -37
- package/src/esy.lock/opam/csexp.1.5.1/opam +0 -60
- package/src/esy.lock/opam/dot-merlin-reader.4.1/opam +0 -30
- package/src/esy.lock/opam/dune-build-info.2.9.1/opam +0 -42
- package/src/esy.lock/opam/dune-configurator.2.9.1/opam +0 -47
- package/src/esy.lock/opam/dune.2.9.1/opam +0 -58
- package/src/esy.lock/opam/easy-format.1.3.2/opam +0 -46
- package/src/esy.lock/opam/fix.20201120/opam +0 -24
- package/src/esy.lock/opam/fpath.0.7.3/opam +0 -36
- package/src/esy.lock/opam/menhir.20211012/opam +0 -28
- package/src/esy.lock/opam/menhirLib.20211012/opam +0 -29
- package/src/esy.lock/opam/menhirSdk.20211012/opam +0 -29
- package/src/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam +0 -39
- package/src/esy.lock/opam/ocaml-lsp-server.1.8.3/opam +0 -54
- package/src/esy.lock/opam/ocamlbuild.0.14.0/opam +0 -36
- package/src/esy.lock/opam/ocamlfind.1.9.1/opam +0 -44
- package/src/esy.lock/opam/ocamlformat-rpc-lib.0.18.0/opam +0 -40
- package/src/esy.lock/opam/ocamlformat.0.19.0/opam +0 -55
- package/src/esy.lock/opam/ocp-indent.1.8.1/opam +0 -57
- package/src/esy.lock/opam/odoc-parser.0.9.0/opam +0 -45
- package/src/esy.lock/opam/pp.1.1.2/opam +0 -58
- package/src/esy.lock/opam/ppx_derivers.1.2.1/opam +0 -23
- package/src/esy.lock/opam/ppx_yojson_conv_lib.v0.14.0/opam +0 -24
- package/src/esy.lock/opam/ppxlib.0.23.0/opam +0 -62
- package/src/esy.lock/opam/re.1.10.3/opam +0 -46
- package/src/esy.lock/opam/result.1.5/opam +0 -22
- package/src/esy.lock/opam/seq.base/files/META.seq +0 -4
- package/src/esy.lock/opam/seq.base/files/seq.install +0 -3
- package/src/esy.lock/opam/seq.base/opam +0 -15
- package/src/esy.lock/opam/sexplib0.v0.14.0/opam +0 -26
- package/src/esy.lock/opam/stdio.v0.14.0/opam +0 -27
- package/src/esy.lock/opam/stdlib-shims.0.3.0/opam +0 -31
- package/src/esy.lock/opam/topkg.1.0.4/opam +0 -44
- package/src/esy.lock/opam/uchar.0.0.2/opam +0 -36
- package/src/esy.lock/opam/uucp.14.0.0/opam +0 -41
- package/src/esy.lock/opam/uuseg.14.0.0/opam +0 -43
- package/src/esy.lock/opam/uutf.1.0.2/opam +0 -40
- package/src/esy.lock/opam/yojson.1.7.0/opam +0 -38
- package/src/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch +0 -463
- package/src/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json +0 -27
- package/src/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/files/findlib-1.9.1.patch +0 -471
- package/src/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/package.json +0 -61
- package/src/ppx/codecs.ml +0 -120
- package/src/ppx/decode_cases.ml +0 -18
- package/src/ppx/dune +0 -9
- package/src/ppx/polyvariants.ml +0 -288
- package/src/ppx/ppx_spice.ml +0 -19
- package/src/ppx/records.ml +0 -163
- package/src/ppx/signature.ml +0 -86
- package/src/ppx/structure.ml +0 -109
- package/src/ppx/tuple.ml +0 -68
- package/src/ppx/utils.ml +0 -117
- package/src/ppx/variants.ml +0 -257
- package/src/ppx_spice.opam +0 -21
- package/test/__tests__/test_optional_field_records.js +0 -91
- package/test/__tests__/test_optional_field_records.res +0 -98
- package/test/__tests__/test_polyvariants.js +0 -57
- package/test/__tests__/test_polyvariants.res +0 -41
- package/test/__tests__/test_records.js +0 -100
- package/test/__tests__/test_records.res +0 -111
- package/test/__tests__/test_variants.js +0 -85
- package/test/__tests__/test_variants.res +0 -63
- package/test/bsconfig.json +0 -27
- package/test/package.json +0 -18
- package/test/src/OptionalFieldRecords.js +0 -237
- package/test/src/OptionalFieldRecords.res +0 -23
- package/test/src/Polyvariants.js +0 -94
- package/test/src/Polyvariants.res +0 -5
- package/test/src/Polyvariants.resi +0 -5
- package/test/src/Records.js +0 -186
- package/test/src/Records.res +0 -17
- package/test/src/Records.resi +0 -17
- package/test/src/Spice.js +0 -448
- package/test/src/Spice_Codecs.js +0 -57
- package/test/src/Variants.js +0 -115
- package/test/src/Variants.res +0 -11
- package/test/src/Variants.resi +0 -11
- package/test/yarn.lock +0 -4194
package/test/src/Spice.js
DELETED
|
@@ -1,448 +0,0 @@
|
|
|
1
|
-
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var $$Array = require("rescript/lib/js/array.js");
|
|
5
|
-
var Curry = require("rescript/lib/js/curry.js");
|
|
6
|
-
var Js_dict = require("rescript/lib/js/js_dict.js");
|
|
7
|
-
var Js_json = require("rescript/lib/js/js_json.js");
|
|
8
|
-
var Js_math = require("rescript/lib/js/js_math.js");
|
|
9
|
-
var Caml_obj = require("rescript/lib/js/caml_obj.js");
|
|
10
|
-
var Js_array = require("rescript/lib/js/js_array.js");
|
|
11
|
-
var Belt_Array = require("rescript/lib/js/belt_Array.js");
|
|
12
|
-
var Caml_int64 = require("rescript/lib/js/caml_int64.js");
|
|
13
|
-
var Belt_Result = require("rescript/lib/js/belt_Result.js");
|
|
14
|
-
var Caml_option = require("rescript/lib/js/caml_option.js");
|
|
15
|
-
var Spice_Codecs = require("./Spice_Codecs.js");
|
|
16
|
-
|
|
17
|
-
function error(path, message, value) {
|
|
18
|
-
var path$1 = path !== undefined ? path : "";
|
|
19
|
-
return {
|
|
20
|
-
TAG: /* Error */1,
|
|
21
|
-
_0: {
|
|
22
|
-
path: path$1,
|
|
23
|
-
message: message,
|
|
24
|
-
value: value
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function stringToJson(s) {
|
|
30
|
-
return s;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function stringFromJson(j) {
|
|
34
|
-
var s = Js_json.decodeString(j);
|
|
35
|
-
if (s !== undefined) {
|
|
36
|
-
return {
|
|
37
|
-
TAG: /* Ok */0,
|
|
38
|
-
_0: s
|
|
39
|
-
};
|
|
40
|
-
} else {
|
|
41
|
-
return {
|
|
42
|
-
TAG: /* Error */1,
|
|
43
|
-
_0: {
|
|
44
|
-
path: "",
|
|
45
|
-
message: "Not a string",
|
|
46
|
-
value: j
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function intToJson(i) {
|
|
53
|
-
return i;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function intFromJson(j) {
|
|
57
|
-
var f = Js_json.decodeNumber(j);
|
|
58
|
-
if (f !== undefined) {
|
|
59
|
-
if (Js_math.floor(f) === f) {
|
|
60
|
-
return {
|
|
61
|
-
TAG: /* Ok */0,
|
|
62
|
-
_0: Js_math.floor(f)
|
|
63
|
-
};
|
|
64
|
-
} else {
|
|
65
|
-
return {
|
|
66
|
-
TAG: /* Error */1,
|
|
67
|
-
_0: {
|
|
68
|
-
path: "",
|
|
69
|
-
message: "Not an integer",
|
|
70
|
-
value: j
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
} else {
|
|
75
|
-
return {
|
|
76
|
-
TAG: /* Error */1,
|
|
77
|
-
_0: {
|
|
78
|
-
path: "",
|
|
79
|
-
message: "Not a number",
|
|
80
|
-
value: j
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
var int64ToJson = Caml_int64.float_of_bits;
|
|
87
|
-
|
|
88
|
-
function int64FromJson(j) {
|
|
89
|
-
var n = Js_json.decodeNumber(j);
|
|
90
|
-
if (n !== undefined) {
|
|
91
|
-
return {
|
|
92
|
-
TAG: /* Ok */0,
|
|
93
|
-
_0: Caml_int64.bits_of_float(n)
|
|
94
|
-
};
|
|
95
|
-
} else {
|
|
96
|
-
return error(undefined, "Not a number", j);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
var int64ToJsonUnsafe = Caml_int64.to_float;
|
|
101
|
-
|
|
102
|
-
function int64FromJsonUnsafe(j) {
|
|
103
|
-
var n = Js_json.decodeNumber(j);
|
|
104
|
-
if (n !== undefined) {
|
|
105
|
-
return {
|
|
106
|
-
TAG: /* Ok */0,
|
|
107
|
-
_0: Caml_int64.of_float(n)
|
|
108
|
-
};
|
|
109
|
-
} else {
|
|
110
|
-
return error(undefined, "Not a number", j);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
function floatToJson(v) {
|
|
115
|
-
return v;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function floatFromJson(j) {
|
|
119
|
-
var f = Js_json.decodeNumber(j);
|
|
120
|
-
if (f !== undefined) {
|
|
121
|
-
return {
|
|
122
|
-
TAG: /* Ok */0,
|
|
123
|
-
_0: f
|
|
124
|
-
};
|
|
125
|
-
} else {
|
|
126
|
-
return {
|
|
127
|
-
TAG: /* Error */1,
|
|
128
|
-
_0: {
|
|
129
|
-
path: "",
|
|
130
|
-
message: "Not a number",
|
|
131
|
-
value: j
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
function boolToJson(v) {
|
|
138
|
-
return v;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function boolFromJson(j) {
|
|
142
|
-
var b = Js_json.decodeBoolean(j);
|
|
143
|
-
if (b !== undefined) {
|
|
144
|
-
return {
|
|
145
|
-
TAG: /* Ok */0,
|
|
146
|
-
_0: b
|
|
147
|
-
};
|
|
148
|
-
} else {
|
|
149
|
-
return {
|
|
150
|
-
TAG: /* Error */1,
|
|
151
|
-
_0: {
|
|
152
|
-
path: "",
|
|
153
|
-
message: "Not a boolean",
|
|
154
|
-
value: j
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
function unitToJson(param) {
|
|
161
|
-
return 0.0;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
function unitFromJson(param) {
|
|
165
|
-
return {
|
|
166
|
-
TAG: /* Ok */0,
|
|
167
|
-
_0: undefined
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
var arrayToJson = Js_array.map;
|
|
172
|
-
|
|
173
|
-
function arrayFromJson(decoder, json) {
|
|
174
|
-
var arr = Js_json.decodeArray(json);
|
|
175
|
-
if (arr !== undefined) {
|
|
176
|
-
return Js_array.reducei((function (acc, jsonI, i) {
|
|
177
|
-
var match = Curry._1(decoder, jsonI);
|
|
178
|
-
if (acc.TAG !== /* Ok */0) {
|
|
179
|
-
return acc;
|
|
180
|
-
}
|
|
181
|
-
if (match.TAG === /* Ok */0) {
|
|
182
|
-
return {
|
|
183
|
-
TAG: /* Ok */0,
|
|
184
|
-
_0: Js_array.concat([match._0], acc._0)
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
var error = match._0;
|
|
188
|
-
return {
|
|
189
|
-
TAG: /* Error */1,
|
|
190
|
-
_0: {
|
|
191
|
-
path: "[" + (String(i) + ("]" + error.path)),
|
|
192
|
-
message: error.message,
|
|
193
|
-
value: error.value
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
}), {
|
|
197
|
-
TAG: /* Ok */0,
|
|
198
|
-
_0: []
|
|
199
|
-
}, arr);
|
|
200
|
-
} else {
|
|
201
|
-
return {
|
|
202
|
-
TAG: /* Error */1,
|
|
203
|
-
_0: {
|
|
204
|
-
path: "",
|
|
205
|
-
message: "Not an array",
|
|
206
|
-
value: json
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
function listToJson(encoder, list) {
|
|
213
|
-
var arr = $$Array.of_list(list);
|
|
214
|
-
return Js_array.map(encoder, arr);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
function listFromJson(decoder, json) {
|
|
218
|
-
var __x = arrayFromJson(decoder, json);
|
|
219
|
-
return Belt_Result.map(__x, $$Array.to_list);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
function optionToJson(encoder, opt) {
|
|
223
|
-
if (opt !== undefined) {
|
|
224
|
-
return Curry._1(encoder, Caml_option.valFromOption(opt));
|
|
225
|
-
} else {
|
|
226
|
-
return null;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
function filterOptional(arr) {
|
|
231
|
-
var __x = Belt_Array.keep(arr, (function (param) {
|
|
232
|
-
return !(param[1] && Caml_obj.equal(param[2], null));
|
|
233
|
-
}));
|
|
234
|
-
return Belt_Array.map(__x, (function (param) {
|
|
235
|
-
return [
|
|
236
|
-
param[0],
|
|
237
|
-
param[2]
|
|
238
|
-
];
|
|
239
|
-
}));
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
function optionFromJson(decoder, json) {
|
|
243
|
-
var match = Js_json.decodeNull(json);
|
|
244
|
-
if (match !== undefined) {
|
|
245
|
-
return {
|
|
246
|
-
TAG: /* Ok */0,
|
|
247
|
-
_0: undefined
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
var __x = Curry._1(decoder, json);
|
|
251
|
-
return Belt_Result.map(__x, (function (v) {
|
|
252
|
-
return Caml_option.some(v);
|
|
253
|
-
}));
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
function resultToJson(okEncoder, errorEncoder, result) {
|
|
257
|
-
if (result.TAG === /* Ok */0) {
|
|
258
|
-
return [
|
|
259
|
-
"Ok",
|
|
260
|
-
Curry._1(okEncoder, result._0)
|
|
261
|
-
];
|
|
262
|
-
} else {
|
|
263
|
-
return [
|
|
264
|
-
"Error",
|
|
265
|
-
Curry._1(errorEncoder, result._0)
|
|
266
|
-
];
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
function resultFromJson(okDecoder, errorDecoder, json) {
|
|
271
|
-
var match = Js_json.decodeArray(json);
|
|
272
|
-
if (match === undefined) {
|
|
273
|
-
return error(undefined, "Not an array", json);
|
|
274
|
-
}
|
|
275
|
-
if (match.length !== 2) {
|
|
276
|
-
return error(undefined, "Expected exactly 2 values in array", json);
|
|
277
|
-
}
|
|
278
|
-
var variantConstructorId = match[0];
|
|
279
|
-
var payload = match[1];
|
|
280
|
-
var match$1 = Js_json.decodeString(variantConstructorId);
|
|
281
|
-
if (match$1 === undefined) {
|
|
282
|
-
return error(undefined, "Not a string", variantConstructorId);
|
|
283
|
-
}
|
|
284
|
-
switch (match$1) {
|
|
285
|
-
case "Error" :
|
|
286
|
-
var v = Curry._1(errorDecoder, payload);
|
|
287
|
-
if (v.TAG === /* Ok */0) {
|
|
288
|
-
return {
|
|
289
|
-
TAG: /* Ok */0,
|
|
290
|
-
_0: {
|
|
291
|
-
TAG: /* Error */1,
|
|
292
|
-
_0: v._0
|
|
293
|
-
}
|
|
294
|
-
};
|
|
295
|
-
} else {
|
|
296
|
-
return {
|
|
297
|
-
TAG: /* Error */1,
|
|
298
|
-
_0: v._0
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
|
-
case "Ok" :
|
|
302
|
-
return Belt_Result.map(Curry._1(okDecoder, payload), (function (v) {
|
|
303
|
-
return {
|
|
304
|
-
TAG: /* Ok */0,
|
|
305
|
-
_0: v
|
|
306
|
-
};
|
|
307
|
-
}));
|
|
308
|
-
default:
|
|
309
|
-
return error(undefined, "Expected either \"Ok\" or \"Error\"", variantConstructorId);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
function dictToJson(encoder, dict) {
|
|
314
|
-
return Js_dict.map(Curry.__1(encoder), dict);
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
function dictFromJson(decoder, json) {
|
|
318
|
-
var dict = Js_json.decodeObject(json);
|
|
319
|
-
if (dict !== undefined) {
|
|
320
|
-
return Belt_Array.reduce(Js_dict.entries(Caml_option.valFromOption(dict)), {
|
|
321
|
-
TAG: /* Ok */0,
|
|
322
|
-
_0: {}
|
|
323
|
-
}, (function (acc, param) {
|
|
324
|
-
var key = param[0];
|
|
325
|
-
var match = Curry._1(decoder, param[1]);
|
|
326
|
-
if (acc.TAG !== /* Ok */0) {
|
|
327
|
-
return acc;
|
|
328
|
-
}
|
|
329
|
-
var prev = acc._0;
|
|
330
|
-
if (match.TAG === /* Ok */0) {
|
|
331
|
-
prev[key] = match._0;
|
|
332
|
-
return {
|
|
333
|
-
TAG: /* Ok */0,
|
|
334
|
-
_0: prev
|
|
335
|
-
};
|
|
336
|
-
}
|
|
337
|
-
var error = match._0;
|
|
338
|
-
return {
|
|
339
|
-
TAG: /* Error */1,
|
|
340
|
-
_0: {
|
|
341
|
-
path: "." + (key + error.path),
|
|
342
|
-
message: error.message,
|
|
343
|
-
value: error.value
|
|
344
|
-
}
|
|
345
|
-
};
|
|
346
|
-
}));
|
|
347
|
-
} else {
|
|
348
|
-
return {
|
|
349
|
-
TAG: /* Error */1,
|
|
350
|
-
_0: {
|
|
351
|
-
path: "",
|
|
352
|
-
message: "Not a dict",
|
|
353
|
-
value: json
|
|
354
|
-
}
|
|
355
|
-
};
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
var string = [
|
|
360
|
-
stringToJson,
|
|
361
|
-
stringFromJson
|
|
362
|
-
];
|
|
363
|
-
|
|
364
|
-
var $$int = [
|
|
365
|
-
intToJson,
|
|
366
|
-
intFromJson
|
|
367
|
-
];
|
|
368
|
-
|
|
369
|
-
var int64Unsafe = [
|
|
370
|
-
int64ToJsonUnsafe,
|
|
371
|
-
int64FromJsonUnsafe
|
|
372
|
-
];
|
|
373
|
-
|
|
374
|
-
var $$float = [
|
|
375
|
-
floatToJson,
|
|
376
|
-
floatFromJson
|
|
377
|
-
];
|
|
378
|
-
|
|
379
|
-
var bool = [
|
|
380
|
-
boolToJson,
|
|
381
|
-
boolFromJson
|
|
382
|
-
];
|
|
383
|
-
|
|
384
|
-
var array = [
|
|
385
|
-
arrayToJson,
|
|
386
|
-
arrayFromJson
|
|
387
|
-
];
|
|
388
|
-
|
|
389
|
-
var list = [
|
|
390
|
-
listToJson,
|
|
391
|
-
listFromJson
|
|
392
|
-
];
|
|
393
|
-
|
|
394
|
-
var option = [
|
|
395
|
-
optionToJson,
|
|
396
|
-
optionFromJson
|
|
397
|
-
];
|
|
398
|
-
|
|
399
|
-
var unit = [
|
|
400
|
-
unitToJson,
|
|
401
|
-
unitFromJson
|
|
402
|
-
];
|
|
403
|
-
|
|
404
|
-
var Codecs = {
|
|
405
|
-
falseableEncode: Spice_Codecs.falseableEncode,
|
|
406
|
-
falseableDecode: Spice_Codecs.falseableDecode,
|
|
407
|
-
falseable: Spice_Codecs.falseable,
|
|
408
|
-
magicDecode: Spice_Codecs.magicDecode,
|
|
409
|
-
magic: Spice_Codecs.magic,
|
|
410
|
-
string: string,
|
|
411
|
-
$$int: $$int,
|
|
412
|
-
int64Unsafe: int64Unsafe,
|
|
413
|
-
$$float: $$float,
|
|
414
|
-
bool: bool,
|
|
415
|
-
array: array,
|
|
416
|
-
list: list,
|
|
417
|
-
option: option,
|
|
418
|
-
unit: unit
|
|
419
|
-
};
|
|
420
|
-
|
|
421
|
-
exports.error = error;
|
|
422
|
-
exports.stringToJson = stringToJson;
|
|
423
|
-
exports.stringFromJson = stringFromJson;
|
|
424
|
-
exports.intToJson = intToJson;
|
|
425
|
-
exports.intFromJson = intFromJson;
|
|
426
|
-
exports.int64ToJson = int64ToJson;
|
|
427
|
-
exports.int64FromJson = int64FromJson;
|
|
428
|
-
exports.int64ToJsonUnsafe = int64ToJsonUnsafe;
|
|
429
|
-
exports.int64FromJsonUnsafe = int64FromJsonUnsafe;
|
|
430
|
-
exports.floatToJson = floatToJson;
|
|
431
|
-
exports.floatFromJson = floatFromJson;
|
|
432
|
-
exports.boolToJson = boolToJson;
|
|
433
|
-
exports.boolFromJson = boolFromJson;
|
|
434
|
-
exports.unitToJson = unitToJson;
|
|
435
|
-
exports.unitFromJson = unitFromJson;
|
|
436
|
-
exports.arrayToJson = arrayToJson;
|
|
437
|
-
exports.arrayFromJson = arrayFromJson;
|
|
438
|
-
exports.listToJson = listToJson;
|
|
439
|
-
exports.listFromJson = listFromJson;
|
|
440
|
-
exports.optionToJson = optionToJson;
|
|
441
|
-
exports.filterOptional = filterOptional;
|
|
442
|
-
exports.optionFromJson = optionFromJson;
|
|
443
|
-
exports.resultToJson = resultToJson;
|
|
444
|
-
exports.resultFromJson = resultFromJson;
|
|
445
|
-
exports.dictToJson = dictToJson;
|
|
446
|
-
exports.dictFromJson = dictFromJson;
|
|
447
|
-
exports.Codecs = Codecs;
|
|
448
|
-
/* No side effect */
|
package/test/src/Spice_Codecs.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
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 Belt_Result = require("rescript/lib/js/belt_Result.js");
|
|
7
|
-
var Caml_option = require("rescript/lib/js/caml_option.js");
|
|
8
|
-
|
|
9
|
-
function falseableEncode(encoder, opt) {
|
|
10
|
-
if (opt !== undefined) {
|
|
11
|
-
return Curry._1(encoder, Caml_option.valFromOption(opt));
|
|
12
|
-
} else {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function falseableDecode(decoder, json) {
|
|
18
|
-
var match = Js_json.decodeBoolean(json);
|
|
19
|
-
if (match !== undefined && !match) {
|
|
20
|
-
return {
|
|
21
|
-
TAG: /* Ok */0,
|
|
22
|
-
_0: undefined
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
var __x = Curry._1(decoder, json);
|
|
26
|
-
return Belt_Result.map(__x, (function (v) {
|
|
27
|
-
return Caml_option.some(v);
|
|
28
|
-
}));
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
var falseable = [
|
|
32
|
-
falseableEncode,
|
|
33
|
-
falseableDecode
|
|
34
|
-
];
|
|
35
|
-
|
|
36
|
-
function magicDecode(j) {
|
|
37
|
-
return {
|
|
38
|
-
TAG: /* Ok */0,
|
|
39
|
-
_0: j
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function magic_0(prim) {
|
|
44
|
-
return prim;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
var magic = [
|
|
48
|
-
magic_0,
|
|
49
|
-
magicDecode
|
|
50
|
-
];
|
|
51
|
-
|
|
52
|
-
exports.falseableEncode = falseableEncode;
|
|
53
|
-
exports.falseableDecode = falseableDecode;
|
|
54
|
-
exports.falseable = falseable;
|
|
55
|
-
exports.magicDecode = magicDecode;
|
|
56
|
-
exports.magic = magic;
|
|
57
|
-
/* No side effect */
|
package/test/src/Variants.js
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var Spice = require("./Spice.js");
|
|
5
|
-
var Js_json = require("rescript/lib/js/js_json.js");
|
|
6
|
-
var Js_array = require("rescript/lib/js/js_array.js");
|
|
7
|
-
var Belt_Array = require("rescript/lib/js/belt_Array.js");
|
|
8
|
-
var Belt_Result = require("rescript/lib/js/belt_Result.js");
|
|
9
|
-
|
|
10
|
-
function t_encode(v) {
|
|
11
|
-
if (v) {
|
|
12
|
-
return "둘";
|
|
13
|
-
} else {
|
|
14
|
-
return "하나";
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function t_decode(v) {
|
|
19
|
-
var str = Js_json.classify(v);
|
|
20
|
-
if (typeof str === "number") {
|
|
21
|
-
return Spice.error(undefined, "Not a JSONString", v);
|
|
22
|
-
}
|
|
23
|
-
if (str.TAG !== /* JSONString */0) {
|
|
24
|
-
return Spice.error(undefined, "Not a JSONString", v);
|
|
25
|
-
}
|
|
26
|
-
var str$1 = str._0;
|
|
27
|
-
if ("하나" === str$1) {
|
|
28
|
-
return {
|
|
29
|
-
TAG: /* Ok */0,
|
|
30
|
-
_0: /* One */0
|
|
31
|
-
};
|
|
32
|
-
} else if ("둘" === str$1) {
|
|
33
|
-
return {
|
|
34
|
-
TAG: /* Ok */0,
|
|
35
|
-
_0: /* Two */1
|
|
36
|
-
};
|
|
37
|
-
} else {
|
|
38
|
-
return Spice.error(undefined, "Not matched", v);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function t1_encode(v) {
|
|
43
|
-
if (v) {
|
|
44
|
-
return ["Two1"];
|
|
45
|
-
} else {
|
|
46
|
-
return ["One1"];
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function t1_decode(v) {
|
|
51
|
-
var json_arr = Js_json.classify(v);
|
|
52
|
-
if (typeof json_arr === "number") {
|
|
53
|
-
return Spice.error(undefined, "Not a variant", v);
|
|
54
|
-
}
|
|
55
|
-
if (json_arr.TAG !== /* JSONArray */3) {
|
|
56
|
-
return Spice.error(undefined, "Not a variant", v);
|
|
57
|
-
}
|
|
58
|
-
var json_arr$1 = json_arr._0;
|
|
59
|
-
if (json_arr$1.length === 0) {
|
|
60
|
-
return Spice.error(undefined, "Expected variant, found empty array", v);
|
|
61
|
-
}
|
|
62
|
-
var tagged = Js_array.map(Js_json.classify, json_arr$1);
|
|
63
|
-
var match = Belt_Array.getExn(tagged, 0);
|
|
64
|
-
if (typeof match !== "number" && match.TAG === /* JSONString */0) {
|
|
65
|
-
switch (match._0) {
|
|
66
|
-
case "One1" :
|
|
67
|
-
if (tagged.length !== 1) {
|
|
68
|
-
return Spice.error(undefined, "Invalid number of arguments to variant constructor", v);
|
|
69
|
-
} else {
|
|
70
|
-
return {
|
|
71
|
-
TAG: /* Ok */0,
|
|
72
|
-
_0: /* One1 */0
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
case "Two1" :
|
|
76
|
-
if (tagged.length !== 1) {
|
|
77
|
-
return Spice.error(undefined, "Invalid number of arguments to variant constructor", v);
|
|
78
|
-
} else {
|
|
79
|
-
return {
|
|
80
|
-
TAG: /* Ok */0,
|
|
81
|
-
_0: /* Two1 */1
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
default:
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return Spice.error(undefined, "Invalid variant constructor", Belt_Array.getExn(json_arr$1, 0));
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
var t2_encode = Spice.intToJson;
|
|
92
|
-
|
|
93
|
-
function t2_decode(v) {
|
|
94
|
-
return Belt_Result.map(Spice.intFromJson(v), (function (v) {
|
|
95
|
-
return v;
|
|
96
|
-
}));
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
var t3_encode = Spice.intToJson;
|
|
100
|
-
|
|
101
|
-
function t3_decode(v) {
|
|
102
|
-
return Belt_Result.map(Spice.intFromJson(v), (function (v) {
|
|
103
|
-
return v;
|
|
104
|
-
}));
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
exports.t_encode = t_encode;
|
|
108
|
-
exports.t_decode = t_decode;
|
|
109
|
-
exports.t1_encode = t1_encode;
|
|
110
|
-
exports.t1_decode = t1_decode;
|
|
111
|
-
exports.t2_encode = t2_encode;
|
|
112
|
-
exports.t2_decode = t2_decode;
|
|
113
|
-
exports.t3_encode = t3_encode;
|
|
114
|
-
exports.t3_decode = t3_decode;
|
|
115
|
-
/* No side effect */
|
package/test/src/Variants.res
DELETED