char/avril

(wip) why'd you have to go and make things so complicaaaaated?

git clone https://git.t4t.associates/char/avril

Charlotte Somport webstreams extension to typescripte9b1b43

main
2.5 KiB71 linesraw
1import "./main.js";
2import { getter, uncurryThis } from "ext:core/primordials";
3import type * as Vendor from "./vendor_types.js";
4export type * from "./vendor_types.js";
5export type ReadableStream<R = unknown> = Vendor.ReadableStream<R>;
6export type WritableStream<W = unknown> = Vendor.WritableStream<W>;
7export type TransformStream<I = unknown, O = unknown> = Vendor.TransformStream<
8  I,
9  O
10>;
11export type ReadableByteStreamController = Vendor.ReadableByteStreamController;
12export type ReadableStreamBYOBRequest = Vendor.ReadableStreamBYOBRequest;
13export type TransformStreamDefaultController<O = unknown> =
14  Vendor.TransformStreamDefaultController<O>;
15
16export const {
17  ReadableStream,
18  WritableStream,
19  TransformStream,
20  ReadableByteStreamController,
21  ReadableStreamBYOBRequest,
22  TransformStreamDefaultController,
23} = globalThis;
24export const streamLocked = getter(ReadableStream.prototype, "locked");
25export const streamReader: <R>(
26  stream: Vendor.ReadableStream<R>,
27) => Vendor.ReadableStreamDefaultReader<R> = uncurryThis(
28  ReadableStream.prototype.getReader,
29);
30export const streamTee: <R>(
31  stream: Vendor.ReadableStream<R>,
32) => [Vendor.ReadableStream<R>, Vendor.ReadableStream<R>] = uncurryThis(
33  ReadableStream.prototype.tee,
34);
35export const streamCancel: (
36  stream: Vendor.ReadableStream<unknown>,
37  reason?: unknown,
38) => Promise<void> = uncurryThis(ReadableStream.prototype.cancel);
39export const read = uncurryThis(ReadableStreamDefaultReader.prototype.read) as <
40  R,
41>(
42  reader: Vendor.ReadableStreamDefaultReader<R>,
43) => Promise<Vendor.ReadResult<R>>;
44export const release: (
45  reader: Vendor.ReadableStreamDefaultReader<unknown>,
46) => void = uncurryThis(
47  ReadableStreamDefaultReader.prototype.releaseLock,
48);
49export const readerCancel: (
50  reader: Vendor.ReadableStreamDefaultReader<unknown>,
51  reason?: unknown,
52) => Promise<void> = uncurryThis(
53  ReadableStreamDefaultReader.prototype.cancel,
54);
55export const enqueue = uncurryThis(
56  ReadableByteStreamController.prototype.enqueue,
57);
58export const close = uncurryThis(ReadableByteStreamController.prototype.close);
59export const errorStream = uncurryThis(
60  ReadableByteStreamController.prototype.error,
61);
62export const byobRequest = getter(
63  ReadableByteStreamController.prototype,
64  "byobRequest",
65);
66export const respond = uncurryThis(ReadableStreamBYOBRequest.prototype.respond);
67export function finish(controller: Vendor.ReadableByteStreamController): void {
68  const request = byobRequest(controller);
69  close(controller);
70  if (request) respond(request, 0);
71}