From 0316e6ced9b54062bf8c889db64c450b2c065694 Mon Sep 17 00:00:00 2001 From: zetashift Date: Sat, 20 Aug 2022 13:26:48 +0200 Subject: [PATCH 1/4] Add duplex property for the Fetch API's Request type --- api-reports/2_12.txt | 3 +++ api-reports/2_13.txt | 3 +++ .../scala-2/org/scalajs/dom/RequestDuplex.scala | 13 +++++++++++++ .../scala-3/org/scalajs/dom/RequestDuplex.scala | 12 ++++++++++++ dom/src/main/scala/org/scalajs/dom/Request.scala | 5 +++++ 5 files changed, 36 insertions(+) create mode 100644 dom/src/main/scala-2/org/scalajs/dom/RequestDuplex.scala create mode 100644 dom/src/main/scala-3/org/scalajs/dom/RequestDuplex.scala diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index 0c7e86bb3..5b8401c7d 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -16510,6 +16510,7 @@ Request[JC] def bodyUsed: Boolean Request[JC] def cache: RequestCache Request[JC] def credentials: RequestCredentials Request[JC] def destination: RequestDestination +Request[JC] def duplex: RequestDuplex Request[JC] def formData(): js.Promise[FormData] Request[JC] def headers: Headers Request[JC] def integrity: String @@ -16542,6 +16543,8 @@ RequestDestination[SO] val sharedworker: RequestDestination RequestDestination[SO] val subresource: RequestDestination RequestDestination[SO] val unknown: RequestDestination RequestDestination[SO] val worker: RequestDestination +RequestDuplex[JT] +RequestDuplex[SO] val half: RequestDuplex RequestInit[JT] var body: js.UndefOr[BodyInit] RequestInit[JT] var cache: js.UndefOr[RequestCache] RequestInit[JT] var credentials: js.UndefOr[RequestCredentials] diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index 0c7e86bb3..5b8401c7d 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -16510,6 +16510,7 @@ Request[JC] def bodyUsed: Boolean Request[JC] def cache: RequestCache Request[JC] def credentials: RequestCredentials Request[JC] def destination: RequestDestination +Request[JC] def duplex: RequestDuplex Request[JC] def formData(): js.Promise[FormData] Request[JC] def headers: Headers Request[JC] def integrity: String @@ -16542,6 +16543,8 @@ RequestDestination[SO] val sharedworker: RequestDestination RequestDestination[SO] val subresource: RequestDestination RequestDestination[SO] val unknown: RequestDestination RequestDestination[SO] val worker: RequestDestination +RequestDuplex[JT] +RequestDuplex[SO] val half: RequestDuplex RequestInit[JT] var body: js.UndefOr[BodyInit] RequestInit[JT] var cache: js.UndefOr[RequestCache] RequestInit[JT] var credentials: js.UndefOr[RequestCredentials] diff --git a/dom/src/main/scala-2/org/scalajs/dom/RequestDuplex.scala b/dom/src/main/scala-2/org/scalajs/dom/RequestDuplex.scala new file mode 100644 index 000000000..eea64b4b0 --- /dev/null +++ b/dom/src/main/scala-2/org/scalajs/dom/RequestDuplex.scala @@ -0,0 +1,13 @@ +package org.scalajs.dom + +import scala.scalajs.js + +/** + * Fetch APIs [[https://fetch.spec.whatwg.org/#dom-requestinit-duplex RequestDuplex enum]] + */ +@js.native +sealed trait RequestDuplex extends js.Any + +object RequestDuplex { + val half: RequestDuplex = "half".asInstanceOf[RequestDuplex] +} \ No newline at end of file diff --git a/dom/src/main/scala-3/org/scalajs/dom/RequestDuplex.scala b/dom/src/main/scala-3/org/scalajs/dom/RequestDuplex.scala new file mode 100644 index 000000000..4cd11748f --- /dev/null +++ b/dom/src/main/scala-3/org/scalajs/dom/RequestDuplex.scala @@ -0,0 +1,12 @@ +package org.scalajs.dom + +import scala.scalajs.js + +/** + * Fetch APIs [[https://fetch.spec.whatwg.org/#dom-requestinit-duplex RequestDuplex enum]] + */ +opaque type RequestDuplex <: String = String + +object RequestDuplex { + val half: RequestDuplex = "half" +} \ No newline at end of file diff --git a/dom/src/main/scala/org/scalajs/dom/Request.scala b/dom/src/main/scala/org/scalajs/dom/Request.scala index 124849a8f..297462f4d 100644 --- a/dom/src/main/scala/org/scalajs/dom/Request.scala +++ b/dom/src/main/scala/org/scalajs/dom/Request.scala @@ -47,4 +47,9 @@ class Request(input: RequestInfo, init: RequestInit = null) extends Body { def keepalive: Boolean = js.native def signal: AbortSignal = js.native + + /** "half" is the only valid value and it is for initiating a half-duplex fetch (i.e., the user agent sends the entire + * request before processing the response). + */ + def duplex: RequestDuplex = js.native } From 87f489f05d0cde4d7d938e4cb3b86aeec506575f Mon Sep 17 00:00:00 2001 From: zetashift Date: Sat, 20 Aug 2022 13:31:56 +0200 Subject: [PATCH 2/4] Minor newlines formatting --- dom/src/main/scala-2/org/scalajs/dom/RequestDuplex.scala | 2 +- dom/src/main/scala-3/org/scalajs/dom/RequestDuplex.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dom/src/main/scala-2/org/scalajs/dom/RequestDuplex.scala b/dom/src/main/scala-2/org/scalajs/dom/RequestDuplex.scala index eea64b4b0..de0973d2c 100644 --- a/dom/src/main/scala-2/org/scalajs/dom/RequestDuplex.scala +++ b/dom/src/main/scala-2/org/scalajs/dom/RequestDuplex.scala @@ -10,4 +10,4 @@ sealed trait RequestDuplex extends js.Any object RequestDuplex { val half: RequestDuplex = "half".asInstanceOf[RequestDuplex] -} \ No newline at end of file +} diff --git a/dom/src/main/scala-3/org/scalajs/dom/RequestDuplex.scala b/dom/src/main/scala-3/org/scalajs/dom/RequestDuplex.scala index 4cd11748f..41f5092ba 100644 --- a/dom/src/main/scala-3/org/scalajs/dom/RequestDuplex.scala +++ b/dom/src/main/scala-3/org/scalajs/dom/RequestDuplex.scala @@ -9,4 +9,4 @@ opaque type RequestDuplex <: String = String object RequestDuplex { val half: RequestDuplex = "half" -} \ No newline at end of file +} From d68117b978f9dd86363c179f57d5a45c756fafd0 Mon Sep 17 00:00:00 2001 From: zetashift Date: Sun, 21 Aug 2022 01:26:40 +0200 Subject: [PATCH 3/4] Move duplex over to RequestInit as a var --- dom/src/main/scala/org/scalajs/dom/Request.scala | 5 ----- dom/src/main/scala/org/scalajs/dom/RequestInit.scala | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dom/src/main/scala/org/scalajs/dom/Request.scala b/dom/src/main/scala/org/scalajs/dom/Request.scala index 297462f4d..124849a8f 100644 --- a/dom/src/main/scala/org/scalajs/dom/Request.scala +++ b/dom/src/main/scala/org/scalajs/dom/Request.scala @@ -47,9 +47,4 @@ class Request(input: RequestInfo, init: RequestInit = null) extends Body { def keepalive: Boolean = js.native def signal: AbortSignal = js.native - - /** "half" is the only valid value and it is for initiating a half-duplex fetch (i.e., the user agent sends the entire - * request before processing the response). - */ - def duplex: RequestDuplex = js.native } diff --git a/dom/src/main/scala/org/scalajs/dom/RequestInit.scala b/dom/src/main/scala/org/scalajs/dom/RequestInit.scala index f43401815..de8ea9bab 100644 --- a/dom/src/main/scala/org/scalajs/dom/RequestInit.scala +++ b/dom/src/main/scala/org/scalajs/dom/RequestInit.scala @@ -30,6 +30,11 @@ trait RequestInit extends js.Object { var signal: js.UndefOr[AbortSignal] = js.undefined + /** "half" is the only valid value and it is for initiating a half-duplex fetch (i.e., the user agent sends the entire + * request before processing the response). + */ + var duplex: js.UndefOr[RequestDuplex] = js.undefined + /** The whatwg spec section on [[https://fetch.spec.whatwg.org/#requestinit RequestInit dictionary]] has a comment * that states that this value "can only be set to null". In the detailed steps section for * [[https://fetch.spec.whatwg.org/#dom-request the Request(input,init) constructor]] it says even more clearly: "If From cf5a973ebb69997f97477d245ff35d7a724d7a6f Mon Sep 17 00:00:00 2001 From: zetashift Date: Sun, 21 Aug 2022 01:30:05 +0200 Subject: [PATCH 4/4] Scalafix api reports --- api-reports/2_12.txt | 2 +- api-reports/2_13.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index 5b8401c7d..0d7e7afd5 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -16510,7 +16510,6 @@ Request[JC] def bodyUsed: Boolean Request[JC] def cache: RequestCache Request[JC] def credentials: RequestCredentials Request[JC] def destination: RequestDestination -Request[JC] def duplex: RequestDuplex Request[JC] def formData(): js.Promise[FormData] Request[JC] def headers: Headers Request[JC] def integrity: String @@ -16548,6 +16547,7 @@ RequestDuplex[SO] val half: RequestDuplex RequestInit[JT] var body: js.UndefOr[BodyInit] RequestInit[JT] var cache: js.UndefOr[RequestCache] RequestInit[JT] var credentials: js.UndefOr[RequestCredentials] +RequestInit[JT] var duplex: js.UndefOr[RequestDuplex] RequestInit[JT] var headers: js.UndefOr[HeadersInit] RequestInit[JT] var integrity: js.UndefOr[String] RequestInit[JT] var keepalive: js.UndefOr[Boolean] diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index 5b8401c7d..0d7e7afd5 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -16510,7 +16510,6 @@ Request[JC] def bodyUsed: Boolean Request[JC] def cache: RequestCache Request[JC] def credentials: RequestCredentials Request[JC] def destination: RequestDestination -Request[JC] def duplex: RequestDuplex Request[JC] def formData(): js.Promise[FormData] Request[JC] def headers: Headers Request[JC] def integrity: String @@ -16548,6 +16547,7 @@ RequestDuplex[SO] val half: RequestDuplex RequestInit[JT] var body: js.UndefOr[BodyInit] RequestInit[JT] var cache: js.UndefOr[RequestCache] RequestInit[JT] var credentials: js.UndefOr[RequestCredentials] +RequestInit[JT] var duplex: js.UndefOr[RequestDuplex] RequestInit[JT] var headers: js.UndefOr[HeadersInit] RequestInit[JT] var integrity: js.UndefOr[String] RequestInit[JT] var keepalive: js.UndefOr[Boolean]