From 7dfe04f9a6327c1a863cdcb5aec8926508739de6 Mon Sep 17 00:00:00 2001 From: David Barri Date: Sat, 14 Nov 2020 11:35:40 +1100 Subject: [PATCH 1/6] Add WindowOrWorkerGlobalScope Additionally, this fixes the following: * IDBEnvironment removed because it's officially obsolete and "although it may still work in some browsers, its use is discouraged since it could be removed at any time". * indexedDB now wrapped in js.UndefOr because it's not always available * indexedDB added to WorkerGlobalScope * caches return type changed from js.Any to js.UndefOr[CacheStorage] * caches added to Window * CacheStorage moved into experiment.cachestorage as it's available from Window too * Add missing methods to window and web-worker scopes: * crossOriginIsolated * isSecureContext * origin Ref: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope --- .../cachestorage/CacheStorage.scala | 69 +++++++++++++++++ .../serviceworkers/ServiceWorkers.scala | 75 +------------------ src/main/scala/org/scalajs/dom/idb.scala | 1 - src/main/scala/org/scalajs/dom/raw/Idb.scala | 19 ----- .../org/scalajs/dom/raw/WebWorkers.scala | 12 +-- .../dom/raw/WindowOrWorkerGlobalScope.scala | 57 ++++++++++++++ src/main/scala/org/scalajs/dom/raw/lib.scala | 2 +- 7 files changed, 130 insertions(+), 105 deletions(-) create mode 100644 src/main/scala/org/scalajs/dom/experimental/cachestorage/CacheStorage.scala create mode 100644 src/main/scala/org/scalajs/dom/raw/WindowOrWorkerGlobalScope.scala diff --git a/src/main/scala/org/scalajs/dom/experimental/cachestorage/CacheStorage.scala b/src/main/scala/org/scalajs/dom/experimental/cachestorage/CacheStorage.scala new file mode 100644 index 000000000..7b83b790e --- /dev/null +++ b/src/main/scala/org/scalajs/dom/experimental/cachestorage/CacheStorage.scala @@ -0,0 +1,69 @@ +package org.scalajs.dom.experimental.cachestorage + +import scala.scalajs.js +import scala.scalajs.js.annotation._ +import org.scalajs.dom.experimental._ + +/** + * See [[https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/#cache ¶5.4 cache]] + * of ServiceWorker whatwg spec. + */ +@js.native +trait CacheQueryOptions extends js.Object { + var ignoreSearch: Boolean = js.native // false + + var ignoreMethod: Boolean = js.native // false + + var ignoreVary: Boolean = js.native //false + + var cacheName: String = js.native +} + +/** + * See [[https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/#cache-storage ¶5.5 cache]] + * of ServiceWorker whatwg spec. + */ +@js.native +trait CacheStorage extends js.Object { + def `match`(request: RequestInfo, + options: CacheQueryOptions = js.native): js.Promise[js.Any] = js.native + + def has(cacheName: String): js.Promise[Boolean] = js.native + + def open(cacheName: String): js.Promise[Cache] = js.native + + def delete(cacheName: String): js.Promise[Boolean] = js.native + + def keys(): js.Promise[js.Array[String]] = js.native +} + +/** + * See [[https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/#cache ¶5.4 cache]] + * of ServiceWorker whatwg spec. + */ +@js.native +@JSGlobal +abstract class Cache extends js.Object { + def `match`(request: RequestInfo, + options: js.UndefOr[ + CacheQueryOptions] = js.native): js.Promise[js.UndefOr[Response]] = js.native + + def matchAll(request: RequestInfo = js.native, + options: js.UndefOr[ + CacheQueryOptions] = js.native): js.Promise[js.Array[Response]] = js.native + + def add(request: RequestInfo): js.Promise[Unit] = js.native + + def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] = js.native + + def put(request: RequestInfo, + response: Response): js.Promise[Unit] = js.native + + def delete(request: RequestInfo, + options: js.UndefOr[ + CacheQueryOptions] = js.native): js.Promise[Boolean] = js.native + + def keys(request: js.UndefOr[RequestInfo] = js.native, + options: js.UndefOr[ + CacheQueryOptions] = js.native): js.Promise[js.Array[Request]] +} diff --git a/src/main/scala/org/scalajs/dom/experimental/serviceworkers/ServiceWorkers.scala b/src/main/scala/org/scalajs/dom/experimental/serviceworkers/ServiceWorkers.scala index 12ab9110c..ee4edb71f 100644 --- a/src/main/scala/org/scalajs/dom/experimental/serviceworkers/ServiceWorkers.scala +++ b/src/main/scala/org/scalajs/dom/experimental/serviceworkers/ServiceWorkers.scala @@ -7,10 +7,10 @@ import scala.scalajs.js.| import org.scalajs.dom.experimental.{ Notification, NotificationOptions, Request, RequestInfo, Response, Sequence } -import org.scalajs.dom.raw.{WorkerGlobalScope, ErrorEvent} +import org.scalajs.dom.experimental.cachestorage._ +import org.scalajs.dom.raw.{ErrorEvent, EventInit, WorkerGlobalScope} import org.scalajs.dom.webgl.RenderingContext import org.scalajs.dom.{Event, EventTarget, MessageEvent, MessagePort} -import org.scalajs.dom.raw.EventInit @js.native sealed trait FrameType extends js.Any @@ -608,70 +608,6 @@ trait Clients extends js.Object { def claim(): js.Promise[Unit] = js.native } -/** - * See [[https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/#cache ¶5.4 cache]] - * of ServiceWorker whatwg spec. - */ -@js.native -@JSGlobal -abstract class Cache extends js.Object { - def `match`(request: RequestInfo, - options: js.UndefOr[ - CacheQueryOptions] = js.native): js.Promise[js.UndefOr[Response]] = js.native - - def matchAll(request: RequestInfo = js.native, - options: js.UndefOr[ - CacheQueryOptions] = js.native): js.Promise[js.Array[Response]] = js.native - - def add(request: RequestInfo): js.Promise[Unit] = js.native - - def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] = js.native - - def put(request: RequestInfo, - response: Response): js.Promise[Unit] = js.native - - def delete(request: RequestInfo, - options: js.UndefOr[ - CacheQueryOptions] = js.native): js.Promise[Boolean] = js.native - - def keys(request: js.UndefOr[RequestInfo] = js.native, - options: js.UndefOr[ - CacheQueryOptions] = js.native): js.Promise[js.Array[Request]] -} - -/** - * See [[https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/#cache ¶5.4 cache]] - * of ServiceWorker whatwg spec. - */ -@js.native -trait CacheQueryOptions extends js.Object { - var ignoreSearch: Boolean = js.native // false - - var ignoreMethod: Boolean = js.native // false - - var ignoreVary: Boolean = js.native //false - - var cacheName: String = js.native -} - -/** - * See [[https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/#cache-storage ¶5.5 cache]] - * of ServiceWorker whatwg spec. - */ -@js.native -trait CacheStorage extends js.Object { - def `match`(request: RequestInfo, - options: CacheQueryOptions = js.native): js.Promise[js.Any] = js.native - - def has(cacheName: String): js.Promise[Boolean] = js.native - - def open(cacheName: String): js.Promise[Cache] = js.native - - def delete(cacheName: String): js.Promise[Boolean] = js.native - - def keys(): js.Promise[js.Array[String]] = js.native -} - /** * The ServiceWorkerGlobalScope interface of the ServiceWorker API represents * the global execution context of a service worker. @@ -694,13 +630,6 @@ trait CacheStorage extends js.Object { @js.native trait ServiceWorkerGlobalScope extends WorkerGlobalScope { - /** - * Returns the CacheStorage object associated with the service worker. - * - * MDN - */ - override def caches: CacheStorage = js.native - /** * Returns the Clients object associated with the service worker. * diff --git a/src/main/scala/org/scalajs/dom/idb.scala b/src/main/scala/org/scalajs/dom/idb.scala index 4af7329fd..3ebfd42dd 100644 --- a/src/main/scala/org/scalajs/dom/idb.scala +++ b/src/main/scala/org/scalajs/dom/idb.scala @@ -8,7 +8,6 @@ object idb { @inline def Cursor = raw.IDBCursor type CursorWithValue = raw.IDBCursorWithValue type Database = raw.IDBDatabase - type Environment = raw.IDBEnvironment type Factory = raw.IDBFactory type Index = raw.IDBIndex type KeyRange = raw.IDBKeyRange diff --git a/src/main/scala/org/scalajs/dom/raw/Idb.scala b/src/main/scala/org/scalajs/dom/raw/Idb.scala index 750400318..1526be119 100644 --- a/src/main/scala/org/scalajs/dom/raw/Idb.scala +++ b/src/main/scala/org/scalajs/dom/raw/Idb.scala @@ -356,25 +356,6 @@ class IDBCursorWithValue extends IDBCursor { def value: js.Any = js.native } -/** - * The IDBEvironment interface of the IndexedDB API provides asynchronous access - * to a client-side database. It is implemented by window and Worker objects. - * - * MDN - */ -@js.native -trait IDBEnvironment extends js.Object { - - /** - * an IDBRequest object that communicates back to the requesting application - * through events. This design means that any number of requests can be active on any - * database at a time. - * - * MDN - */ - def indexedDB: IDBFactory = js.native -} - /** * The IDBKeyRange interface of the IndexedDB API represents a continuous interval * over some data type that is used for keys. Records can be retrieved from object diff --git a/src/main/scala/org/scalajs/dom/raw/WebWorkers.scala b/src/main/scala/org/scalajs/dom/raw/WebWorkers.scala index cd58e053d..9a941cf12 100644 --- a/src/main/scala/org/scalajs/dom/raw/WebWorkers.scala +++ b/src/main/scala/org/scalajs/dom/raw/WebWorkers.scala @@ -107,17 +107,7 @@ class Worker(stringUrl: String) extends AbstractWorker { * MDN */ @js.native -trait WorkerGlobalScope extends EventTarget { - - /** - * The caches read-only property of the WorkerGlobalScope interface returns - * the CacheStorage object associated with the current worker context. - * This object enables service worker functionality such as storing assets - * for offline use, and generating custom responses to requests. - * - * MDN - */ - def caches: js.Any = js.native +trait WorkerGlobalScope extends EventTarget with WindowOrWorkerGlobalScope { /** * The self read-only property of the WorkerGlobalScope interface returns a diff --git a/src/main/scala/org/scalajs/dom/raw/WindowOrWorkerGlobalScope.scala b/src/main/scala/org/scalajs/dom/raw/WindowOrWorkerGlobalScope.scala new file mode 100644 index 000000000..38e17219c --- /dev/null +++ b/src/main/scala/org/scalajs/dom/raw/WindowOrWorkerGlobalScope.scala @@ -0,0 +1,57 @@ +package org.scalajs.dom.raw + +import scala.scalajs.js +import scala.scalajs.js.annotation._ +import org.scalajs.dom.experimental.cachestorage.CacheStorage + +/** + * The WindowOrWorkerGlobalScope mixin describes several features common to the + * Window and WorkerGlobalScope interfaces. + * + * Note: WindowOrWorkerGlobalScope is a mixin and not an interface; you can't + * actually create an object of type WindowOrWorkerGlobalScope. + * + * MDN + */ +@js.native +trait WindowOrWorkerGlobalScope extends js.Object { + + /** + * Returns the CacheStorage object associated with the current context. + * This object enables functionality such as storing assets for offline use, + * and generating custom responses to requests. + * + * MDN + */ + def caches: js.UndefOr[CacheStorage] = js.native + + /** + * Returns a boolean value that indicates whether a SharedArrayBuffer can be + * sent via a Window.postMessage() call. + * + * MDN + */ + def crossOriginIsolated: Boolean = js.native + + /** + * Provides a mechanism for applications to asynchronously access + * capabilities of indexed databases. + * + * MDN + */ + def indexedDB: js.UndefOr[IDBFactory] = js.native + + /** + * Returns a boolean indicating whether the current context is secure or not. + * + * MDN + */ + def isSecureContext: Boolean = js.native + + /** + * Returns the origin of the global scope, serialized as a string. + * + * MDN + */ + def origin: String = js.native //should be USVString +} diff --git a/src/main/scala/org/scalajs/dom/raw/lib.scala b/src/main/scala/org/scalajs/dom/raw/lib.scala index d19613eef..4b25762a3 100644 --- a/src/main/scala/org/scalajs/dom/raw/lib.scala +++ b/src/main/scala/org/scalajs/dom/raw/lib.scala @@ -2083,7 +2083,7 @@ trait WindowSessionStorage extends js.Object { @JSGlobal class Window extends EventTarget with WindowLocalStorage with WindowSessionStorage - with WindowTimers with WindowBase64 with IDBEnvironment + with WindowTimers with WindowBase64 with WindowOrWorkerGlobalScope with WindowConsole { var ondragend: js.Function1[DragEvent, _] = js.native From 2f21022434f7be641c58aeea6291cc30afaac670 Mon Sep 17 00:00:00 2001 From: David Barri Date: Tue, 15 Dec 2020 12:57:56 +1100 Subject: [PATCH 2/6] Merge exoego's WindowOrWorkerGlobalScope PR #416 commit c794a672563e010253508397aaf47e36ae3bf2a3 Author: exoego Date: Thu Jun 25 12:21:53 2020 +0900 Add WindowOrWorkerGlobalScope --- .../org/scalajs/dom/raw/OffscreenCanvas.scala | 58 +++++++++++++ .../dom/raw/WindowOrWorkerGlobalScope.scala | 87 ++++++++++++++++++- src/main/scala/org/scalajs/dom/raw/lib.scala | 3 +- 3 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 src/main/scala/org/scalajs/dom/raw/OffscreenCanvas.scala diff --git a/src/main/scala/org/scalajs/dom/raw/OffscreenCanvas.scala b/src/main/scala/org/scalajs/dom/raw/OffscreenCanvas.scala new file mode 100644 index 000000000..187b85c8e --- /dev/null +++ b/src/main/scala/org/scalajs/dom/raw/OffscreenCanvas.scala @@ -0,0 +1,58 @@ +package org.scalajs.dom.raw + +import scala.scalajs.js +import scala.scalajs.js.annotation.JSGlobal + +/** + * The OffscreenCanvas interface provides a canvas that can be rendered off + * screen. + * It is available in both the window and worker contexts. + * + * MDN + */ +@js.native +@JSGlobal +class OffscreenCanvas(var width: Double, var height: Double) + extends js.Object { + + /** + * Returns a rendering context for the offscreen canvas. + * + * MDN + */ + def getContext(contextType: String): js.Dynamic = js.native + def getContext(contextType: String, + contextAttributes: WebGLContextAttributes): js.Dynamic = js.native + def getContext(contextType: String, + contextAttributes: TwoDContextAttributes): js.Dynamic = js.native + + /** + * Creates a Blob object representing the image contained in the canvas. + * + * MDN + */ + def convertToBlob( + options: ConvertToBlobOptions = ???): js.Promise[Blob] = js.native + + /** + * Creates an ImageBitmap object from the most recently rendered image of + * the OffscreenCanvas. + * + * MDN + */ + def transferToImageBitmap(): ImageBitmap = js.native +} + +trait TwoDContextAttributes extends js.Object { + var alpha: js.UndefOr[Boolean] = js.undefined + + var willReadFrequently: js.UndefOr[Boolean] = js.undefined + + var storage: js.UndefOr[String] = js.undefined +} + +trait ConvertToBlobOptions extends js.Object { + var `type`: js.UndefOr[String] = js.undefined + + var quality: js.UndefOr[Double] = js.undefined +} diff --git a/src/main/scala/org/scalajs/dom/raw/WindowOrWorkerGlobalScope.scala b/src/main/scala/org/scalajs/dom/raw/WindowOrWorkerGlobalScope.scala index 38e17219c..3584b4282 100644 --- a/src/main/scala/org/scalajs/dom/raw/WindowOrWorkerGlobalScope.scala +++ b/src/main/scala/org/scalajs/dom/raw/WindowOrWorkerGlobalScope.scala @@ -1,8 +1,10 @@ package org.scalajs.dom.raw import scala.scalajs.js +import scala.scalajs.js.| import scala.scalajs.js.annotation._ import org.scalajs.dom.experimental.cachestorage.CacheStorage +import org.scalajs.dom.experimental.{RequestInfo, RequestInit, Response} /** * The WindowOrWorkerGlobalScope mixin describes several features common to the @@ -14,7 +16,8 @@ import org.scalajs.dom.experimental.cachestorage.CacheStorage * MDN */ @js.native -trait WindowOrWorkerGlobalScope extends js.Object { +trait WindowOrWorkerGlobalScope extends WindowBase64 with WindowTimers { + import WindowOrWorkerGlobalScope._ /** * Returns the CacheStorage object associated with the current context. @@ -54,4 +57,86 @@ trait WindowOrWorkerGlobalScope extends js.Object { * MDN */ def origin: String = js.native //should be USVString + + /** + * Starts the process of fetching a resource from the network. + * + * MDN + */ + def fetch(info: RequestInfo, + init: RequestInit = null): js.Promise[Response] = js.native + + /** + * Enqueues a microtask—a short function to be executed after execution of + * the JavaScript code completes and control isn't being returned to a + * JavaScript caller, but before handling callbacks and other tasks. + * + * This lets your code run without interfering with other, possibly higher + * priority, code, but before the browser runtime regains control, + * potentially depending upon the work you need to complete. + * + * MDN + */ + def queueMicrotask(function: js.Function0[Any]): Unit = js.native + + /** + * Accepts a variety of different image sources, and returns a Promise which + * resolves to an ImageBitmap. + * Optionally the source is cropped to the rectangle of pixels originating at + * (sx, sy) with width sw, and height sh. + * + * MDN + */ + def createImageBitmap( + image: CreateImageBitmapInput): js.Promise[ImageBitmap] = js.native + + def createImageBitmap(image: CreateImageBitmapInput, + options: CreateImageBitmapOptions): js.Promise[ImageBitmap] = js.native + + def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, + sw: Double, sh: Double): js.Promise[ImageBitmap] = js.native + + def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, + sw: Double, sh: Double, + options: CreateImageBitmapOptions): js.Promise[ImageBitmap] = js.native +} + +/** + * The ImageBitmap interface represents a bitmap image which can be drawn to a + * <canvas> without undue latency. + * It can be created from a variety of source objects using the + * createImageBitmap() factory method. + * ImageBitmap provides an asynchronous and resource efficient pathway to + * prepare textures for rendering in WebGL. + * + * MDN + */ +@js.native +trait ImageBitmap extends js.Object { + + /** + * An unsigned long representing the height, in CSS pixels, of the ImageData. + */ + def height: Double = js.native + + /** + * An unsigned long representing the width, in CSS pixels, of the ImageData. + */ + def width: Double = js.native +} + +trait CreateImageBitmapOptions extends js.Object { + var imageOrientation: js.UndefOr[String] = js.undefined + var premultiplyAlpha: js.UndefOr[String] = js.undefined + var colorSpaceConversion: js.UndefOr[String] = js.undefined + var resizeWidth: js.UndefOr[Double] = js.undefined + var resizeHeight: js.UndefOr[Double] = js.undefined + var resizeQuality: js.UndefOr[String] = js.undefined +} + +object WindowOrWorkerGlobalScope { + + type CreateImageBitmapInput = + HTMLImageElement | SVGImageElement | HTMLVideoElement | HTMLCanvasElement | HTMLCanvasElement | Blob | ImageData | ImageBitmap | OffscreenCanvas + } diff --git a/src/main/scala/org/scalajs/dom/raw/lib.scala b/src/main/scala/org/scalajs/dom/raw/lib.scala index 4b25762a3..48edfec3c 100644 --- a/src/main/scala/org/scalajs/dom/raw/lib.scala +++ b/src/main/scala/org/scalajs/dom/raw/lib.scala @@ -2083,8 +2083,7 @@ trait WindowSessionStorage extends js.Object { @JSGlobal class Window extends EventTarget with WindowLocalStorage with WindowSessionStorage - with WindowTimers with WindowBase64 with WindowOrWorkerGlobalScope - with WindowConsole { + with WindowOrWorkerGlobalScope with WindowConsole { var ondragend: js.Function1[DragEvent, _] = js.native /** From db424e92fcd9d2e60e31f4f5270b9ed6a07a543d Mon Sep 17 00:00:00 2001 From: David Barri Date: Fri, 20 Aug 2021 13:17:36 +1000 Subject: [PATCH 3/6] Run `sbt prePR` --- api-reports/2_12.txt | 155 ++++++++++++++++++++++++++++++++++++------- api-reports/2_13.txt | 155 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 262 insertions(+), 48 deletions(-) diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index ad5e83f50..46173306b 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -480,6 +480,22 @@ experimental/beacon/package[SO] implicit def toBeaconNavigator(n: Navigator): Be experimental/beacon/package[SO] implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator experimental/beacon/package.BeaconNavigator[JT] def sendBeacon(url: String, data: BodyInit = null): Boolean experimental/beacon/package.BeaconWorkerNavigator[JT] def sendBeacon(url: String, data: BodyInit = null): Boolean +experimental/cachestorage/Cache[JC] def add(request: RequestInfo): js.Promise[Unit] +experimental/cachestorage/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] +experimental/cachestorage/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean] +experimental/cachestorage/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]] +experimental/cachestorage/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]] +experimental/cachestorage/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]] +experimental/cachestorage/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit] +experimental/cachestorage/CacheQueryOptions[JT] var cacheName: String +experimental/cachestorage/CacheQueryOptions[JT] var ignoreMethod: Boolean +experimental/cachestorage/CacheQueryOptions[JT] var ignoreSearch: Boolean +experimental/cachestorage/CacheQueryOptions[JT] var ignoreVary: Boolean +experimental/cachestorage/CacheStorage[JT] def delete(cacheName: String): js.Promise[Boolean] +experimental/cachestorage/CacheStorage[JT] def has(cacheName: String): js.Promise[Boolean] +experimental/cachestorage/CacheStorage[JT] def keys(): js.Promise[js.Array[String]] +experimental/cachestorage/CacheStorage[JT] def `match`(request: RequestInfo, options: CacheQueryOptions?): js.Promise[js.Any] +experimental/cachestorage/CacheStorage[JT] def open(cacheName: String): js.Promise[Cache] experimental/deviceorientation/DeviceAcceleration[JT] val x: Double experimental/deviceorientation/DeviceAcceleration[JT] val y: Double experimental/deviceorientation/DeviceAcceleration[JT] val z: Double @@ -931,22 +947,6 @@ experimental/push/package[SO] implicit def pushServiceWorkerRegistration(swr: Se experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpush: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpushsubscriptionchange: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerRegistration[JT] val pushManager: PushManager -experimental/serviceworkers/Cache[JC] def add(request: RequestInfo): js.Promise[Unit] -experimental/serviceworkers/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] -experimental/serviceworkers/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean] -experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]] -experimental/serviceworkers/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]] -experimental/serviceworkers/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]] -experimental/serviceworkers/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit] -experimental/serviceworkers/CacheQueryOptions[JT] var cacheName: String -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreMethod: Boolean -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreSearch: Boolean -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreVary: Boolean -experimental/serviceworkers/CacheStorage[JT] def delete(cacheName: String): js.Promise[Boolean] -experimental/serviceworkers/CacheStorage[JT] def has(cacheName: String): js.Promise[Boolean] -experimental/serviceworkers/CacheStorage[JT] def keys(): js.Promise[js.Array[String]] -experimental/serviceworkers/CacheStorage[JT] def `match`(request: RequestInfo, options: CacheQueryOptions?): js.Promise[js.Any] -experimental/serviceworkers/CacheStorage[JT] def open(cacheName: String): js.Promise[Cache] experimental/serviceworkers/CanvasProxy[JT] def setContext(context: RenderingContext): Unit experimental/serviceworkers/Client[JT] def frameType: FrameType experimental/serviceworkers/Client[JT] def id: String @@ -1018,12 +1018,23 @@ experimental/serviceworkers/ServiceWorkerContainer[ST] def register(scriptURL: S experimental/serviceworkers/ServiceWorkerGlobalScope[JO] def self: ServiceWorkerGlobalScope experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit -experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def caches: js.Any -experimental/serviceworkers/ServiceWorkerGlobalScope[JT] override def caches: CacheStorage +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def atob(encodedString: String): String +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def btoa(rawString: String): String +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def caches: js.UndefOr[CacheStorage] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def clearInterval(handle: Int): Unit +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def clearTimeout(handle: Int): Unit experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def clients: Clients experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def close(): Unit +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def crossOriginIsolated: Boolean experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def dispatchEvent(evt: Event): Boolean +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def importScripts(urls: js.Array[String]): Unit +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def indexedDB: js.UndefOr[IDBFactory] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def isSecureContext: Boolean experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def location: WorkerLocation experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def navigator: WorkerNavigator experimental/serviceworkers/ServiceWorkerGlobalScope[JT] var onError: js.Function1[ErrorEvent, _] @@ -1034,10 +1045,14 @@ experimental/serviceworkers/ServiceWorkerGlobalScope[JT] var onlanguagechange: j experimental/serviceworkers/ServiceWorkerGlobalScope[JT] var onmessage: js.Function1[MessageEvent, _] experimental/serviceworkers/ServiceWorkerGlobalScope[JT] var onoffline: js.Function1[Event, _] experimental/serviceworkers/ServiceWorkerGlobalScope[JT] var ononline: js.Function1[Event, _] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def origin: String +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def queueMicrotask(function: js.Function0[Any]): Unit experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def registration: ServiceWorkerRegistration experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def self: this.type +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def setInterval(handler: js.Function0[Any], timeout: Double): Int +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def setTimeout(handler: js.Function0[Any], timeout: Double): Int experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def skipWaiting(): js.Promise[Unit] experimental/serviceworkers/ServiceWorkerMessageEventInit[JT] var bubbles: js.UndefOr[Boolean] experimental/serviceworkers/ServiceWorkerMessageEventInit[JT] var cancelable: js.UndefOr[Boolean] @@ -1085,10 +1100,22 @@ experimental/sharedworkers/SharedWorkerGlobalScope[JO] def self: SharedWorkerGlo experimental/sharedworkers/SharedWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def applicationCache: ApplicationCache -experimental/sharedworkers/SharedWorkerGlobalScope[JT] def caches: js.Any +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def atob(encodedString: String): String +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def btoa(rawString: String): String +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def caches: js.UndefOr[CacheStorage] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def clearInterval(handle: Int): Unit +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def clearTimeout(handle: Int): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def close(): Unit +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def crossOriginIsolated: Boolean experimental/sharedworkers/SharedWorkerGlobalScope[JT] def dispatchEvent(evt: Event): Boolean +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] experimental/sharedworkers/SharedWorkerGlobalScope[JT] def importScripts(urls: js.Array[String]): Unit +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def indexedDB: js.UndefOr[IDBFactory] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def isSecureContext: Boolean experimental/sharedworkers/SharedWorkerGlobalScope[JT] def location: WorkerLocation experimental/sharedworkers/SharedWorkerGlobalScope[JT] def name: String experimental/sharedworkers/SharedWorkerGlobalScope[JT] def navigator: WorkerNavigator @@ -1097,9 +1124,13 @@ experimental/sharedworkers/SharedWorkerGlobalScope[JT] var onconnect: js.Functio experimental/sharedworkers/SharedWorkerGlobalScope[JT] var onlanguagechange: js.Function1[Event, _] experimental/sharedworkers/SharedWorkerGlobalScope[JT] var onoffline: js.Function1[Event, _] experimental/sharedworkers/SharedWorkerGlobalScope[JT] var ononline: js.Function1[Event, _] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def origin: String +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def queueMicrotask(function: js.Function0[Any]): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def self: this.type +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def setInterval(handler: js.Function0[Any], timeout: Double): Int +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def setTimeout(handler: js.Function0[Any], timeout: Double): Int experimental/storage/package[SO] def estimate(): js.Promise[StorageEstimate] experimental/storage/package[SO] def persist(): js.Promise[Boolean] experimental/storage/package[SO] def persisted(): js.Promise[Boolean] @@ -2045,7 +2076,6 @@ html[SO] def Media = raw.HTMLMediaElement idb[SO] type Cursor = raw.IDBCursor idb[SO] type CursorWithValue = raw.IDBCursorWithValue idb[SO] type Database = raw.IDBDatabase -idb[SO] type Environment = raw.IDBEnvironment idb[SO] type Factory = raw.IDBFactory idb[SO] type Index = raw.IDBIndex idb[SO] type KeyRange = raw.IDBKeyRange @@ -3262,6 +3292,8 @@ raw/Console[JT] def time(label: String): Unit raw/Console[JT] def timeEnd(label: String): Unit raw/Console[JT] def trace(): Unit raw/Console[JT] def warn(message: Any, optionalParams: Any*): Unit +raw/ConvertToBlobOptions[JT] var quality: js.UndefOr[Double] +raw/ConvertToBlobOptions[JT] var `type`: js.UndefOr[String] raw/ConvolverNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/ConvolverNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/ConvolverNode[JT] var buffer: AudioBuffer @@ -3285,6 +3317,12 @@ raw/Coordinates[JT] def heading: Double raw/Coordinates[JT] def latitude: Double raw/Coordinates[JT] def longitude: Double raw/Coordinates[JT] def speed: Double +raw/CreateImageBitmapOptions[JT] var colorSpaceConversion: js.UndefOr[String] +raw/CreateImageBitmapOptions[JT] var imageOrientation: js.UndefOr[String] +raw/CreateImageBitmapOptions[JT] var premultiplyAlpha: js.UndefOr[String] +raw/CreateImageBitmapOptions[JT] var resizeHeight: js.UndefOr[Double] +raw/CreateImageBitmapOptions[JT] var resizeQuality: js.UndefOr[String] +raw/CreateImageBitmapOptions[JT] var resizeWidth: js.UndefOr[Double] raw/CustomEvent[JC] def bubbles: Boolean raw/CustomEvent[JC] def cancelBubble: Boolean raw/CustomEvent[JC] def cancelable: Boolean @@ -3376,10 +3414,22 @@ raw/DataTransfer[JT] def types: js.Array[String] raw/DedicatedWorkerGlobalScope[JO] def self: DedicatedWorkerGlobalScope raw/DedicatedWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/DedicatedWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit -raw/DedicatedWorkerGlobalScope[JT] def caches: js.Any +raw/DedicatedWorkerGlobalScope[JT] def atob(encodedString: String): String +raw/DedicatedWorkerGlobalScope[JT] def btoa(rawString: String): String +raw/DedicatedWorkerGlobalScope[JT] def caches: js.UndefOr[CacheStorage] +raw/DedicatedWorkerGlobalScope[JT] def clearInterval(handle: Int): Unit +raw/DedicatedWorkerGlobalScope[JT] def clearTimeout(handle: Int): Unit raw/DedicatedWorkerGlobalScope[JT] def close(): Unit +raw/DedicatedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +raw/DedicatedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/DedicatedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +raw/DedicatedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/DedicatedWorkerGlobalScope[JT] def crossOriginIsolated: Boolean raw/DedicatedWorkerGlobalScope[JT] def dispatchEvent(evt: Event): Boolean +raw/DedicatedWorkerGlobalScope[JT] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] raw/DedicatedWorkerGlobalScope[JT] def importScripts(urls: js.Array[String]): Unit +raw/DedicatedWorkerGlobalScope[JT] def indexedDB: js.UndefOr[IDBFactory] +raw/DedicatedWorkerGlobalScope[JT] def isSecureContext: Boolean raw/DedicatedWorkerGlobalScope[JT] def location: WorkerLocation raw/DedicatedWorkerGlobalScope[JT] def navigator: WorkerNavigator raw/DedicatedWorkerGlobalScope[JT] var onError: js.Function1[ErrorEvent, _] @@ -3387,10 +3437,14 @@ raw/DedicatedWorkerGlobalScope[JT] var onlanguagechange: js.Function1[Event, _] raw/DedicatedWorkerGlobalScope[JT] var onmessage: js.Function1[MessageEvent, _] raw/DedicatedWorkerGlobalScope[JT] var onoffline: js.Function1[Event, _] raw/DedicatedWorkerGlobalScope[JT] var ononline: js.Function1[Event, _] +raw/DedicatedWorkerGlobalScope[JT] def origin: String raw/DedicatedWorkerGlobalScope[JT] def postMessage(aMessage: js.Any, transferList: js.UndefOr[js.Array[Transferable]]?): Unit +raw/DedicatedWorkerGlobalScope[JT] def queueMicrotask(function: js.Function0[Any]): Unit raw/DedicatedWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/DedicatedWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/DedicatedWorkerGlobalScope[JT] def self: this.type +raw/DedicatedWorkerGlobalScope[JT] def setInterval(handler: js.Function0[Any], timeout: Double): Int +raw/DedicatedWorkerGlobalScope[JT] def setTimeout(handler: js.Function0[Any], timeout: Double): Int raw/DelayNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/DelayNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/DelayNode[JT] var channelCount: Int @@ -15313,7 +15367,6 @@ raw/IDBDatabase[JC] def removeEventListener[T <: Event](`type`: String, listener raw/IDBDatabase[JC] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/IDBDatabase[JC] def transaction(storeNames: js.Any, mode: String?): IDBTransaction raw/IDBDatabase[JC] def version: Int -raw/IDBEnvironment[JT] def indexedDB: IDBFactory raw/IDBFactory[JC] def cmp(first: js.Any, second: js.Any): Int raw/IDBFactory[JC] def deleteDatabase(name: String): IDBOpenDBRequest raw/IDBFactory[JC] def open(name: String): IDBOpenDBRequest @@ -15413,6 +15466,8 @@ raw/IDBVersionChangeEventInit[JT] var composed: js.UndefOr[Boolean] raw/IDBVersionChangeEventInit[JT] var newVersion: js.UndefOr[Integer] raw/IDBVersionChangeEventInit[JT] var oldVersion: js.UndefOr[Int] raw/IDBVersionChangeEventInit[JT] var scoped: js.UndefOr[Boolean] +raw/ImageBitmap[JT] def height: Double +raw/ImageBitmap[JT] def width: Double raw/ImageData[JC] def data: js.Array[Int] raw/ImageData[JC] def height: Int raw/ImageData[JC] def width: Int @@ -15810,6 +15865,11 @@ raw/OfflineAudioContext[JC] val sampleRate: Double raw/OfflineAudioContext[JC] def startRendering(): js.Promise[AudioBuffer] raw/OfflineAudioContext[JC] def state: String raw/OfflineAudioContext[JC] def suspend(): js.Promise[Unit] +raw/OffscreenCanvas[JC] def convertToBlob(options: ConvertToBlobOptions = ???): js.Promise[Blob] +raw/OffscreenCanvas[JC] def getContext(contextType: String): js.Dynamic +raw/OffscreenCanvas[JC] def getContext(contextType: String, contextAttributes: TwoDContextAttributes): js.Dynamic +raw/OffscreenCanvas[JC] def getContext(contextType: String, contextAttributes: WebGLContextAttributes): js.Dynamic +raw/OffscreenCanvas[JC] def transferToImageBitmap(): ImageBitmap raw/OscillatorNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/OscillatorNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/OscillatorNode[JT] var channelCount: Int @@ -23862,6 +23922,9 @@ raw/TreeWalker[JC] def previousNode(): Node raw/TreeWalker[JC] def previousSibling(): Node raw/TreeWalker[JC] def root: Node raw/TreeWalker[JC] def whatToShow: Int +raw/TwoDContextAttributes[JT] var alpha: js.UndefOr[Boolean] +raw/TwoDContextAttributes[JT] var storage: js.UndefOr[String] +raw/TwoDContextAttributes[JT] var willReadFrequently: js.UndefOr[Boolean] raw/UIEvent[JC] def bubbles: Boolean raw/UIEvent[JC] def cancelBubble: Boolean raw/UIEvent[JC] def cancelable: Boolean @@ -24484,15 +24547,22 @@ raw/Window[JC] def applicationCache: ApplicationCache raw/Window[JC] def atob(encodedString: String): String raw/Window[JC] def blur(): Unit raw/Window[JC] def btoa(rawString: String): String +raw/Window[JC] def caches: js.UndefOr[CacheStorage] raw/Window[JC] def cancelAnimationFrame(handle: Int): Unit raw/Window[JC] def clearInterval(handle: Int): Unit raw/Window[JC] def clearTimeout(handle: Int): Unit raw/Window[JC] def close(): Unit raw/Window[JC] def confirm(message: String?): Boolean raw/Window[JC] var console: Console +raw/Window[JC] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +raw/Window[JC] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/Window[JC] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +raw/Window[JC] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/Window[JC] def crossOriginIsolated: Boolean raw/Window[JC] def devicePixelRatio: Double raw/Window[JC] def dispatchEvent(evt: Event): Boolean raw/Window[JC] def document: HTMLDocument +raw/Window[JC] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] raw/Window[JC] def focus(): Unit raw/Window[JC] def frameElement: Element raw/Window[JC] def frames: Window @@ -24500,9 +24570,10 @@ raw/Window[JC] def getComputedStyle(elt: Element, pseudoElt: String?): CSSStyleD raw/Window[JC] def getSelection(): Selection raw/Window[JC] var gotpointercapture: js.Function1[PointerEvent, _] raw/Window[JC] def history: History -raw/Window[JC] def indexedDB: IDBFactory +raw/Window[JC] def indexedDB: js.UndefOr[IDBFactory] raw/Window[JC] def innerHeight: Double raw/Window[JC] def innerWidth: Double +raw/Window[JC] def isSecureContext: Boolean raw/Window[JC] def length: Int raw/Window[JC] def localStorage: Storage raw/Window[JC] var location: Location @@ -24587,6 +24658,7 @@ raw/Window[JC] var onwaiting: js.Function1[Event, _] raw/Window[JC] var onwheel: js.Function1[WheelEvent, _] raw/Window[JC] def open(url: String?, target: String?, features: String?, replace: Boolean?): Window raw/Window[JC] var opener: Window +raw/Window[JC] def origin: String raw/Window[JC] def outerHeight: Int raw/Window[JC] def outerWidth: Int raw/Window[JC] def pageXOffset: Double @@ -24597,6 +24669,7 @@ raw/Window[JC] def postMessage(message: js.Any, targetOrigin: String, transfer: raw/Window[JC] def print(): Unit raw/Window[JC] def prompt(): String raw/Window[JC] def prompt(message: String, default: String?): String +raw/Window[JC] def queueMicrotask(function: js.Function0[Any]): Unit raw/Window[JC] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/Window[JC] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/Window[JC] def requestAnimationFrame(callback: js.Function1[Double, _]): Int @@ -24622,6 +24695,24 @@ raw/WindowBase64[JT] def atob(encodedString: String): String raw/WindowBase64[JT] def btoa(rawString: String): String raw/WindowConsole[JT] var console: Console raw/WindowLocalStorage[JT] def localStorage: Storage +raw/WindowOrWorkerGlobalScope[JT] def atob(encodedString: String): String +raw/WindowOrWorkerGlobalScope[JT] def btoa(rawString: String): String +raw/WindowOrWorkerGlobalScope[JT] def caches: js.UndefOr[CacheStorage] +raw/WindowOrWorkerGlobalScope[JT] def clearInterval(handle: Int): Unit +raw/WindowOrWorkerGlobalScope[JT] def clearTimeout(handle: Int): Unit +raw/WindowOrWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +raw/WindowOrWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/WindowOrWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +raw/WindowOrWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/WindowOrWorkerGlobalScope[JT] def crossOriginIsolated: Boolean +raw/WindowOrWorkerGlobalScope[JT] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] +raw/WindowOrWorkerGlobalScope[JT] def indexedDB: js.UndefOr[IDBFactory] +raw/WindowOrWorkerGlobalScope[JT] def isSecureContext: Boolean +raw/WindowOrWorkerGlobalScope[JT] def origin: String +raw/WindowOrWorkerGlobalScope[JT] def queueMicrotask(function: js.Function0[Any]): Unit +raw/WindowOrWorkerGlobalScope[JT] def setInterval(handler: js.Function0[Any], timeout: Double): Int +raw/WindowOrWorkerGlobalScope[JT] def setTimeout(handler: js.Function0[Any], timeout: Double): Int +raw/WindowOrWorkerGlobalScope[SO] type CreateImageBitmapInput = HTMLImageElement | SVGImageElement | HTMLVideoElement | HTMLCanvasElement | HTMLCanvasElement | Blob | ImageData | ImageBitmap | OffscreenCanvas raw/WindowSessionStorage[JT] def sessionStorage: Storage raw/WindowTimers[JT] def clearInterval(handle: Int): Unit raw/WindowTimers[JT] def clearTimeout(handle: Int): Unit @@ -24638,19 +24729,35 @@ raw/Worker[JC] def removeEventListener[T <: Event](`type`: String, listener: js. raw/Worker[JC] def terminate(): Unit raw/WorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/WorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit -raw/WorkerGlobalScope[JT] def caches: js.Any +raw/WorkerGlobalScope[JT] def atob(encodedString: String): String +raw/WorkerGlobalScope[JT] def btoa(rawString: String): String +raw/WorkerGlobalScope[JT] def caches: js.UndefOr[CacheStorage] +raw/WorkerGlobalScope[JT] def clearInterval(handle: Int): Unit +raw/WorkerGlobalScope[JT] def clearTimeout(handle: Int): Unit raw/WorkerGlobalScope[JT] def close(): Unit +raw/WorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +raw/WorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/WorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +raw/WorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/WorkerGlobalScope[JT] def crossOriginIsolated: Boolean raw/WorkerGlobalScope[JT] def dispatchEvent(evt: Event): Boolean +raw/WorkerGlobalScope[JT] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] raw/WorkerGlobalScope[JT] def importScripts(urls: js.Array[String]): Unit +raw/WorkerGlobalScope[JT] def indexedDB: js.UndefOr[IDBFactory] +raw/WorkerGlobalScope[JT] def isSecureContext: Boolean raw/WorkerGlobalScope[JT] def location: WorkerLocation raw/WorkerGlobalScope[JT] def navigator: WorkerNavigator raw/WorkerGlobalScope[JT] var onError: js.Function1[ErrorEvent, _] raw/WorkerGlobalScope[JT] var onlanguagechange: js.Function1[Event, _] raw/WorkerGlobalScope[JT] var onoffline: js.Function1[Event, _] raw/WorkerGlobalScope[JT] var ononline: js.Function1[Event, _] +raw/WorkerGlobalScope[JT] def origin: String +raw/WorkerGlobalScope[JT] def queueMicrotask(function: js.Function0[Any]): Unit raw/WorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/WorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/WorkerGlobalScope[JT] def self: this.type +raw/WorkerGlobalScope[JT] def setInterval(handler: js.Function0[Any], timeout: Double): Int +raw/WorkerGlobalScope[JT] def setTimeout(handler: js.Function0[Any], timeout: Double): Int raw/WorkerLocation[JT] def hash: String raw/WorkerLocation[JT] def host: String raw/WorkerLocation[JT] def hostname: String diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index b0b9537ee..a902b566c 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -480,6 +480,22 @@ experimental/beacon/package[SO] implicit def toBeaconNavigator(n: Navigator): Be experimental/beacon/package[SO] implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator experimental/beacon/package.BeaconNavigator[JT] def sendBeacon(url: String, data: BodyInit = null): Boolean experimental/beacon/package.BeaconWorkerNavigator[JT] def sendBeacon(url: String, data: BodyInit = null): Boolean +experimental/cachestorage/Cache[JC] def add(request: RequestInfo): js.Promise[Unit] +experimental/cachestorage/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] +experimental/cachestorage/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean] +experimental/cachestorage/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]] +experimental/cachestorage/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]] +experimental/cachestorage/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]] +experimental/cachestorage/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit] +experimental/cachestorage/CacheQueryOptions[JT] var cacheName: String +experimental/cachestorage/CacheQueryOptions[JT] var ignoreMethod: Boolean +experimental/cachestorage/CacheQueryOptions[JT] var ignoreSearch: Boolean +experimental/cachestorage/CacheQueryOptions[JT] var ignoreVary: Boolean +experimental/cachestorage/CacheStorage[JT] def delete(cacheName: String): js.Promise[Boolean] +experimental/cachestorage/CacheStorage[JT] def has(cacheName: String): js.Promise[Boolean] +experimental/cachestorage/CacheStorage[JT] def keys(): js.Promise[js.Array[String]] +experimental/cachestorage/CacheStorage[JT] def `match`(request: RequestInfo, options: CacheQueryOptions?): js.Promise[js.Any] +experimental/cachestorage/CacheStorage[JT] def open(cacheName: String): js.Promise[Cache] experimental/deviceorientation/DeviceAcceleration[JT] val x: Double experimental/deviceorientation/DeviceAcceleration[JT] val y: Double experimental/deviceorientation/DeviceAcceleration[JT] val z: Double @@ -931,22 +947,6 @@ experimental/push/package[SO] implicit def pushServiceWorkerRegistration(swr: Se experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpush: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpushsubscriptionchange: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerRegistration[JT] val pushManager: PushManager -experimental/serviceworkers/Cache[JC] def add(request: RequestInfo): js.Promise[Unit] -experimental/serviceworkers/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] -experimental/serviceworkers/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean] -experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]] -experimental/serviceworkers/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]] -experimental/serviceworkers/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]] -experimental/serviceworkers/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit] -experimental/serviceworkers/CacheQueryOptions[JT] var cacheName: String -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreMethod: Boolean -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreSearch: Boolean -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreVary: Boolean -experimental/serviceworkers/CacheStorage[JT] def delete(cacheName: String): js.Promise[Boolean] -experimental/serviceworkers/CacheStorage[JT] def has(cacheName: String): js.Promise[Boolean] -experimental/serviceworkers/CacheStorage[JT] def keys(): js.Promise[js.Array[String]] -experimental/serviceworkers/CacheStorage[JT] def `match`(request: RequestInfo, options: CacheQueryOptions?): js.Promise[js.Any] -experimental/serviceworkers/CacheStorage[JT] def open(cacheName: String): js.Promise[Cache] experimental/serviceworkers/CanvasProxy[JT] def setContext(context: RenderingContext): Unit experimental/serviceworkers/Client[JT] def frameType: FrameType experimental/serviceworkers/Client[JT] def id: String @@ -1018,12 +1018,23 @@ experimental/serviceworkers/ServiceWorkerContainer[ST] def register(scriptURL: S experimental/serviceworkers/ServiceWorkerGlobalScope[JO] def self: ServiceWorkerGlobalScope experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit -experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def caches: js.Any -experimental/serviceworkers/ServiceWorkerGlobalScope[JT] override def caches: CacheStorage +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def atob(encodedString: String): String +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def btoa(rawString: String): String +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def caches: js.UndefOr[CacheStorage] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def clearInterval(handle: Int): Unit +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def clearTimeout(handle: Int): Unit experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def clients: Clients experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def close(): Unit +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def crossOriginIsolated: Boolean experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def dispatchEvent(evt: Event): Boolean +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def importScripts(urls: js.Array[String]): Unit +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def indexedDB: js.UndefOr[IDBFactory] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def isSecureContext: Boolean experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def location: WorkerLocation experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def navigator: WorkerNavigator experimental/serviceworkers/ServiceWorkerGlobalScope[JT] var onError: js.Function1[ErrorEvent, _] @@ -1034,10 +1045,14 @@ experimental/serviceworkers/ServiceWorkerGlobalScope[JT] var onlanguagechange: j experimental/serviceworkers/ServiceWorkerGlobalScope[JT] var onmessage: js.Function1[MessageEvent, _] experimental/serviceworkers/ServiceWorkerGlobalScope[JT] var onoffline: js.Function1[Event, _] experimental/serviceworkers/ServiceWorkerGlobalScope[JT] var ononline: js.Function1[Event, _] +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def origin: String +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def queueMicrotask(function: js.Function0[Any]): Unit experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def registration: ServiceWorkerRegistration experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def self: this.type +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def setInterval(handler: js.Function0[Any], timeout: Double): Int +experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def setTimeout(handler: js.Function0[Any], timeout: Double): Int experimental/serviceworkers/ServiceWorkerGlobalScope[JT] def skipWaiting(): js.Promise[Unit] experimental/serviceworkers/ServiceWorkerMessageEventInit[JT] var bubbles: js.UndefOr[Boolean] experimental/serviceworkers/ServiceWorkerMessageEventInit[JT] var cancelable: js.UndefOr[Boolean] @@ -1085,10 +1100,22 @@ experimental/sharedworkers/SharedWorkerGlobalScope[JO] def self: SharedWorkerGlo experimental/sharedworkers/SharedWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def applicationCache: ApplicationCache -experimental/sharedworkers/SharedWorkerGlobalScope[JT] def caches: js.Any +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def atob(encodedString: String): String +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def btoa(rawString: String): String +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def caches: js.UndefOr[CacheStorage] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def clearInterval(handle: Int): Unit +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def clearTimeout(handle: Int): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def close(): Unit +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def crossOriginIsolated: Boolean experimental/sharedworkers/SharedWorkerGlobalScope[JT] def dispatchEvent(evt: Event): Boolean +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] experimental/sharedworkers/SharedWorkerGlobalScope[JT] def importScripts(urls: js.Array[String]): Unit +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def indexedDB: js.UndefOr[IDBFactory] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def isSecureContext: Boolean experimental/sharedworkers/SharedWorkerGlobalScope[JT] def location: WorkerLocation experimental/sharedworkers/SharedWorkerGlobalScope[JT] def name: String experimental/sharedworkers/SharedWorkerGlobalScope[JT] def navigator: WorkerNavigator @@ -1097,9 +1124,13 @@ experimental/sharedworkers/SharedWorkerGlobalScope[JT] var onconnect: js.Functio experimental/sharedworkers/SharedWorkerGlobalScope[JT] var onlanguagechange: js.Function1[Event, _] experimental/sharedworkers/SharedWorkerGlobalScope[JT] var onoffline: js.Function1[Event, _] experimental/sharedworkers/SharedWorkerGlobalScope[JT] var ononline: js.Function1[Event, _] +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def origin: String +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def queueMicrotask(function: js.Function0[Any]): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit experimental/sharedworkers/SharedWorkerGlobalScope[JT] def self: this.type +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def setInterval(handler: js.Function0[Any], timeout: Double): Int +experimental/sharedworkers/SharedWorkerGlobalScope[JT] def setTimeout(handler: js.Function0[Any], timeout: Double): Int experimental/storage/package[SO] def estimate(): js.Promise[StorageEstimate] experimental/storage/package[SO] def persist(): js.Promise[Boolean] experimental/storage/package[SO] def persisted(): js.Promise[Boolean] @@ -2045,7 +2076,6 @@ html[SO] def Media = raw.HTMLMediaElement idb[SO] type Cursor = raw.IDBCursor idb[SO] type CursorWithValue = raw.IDBCursorWithValue idb[SO] type Database = raw.IDBDatabase -idb[SO] type Environment = raw.IDBEnvironment idb[SO] type Factory = raw.IDBFactory idb[SO] type Index = raw.IDBIndex idb[SO] type KeyRange = raw.IDBKeyRange @@ -3262,6 +3292,8 @@ raw/Console[JT] def time(label: String): Unit raw/Console[JT] def timeEnd(label: String): Unit raw/Console[JT] def trace(): Unit raw/Console[JT] def warn(message: Any, optionalParams: Any*): Unit +raw/ConvertToBlobOptions[JT] var quality: js.UndefOr[Double] +raw/ConvertToBlobOptions[JT] var `type`: js.UndefOr[String] raw/ConvolverNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/ConvolverNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/ConvolverNode[JT] var buffer: AudioBuffer @@ -3285,6 +3317,12 @@ raw/Coordinates[JT] def heading: Double raw/Coordinates[JT] def latitude: Double raw/Coordinates[JT] def longitude: Double raw/Coordinates[JT] def speed: Double +raw/CreateImageBitmapOptions[JT] var colorSpaceConversion: js.UndefOr[String] +raw/CreateImageBitmapOptions[JT] var imageOrientation: js.UndefOr[String] +raw/CreateImageBitmapOptions[JT] var premultiplyAlpha: js.UndefOr[String] +raw/CreateImageBitmapOptions[JT] var resizeHeight: js.UndefOr[Double] +raw/CreateImageBitmapOptions[JT] var resizeQuality: js.UndefOr[String] +raw/CreateImageBitmapOptions[JT] var resizeWidth: js.UndefOr[Double] raw/CustomEvent[JC] def bubbles: Boolean raw/CustomEvent[JC] def cancelBubble: Boolean raw/CustomEvent[JC] def cancelable: Boolean @@ -3376,10 +3414,22 @@ raw/DataTransfer[JT] def types: js.Array[String] raw/DedicatedWorkerGlobalScope[JO] def self: DedicatedWorkerGlobalScope raw/DedicatedWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/DedicatedWorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit -raw/DedicatedWorkerGlobalScope[JT] def caches: js.Any +raw/DedicatedWorkerGlobalScope[JT] def atob(encodedString: String): String +raw/DedicatedWorkerGlobalScope[JT] def btoa(rawString: String): String +raw/DedicatedWorkerGlobalScope[JT] def caches: js.UndefOr[CacheStorage] +raw/DedicatedWorkerGlobalScope[JT] def clearInterval(handle: Int): Unit +raw/DedicatedWorkerGlobalScope[JT] def clearTimeout(handle: Int): Unit raw/DedicatedWorkerGlobalScope[JT] def close(): Unit +raw/DedicatedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +raw/DedicatedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/DedicatedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +raw/DedicatedWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/DedicatedWorkerGlobalScope[JT] def crossOriginIsolated: Boolean raw/DedicatedWorkerGlobalScope[JT] def dispatchEvent(evt: Event): Boolean +raw/DedicatedWorkerGlobalScope[JT] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] raw/DedicatedWorkerGlobalScope[JT] def importScripts(urls: js.Array[String]): Unit +raw/DedicatedWorkerGlobalScope[JT] def indexedDB: js.UndefOr[IDBFactory] +raw/DedicatedWorkerGlobalScope[JT] def isSecureContext: Boolean raw/DedicatedWorkerGlobalScope[JT] def location: WorkerLocation raw/DedicatedWorkerGlobalScope[JT] def navigator: WorkerNavigator raw/DedicatedWorkerGlobalScope[JT] var onError: js.Function1[ErrorEvent, _] @@ -3387,10 +3437,14 @@ raw/DedicatedWorkerGlobalScope[JT] var onlanguagechange: js.Function1[Event, _] raw/DedicatedWorkerGlobalScope[JT] var onmessage: js.Function1[MessageEvent, _] raw/DedicatedWorkerGlobalScope[JT] var onoffline: js.Function1[Event, _] raw/DedicatedWorkerGlobalScope[JT] var ononline: js.Function1[Event, _] +raw/DedicatedWorkerGlobalScope[JT] def origin: String raw/DedicatedWorkerGlobalScope[JT] def postMessage(aMessage: js.Any, transferList: js.UndefOr[js.Array[Transferable]]?): Unit +raw/DedicatedWorkerGlobalScope[JT] def queueMicrotask(function: js.Function0[Any]): Unit raw/DedicatedWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/DedicatedWorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/DedicatedWorkerGlobalScope[JT] def self: this.type +raw/DedicatedWorkerGlobalScope[JT] def setInterval(handler: js.Function0[Any], timeout: Double): Int +raw/DedicatedWorkerGlobalScope[JT] def setTimeout(handler: js.Function0[Any], timeout: Double): Int raw/DelayNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/DelayNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/DelayNode[JT] var channelCount: Int @@ -15313,7 +15367,6 @@ raw/IDBDatabase[JC] def removeEventListener[T <: Event](`type`: String, listener raw/IDBDatabase[JC] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/IDBDatabase[JC] def transaction(storeNames: js.Any, mode: String?): IDBTransaction raw/IDBDatabase[JC] def version: Int -raw/IDBEnvironment[JT] def indexedDB: IDBFactory raw/IDBFactory[JC] def cmp(first: js.Any, second: js.Any): Int raw/IDBFactory[JC] def deleteDatabase(name: String): IDBOpenDBRequest raw/IDBFactory[JC] def open(name: String): IDBOpenDBRequest @@ -15413,6 +15466,8 @@ raw/IDBVersionChangeEventInit[JT] var composed: js.UndefOr[Boolean] raw/IDBVersionChangeEventInit[JT] var newVersion: js.UndefOr[Integer] raw/IDBVersionChangeEventInit[JT] var oldVersion: js.UndefOr[Int] raw/IDBVersionChangeEventInit[JT] var scoped: js.UndefOr[Boolean] +raw/ImageBitmap[JT] def height: Double +raw/ImageBitmap[JT] def width: Double raw/ImageData[JC] def data: js.Array[Int] raw/ImageData[JC] def height: Int raw/ImageData[JC] def width: Int @@ -15810,6 +15865,11 @@ raw/OfflineAudioContext[JC] val sampleRate: Double raw/OfflineAudioContext[JC] def startRendering(): js.Promise[AudioBuffer] raw/OfflineAudioContext[JC] def state: String raw/OfflineAudioContext[JC] def suspend(): js.Promise[Unit] +raw/OffscreenCanvas[JC] def convertToBlob(options: ConvertToBlobOptions = ???): js.Promise[Blob] +raw/OffscreenCanvas[JC] def getContext(contextType: String): js.Dynamic +raw/OffscreenCanvas[JC] def getContext(contextType: String, contextAttributes: TwoDContextAttributes): js.Dynamic +raw/OffscreenCanvas[JC] def getContext(contextType: String, contextAttributes: WebGLContextAttributes): js.Dynamic +raw/OffscreenCanvas[JC] def transferToImageBitmap(): ImageBitmap raw/OscillatorNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/OscillatorNode[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/OscillatorNode[JT] var channelCount: Int @@ -23862,6 +23922,9 @@ raw/TreeWalker[JC] def previousNode(): Node raw/TreeWalker[JC] def previousSibling(): Node raw/TreeWalker[JC] def root: Node raw/TreeWalker[JC] def whatToShow: Int +raw/TwoDContextAttributes[JT] var alpha: js.UndefOr[Boolean] +raw/TwoDContextAttributes[JT] var storage: js.UndefOr[String] +raw/TwoDContextAttributes[JT] var willReadFrequently: js.UndefOr[Boolean] raw/UIEvent[JC] def bubbles: Boolean raw/UIEvent[JC] def cancelBubble: Boolean raw/UIEvent[JC] def cancelable: Boolean @@ -24484,15 +24547,22 @@ raw/Window[JC] def applicationCache: ApplicationCache raw/Window[JC] def atob(encodedString: String): String raw/Window[JC] def blur(): Unit raw/Window[JC] def btoa(rawString: String): String +raw/Window[JC] def caches: js.UndefOr[CacheStorage] raw/Window[JC] def cancelAnimationFrame(handle: Int): Unit raw/Window[JC] def clearInterval(handle: Int): Unit raw/Window[JC] def clearTimeout(handle: Int): Unit raw/Window[JC] def close(): Unit raw/Window[JC] def confirm(message: String?): Boolean raw/Window[JC] var console: Console +raw/Window[JC] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +raw/Window[JC] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/Window[JC] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +raw/Window[JC] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/Window[JC] def crossOriginIsolated: Boolean raw/Window[JC] def devicePixelRatio: Double raw/Window[JC] def dispatchEvent(evt: Event): Boolean raw/Window[JC] def document: HTMLDocument +raw/Window[JC] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] raw/Window[JC] def focus(): Unit raw/Window[JC] def frameElement: Element raw/Window[JC] def frames: Window @@ -24500,9 +24570,10 @@ raw/Window[JC] def getComputedStyle(elt: Element, pseudoElt: String?): CSSStyleD raw/Window[JC] def getSelection(): Selection raw/Window[JC] var gotpointercapture: js.Function1[PointerEvent, _] raw/Window[JC] def history: History -raw/Window[JC] def indexedDB: IDBFactory +raw/Window[JC] def indexedDB: js.UndefOr[IDBFactory] raw/Window[JC] def innerHeight: Double raw/Window[JC] def innerWidth: Double +raw/Window[JC] def isSecureContext: Boolean raw/Window[JC] def length: Int raw/Window[JC] def localStorage: Storage raw/Window[JC] var location: Location @@ -24587,6 +24658,7 @@ raw/Window[JC] var onwaiting: js.Function1[Event, _] raw/Window[JC] var onwheel: js.Function1[WheelEvent, _] raw/Window[JC] def open(url: String?, target: String?, features: String?, replace: Boolean?): Window raw/Window[JC] var opener: Window +raw/Window[JC] def origin: String raw/Window[JC] def outerHeight: Int raw/Window[JC] def outerWidth: Int raw/Window[JC] def pageXOffset: Double @@ -24597,6 +24669,7 @@ raw/Window[JC] def postMessage(message: js.Any, targetOrigin: String, transfer: raw/Window[JC] def print(): Unit raw/Window[JC] def prompt(): String raw/Window[JC] def prompt(message: String, default: String?): String +raw/Window[JC] def queueMicrotask(function: js.Function0[Any]): Unit raw/Window[JC] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/Window[JC] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/Window[JC] def requestAnimationFrame(callback: js.Function1[Double, _]): Int @@ -24622,6 +24695,24 @@ raw/WindowBase64[JT] def atob(encodedString: String): String raw/WindowBase64[JT] def btoa(rawString: String): String raw/WindowConsole[JT] var console: Console raw/WindowLocalStorage[JT] def localStorage: Storage +raw/WindowOrWorkerGlobalScope[JT] def atob(encodedString: String): String +raw/WindowOrWorkerGlobalScope[JT] def btoa(rawString: String): String +raw/WindowOrWorkerGlobalScope[JT] def caches: js.UndefOr[CacheStorage] +raw/WindowOrWorkerGlobalScope[JT] def clearInterval(handle: Int): Unit +raw/WindowOrWorkerGlobalScope[JT] def clearTimeout(handle: Int): Unit +raw/WindowOrWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +raw/WindowOrWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/WindowOrWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +raw/WindowOrWorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/WindowOrWorkerGlobalScope[JT] def crossOriginIsolated: Boolean +raw/WindowOrWorkerGlobalScope[JT] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] +raw/WindowOrWorkerGlobalScope[JT] def indexedDB: js.UndefOr[IDBFactory] +raw/WindowOrWorkerGlobalScope[JT] def isSecureContext: Boolean +raw/WindowOrWorkerGlobalScope[JT] def origin: String +raw/WindowOrWorkerGlobalScope[JT] def queueMicrotask(function: js.Function0[Any]): Unit +raw/WindowOrWorkerGlobalScope[JT] def setInterval(handler: js.Function0[Any], timeout: Double): Int +raw/WindowOrWorkerGlobalScope[JT] def setTimeout(handler: js.Function0[Any], timeout: Double): Int +raw/WindowOrWorkerGlobalScope[SO] type CreateImageBitmapInput = HTMLImageElement | SVGImageElement | HTMLVideoElement | HTMLCanvasElement | HTMLCanvasElement | Blob | ImageData | ImageBitmap | OffscreenCanvas raw/WindowSessionStorage[JT] def sessionStorage: Storage raw/WindowTimers[JT] def clearInterval(handle: Int): Unit raw/WindowTimers[JT] def clearTimeout(handle: Int): Unit @@ -24638,19 +24729,35 @@ raw/Worker[JC] def removeEventListener[T <: Event](`type`: String, listener: js. raw/Worker[JC] def terminate(): Unit raw/WorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/WorkerGlobalScope[JT] def addEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit -raw/WorkerGlobalScope[JT] def caches: js.Any +raw/WorkerGlobalScope[JT] def atob(encodedString: String): String +raw/WorkerGlobalScope[JT] def btoa(rawString: String): String +raw/WorkerGlobalScope[JT] def caches: js.UndefOr[CacheStorage] +raw/WorkerGlobalScope[JT] def clearInterval(handle: Int): Unit +raw/WorkerGlobalScope[JT] def clearTimeout(handle: Int): Unit raw/WorkerGlobalScope[JT] def close(): Unit +raw/WorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput): js.Promise[ImageBitmap] +raw/WorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/WorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double): js.Promise[ImageBitmap] +raw/WorkerGlobalScope[JT] def createImageBitmap(image: CreateImageBitmapInput, sx: Double, sy: Double, sw: Double, sh: Double, options: CreateImageBitmapOptions): js.Promise[ImageBitmap] +raw/WorkerGlobalScope[JT] def crossOriginIsolated: Boolean raw/WorkerGlobalScope[JT] def dispatchEvent(evt: Event): Boolean +raw/WorkerGlobalScope[JT] def fetch(info: RequestInfo, init: RequestInit = null): js.Promise[Response] raw/WorkerGlobalScope[JT] def importScripts(urls: js.Array[String]): Unit +raw/WorkerGlobalScope[JT] def indexedDB: js.UndefOr[IDBFactory] +raw/WorkerGlobalScope[JT] def isSecureContext: Boolean raw/WorkerGlobalScope[JT] def location: WorkerLocation raw/WorkerGlobalScope[JT] def navigator: WorkerNavigator raw/WorkerGlobalScope[JT] var onError: js.Function1[ErrorEvent, _] raw/WorkerGlobalScope[JT] var onlanguagechange: js.Function1[Event, _] raw/WorkerGlobalScope[JT] var onoffline: js.Function1[Event, _] raw/WorkerGlobalScope[JT] var ononline: js.Function1[Event, _] +raw/WorkerGlobalScope[JT] def origin: String +raw/WorkerGlobalScope[JT] def queueMicrotask(function: js.Function0[Any]): Unit raw/WorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit raw/WorkerGlobalScope[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/WorkerGlobalScope[JT] def self: this.type +raw/WorkerGlobalScope[JT] def setInterval(handler: js.Function0[Any], timeout: Double): Int +raw/WorkerGlobalScope[JT] def setTimeout(handler: js.Function0[Any], timeout: Double): Int raw/WorkerLocation[JT] def hash: String raw/WorkerLocation[JT] def host: String raw/WorkerLocation[JT] def hostname: String From eb0fd942de69358d5d38ee35898f4963c49ea83b Mon Sep 17 00:00:00 2001 From: David Barri Date: Mon, 23 Aug 2021 08:38:16 +1000 Subject: [PATCH 4/6] Restore backwards bincompat --- api-reports/2_12.txt | 18 ++++++++++++ api-reports/2_13.txt | 18 ++++++++++++ .../serviceworkers/ServiceWorkers.scala | 29 +++++++++++++++++++ src/main/scala/org/scalajs/dom/idb.scala | 4 +++ src/main/scala/org/scalajs/dom/raw/Idb.scala | 23 +++++++++++++++ 5 files changed, 92 insertions(+) diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index 58bdc133e..99801f2c3 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -947,6 +947,22 @@ experimental/push/package[SO] implicit def pushServiceWorkerRegistration(swr: Se experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpush: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpushsubscriptionchange: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerRegistration[JT] val pushManager: PushManager +experimental/serviceworkers/Cache[JC] def add(request: RequestInfo): js.Promise[Unit] +experimental/serviceworkers/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] +experimental/serviceworkers/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean] +experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]] +experimental/serviceworkers/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]] +experimental/serviceworkers/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]] +experimental/serviceworkers/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit] +experimental/serviceworkers/CacheQueryOptions[JT] var cacheName: String +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreMethod: Boolean +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreSearch: Boolean +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreVary: Boolean +experimental/serviceworkers/CacheStorage[JT] def delete(cacheName: String): js.Promise[Boolean] +experimental/serviceworkers/CacheStorage[JT] def has(cacheName: String): js.Promise[Boolean] +experimental/serviceworkers/CacheStorage[JT] def keys(): js.Promise[js.Array[String]] +experimental/serviceworkers/CacheStorage[JT] def `match`(request: RequestInfo, options: CacheQueryOptions?): js.Promise[js.Any] +experimental/serviceworkers/CacheStorage[JT] def open(cacheName: String): js.Promise[Cache] experimental/serviceworkers/CanvasProxy[JT] def setContext(context: RenderingContext): Unit experimental/serviceworkers/Client[JT] def frameType: FrameType experimental/serviceworkers/Client[JT] def id: String @@ -2074,6 +2090,7 @@ html[SO] type UList = raw.HTMLUListElement html[SO] type Unknown = raw.HTMLUnknownElement html[SO] type Video = raw.HTMLVideoElement html[SO] def Media = raw.HTMLMediaElement +idb[SO] @deprecated( "Removed. This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible. See https://developer.mozilla.org/en-US/docs/Web/API/IDBEnvironment", "1.2.0") type Environment = raw.IDBEnvironment idb[SO] type Cursor = raw.IDBCursor idb[SO] type CursorWithValue = raw.IDBCursorWithValue idb[SO] type Database = raw.IDBDatabase @@ -15368,6 +15385,7 @@ raw/IDBDatabase[JC] def removeEventListener[T <: Event](`type`: String, listener raw/IDBDatabase[JC] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/IDBDatabase[JC] def transaction(storeNames: js.Any, mode: String?): IDBTransaction raw/IDBDatabase[JC] def version: Int +raw/IDBEnvironment[JT] def indexedDB: IDBFactory (@deprecated in 1.2.0) raw/IDBFactory[JC] def cmp(first: js.Any, second: js.Any): Int raw/IDBFactory[JC] def deleteDatabase(name: String): IDBOpenDBRequest raw/IDBFactory[JC] def open(name: String): IDBOpenDBRequest diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index 59e3d8f91..70bec103f 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -947,6 +947,22 @@ experimental/push/package[SO] implicit def pushServiceWorkerRegistration(swr: Se experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpush: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpushsubscriptionchange: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerRegistration[JT] val pushManager: PushManager +experimental/serviceworkers/Cache[JC] def add(request: RequestInfo): js.Promise[Unit] +experimental/serviceworkers/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] +experimental/serviceworkers/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean] +experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]] +experimental/serviceworkers/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]] +experimental/serviceworkers/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]] +experimental/serviceworkers/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit] +experimental/serviceworkers/CacheQueryOptions[JT] var cacheName: String +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreMethod: Boolean +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreSearch: Boolean +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreVary: Boolean +experimental/serviceworkers/CacheStorage[JT] def delete(cacheName: String): js.Promise[Boolean] +experimental/serviceworkers/CacheStorage[JT] def has(cacheName: String): js.Promise[Boolean] +experimental/serviceworkers/CacheStorage[JT] def keys(): js.Promise[js.Array[String]] +experimental/serviceworkers/CacheStorage[JT] def `match`(request: RequestInfo, options: CacheQueryOptions?): js.Promise[js.Any] +experimental/serviceworkers/CacheStorage[JT] def open(cacheName: String): js.Promise[Cache] experimental/serviceworkers/CanvasProxy[JT] def setContext(context: RenderingContext): Unit experimental/serviceworkers/Client[JT] def frameType: FrameType experimental/serviceworkers/Client[JT] def id: String @@ -2074,6 +2090,7 @@ html[SO] type UList = raw.HTMLUListElement html[SO] type Unknown = raw.HTMLUnknownElement html[SO] type Video = raw.HTMLVideoElement html[SO] def Media = raw.HTMLMediaElement +idb[SO] @deprecated( "Removed. This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible. See https://developer.mozilla.org/en-US/docs/Web/API/IDBEnvironment", "1.2.0") type Environment = raw.IDBEnvironment idb[SO] type Cursor = raw.IDBCursor idb[SO] type CursorWithValue = raw.IDBCursorWithValue idb[SO] type Database = raw.IDBDatabase @@ -15368,6 +15385,7 @@ raw/IDBDatabase[JC] def removeEventListener[T <: Event](`type`: String, listener raw/IDBDatabase[JC] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit raw/IDBDatabase[JC] def transaction(storeNames: js.Any, mode: String?): IDBTransaction raw/IDBDatabase[JC] def version: Int +raw/IDBEnvironment[JT] def indexedDB: IDBFactory (@deprecated in 1.2.0) raw/IDBFactory[JC] def cmp(first: js.Any, second: js.Any): Int raw/IDBFactory[JC] def deleteDatabase(name: String): IDBOpenDBRequest raw/IDBFactory[JC] def open(name: String): IDBOpenDBRequest diff --git a/src/main/scala/org/scalajs/dom/experimental/serviceworkers/ServiceWorkers.scala b/src/main/scala/org/scalajs/dom/experimental/serviceworkers/ServiceWorkers.scala index 34f85e77c..ffd1ecbdd 100644 --- a/src/main/scala/org/scalajs/dom/experimental/serviceworkers/ServiceWorkers.scala +++ b/src/main/scala/org/scalajs/dom/experimental/serviceworkers/ServiceWorkers.scala @@ -698,3 +698,32 @@ trait ServiceWorkerGlobalScope extends WorkerGlobalScope { object ServiceWorkerGlobalScope extends js.Object { def self: ServiceWorkerGlobalScope = js.native } + +/** + * See [[https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/#cache ¶5.4 cache]] + * of ServiceWorker whatwg spec. + */ +@deprecated("Use org.scalajs.dom.experimental.cachestorage.Cache", "1.2.0") +@js.native +@JSGlobal +abstract class Cache extends org.scalajs.dom.experimental.cachestorage.Cache + +/** + * See [[https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/#cache ¶5.4 cache]] + * of ServiceWorker whatwg spec. + */ +@deprecated("Use org.scalajs.dom.experimental.cachestorage.CacheQueryOptions", + "1.2.0") +@js.native +trait CacheQueryOptions + extends org.scalajs.dom.experimental.cachestorage.CacheQueryOptions + +/** + * See [[https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/#cache-storage ¶5.5 cache]] + * of ServiceWorker whatwg spec. + */ +@deprecated("Use org.scalajs.dom.experimental.cachestorage.CacheStorage", + "1.2.0") +@js.native +trait CacheStorage + extends org.scalajs.dom.experimental.cachestorage.CacheStorage diff --git a/src/main/scala/org/scalajs/dom/idb.scala b/src/main/scala/org/scalajs/dom/idb.scala index 3ebfd42dd..d847abad2 100644 --- a/src/main/scala/org/scalajs/dom/idb.scala +++ b/src/main/scala/org/scalajs/dom/idb.scala @@ -18,4 +18,8 @@ object idb { type Transaction = raw.IDBTransaction @inline def Transaction = raw.IDBTransaction type VersionChangeEvent = raw.IDBVersionChangeEvent + @deprecated( + "Removed. This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible. See https://developer.mozilla.org/en-US/docs/Web/API/IDBEnvironment", + "1.2.0") + type Environment = raw.IDBEnvironment } diff --git a/src/main/scala/org/scalajs/dom/raw/Idb.scala b/src/main/scala/org/scalajs/dom/raw/Idb.scala index 1526be119..80a453610 100644 --- a/src/main/scala/org/scalajs/dom/raw/Idb.scala +++ b/src/main/scala/org/scalajs/dom/raw/Idb.scala @@ -797,3 +797,26 @@ class IDBRequest extends EventTarget { */ def result: js.Any = js.native } + +/** + * The IDBEvironment interface of the IndexedDB API provides asynchronous access + * to a client-side database. It is implemented by window and Worker objects. + * + * MDN + */ +@deprecated( + "Removed. This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible. See https://developer.mozilla.org/en-US/docs/Web/API/IDBEnvironment", + "1.2.0") +@js.native +trait IDBEnvironment extends js.Object { + + /** + * an IDBRequest object that communicates back to the requesting application + * through events. This design means that any number of requests can be active on any + * database at a time. + * + * MDN + */ + @deprecated("Use window.indexedDB", "1.2.0") + def indexedDB: IDBFactory = js.native +} From 27ce299db320746c7b8a2296f7f7dc3e39f3d6d3 Mon Sep 17 00:00:00 2001 From: David Barri Date: Mon, 23 Aug 2021 08:41:53 +1000 Subject: [PATCH 5/6] Present deprecated type aliases in api reports, nicely --- api-reports/2_12.txt | 2 +- api-reports/2_13.txt | 2 +- .../main/scala/org/scalajs/dom/scalafix/GenerateApiReport.scala | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index 99801f2c3..7e67281c2 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -2090,10 +2090,10 @@ html[SO] type UList = raw.HTMLUListElement html[SO] type Unknown = raw.HTMLUnknownElement html[SO] type Video = raw.HTMLVideoElement html[SO] def Media = raw.HTMLMediaElement -idb[SO] @deprecated( "Removed. This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible. See https://developer.mozilla.org/en-US/docs/Web/API/IDBEnvironment", "1.2.0") type Environment = raw.IDBEnvironment idb[SO] type Cursor = raw.IDBCursor idb[SO] type CursorWithValue = raw.IDBCursorWithValue idb[SO] type Database = raw.IDBDatabase +idb[SO] type Environment = raw.IDBEnvironment (@deprecated in 1.2.0) idb[SO] type Factory = raw.IDBFactory idb[SO] type Index = raw.IDBIndex idb[SO] type KeyRange = raw.IDBKeyRange diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index 70bec103f..7c8f55dd4 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -2090,10 +2090,10 @@ html[SO] type UList = raw.HTMLUListElement html[SO] type Unknown = raw.HTMLUnknownElement html[SO] type Video = raw.HTMLVideoElement html[SO] def Media = raw.HTMLMediaElement -idb[SO] @deprecated( "Removed. This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible. See https://developer.mozilla.org/en-US/docs/Web/API/IDBEnvironment", "1.2.0") type Environment = raw.IDBEnvironment idb[SO] type Cursor = raw.IDBCursor idb[SO] type CursorWithValue = raw.IDBCursorWithValue idb[SO] type Database = raw.IDBDatabase +idb[SO] type Environment = raw.IDBEnvironment (@deprecated in 1.2.0) idb[SO] type Factory = raw.IDBFactory idb[SO] type Index = raw.IDBIndex idb[SO] type KeyRange = raw.IDBKeyRange diff --git a/scalafix/src/main/scala/org/scalajs/dom/scalafix/GenerateApiReport.scala b/scalafix/src/main/scala/org/scalajs/dom/scalafix/GenerateApiReport.scala index 94479f347..961137e80 100644 --- a/scalafix/src/main/scala/org/scalajs/dom/scalafix/GenerateApiReport.scala +++ b/scalafix/src/main/scala/org/scalajs/dom/scalafix/GenerateApiReport.scala @@ -76,6 +76,7 @@ class GenerateApiReport extends SemanticRule("GenerateApiReport") { case Decl.Def(mods, name, tparams, paramss, tpe) => t2 = Decl.Def(inspectAnnotations(mods), name, tparams, paramss, tpe) case Decl.Val(mods, pats, tpe) => t2 = Decl.Val(inspectAnnotations(mods), pats, tpe) case Decl.Var(mods, pats, tpe) => t2 = Decl.Var(inspectAnnotations(mods), pats, tpe) + case Defn.Type(mods, names, params, tpe) => t2 = Defn.Type(inspectAnnotations(mods), names, params, tpe) case _ => } From ffd19167ddeee3bd4674bdc28d308cdc15744ac2 Mon Sep 17 00:00:00 2001 From: David Barri Date: Mon, 23 Aug 2021 09:02:11 +1000 Subject: [PATCH 6/6] Mark members as deprecated when their parents are in api reports --- api-reports/2_12.txt | 32 +++++++------- api-reports/2_13.txt | 32 +++++++------- .../dom/scalafix/GenerateApiReport.scala | 44 ++++++++++--------- .../scalajs/dom/scalafix/MutableState.scala | 31 +++++++++---- 4 files changed, 79 insertions(+), 60 deletions(-) diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index 7e67281c2..945e51927 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -947,22 +947,22 @@ experimental/push/package[SO] implicit def pushServiceWorkerRegistration(swr: Se experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpush: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpushsubscriptionchange: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerRegistration[JT] val pushManager: PushManager -experimental/serviceworkers/Cache[JC] def add(request: RequestInfo): js.Promise[Unit] -experimental/serviceworkers/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] -experimental/serviceworkers/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean] -experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]] -experimental/serviceworkers/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]] -experimental/serviceworkers/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]] -experimental/serviceworkers/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit] -experimental/serviceworkers/CacheQueryOptions[JT] var cacheName: String -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreMethod: Boolean -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreSearch: Boolean -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreVary: Boolean -experimental/serviceworkers/CacheStorage[JT] def delete(cacheName: String): js.Promise[Boolean] -experimental/serviceworkers/CacheStorage[JT] def has(cacheName: String): js.Promise[Boolean] -experimental/serviceworkers/CacheStorage[JT] def keys(): js.Promise[js.Array[String]] -experimental/serviceworkers/CacheStorage[JT] def `match`(request: RequestInfo, options: CacheQueryOptions?): js.Promise[js.Any] -experimental/serviceworkers/CacheStorage[JT] def open(cacheName: String): js.Promise[Cache] +experimental/serviceworkers/Cache[JC] def add(request: RequestInfo): js.Promise[Unit] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit] (@deprecated in 1.2.0) +experimental/serviceworkers/CacheQueryOptions[JT] var cacheName: String (@deprecated in 1.2.0) +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreMethod: Boolean (@deprecated in 1.2.0) +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreSearch: Boolean (@deprecated in 1.2.0) +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreVary: Boolean (@deprecated in 1.2.0) +experimental/serviceworkers/CacheStorage[JT] def delete(cacheName: String): js.Promise[Boolean] (@deprecated in 1.2.0) +experimental/serviceworkers/CacheStorage[JT] def has(cacheName: String): js.Promise[Boolean] (@deprecated in 1.2.0) +experimental/serviceworkers/CacheStorage[JT] def keys(): js.Promise[js.Array[String]] (@deprecated in 1.2.0) +experimental/serviceworkers/CacheStorage[JT] def `match`(request: RequestInfo, options: CacheQueryOptions?): js.Promise[js.Any] (@deprecated in 1.2.0) +experimental/serviceworkers/CacheStorage[JT] def open(cacheName: String): js.Promise[Cache] (@deprecated in 1.2.0) experimental/serviceworkers/CanvasProxy[JT] def setContext(context: RenderingContext): Unit experimental/serviceworkers/Client[JT] def frameType: FrameType experimental/serviceworkers/Client[JT] def id: String diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index 7c8f55dd4..3cd69e212 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -947,22 +947,22 @@ experimental/push/package[SO] implicit def pushServiceWorkerRegistration(swr: Se experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpush: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerGlobalScope[JT] var onpushsubscriptionchange: js.Function1[PushEvent, _] experimental/push/package.PushServiceWorkerRegistration[JT] val pushManager: PushManager -experimental/serviceworkers/Cache[JC] def add(request: RequestInfo): js.Promise[Unit] -experimental/serviceworkers/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] -experimental/serviceworkers/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean] -experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]] -experimental/serviceworkers/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]] -experimental/serviceworkers/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]] -experimental/serviceworkers/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit] -experimental/serviceworkers/CacheQueryOptions[JT] var cacheName: String -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreMethod: Boolean -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreSearch: Boolean -experimental/serviceworkers/CacheQueryOptions[JT] var ignoreVary: Boolean -experimental/serviceworkers/CacheStorage[JT] def delete(cacheName: String): js.Promise[Boolean] -experimental/serviceworkers/CacheStorage[JT] def has(cacheName: String): js.Promise[Boolean] -experimental/serviceworkers/CacheStorage[JT] def keys(): js.Promise[js.Array[String]] -experimental/serviceworkers/CacheStorage[JT] def `match`(request: RequestInfo, options: CacheQueryOptions?): js.Promise[js.Any] -experimental/serviceworkers/CacheStorage[JT] def open(cacheName: String): js.Promise[Cache] +experimental/serviceworkers/Cache[JC] def add(request: RequestInfo): js.Promise[Unit] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]] (@deprecated in 1.2.0) +experimental/serviceworkers/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit] (@deprecated in 1.2.0) +experimental/serviceworkers/CacheQueryOptions[JT] var cacheName: String (@deprecated in 1.2.0) +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreMethod: Boolean (@deprecated in 1.2.0) +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreSearch: Boolean (@deprecated in 1.2.0) +experimental/serviceworkers/CacheQueryOptions[JT] var ignoreVary: Boolean (@deprecated in 1.2.0) +experimental/serviceworkers/CacheStorage[JT] def delete(cacheName: String): js.Promise[Boolean] (@deprecated in 1.2.0) +experimental/serviceworkers/CacheStorage[JT] def has(cacheName: String): js.Promise[Boolean] (@deprecated in 1.2.0) +experimental/serviceworkers/CacheStorage[JT] def keys(): js.Promise[js.Array[String]] (@deprecated in 1.2.0) +experimental/serviceworkers/CacheStorage[JT] def `match`(request: RequestInfo, options: CacheQueryOptions?): js.Promise[js.Any] (@deprecated in 1.2.0) +experimental/serviceworkers/CacheStorage[JT] def open(cacheName: String): js.Promise[Cache] (@deprecated in 1.2.0) experimental/serviceworkers/CanvasProxy[JT] def setContext(context: RenderingContext): Unit experimental/serviceworkers/Client[JT] def frameType: FrameType experimental/serviceworkers/Client[JT] def id: String diff --git a/scalafix/src/main/scala/org/scalajs/dom/scalafix/GenerateApiReport.scala b/scalafix/src/main/scala/org/scalajs/dom/scalafix/GenerateApiReport.scala index 961137e80..b15f9341f 100644 --- a/scalafix/src/main/scala/org/scalajs/dom/scalafix/GenerateApiReport.scala +++ b/scalafix/src/main/scala/org/scalajs/dom/scalafix/GenerateApiReport.scala @@ -21,26 +21,43 @@ class GenerateApiReport extends SemanticRule("GenerateApiReport") { if (enabled) doc.tree.traverse { - case a: Defn.Class => process(a.symbol, a.templ, ScopeType.Class) - case a: Defn.Object => process(a.symbol, a.templ, ScopeType.Object) - case a: Defn.Trait => process(a.symbol, a.templ, ScopeType.Trait) - case a: Pkg.Object => process(a.symbol, a.templ, ScopeType.Object) + case a: Defn.Class => process(a.mods, a.symbol, a.templ, ScopeType.Class) + case a: Defn.Object => process(a.mods, a.symbol, a.templ, ScopeType.Object) + case a: Defn.Trait => process(a.mods, a.symbol, a.templ, ScopeType.Trait) + case a: Pkg.Object => process(a.mods, a.symbol, a.templ, ScopeType.Object) case _ => } Patch.empty } - private def process(sym: Symbol, body: Template, typ: ScopeType)(implicit doc: SemanticDocument): Unit = { + private def process(parentMods: List[Mod], sym: Symbol, body: Template, typ: ScopeType)(implicit doc: SemanticDocument): Unit = { // Skip non-public scopes val info = sym.info.get if (!info.isPublic && !info.isPackageObject) return + def inspectAnnotationsFn(set: String => Unit): List[Mod] => List[Mod] = + _.filter { + case Mod.Annot(Init(tpe, _, List(List(_, ver)))) if tpe.toString == "deprecated" => + set( + ver match { + case Lit.String(s) => s + case term => term.toString + } + ) + false + case _ => true + } + + // Inspect scope's annotations + var scopeDeprecatedVer = Option.empty[String] + inspectAnnotationsFn(v => scopeDeprecatedVer = Some(v))(parentMods) + val parents = Util.parents(sym).iterator.map(Util.typeSymbol).toList val domParents = parents.iterator.filter(isScalaJsDom).toSet val isJsType = parents.exists(isScalaJs) - val s = state.register(sym, isJsType, typ, domParents) + val s = state.register(sym, isJsType, typ, domParents, scopeDeprecatedVer) def letsSeeHowLazyWeCanBeLol(t: Tree): Unit = { // Skip non-public members @@ -58,20 +75,7 @@ class GenerateApiReport extends SemanticRule("GenerateApiReport") { // Inspect annotations var deprecatedVer = Option.empty[String] - - def inspectAnnotations(mods: List[Mod]): List[Mod] = - mods.filter { - case Mod.Annot(Init(tpe, _, List(List(_, ver)))) if tpe.toString == "deprecated" => - deprecatedVer = Some { - ver match { - case Lit.String(s) => s - case term => term.toString - } - } - false - case _ => true - } - + val inspectAnnotations = inspectAnnotationsFn(v => deprecatedVer = Some(v)) t2 match { case Decl.Def(mods, name, tparams, paramss, tpe) => t2 = Decl.Def(inspectAnnotations(mods), name, tparams, paramss, tpe) case Decl.Val(mods, pats, tpe) => t2 = Decl.Val(inspectAnnotations(mods), pats, tpe) diff --git a/scalafix/src/main/scala/org/scalajs/dom/scalafix/MutableState.scala b/scalafix/src/main/scala/org/scalajs/dom/scalafix/MutableState.scala index 86934f545..679027465 100644 --- a/scalafix/src/main/scala/org/scalajs/dom/scalafix/MutableState.scala +++ b/scalafix/src/main/scala/org/scalajs/dom/scalafix/MutableState.scala @@ -11,12 +11,17 @@ final class MutableState { private[this] val scopes = mutable.Map.empty[Symbol, Scope] - def register(sym: Symbol, isJsType: Boolean, scopeType: ScopeType, parents: Set[Symbol]): Scope = synchronized { + def register(sym : Symbol, + isJsType : Boolean, + scopeType : ScopeType, + parents : Set[Symbol], + deprecatedVer: Option[String]): Scope = synchronized { scopes.get(sym) match { case None => val s = Scope(sym)(scopeType, parents) scopes.update(sym, s) s.isJsType = isJsType + s.deprecatedVer = deprecatedVer s case Some(s) => s @@ -47,10 +52,20 @@ final class MutableState { val b = SortedSet.newBuilder[Result] + def deprecationSuffix(ver: Option[String]): String = + ver match { + case None => "" + case Some(v) => s" (@deprecated in $v)" + } + // Pass 1 for (root <- scopes.valuesIterator) { - if (!root.isJsType && scopeParents(root).exists(_.isJsType)) + val parents = scopeParents(root) + if (!root.isJsType && parents.exists(_.isJsType)) root.isJsType = true + if (root.deprecatedVer.isEmpty) + for (p <- parents.find(_.deprecatedVer.isDefined)) + root.deprecatedVer = p.deprecatedVer } // Pass 2 @@ -65,19 +80,18 @@ final class MutableState { var membersFound = false for { s <- root :: scopeParents(root) - v <- s.directMembers + m <- s.directMembers } { membersFound = true - val key = (scopeKey, v.name, v.desc) - var result = prefix + v.desc - for (ver <- v.deprecatedVer) - result = s"$result (@deprecated in $ver)" + val key = (scopeKey, m.name, m.desc) + val result = prefix + m.desc + deprecationSuffix(m.deprecatedVer.orElse(root.deprecatedVer)) b += Result(key, result) } if (!membersFound && !scopeName.endsWith("/package")) { val key = (scopeKey, " ", "") - b += Result(key, prefix.trim) + val result = prefix.trim + deprecationSuffix(root.deprecatedVer) + b += Result(key, result) } } @@ -101,6 +115,7 @@ object MutableState { private[MutableState] val directMembers = mutable.Set.empty[Member] private[MutableState] var isJsType = false + private[MutableState] var deprecatedVer = Option.empty[String] def add(v: Member): Unit = synchronized(directMembers += v)