diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index 4c87cd8b2..c70a4a2a9 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -237,6 +237,9 @@ experimental/Body[JT] def text(): js.Promise[String] experimental/Chunk[JT] def done: Boolean experimental/Chunk[JT] def value: T experimental/Fetch[JO] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] +experimental/FileReaderSync[JC] def readAsArrayBuffer(blob: Blob): ArrayBuffer +experimental/FileReaderSync[JC] def readAsDataURL(blob: Blob): URL +experimental/FileReaderSync[JC] def readAsText(blob: Blob, encoding: String?): String experimental/Fullscreen[SO] def exitFullscreen(): js.UndefOr[js.Promise[Unit]] experimental/Fullscreen[SO] def fullscreenElement: Element experimental/Fullscreen[SO] def fullscreenEnabled: Boolean diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index 5cf7be22c..9ffff7a23 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -237,6 +237,9 @@ experimental/Body[JT] def text(): js.Promise[String] experimental/Chunk[JT] def done: Boolean experimental/Chunk[JT] def value: T experimental/Fetch[JO] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] +experimental/FileReaderSync[JC] def readAsArrayBuffer(blob: Blob): ArrayBuffer +experimental/FileReaderSync[JC] def readAsDataURL(blob: Blob): URL +experimental/FileReaderSync[JC] def readAsText(blob: Blob, encoding: String?): String experimental/Fullscreen[SO] def exitFullscreen(): js.UndefOr[js.Promise[Unit]] experimental/Fullscreen[SO] def fullscreenElement: Element experimental/Fullscreen[SO] def fullscreenEnabled: Boolean diff --git a/src/main/scala/org/scalajs/dom/experimental/FileReaderSync.scala b/src/main/scala/org/scalajs/dom/experimental/FileReaderSync.scala new file mode 100644 index 000000000..7959edde5 --- /dev/null +++ b/src/main/scala/org/scalajs/dom/experimental/FileReaderSync.scala @@ -0,0 +1,48 @@ +package org.scalajs.dom.experimental + +import org.scalajs.dom.raw.Blob + +import scala.scalajs.js +import scala.scalajs.js.annotation._ +import scala.scalajs.js.typedarray.ArrayBuffer + +/** + * The FileReaderSync interface allows to read File or Blob objects synchronously. + * + * This interface is only available in workers as it enables synchronous I/O that could potentially block. + * + * MDN + */ +@js.native +@JSGlobal +class FileReaderSync() extends js.Object { + + /** + * The readAsArrayBuffer method is used to starts reading the contents of the + * specified Blob or File. When the read operation is finished, the readyState + * becomes DONE, and the loadend is triggered. At that time, the result attribute + * contains an ArrayBuffer representing the file's data. + * + * MDN + */ + def readAsArrayBuffer(blob: Blob): ArrayBuffer = js.native + + /** + * The readAsDataURL method is used to starts reading the contents of the specified + * Blob or File. When the read operation is finished, the readyState becomes DONE, and + * the loadend is triggered. At that time, the result attribute contains a data: URL + * representing the file's data as base64 encoded string. + * + * MDN + */ + def readAsDataURL(blob: Blob): URL = js.native + + /** + * The readAsText method is used to read the contents of the specified Blob or File. + * When the read operation is complete, the readyState is changed to DONE, the loadend + * is triggered, and the result attribute contains the contents of the file as a text string. + * + * MDN + */ + def readAsText(blob: Blob, encoding: String = js.native): String = js.native +}