Skip to content

Commit 95b2ef7

Browse files
committed
Read rawBuffer for BitArray bodies instead of buffer
1 parent bacdee5 commit 95b2ef7

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/gleam_fetch_ffi.mjs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export function form_data_to_fetch_request(request) {
5151

5252
export function bitarray_request_to_fetch_request(request) {
5353
let [url, options] = request_common(request)
54-
if (options.method !== "GET" && options.method !== "HEAD") options.body = request.body.buffer;
54+
if (options.method !== "GET" && options.method !== "HEAD") options.body = readBitArrayBuffer(request.body);
5555
return new globalThis.Request(url, options);
5656
}
5757

@@ -116,13 +116,13 @@ export function setFormData(formData, key, value) {
116116

117117
export function appendBitsFormData(formData, key, value) {
118118
const f = cloneFormData(formData)
119-
f.append(key, new Blob([value.buffer]))
119+
f.append(key, new Blob([readBitArrayBuffer(value)]))
120120
return f
121121
}
122122

123123
export function setBitsFormData(formData, key, value) {
124124
const f = cloneFormData(formData)
125-
f.set(key, new Blob([value.buffer]))
125+
f.set(key, new Blob([readBitArrayBuffer(value)]))
126126
return f
127127
}
128128

@@ -165,3 +165,10 @@ export function keysFormData(formData) {
165165
}
166166
return toList([...result])
167167
}
168+
169+
function readBitArrayBuffer(bitArray) {
170+
// Gleam version >= 1.9, with new handling of buffers.
171+
if ("rawBuffer" in bitArray) return bitArray.rawBuffer
172+
// Gleam version < 1.9, where `rawBuffer` does not exists on BitArray.
173+
return bitArray.buffer
174+
}

0 commit comments

Comments
 (0)