From 65d9286203cf239f68c6015818e82e8521e600a1 Mon Sep 17 00:00:00 2001 From: Nick Stott Date: Mon, 28 Oct 2019 12:41:36 -0400 Subject: Re-enable basic stream support for fetch bodies (#3192) * Add sd-streams from https://github.com/stardazed/sd-streams/blob/master/packages/streams/src/ * change the interfaces in dom_types to match what sd-streams expects --- cli/js/streams/readable-stream-byob-request.ts | 60 ++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 cli/js/streams/readable-stream-byob-request.ts (limited to 'cli/js/streams/readable-stream-byob-request.ts') diff --git a/cli/js/streams/readable-stream-byob-request.ts b/cli/js/streams/readable-stream-byob-request.ts new file mode 100644 index 000000000..25b937f10 --- /dev/null +++ b/cli/js/streams/readable-stream-byob-request.ts @@ -0,0 +1,60 @@ +// Forked from https://github.com/stardazed/sd-streams/tree/8928cf04b035fd02fb1340b7eb541c76be37e546 +// Copyright (c) 2018-Present by Arthur Langereis - @zenmumbler MIT + +/** + * streams/readable-stream-byob-request - ReadableStreamBYOBRequest class implementation + * Part of Stardazed + * (c) 2018-Present by Arthur Langereis - @zenmumbler + * https://github.com/stardazed/sd-streams + */ + +import * as rs from "./readable-internals.ts"; + +export class ReadableStreamBYOBRequest { + [rs.associatedReadableByteStreamController_]: + | rs.SDReadableByteStreamController + | undefined; + [rs.view_]: ArrayBufferView | undefined; + + constructor() { + throw new TypeError(); + } + + get view(): ArrayBufferView { + if (!rs.isReadableStreamBYOBRequest(this)) { + throw new TypeError(); + } + return this[rs.view_]!; + } + + respond(bytesWritten: number): void { + if (!rs.isReadableStreamBYOBRequest(this)) { + throw new TypeError(); + } + if (this[rs.associatedReadableByteStreamController_] === undefined) { + throw new TypeError(); + } + // If! IsDetachedBuffer(this.[[view]].[[ViewedArrayBuffer]]) is true, throw a TypeError exception. + return rs.readableByteStreamControllerRespond( + this[rs.associatedReadableByteStreamController_]!, + bytesWritten + ); + } + + respondWithNewView(view: ArrayBufferView): void { + if (!rs.isReadableStreamBYOBRequest(this)) { + throw new TypeError(); + } + if (this[rs.associatedReadableByteStreamController_] === undefined) { + throw new TypeError(); + } + if (!ArrayBuffer.isView(view)) { + throw new TypeError("view parameter must be a TypedArray"); + } + // If! IsDetachedBuffer(view.[[ViewedArrayBuffer]]) is true, throw a TypeError exception. + return rs.readableByteStreamControllerRespondWithNewView( + this[rs.associatedReadableByteStreamController_]!, + view + ); + } +} -- cgit v1.2.3