blob: e192dce225dd2bd158c76ed351507681d45c1388 [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:js_interop';
import 'dom.dart';
import 'webidl.dart';
typedef ReadableStreamReader = JSAny?;
typedef ReadableStreamController = JSAny?;
typedef UnderlyingSourceStartCallback = JSFunction;
typedef UnderlyingSourcePullCallback = JSFunction;
typedef UnderlyingSourceCancelCallback = JSFunction;
typedef UnderlyingSinkStartCallback = JSFunction;
typedef UnderlyingSinkWriteCallback = JSFunction;
typedef UnderlyingSinkCloseCallback = JSFunction;
typedef UnderlyingSinkAbortCallback = JSFunction;
typedef TransformerStartCallback = JSFunction;
typedef TransformerFlushCallback = JSFunction;
typedef TransformerTransformCallback = JSFunction;
typedef QueuingStrategySize = JSFunction;
typedef ReadableStreamReaderMode = String;
typedef ReadableStreamType = String;
@JS('ReadableStream')
@staticInterop
class ReadableStream implements JSObject {
external factory ReadableStream([
JSObject underlyingSource,
QueuingStrategy strategy,
]);
external static ReadableStream from(JSAny? asyncIterable);
}
extension ReadableStreamExtension on ReadableStream {
external JSPromise cancel([JSAny? reason]);
external ReadableStreamReader getReader(
[ReadableStreamGetReaderOptions options]);
external ReadableStream pipeThrough(
ReadableWritablePair transform, [
StreamPipeOptions options,
]);
external JSPromise pipeTo(
WritableStream destination, [
StreamPipeOptions options,
]);
external JSArray tee();
external bool get locked;
}
@JS()
@staticInterop
@anonymous
class ReadableStreamGetReaderOptions implements JSObject {
external factory ReadableStreamGetReaderOptions(
{ReadableStreamReaderMode mode});
}
extension ReadableStreamGetReaderOptionsExtension
on ReadableStreamGetReaderOptions {
external set mode(ReadableStreamReaderMode value);
external ReadableStreamReaderMode get mode;
}
@JS()
@staticInterop
@anonymous
class ReadableStreamIteratorOptions implements JSObject {
external factory ReadableStreamIteratorOptions({bool preventCancel});
}
extension ReadableStreamIteratorOptionsExtension
on ReadableStreamIteratorOptions {
external set preventCancel(bool value);
external bool get preventCancel;
}
@JS()
@staticInterop
@anonymous
class ReadableWritablePair implements JSObject {
external factory ReadableWritablePair({
required ReadableStream readable,
required WritableStream writable,
});
}
extension ReadableWritablePairExtension on ReadableWritablePair {
external set readable(ReadableStream value);
external ReadableStream get readable;
external set writable(WritableStream value);
external WritableStream get writable;
}
@JS()
@staticInterop
@anonymous
class StreamPipeOptions implements JSObject {
external factory StreamPipeOptions({
bool preventClose,
bool preventAbort,
bool preventCancel,
AbortSignal signal,
});
}
extension StreamPipeOptionsExtension on StreamPipeOptions {
external set preventClose(bool value);
external bool get preventClose;
external set preventAbort(bool value);
external bool get preventAbort;
external set preventCancel(bool value);
external bool get preventCancel;
external set signal(AbortSignal value);
external AbortSignal get signal;
}
@JS()
@staticInterop
@anonymous
class UnderlyingSource implements JSObject {
external factory UnderlyingSource({
UnderlyingSourceStartCallback start,
UnderlyingSourcePullCallback pull,
UnderlyingSourceCancelCallback cancel,
ReadableStreamType type,
int autoAllocateChunkSize,
});
}
extension UnderlyingSourceExtension on UnderlyingSource {
external set start(UnderlyingSourceStartCallback value);
external UnderlyingSourceStartCallback get start;
external set pull(UnderlyingSourcePullCallback value);
external UnderlyingSourcePullCallback get pull;
external set cancel(UnderlyingSourceCancelCallback value);
external UnderlyingSourceCancelCallback get cancel;
external set type(ReadableStreamType value);
external ReadableStreamType get type;
external set autoAllocateChunkSize(int value);
external int get autoAllocateChunkSize;
}
@JS('ReadableStreamGenericReader')
@staticInterop
class ReadableStreamGenericReader implements JSObject {}
extension ReadableStreamGenericReaderExtension on ReadableStreamGenericReader {
external JSPromise cancel([JSAny? reason]);
external JSPromise get closed;
}
@JS('ReadableStreamDefaultReader')
@staticInterop
class ReadableStreamDefaultReader implements ReadableStreamGenericReader {
external factory ReadableStreamDefaultReader(ReadableStream stream);
}
extension ReadableStreamDefaultReaderExtension on ReadableStreamDefaultReader {
external JSPromise read();
external JSVoid releaseLock();
}
@JS()
@staticInterop
@anonymous
class ReadableStreamReadResult implements JSObject {
external factory ReadableStreamReadResult({
JSAny? value,
bool done,
});
}
extension ReadableStreamReadResultExtension on ReadableStreamReadResult {
external set value(JSAny? value);
external JSAny? get value;
external set done(bool value);
external bool get done;
}
@JS('ReadableStreamBYOBReader')
@staticInterop
class ReadableStreamBYOBReader implements ReadableStreamGenericReader {
external factory ReadableStreamBYOBReader(ReadableStream stream);
}
extension ReadableStreamBYOBReaderExtension on ReadableStreamBYOBReader {
external JSPromise read(ArrayBufferView view);
external JSVoid releaseLock();
}
@JS('ReadableStreamDefaultController')
@staticInterop
class ReadableStreamDefaultController implements JSObject {}
extension ReadableStreamDefaultControllerExtension
on ReadableStreamDefaultController {
external JSVoid close();
external JSVoid enqueue([JSAny? chunk]);
external JSVoid error([JSAny? e]);
external double? get desiredSize;
}
@JS('ReadableByteStreamController')
@staticInterop
class ReadableByteStreamController implements JSObject {}
extension ReadableByteStreamControllerExtension
on ReadableByteStreamController {
external JSVoid close();
external JSVoid enqueue(ArrayBufferView chunk);
external JSVoid error([JSAny? e]);
external ReadableStreamBYOBRequest? get byobRequest;
external double? get desiredSize;
}
@JS('ReadableStreamBYOBRequest')
@staticInterop
class ReadableStreamBYOBRequest implements JSObject {}
extension ReadableStreamBYOBRequestExtension on ReadableStreamBYOBRequest {
external JSVoid respond(int bytesWritten);
external JSVoid respondWithNewView(ArrayBufferView view);
external ArrayBufferView? get view;
}
@JS('WritableStream')
@staticInterop
class WritableStream implements JSObject {
external factory WritableStream([
JSObject underlyingSink,
QueuingStrategy strategy,
]);
}
extension WritableStreamExtension on WritableStream {
external JSPromise abort([JSAny? reason]);
external JSPromise close();
external WritableStreamDefaultWriter getWriter();
external bool get locked;
}
@JS()
@staticInterop
@anonymous
class UnderlyingSink implements JSObject {
external factory UnderlyingSink({
UnderlyingSinkStartCallback start,
UnderlyingSinkWriteCallback write,
UnderlyingSinkCloseCallback close,
UnderlyingSinkAbortCallback abort,
JSAny? type,
});
}
extension UnderlyingSinkExtension on UnderlyingSink {
external set start(UnderlyingSinkStartCallback value);
external UnderlyingSinkStartCallback get start;
external set write(UnderlyingSinkWriteCallback value);
external UnderlyingSinkWriteCallback get write;
external set close(UnderlyingSinkCloseCallback value);
external UnderlyingSinkCloseCallback get close;
external set abort(UnderlyingSinkAbortCallback value);
external UnderlyingSinkAbortCallback get abort;
external set type(JSAny? value);
external JSAny? get type;
}
@JS('WritableStreamDefaultWriter')
@staticInterop
class WritableStreamDefaultWriter implements JSObject {
external factory WritableStreamDefaultWriter(WritableStream stream);
}
extension WritableStreamDefaultWriterExtension on WritableStreamDefaultWriter {
external JSPromise abort([JSAny? reason]);
external JSPromise close();
external JSVoid releaseLock();
external JSPromise write([JSAny? chunk]);
external JSPromise get closed;
external double? get desiredSize;
external JSPromise get ready;
}
@JS('WritableStreamDefaultController')
@staticInterop
class WritableStreamDefaultController implements JSObject {}
extension WritableStreamDefaultControllerExtension
on WritableStreamDefaultController {
external JSVoid error([JSAny? e]);
external AbortSignal get signal;
}
@JS('TransformStream')
@staticInterop
class TransformStream implements JSObject {
external factory TransformStream([
JSObject transformer,
QueuingStrategy writableStrategy,
QueuingStrategy readableStrategy,
]);
}
extension TransformStreamExtension on TransformStream {
external ReadableStream get readable;
external WritableStream get writable;
}
@JS()
@staticInterop
@anonymous
class Transformer implements JSObject {
external factory Transformer({
TransformerStartCallback start,
TransformerTransformCallback transform,
TransformerFlushCallback flush,
JSAny? readableType,
JSAny? writableType,
});
}
extension TransformerExtension on Transformer {
external set start(TransformerStartCallback value);
external TransformerStartCallback get start;
external set transform(TransformerTransformCallback value);
external TransformerTransformCallback get transform;
external set flush(TransformerFlushCallback value);
external TransformerFlushCallback get flush;
external set readableType(JSAny? value);
external JSAny? get readableType;
external set writableType(JSAny? value);
external JSAny? get writableType;
}
@JS('TransformStreamDefaultController')
@staticInterop
class TransformStreamDefaultController implements JSObject {}
extension TransformStreamDefaultControllerExtension
on TransformStreamDefaultController {
external JSVoid enqueue([JSAny? chunk]);
external JSVoid error([JSAny? reason]);
external JSVoid terminate();
external double? get desiredSize;
}
@JS()
@staticInterop
@anonymous
class QueuingStrategy implements JSObject {
external factory QueuingStrategy({
double highWaterMark,
QueuingStrategySize size,
});
}
extension QueuingStrategyExtension on QueuingStrategy {
external set highWaterMark(double value);
external double get highWaterMark;
external set size(QueuingStrategySize value);
external QueuingStrategySize get size;
}
@JS()
@staticInterop
@anonymous
class QueuingStrategyInit implements JSObject {
external factory QueuingStrategyInit({required double highWaterMark});
}
extension QueuingStrategyInitExtension on QueuingStrategyInit {
external set highWaterMark(double value);
external double get highWaterMark;
}
@JS('ByteLengthQueuingStrategy')
@staticInterop
class ByteLengthQueuingStrategy implements JSObject {
external factory ByteLengthQueuingStrategy(QueuingStrategyInit init);
}
extension ByteLengthQueuingStrategyExtension on ByteLengthQueuingStrategy {
external double get highWaterMark;
external JSFunction get size;
}
@JS('CountQueuingStrategy')
@staticInterop
class CountQueuingStrategy implements JSObject {
external factory CountQueuingStrategy(QueuingStrategyInit init);
}
extension CountQueuingStrategyExtension on CountQueuingStrategy {
external double get highWaterMark;
external JSFunction get size;
}
@JS('GenericTransformStream')
@staticInterop
class GenericTransformStream implements JSObject {}
extension GenericTransformStreamExtension on GenericTransformStream {
external ReadableStream get readable;
external WritableStream get writable;
}