Skip to content

Commit 6c5a02f

Browse files
committed
Fix ReadableStream binary compatibility and test compilation.
1 parent 05a0a12 commit 6c5a02f

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

dom/src/main/scala/org/scalajs/dom/ReadableStream.scala

+16-6
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
package org.scalajs.dom
22

33
import scala.scalajs.js
4-
import scala.scalajs.js.annotation.JSGlobal
54

65
/** defined at [[https://streams.spec.whatwg.org/#readable-stream ¶2.1. Readable Streams]] of whatwg Streams spec.
76
*
87
* @tparam T
98
* Type of the Chunks returned by the Stream. Can't make it coveriant, due to T
109
*/
1110
@js.native
12-
@JSGlobal
13-
class ReadableStream[+T](
14-
underlyingSource: js.UndefOr[ReadableStreamUnderlyingSource[T]],
15-
queuingStrategy: js.UndefOr[ReadableStreamQueuingStrategy[T]] = js.undefined
16-
) extends js.Object {
11+
trait ReadableStream[+T] extends js.Object {
1712

1813
/** The locked getter returns whether or not the readable stream is locked to a reader.
1914
*
@@ -97,3 +92,18 @@ class ReadableStream[+T](
9792
*/
9893
def tee(): js.Array[_ <: ReadableStream[T]] = js.native // TODO js.Tuple2[ReadableStream[T], ReadableStream[T]]
9994
}
95+
96+
object ReadableStream {
97+
98+
def apply[T](
99+
underlyingSource: js.UndefOr[ReadableStreamUnderlyingSource[T]],
100+
queuingStrategy: js.UndefOr[ReadableStreamQueuingStrategy[T]] = js.undefined
101+
): ReadableStream[T] = {
102+
js.Dynamic
103+
.newInstance(js.Dynamic.global.selectDynamic("ReadableStream"))(
104+
underlyingSource.asInstanceOf[js.Any],
105+
queuingStrategy.asInstanceOf[js.Any]
106+
)
107+
.asInstanceOf[ReadableStream[T]]
108+
}
109+
}

tests-shared/src/main/scala/org/scalajs/dom/tests/shared/SharedTests.scala

+3-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import org.scalajs.dom.tests.shared.AsyncTesting._
77
import scala.concurrent.Future
88
import scala.scalajs.js
99
import scala.scalajs.js.Thenable.Implicits._
10-
import scala.scalajs.js.|
1110

1211
trait SharedTests {
1312

@@ -52,13 +51,13 @@ trait SharedTests {
5251
Tuna("red")
5352
)
5453

55-
val stream = new ReadableStream[Tuna](
54+
val stream = ReadableStream[Tuna](
5655
new ReadableStreamUnderlyingSource[Tuna] {
57-
start = { controller: ReadableStreamController[Tuna] =>
56+
start = { (controller: ReadableStreamController[Tuna]) =>
5857
controller.enqueue(Tuna("blue"))
5958
controller.enqueue(Tuna("red"))
6059
controller.close()
61-
}.asInstanceOf[js.UndefOr[js.Function1[ReadableStreamController[Tuna], Unit | js.Promise[Unit]]]]
60+
}: js.Function1[ReadableStreamController[Tuna], Unit]
6261
}
6362
)
6463

0 commit comments

Comments
 (0)