Skip to content

Commit 80433fd

Browse files
committed
Updated examples and tests to be in more "rescript" style.
Use -> pipes instead of |> Switch from Js.Promise to @ryyppy/rescript-promise
1 parent 74f5840 commit 80433fd

File tree

6 files changed

+41
-36
lines changed

6 files changed

+41
-36
lines changed

bsconfig.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@
1919
"warnings": {
2020
"number": "+A-105",
2121
"error": "+A"
22-
}
22+
},
23+
"bs-dev-dependencies": [
24+
"@ryyppy/rescript-promise"
25+
]
2326
}

examples/fetch_examples.res

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,33 @@
1-
open Webapi;
1+
open Webapi
2+
open Promise
3+
24
let _ = {
3-
open Js.Promise
45
Fetch.fetch("/api/hellos/1")
5-
|> then_(Fetch.Response.text)
6-
|> then_(text => print_endline(text) |> resolve)
6+
->then(Fetch.Response.text)
7+
->then(text => print_endline(text)->resolve)
78
}
89

910
let _ = {
10-
open Js.Promise
1111
Fetch.fetchWithInit("/api/hello", Fetch.RequestInit.make(~method_=Post, ()))
12-
|> then_(Fetch.Response.text)
13-
|> then_(text => print_endline(text) |> resolve)
12+
->then(Fetch.Response.text)
13+
->then(text => print_endline(text)->resolve)
1414
}
1515

1616
let _ = {
17-
open Js.Promise
1817
Fetch.fetch("/api/fruit")
1918
/* assume server returns `["apple", "banana", "pear", ...]` */
20-
|> then_(Fetch.Response.json)
21-
|> then_(json => Js.Json.decodeArray(json) |> resolve)
22-
|> then_(opt => Belt.Option.getExn(opt) |> resolve)
23-
|> then_(items =>
24-
items |> Js.Array.map(item => item |> Js.Json.decodeString |> Belt.Option.getExn) |> resolve
19+
->then(Fetch.Response.json)
20+
->then(json => Js.Json.decodeArray(json)->resolve)
21+
->then(opt => Belt.Option.getExn(opt)->resolve)
22+
->then(items =>
23+
items->Js.Array2.map(item => item->Js.Json.decodeString->Belt.Option.getExn)->resolve
2524
)
2625
}
2726

2827
/* makes a post request with the following json payload { hello: "world" } */
2928
let _ = {
3029
let payload = Js.Dict.empty()
3130
Js.Dict.set(payload, "hello", Js.Json.string("world"))
32-
open Js.Promise
3331
Fetch.fetchWithInit(
3432
"/api/hello",
3533
Fetch.RequestInit.make(
@@ -38,7 +36,7 @@ let _ = {
3836
~headers=Fetch.HeadersInit.make({"Content-Type": "application/json"}),
3937
(),
4038
),
41-
) |> then_(Fetch.Response.json)
39+
)->then(Fetch.Response.json)
4240
}
4341

4442
let _ = {
@@ -47,10 +45,9 @@ let _ = {
4745
formData,
4846
"image0",
4947
{"type": "image/jpg", "uri": "path/to/it", "name": "image0.jpg"},
50-
()
48+
(),
5149
)
5250

53-
open Js.Promise
5451
Fetch.fetchWithInit(
5552
"/api/upload",
5653
Fetch.RequestInit.make(
@@ -59,16 +56,13 @@ let _ = {
5956
~headers=Fetch.HeadersInit.make({"Accept": "*"}),
6057
(),
6158
),
62-
) |> then_(Fetch.Response.json)
59+
)->then(Fetch.Response.json)
6360
}
6461

6562
let _ = {
6663
let controller = Fetch.AbortController.make()
6764

68-
let _ = Fetch.fetchWithInit(
69-
"/api/fruit",
70-
Fetch.RequestInit.make(~signal=controller.signal, ())
71-
)
72-
65+
let _ = Fetch.fetchWithInit("/api/fruit", Fetch.RequestInit.make(~signal=controller.signal, ()))
66+
7367
controller->Fetch.AbortController.abort
74-
}
68+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"author": "Tiny Technologies Inc",
3030
"license": "MIT",
3131
"devDependencies": {
32+
"@ryyppy/rescript-promise": "^2.1.0",
3233
"rescript": "^9.1.4"
3334
}
3435
}
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
open Webapi.Blob
22

33
let test_arrayBuffer = blob =>
4-
blob->arrayBuffer
5-
|> Js.Promise.then_(buffer =>
6-
buffer->Js.Typed_array.ArrayBuffer.byteLength->Js.log->Js.Promise.resolve
7-
)
4+
blob
5+
->arrayBuffer
6+
->Promise.then(buffer =>
7+
buffer->Js.Typed_array.ArrayBuffer.byteLength->Js.log->Promise.resolve
8+
)
89

910
let test_size = blob => blob->size->Js.log
1011

1112
let test_slice = blob => test_size(blob->slice(~start=0, ()))
1213

1314
let test_stream = blob => blob->stream
1415

15-
let test_text = blob => blob->text |> Js.Promise.then_(string => string->Js.log->Js.Promise.resolve)
16+
let test_text = blob => blob->text->Promise.then(string => string->Js.log->Promise.resolve)
1617

1718
let test_type = blob => blob->type_->Js.log

tests/Webapi/Webapi__ReadableStream__test.res

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,19 @@ module DefaultReader__test = {
66
let test_closed = reader => closed(reader)
77

88
let test_cancel = reader =>
9-
reader->cancel |> Js.Promise.then_(() => "cancelled"->Js.log->Js.Promise.resolve)
9+
reader->cancel->Promise.then(() => "cancelled"->Js.log->Promise.resolve)
1010

1111
let test_cancelWith = reader =>
12-
reader->cancelWith("reason") |> Js.Promise.then_(reason => reason->Js.log->Js.Promise.resolve)
12+
reader->cancelWith("reason")->Promise.then(reason => reason->Js.log->Promise.resolve)
1313

1414
let test_releaseLock = reader => releaseLock(reader)
1515

1616
let test_read = reader =>
17-
reader->read
18-
|> Js.Promise.then_(next =>
19-
next->Webapi__Iterator.value->Belt.Option.forEach(_, Js.log)->Js.Promise.resolve
20-
)
17+
reader
18+
->read
19+
->Promise.then(next =>
20+
next->Webapi__Iterator.value->Belt.Option.forEach(_, Js.log)->Promise.resolve
21+
)
2122
}
2223

2324
let test_locked = stream => locked(stream)

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
# yarn lockfile v1
33

44

5+
"@ryyppy/rescript-promise@^2.1.0":
6+
version "2.1.0"
7+
resolved "https://registry.yarnpkg.com/@ryyppy/rescript-promise/-/rescript-promise-2.1.0.tgz#a33861274c41360cfbe872cf489f3dcb8dd526e6"
8+
integrity sha512-+dW6msBrj2Lr2hbEMX+HoWCvN89qVjl94RwbYWJgHQuj8jm/izdPC0YzxgpGoEFdeAEW2sOozoLcYHxT6o5WXQ==
9+
510
rescript@^9.1.4:
611
version "9.1.4"
712
resolved "https://registry.yarnpkg.com/rescript/-/rescript-9.1.4.tgz#1eb126f98d6c16942c0bf0df67c050198e580515"

0 commit comments

Comments
 (0)