Skip to content

Commit 70669ac

Browse files
committed
Switch fetch to pipe first
1 parent ea9bd98 commit 70669ac

File tree

7 files changed

+140
-143
lines changed

7 files changed

+140
-143
lines changed

examples/reason_examples.res

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ let _ = {
4343
let _ = {
4444
let formData = Fetch.FormData.make()
4545
Fetch.FormData.appendObject(
46+
formData,
4647
"image0",
4748
{"type": "image/jpg", "uri": "path/to/it", "name": "image0.jpg"},
48-
formData,
49+
()
4950
)
5051

5152
open Js.Promise

lib/js/examples/ocaml_examples.js

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
11
'use strict';
22

3-
var Fetch = require("../src/Fetch.js");
4-
var Js_json = require("bs-platform/lib/js/js_json.js");
5-
var Belt_Option = require("bs-platform/lib/js/belt_Option.js");
6-
var Caml_option = require("bs-platform/lib/js/caml_option.js");
7-
8-
fetch("/api/hellos/1").then((function (prim) {
9-
return prim.text();
10-
})).then((function (text) {
11-
return Promise.resolve((console.log(text), undefined));
12-
}));
13-
14-
fetch("/api/hello", Fetch.RequestInit.make(/* Post */2, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(undefined)).then((function (prim) {
15-
return prim.text();
16-
})).then((function (text) {
17-
return Promise.resolve((console.log(text), undefined));
18-
}));
19-
20-
fetch("/api/fruit").then((function (prim) {
21-
return prim.json();
22-
})).then((function (json) {
23-
return Promise.resolve(Js_json.decodeArray(json));
24-
})).then((function (opt) {
25-
return Promise.resolve(Belt_Option.getExn(opt));
26-
})).then((function (items) {
27-
return Promise.resolve(items.map((function (item) {
28-
return Belt_Option.getExn(Js_json.decodeString(item));
29-
})));
30-
}));
31-
32-
var headers = ({"Content-type": "application/json"});
33-
34-
var payload = { };
3+
var Fetch = require("../src/Webapi/Fetch/Fetch.js");
4+
var Js_json = require("rescript/lib/js/js_json.js");
5+
var Belt_Option = require("rescript/lib/js/belt_Option.js");
6+
var Caml_option = require("rescript/lib/js/caml_option.js");
7+
8+
fetch("/api/hellos/1").then(function (prim) {
9+
return prim.text();
10+
}).then(function (text) {
11+
return Promise.resolve((console.log(text), undefined));
12+
});
13+
14+
fetch("/api/hello", Fetch.RequestInit.make(/* Post */2, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(undefined)).then(function (prim) {
15+
return prim.text();
16+
}).then(function (text) {
17+
return Promise.resolve((console.log(text), undefined));
18+
});
19+
20+
fetch("/api/fruit").then(function (prim) {
21+
return prim.json();
22+
}).then(function (json) {
23+
return Promise.resolve(Js_json.decodeArray(json));
24+
}).then(function (opt) {
25+
return Promise.resolve(Belt_Option.getExn(opt));
26+
}).then(function (items) {
27+
return Promise.resolve(items.map(function (item) {
28+
return Belt_Option.getExn(Js_json.decodeString(item));
29+
}));
30+
});
31+
32+
var headers = {"Content-type": "application/json"};
33+
34+
var payload = {};
3535

3636
payload["hello"] = "world";
3737

38-
fetch("/api/hello", Fetch.RequestInit.make(/* Post */2, Caml_option.some(headers), Caml_option.some(JSON.stringify(payload)), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(undefined)).then((function (prim) {
39-
return prim.json();
40-
}));
38+
fetch("/api/hello", Fetch.RequestInit.make(/* Post */2, Caml_option.some(headers), Caml_option.some(JSON.stringify(payload)), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(undefined)).then(function (prim) {
39+
return prim.json();
40+
});
4141

4242
/* Not a pure module */

lib/js/examples/reason_examples.js

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,43 @@
11
'use strict';
22

3-
var Fetch = require("../src/Fetch.js");
4-
var Js_json = require("bs-platform/lib/js/js_json.js");
5-
var Belt_Option = require("bs-platform/lib/js/belt_Option.js");
6-
var Caml_option = require("bs-platform/lib/js/caml_option.js");
7-
8-
fetch("/api/hellos/1").then((function (prim) {
9-
return prim.text();
10-
})).then((function (text) {
11-
return Promise.resolve((console.log(text), undefined));
12-
}));
13-
14-
fetch("/api/hello", Fetch.RequestInit.make(/* Post */2, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(undefined)).then((function (prim) {
15-
return prim.text();
16-
})).then((function (text) {
17-
return Promise.resolve((console.log(text), undefined));
18-
}));
19-
20-
fetch("/api/fruit").then((function (prim) {
21-
return prim.json();
22-
})).then((function (json) {
23-
return Promise.resolve(Js_json.decodeArray(json));
24-
})).then((function (opt) {
25-
return Promise.resolve(Belt_Option.getExn(opt));
26-
})).then((function (items) {
27-
return Promise.resolve(items.map((function (item) {
28-
return Belt_Option.getExn(Js_json.decodeString(item));
29-
})));
30-
}));
31-
32-
var payload = { };
3+
var Fetch = require("../src/Webapi/Fetch/Fetch.js");
4+
var Js_json = require("rescript/lib/js/js_json.js");
5+
var Belt_Option = require("rescript/lib/js/belt_Option.js");
6+
var Caml_option = require("rescript/lib/js/caml_option.js");
7+
8+
fetch("/api/hellos/1").then(function (prim) {
9+
return prim.text();
10+
}).then(function (text) {
11+
return Promise.resolve((console.log(text), undefined));
12+
});
13+
14+
fetch("/api/hello", Fetch.RequestInit.make(/* Post */2, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(undefined)).then(function (prim) {
15+
return prim.text();
16+
}).then(function (text) {
17+
return Promise.resolve((console.log(text), undefined));
18+
});
19+
20+
fetch("/api/fruit").then(function (prim) {
21+
return prim.json();
22+
}).then(function (json) {
23+
return Promise.resolve(Js_json.decodeArray(json));
24+
}).then(function (opt) {
25+
return Promise.resolve(Belt_Option.getExn(opt));
26+
}).then(function (items) {
27+
return Promise.resolve(items.map(function (item) {
28+
return Belt_Option.getExn(Js_json.decodeString(item));
29+
}));
30+
});
31+
32+
var payload = {};
3333

3434
payload["hello"] = "world";
3535

3636
fetch("/api/hello", Fetch.RequestInit.make(/* Post */2, {
3737
"Content-Type": "application/json"
38-
}, Caml_option.some(JSON.stringify(payload)), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(undefined)).then((function (prim) {
39-
return prim.json();
40-
}));
38+
}, Caml_option.some(JSON.stringify(payload)), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(undefined)).then(function (prim) {
39+
return prim.json();
40+
});
4141

4242
var formData = new FormData();
4343

@@ -49,8 +49,8 @@ formData.append("image0", {
4949

5050
fetch("/api/upload", Fetch.RequestInit.make(/* Post */2, {
5151
Accept: "*"
52-
}, Caml_option.some(formData), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(undefined)).then((function (prim) {
53-
return prim.json();
54-
}));
52+
}, Caml_option.some(formData), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(undefined)).then(function (prim) {
53+
return prim.json();
54+
});
5555

5656
/* Not a pure module */

src/Webapi/Fetch/Fetch.res

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ type signal
1212
type arrayBuffer /* TypedArray */
1313
type bufferSource /* Web IDL, either an arrayBuffer or arrayBufferView */
1414
type formData /* XMLHttpRequest */
15-
type readableStream /* Streams */
15+
type readableStream = Webapi__ReadableStream.t /* Streams */
1616
type urlSearchParams /* URL */
1717

18-
type blob
19-
type file
18+
type blob = Webapi__Blob.t
19+
type file = Webapi__File.t
2020

2121
module AbortController = {
2222
type t = abortController
2323

2424
@get external signal: t => signal = "signal"
25-
@bs.send.pipe(: t) external abort: unit = "abort"
25+
@send external abort: t => unit = "abort"
2626
@new external make: unit => t = "AbortController"
2727
}
2828

@@ -284,16 +284,12 @@ module Headers = {
284284
@new external make: t = "Headers"
285285
@new external makeWithInit: headersInit => t = "Headers"
286286

287-
@bs.send.pipe(: t) external append: (string, string) => unit = "append"
288-
@bs.send.pipe(: t) external delete: string => unit = "delete"
289-
/* entries */ /* very experimental */
290-
@bs.send.pipe(: t) @return({null_to_opt: null_to_opt})
291-
external get: string => option<string> = "get"
292-
@bs.send.pipe(: t) external has: string => bool = "has"
293-
/* keys */ /* very experimental */
294-
@bs.send.pipe(: t) external set: (string, string) => unit = "set"
295-
/* values */
296-
/* very experimental */
287+
@send external append: (t, string, string) => unit = "append"
288+
@send external delete: (t, string) => unit = "delete"
289+
@send @return(null_to_opt)
290+
external get: (t, string) => option<string> = "get"
291+
@send external has: (t, string) => bool = "has"
292+
@send external set: (t, string, string) => unit = "set"
297293
}
298294

299295
module BodyInit = {
@@ -315,11 +311,11 @@ module Body = {
315311
@get external body: T.t => readableStream = "body"
316312
@get external bodyUsed: T.t => bool = "bodyUsed"
317313

318-
@bs.send.pipe(: T.t) external arrayBuffer: Js.Promise.t<arrayBuffer> = "arrayBuffer"
319-
@bs.send.pipe(: T.t) external blob: Js.Promise.t<blob> = "blob"
320-
@bs.send.pipe(: T.t) external formData: Js.Promise.t<formData> = "formData"
321-
@bs.send.pipe(: T.t) external json: Js.Promise.t<Js.Json.t> = "json"
322-
@bs.send.pipe(: T.t) external text: Js.Promise.t<string> = "text"
314+
@send external arrayBuffer: T.t => Js.Promise.t<arrayBuffer> = "arrayBuffer"
315+
@send external blob: T.t => Js.Promise.t<blob> = "blob"
316+
@send external formData: T.t => Js.Promise.t<formData> = "formData"
317+
@send external json: T.t => Js.Promise.t<Js.Json.t> = "json"
318+
@send external text: T.t => Js.Promise.t<string> = "text"
323319
}
324320

325321
type t = body
@@ -438,7 +434,7 @@ module Response = {
438434
@get external type_: t => string = "type"
439435
@get external url: t => string = "url"
440436

441-
@bs.send.pipe(: t) external clone: t = "clone"
437+
@send external clone: t => t = "clone"
442438
}
443439

444440
module FormData = {
@@ -457,26 +453,26 @@ module FormData = {
457453
type t = formData
458454

459455
@new external make: unit => t = "FormData"
460-
@bs.send.pipe(: t) external append: (string, string) => unit = "append"
461-
@bs.send.pipe(: t) external delete: string => unit = "delete"
462-
@bs.send.pipe(: t) external get: string => option<EntryValue.t> = "get"
463-
@bs.send.pipe(: t) external getAll: string => array<EntryValue.t> = "getAll"
464-
@bs.send.pipe(: t) external set: (string, string) => unit = "set"
465-
@bs.send.pipe(: t) external has: string => bool = "has"
456+
@send external append: (t, string, string) => unit = "append"
457+
@send external delete: (t, string) => unit = "delete"
458+
@send external get: (t, string) => option<EntryValue.t> = "get"
459+
@send external getAll: (t, string) => array<EntryValue.t> = "getAll"
460+
@send external set: (t, string, string) => unit = "set"
461+
@send external has: (t, string) => bool = "has"
466462
@send external keys: t => Iterator.t<string> = "keys"
467463
@send external values: t => Iterator.t<EntryValue.t> = "values"
468464

469-
@bs.send.pipe(: t) external appendObject: (string, {..}, ~filename: string=?) => unit = "append"
465+
@send external appendObject: (t, string, {..}, ~filename: string=?, unit) => unit = "append"
470466

471-
@bs.send.pipe(: t) external appendBlob: (string, blob, ~filename: string=?) => unit = "append"
467+
@send external appendBlob: (t, string, blob, ~filename: string=?, unit) => unit = "append"
472468

473-
@bs.send.pipe(: t) external appendFile: (string, file, ~filename: string=?) => unit = "append"
469+
@send external appendFile: (t, string, file, ~filename: string=?, unit) => unit = "append"
474470

475-
@bs.send.pipe(: t) external setObject: (string, {..}, ~filename: string=?) => unit = "set"
471+
@send external setObject: (t, string, {..}, ~filename: string=?, unit) => unit = "set"
476472

477-
@bs.send.pipe(: t) external setBlob: (string, blob, ~filename: string=?) => unit = "set"
473+
@send external setBlob: (t, string, blob, ~filename: string=?, unit) => unit = "set"
478474

479-
@bs.send.pipe(: t) external setFile: (string, file, ~filename: string=?) => unit = "set"
475+
@send external setFile: (t, string, file, ~filename: string=?, unit) => unit = "set"
480476

481477
@send external entries: t => Iterator.t<(string, EntryValue.t)> = "entries"
482478
}

0 commit comments

Comments
 (0)