Current section
Files
Jump to
Current section
Files
src/gossamer/readable_stream/byob_reader.ffi.mjs
// src/gossamer/array_buffer_view.ts
import * as $arrayBufferView from "../array_buffer_view.mjs";
function toArrayBufferViewType(view) {
return $arrayBufferView.ArrayBufferView$ArrayBufferView(
view.buffer,
view.byteLength,
view.byteOffset
);
}
// src/gossamer/readable_stream/byob_reader_read_option.ts
import * as $byobReaderReadOption from "./byob_reader_read_option.mjs";
// 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/readable_stream/byob_reader_read_option.ts
function toByobReaderReadOptions(options) {
const result = {};
for (const option of toArray(options)) {
if ($byobReaderReadOption.ByobReaderReadOption$isMin(option)) {
result.min = $byobReaderReadOption.ByobReaderReadOption$Min$0(option);
}
}
return result;
}
// src/gossamer/readable_stream/read_result.ts
import {
ReadResult$Done,
ReadResult$Value
} from "./read_result.mjs";
// src/utils/option.ts
import {
Option$None,
Option$Some
} from "../../../gleam_stdlib/gleam/option.mjs";
function toOption(value) {
return value === null || value === void 0 ? Option$None() : Option$Some(value);
}
// src/gossamer/readable_stream/read_result.ts
function toReadResult(result) {
if (result.done) {
return ReadResult$Done(toOption(result.value));
}
return ReadResult$Value(result.value);
}
// src/gossamer/readable_stream/byob_reader.ffi.ts
var closed = (reader) => {
return reader.closed.then(() => void 0);
};
var cancel = (reader, reason) => {
return reader.cancel(reason).then(() => void 0);
};
var read = ((reader, view, options) => {
return reader.read({
buffer: view.buffer,
byteLength: view.byte_length,
byteOffset: view.byte_offset
}, toByobReaderReadOptions(options)).then((result) => {
const newValue = result.value ? toArrayBufferViewType(result.value) : result.value;
return toReadResult({ done: result.done, value: newValue });
});
});
var release_lock = (reader) => {
reader.releaseLock();
return reader;
};
export {
cancel,
closed,
read,
release_lock
};