Current section
Files
Jump to
Current section
Files
src/gossamer/writable_stream.ffi.mjs
// src/gossamer/writable_stream/underlying_sink.ts
import * as $underlyingSink from "./writable_stream/underlying_sink.mjs";
function toUnderlyingSink(options) {
const result = {};
for (const option of options) {
if ($underlyingSink.UnderlyingSink$isStart(option)) {
result.start = $underlyingSink.UnderlyingSink$Start$0(option);
} else if ($underlyingSink.UnderlyingSink$isWrite(option)) {
result.write = $underlyingSink.UnderlyingSink$Write$0(option);
} else if ($underlyingSink.UnderlyingSink$isClose(option)) {
result.close = $underlyingSink.UnderlyingSink$Close$0(option);
} else if ($underlyingSink.UnderlyingSink$isAbort(option)) {
result.abort = $underlyingSink.UnderlyingSink$Abort$0(option);
}
}
return result;
}
// src/utils/list.ts
import {
List$Empty,
List$isNonEmpty,
List$NonEmpty,
List$NonEmpty$first,
List$NonEmpty$rest
} from "../../prelude.mjs";
function toArray(list) {
const array = [];
let current = list;
while (List$isNonEmpty(current)) {
array.push(List$NonEmpty$first(current));
current = List$NonEmpty$rest(current);
}
return array;
}
// src/gossamer/writable_stream.ffi.ts
var new_ = (sink) => {
return new WritableStream(toUnderlyingSink(toArray(sink)));
};
var is_locked = (stream) => {
return stream.locked;
};
var abort = (stream, reason) => {
return stream.abort(reason).then(() => void 0);
};
var close = (stream) => {
return stream.close().then(() => void 0);
};
var get_writer = (stream) => {
return stream.getWriter();
};
export {
abort,
close,
get_writer,
is_locked,
new_
};