Current section

Files

Jump to
gossamer src gossamer writable_stream.ffi.mjs
Raw

src/gossamer/writable_stream.ffi.mjs

// src/gossamer/writable_stream.ffi.ts
import * as $writableStream from "./writable_stream.mjs";
import { toArray } from "../utils/list.ffi.mjs";
import { toResult } from "../utils/result.ffi.mjs";
function toUnderlyingSink(options) {
const result = {};
for (const option of options) {
if ($writableStream.UnderlyingSink$isStart(option)) {
result.start = $writableStream.UnderlyingSink$Start$0(option);
} else if ($writableStream.UnderlyingSink$isWrite(option)) {
result.write = $writableStream.UnderlyingSink$Write$0(option);
} else if ($writableStream.UnderlyingSink$isClose(option)) {
result.close = $writableStream.UnderlyingSink$Close$0(option);
} else if ($writableStream.UnderlyingSink$isAbort(option)) {
result.abort = $writableStream.UnderlyingSink$Abort$0(option);
}
}
return result;
}
var new_ = (sink) => {
return toResult.fromThrows(
() => new WritableStream(toUnderlyingSink(toArray(sink)))
);
};
var from_write = (write) => {
return new WritableStream({ write });
};
var is_locked = (stream) => {
return stream.locked;
};
var abort = (stream, reason) => {
return toResult.fromPromise(stream.abort(reason).then(() => void 0));
};
var close = (stream) => {
return toResult.fromPromise(stream.close().then(() => void 0));
};
var get_writer = (stream) => {
return toResult.fromThrows(() => stream.getWriter());
};
export {
abort,
close,
from_write,
get_writer,
is_locked,
new_
};