Skip to content

Commit 9e69c84

Browse files
committed
Migrate beacon to dom
1 parent 8328970 commit 9e69c84

File tree

5 files changed

+91
-54
lines changed

5 files changed

+91
-54
lines changed

api-reports/2_12.txt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,8 @@ AudioTrackList[JT] var onaddtrack: js.Function1[TrackEvent, _]
275275
AudioTrackList[JT] var onchange: js.Function1[js.Any, _]
276276
AudioTrackList[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit
277277
AudioTrackList[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit
278+
BeaconNavigator[JT] def sendBeacon(url: String, data: dom.BodyInit = null): Boolean
279+
BeaconWorkerNavigator[JT] def sendBeacon(url: String, data: dom.BodyInit = null): Boolean
278280
BeforeUnloadEvent[JC] def bubbles: Boolean
279281
BeforeUnloadEvent[JC] def cancelBubble: Boolean
280282
BeforeUnloadEvent[JC] def cancelable: Boolean
@@ -14356,6 +14358,8 @@ Navigator[JC] def platform: String
1435614358
Navigator[JC] def userAgent: String
1435714359
Navigator[JC] def vibrate(duration: Double): Boolean
1435814360
Navigator[JC] def vibrate(pattern: js.Array[Double]): Boolean
14361+
Navigator[SO] implicit def toBeaconNavigator(n: Navigator): BeaconNavigator
14362+
Navigator[SO] implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator
1435914363
NavigatorContentUtils[JT]
1436014364
NavigatorGeolocation[JT] def geolocation: Geolocation
1436114365
NavigatorID[JT] def appName: String
@@ -24309,11 +24313,10 @@ experimental/PointerLock.PointerLockElement[JT] def requestPointerLock(): Unit
2430924313
experimental/PointerLock.PointerLockMouseEvent[JT] def movementX: Double
2431024314
experimental/PointerLock.PointerLockMouseEvent[JT] def movementY: Double
2431124315
experimental/Vibration[SO] (@deprecated in 2.0.0)
24312-
experimental/beacon/package[SO] def sendBeacon(url: String, data: dom.BodyInit = null): Boolean
24313-
experimental/beacon/package[SO] implicit def toBeaconNavigator(n: Navigator): BeaconNavigator
24314-
experimental/beacon/package[SO] implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator
24315-
experimental/beacon/package.BeaconNavigator[JT] def sendBeacon(url: String, data: dom.BodyInit = null): Boolean
24316-
experimental/beacon/package.BeaconWorkerNavigator[JT] def sendBeacon(url: String, data: dom.BodyInit = null): Boolean
24316+
experimental/beacon/package[SO] type BeaconNavigator = dom.BeaconNavigator (@deprecated in 2.0.0)
24317+
experimental/beacon/package[SO] type BeaconWorkerNavigator = dom.BeaconWorkerNavigator (@deprecated in 2.0.0)
24318+
experimental/beacon/package[SO] implicit def toBeaconNavigator(n: Navigator): BeaconNavigator (@deprecated in 2.0.0)
24319+
experimental/beacon/package[SO] implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator (@deprecated in 2.0.0)
2431724320
experimental/cachestorage/Cache[JC] def add(request: RequestInfo): js.Promise[Unit]
2431824321
experimental/cachestorage/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit]
2431924322
experimental/cachestorage/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean]

api-reports/2_13.txt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,8 @@ AudioTrackList[JT] var onaddtrack: js.Function1[TrackEvent, _]
275275
AudioTrackList[JT] var onchange: js.Function1[js.Any, _]
276276
AudioTrackList[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit
277277
AudioTrackList[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit
278+
BeaconNavigator[JT] def sendBeacon(url: String, data: dom.BodyInit = null): Boolean
279+
BeaconWorkerNavigator[JT] def sendBeacon(url: String, data: dom.BodyInit = null): Boolean
278280
BeforeUnloadEvent[JC] def bubbles: Boolean
279281
BeforeUnloadEvent[JC] def cancelBubble: Boolean
280282
BeforeUnloadEvent[JC] def cancelable: Boolean
@@ -14356,6 +14358,8 @@ Navigator[JC] def platform: String
1435614358
Navigator[JC] def userAgent: String
1435714359
Navigator[JC] def vibrate(duration: Double): Boolean
1435814360
Navigator[JC] def vibrate(pattern: js.Array[Double]): Boolean
14361+
Navigator[SO] implicit def toBeaconNavigator(n: Navigator): BeaconNavigator
14362+
Navigator[SO] implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator
1435914363
NavigatorContentUtils[JT]
1436014364
NavigatorGeolocation[JT] def geolocation: Geolocation
1436114365
NavigatorID[JT] def appName: String
@@ -24309,11 +24313,10 @@ experimental/PointerLock.PointerLockElement[JT] def requestPointerLock(): Unit
2430924313
experimental/PointerLock.PointerLockMouseEvent[JT] def movementX: Double
2431024314
experimental/PointerLock.PointerLockMouseEvent[JT] def movementY: Double
2431124315
experimental/Vibration[SO] (@deprecated in 2.0.0)
24312-
experimental/beacon/package[SO] def sendBeacon(url: String, data: dom.BodyInit = null): Boolean
24313-
experimental/beacon/package[SO] implicit def toBeaconNavigator(n: Navigator): BeaconNavigator
24314-
experimental/beacon/package[SO] implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator
24315-
experimental/beacon/package.BeaconNavigator[JT] def sendBeacon(url: String, data: dom.BodyInit = null): Boolean
24316-
experimental/beacon/package.BeaconWorkerNavigator[JT] def sendBeacon(url: String, data: dom.BodyInit = null): Boolean
24316+
experimental/beacon/package[SO] type BeaconNavigator = dom.BeaconNavigator (@deprecated in 2.0.0)
24317+
experimental/beacon/package[SO] type BeaconWorkerNavigator = dom.BeaconWorkerNavigator (@deprecated in 2.0.0)
24318+
experimental/beacon/package[SO] implicit def toBeaconNavigator(n: Navigator): BeaconNavigator (@deprecated in 2.0.0)
24319+
experimental/beacon/package[SO] implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator (@deprecated in 2.0.0)
2431724320
experimental/cachestorage/Cache[JC] def add(request: RequestInfo): js.Promise[Unit]
2431824321
experimental/cachestorage/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit]
2431924322
experimental/cachestorage/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean]
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package org.scalajs.dom
2+
3+
import org.scalajs.dom
4+
import scala.scalajs.js
5+
6+
/** The Beacon interface is used to schedule an asynchronous and non-blocking request to a web server. Beacon requests
7+
* use the HTTP PUT method and requests typically do not require a response. Requests are guaranteed to be initiated
8+
* before a page is unloaded and they are run to completion without requiring a blocking request (for example
9+
* XMLHttpRequest).
10+
*
11+
* @see
12+
* [[https://www.w3.org/TR/2016/WD-beacon-20160204/ Beacon W3C Working Draft]]
13+
* @see
14+
* [[https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API MDN Beacon API]]
15+
*/
16+
@js.native
17+
trait BeaconNavigator extends js.Object {
18+
19+
/** The navigator.sendBeacon() method can be used to asynchronously transfer small HTTP data from the User Agent to a
20+
* web server.
21+
*
22+
* @param url
23+
* The url parameter indicates the resolved URL where the data is to be transmitted.
24+
* @param data
25+
* The data parameter is the ArrayBufferView, Blob, DOMString, or FormData data that is to be transmitted.
26+
*/
27+
def sendBeacon(url: String, data: dom.BodyInit = null): Boolean = js.native
28+
}
29+
30+
/** The Beacon interface is used to schedule an asynchronous and non-blocking request to a web server. Beacon requests
31+
* use the HTTP PUT method and requests typically do not require a response. Requests are guaranteed to be initiated
32+
* before a page is unloaded and they are run to completion without requiring a blocking request (for example
33+
* XMLHttpRequest).
34+
*
35+
* @see
36+
* [[https://www.w3.org/TR/2016/WD-beacon-20160204/ Beacon W3C Working Draft]]
37+
* @see
38+
* [[https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API MDN Beacon API]]
39+
*/
40+
@js.native
41+
trait BeaconWorkerNavigator extends js.Object {
42+
43+
/** The navigator.sendBeacon() method can be used to asynchronously transfer small HTTP data from the User Agent to a
44+
* web server.
45+
*
46+
* @param url
47+
* The url parameter indicates the resolved URL where the data is to be transmitted.
48+
* @param data
49+
* The data parameter is the ArrayBufferView, Blob, DOMString, or FormData data that is to be transmitted.
50+
*/
51+
def sendBeacon(url: String, data: dom.BodyInit = null): Boolean = js.native
52+
}
Lines changed: 13 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,23 @@
1-
package org.scalajs.dom.experimental
1+
package org.scalajs
2+
package dom
3+
package experimental
24

3-
import org.scalajs.dom
4-
import org.scalajs.dom.{Navigator, WorkerNavigator}
55
import scala.language.implicitConversions
6-
import scala.scalajs.js
76

8-
/** The Beacon interface is used to schedule an asynchronous and non-blocking request to a web server. Beacon requests
9-
* use the HTTP PUT method and requests typically do not require a response. Requests are guaranteed to be initiated
10-
* before a page is unloaded and they are run to completion without requiring a blocking request (for example
11-
* XMLHttpRequest).
12-
*
13-
* @see
14-
* [[https://www.w3.org/TR/2016/WD-beacon-20160204/ Beacon W3C Working Draft]]
15-
* @see
16-
* [[https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API MDN Beacon API]]
17-
*/
187
package object beacon {
198

20-
implicit def toBeaconNavigator(n: Navigator): BeaconNavigator =
21-
n.asInstanceOf[BeaconNavigator]
22-
23-
implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator = {
24-
n.asInstanceOf[BeaconWorkerNavigator]
25-
}
9+
@deprecated("use dom.BeaconNavigator instead", "2.0.0")
10+
type BeaconNavigator = dom.BeaconNavigator
2611

27-
@js.native
28-
trait BeaconNavigator extends js.Object {
12+
@deprecated("use dom.BeaconWorkerNavigator instead", "2.0.0")
13+
type BeaconWorkerNavigator = dom.BeaconWorkerNavigator
2914

30-
/** The navigator.sendBeacon() method can be used to asynchronously transfer small HTTP data from the User Agent to
31-
* a web server.
32-
*
33-
* @param url
34-
* The url parameter indicates the resolved URL where the data is to be transmitted.
35-
* @param data
36-
* The data parameter is the ArrayBufferView, Blob, DOMString, or FormData data that is to be transmitted.
37-
*/
38-
def sendBeacon(url: String, data: dom.BodyInit = null): Boolean = js.native
39-
}
15+
@deprecated("use dom.Navigator.toBeaconNavigator instead", "2.0.0")
16+
implicit def toBeaconNavigator(n: Navigator): BeaconNavigator =
17+
Navigator.toBeaconNavigator(n)
4018

41-
@js.native
42-
trait BeaconWorkerNavigator extends js.Object {
19+
@deprecated("use dom.Navigator.toBeaconWorkerNavigator instead", "2.0.0")
20+
implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator =
21+
Navigator.toBeaconWorkerNavigator(n)
4322

44-
/** The navigator.sendBeacon() method can be used to asynchronously transfer small HTTP data from the User Agent to
45-
* a web server.
46-
*
47-
* @param url
48-
* The url parameter indicates the resolved URL where the data is to be transmitted.
49-
* @param data
50-
* The data parameter is the ArrayBufferView, Blob, DOMString, or FormData data that is to be transmitted.
51-
*/
52-
def sendBeacon(url: String, data: dom.BodyInit = null): Boolean = js.native
53-
}
5423
}

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,16 @@ class Navigator
317317
def clipboard: Clipboard = js.native
318318
}
319319

320+
object Navigator {
321+
322+
implicit def toBeaconNavigator(n: Navigator): BeaconNavigator =
323+
n.asInstanceOf[BeaconNavigator]
324+
325+
implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator =
326+
n.asInstanceOf[BeaconWorkerNavigator]
327+
328+
}
329+
320330
@js.native
321331
trait NodeSelector extends js.Object {
322332

0 commit comments

Comments
 (0)