Current section

Files

Jump to
gossamer src gossamer readable_stream reader.ffi.mjs
Raw

src/gossamer/readable_stream/reader.ffi.mjs

// 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/utils/result.ts
import { Result$Error, Result$Ok } from "../../../prelude.mjs";
function toResult(value) {
return value === null || value === void 0 ? Result$Error(void 0) : Result$Ok(value);
}
toResult.fromThrows = function(throws) {
try {
return Result$Ok(throws());
} catch (error) {
return Result$Error(
error instanceof Error ? error.message : String(error)
);
}
};
toResult.fromPromise = function(promise) {
return promise.then(
(value) => Result$Ok(value),
(error) => Result$Error(error instanceof Error ? error.message : String(error))
);
};
// src/gossamer/readable_stream/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) => {
return toResult.fromPromise(
reader.read().then((result) => toReadResult(result))
);
};
var release_lock = (reader) => {
reader.releaseLock();
return reader;
};
export {
cancel,
closed,
read,
release_lock
};