Skip to content

Commit 432af50

Browse files
authored
Merge pull request #564 from scala-js/topic/migrate-beacon
Migrate beacon to dom
2 parents 8328970 + 0e62bff commit 432af50

File tree

6 files changed

+95
-54
lines changed

6 files changed

+95
-54
lines changed

api-reports/2_12.txt

+8-5
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,7 @@ 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
1435914362
NavigatorContentUtils[JT]
1436014363
NavigatorGeolocation[JT] def geolocation: Geolocation
1436114364
NavigatorID[JT] def appName: String
@@ -24013,6 +24016,7 @@ WorkerNavigator[JT] def languages: js.Array[String]
2401324016
WorkerNavigator[JT] def onLine: Boolean
2401424017
WorkerNavigator[JT] def platform: String
2401524018
WorkerNavigator[JT] def userAgent: String
24019+
WorkerNavigator[SO] implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator
2401624020
WriteableState[JT]
2401724021
WriteableState[SO] val closed: WriteableState
2401824022
WriteableState[SO] val closing: WriteableState
@@ -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

+8-5
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,7 @@ 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
1435914362
NavigatorContentUtils[JT]
1436014363
NavigatorGeolocation[JT] def geolocation: Geolocation
1436114364
NavigatorID[JT] def appName: String
@@ -24013,6 +24016,7 @@ WorkerNavigator[JT] def languages: js.Array[String]
2401324016
WorkerNavigator[JT] def onLine: Boolean
2401424017
WorkerNavigator[JT] def platform: String
2401524018
WorkerNavigator[JT] def userAgent: String
24019+
WorkerNavigator[SO] implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator
2401624020
WriteableState[JT]
2401724021
WriteableState[SO] val closed: WriteableState
2401824022
WriteableState[SO] val closing: WriteableState
@@ -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]

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

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.scalajs.dom
22

3+
import scala.language.implicitConversions
34
import scala.scalajs.js
45
import scala.scalajs.js.annotation._
56

@@ -169,6 +170,12 @@ object DedicatedWorkerGlobalScope extends js.Object {
169170
@js.native
170171
trait WorkerNavigator extends NavigatorID with NavigatorOnLine with NavigatorLanguage
171172

173+
object WorkerNavigator {
174+
175+
implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator =
176+
n.asInstanceOf[BeaconWorkerNavigator]
177+
}
178+
172179
/** The WorkerLocation interface defines the absolute location of the script executed by the Worker. Such an object is
173180
* initialized for each worker and is available via the WorkerGlobalScope.location property obtained by calling
174181
* window.self.location.
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+
}
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.WorkerNavigator.toBeaconWorkerNavigator instead", "2.0.0")
20+
implicit def toBeaconWorkerNavigator(n: WorkerNavigator): BeaconWorkerNavigator =
21+
WorkerNavigator.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

+7
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,13 @@ 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+
}
326+
320327
@js.native
321328
trait NodeSelector extends js.Object {
322329

0 commit comments

Comments
 (0)