Browse Source

[js] html externs: add new APIs (#7788)

* [js] html externs: add Web MIDI API

* [js] html externs: enable selection events

* [js] html externs: add IntersectionObserver API

* [js] html externs: add MediaDevices API

* [js] html externs: add CacheStorage API

* [js] html externs: add PerformanceObserver API

* [js] html externs: add StorageManager API

* [js] html externs: add Push API

* [js] html externs: keep prefixes for MIDI and Push APIs
George Corney 6 years ago
parent
commit
e7d6af398e
51 changed files with 1957 additions and 0 deletions
  1. 50 0
      std/js/html/Cache.hx
  2. 33 0
      std/js/html/CacheQueryOptions.hx
  3. 65 0
      std/js/html/CacheStorage.hx
  4. 31 0
      std/js/html/CacheStorageNamespace.hx
  5. 1 0
      std/js/html/DOMElement.hx
  6. 6 0
      std/js/html/Document.hx
  7. 30 0
      std/js/html/GetNotificationOptions.hx
  8. 75 0
      std/js/html/IntersectionObserver.hx
  9. 73 0
      std/js/html/IntersectionObserverEntry.hx
  10. 32 0
      std/js/html/IntersectionObserverInit.hx
  11. 59 0
      std/js/html/MediaDeviceInfo.hx
  12. 32 0
      std/js/html/MediaDeviceKind.hx
  13. 48 0
      std/js/html/MediaDevices.hx
  14. 118 0
      std/js/html/MediaTrackSupportedConstraints.hx
  15. 8 0
      std/js/html/Navigator.hx
  16. 32 0
      std/js/html/PerformanceEntryFilterOptions.hx
  17. 42 0
      std/js/html/PerformanceObserver.hx
  18. 40 0
      std/js/html/PerformanceObserverEntryList.hx
  19. 31 0
      std/js/html/PerformanceObserverInit.hx
  20. 17 0
      std/js/html/ServiceWorkerRegistration.hx
  21. 46 0
      std/js/html/StorageEstimate.hx
  22. 55 0
      std/js/html/StorageManager.hx
  23. 2 0
      std/js/html/Window.hx
  24. 1 0
      std/js/html/WorkerGlobalScope.hx
  25. 1 0
      std/js/html/WorkerNavigator.hx
  26. 58 0
      std/js/html/midi/MIDIAccess.hx
  27. 45 0
      std/js/html/midi/MIDIConnectionEvent.hx
  28. 31 0
      std/js/html/midi/MIDIConnectionEventInit.hx
  29. 43 0
      std/js/html/midi/MIDIInput.hx
  30. 53 0
      std/js/html/midi/MIDIInputMap.hx
  31. 34 0
      std/js/html/midi/MIDIMessageEvent.hx
  32. 31 0
      std/js/html/midi/MIDIMessageEventInit.hx
  33. 31 0
      std/js/html/midi/MIDIOptions.hx
  34. 33 0
      std/js/html/midi/MIDIOutput.hx
  35. 53 0
      std/js/html/midi/MIDIOutputMap.hx
  36. 41 0
      std/js/html/midi/MIDIPort.hx
  37. 32 0
      std/js/html/midi/MIDIPortConnectionState.hx
  38. 31 0
      std/js/html/midi/MIDIPortDeviceState.hx
  39. 31 0
      std/js/html/midi/MIDIPortType.hx
  40. 31 0
      std/js/html/push/PushEncryptionKeyName.hx
  41. 45 0
      std/js/html/push/PushEvent.hx
  42. 31 0
      std/js/html/push/PushEventInit.hx
  43. 57 0
      std/js/html/push/PushManager.hx
  44. 60 0
      std/js/html/push/PushMessageData.hx
  45. 32 0
      std/js/html/push/PushPermissionState.hx
  46. 68 0
      std/js/html/push/PushSubscription.hx
  47. 34 0
      std/js/html/push/PushSubscriptionInit.hx
  48. 31 0
      std/js/html/push/PushSubscriptionJSON.hx
  49. 31 0
      std/js/html/push/PushSubscriptionKeys.hx
  50. 32 0
      std/js/html/push/PushSubscriptionOptions.hx
  51. 30 0
      std/js/html/push/PushSubscriptionOptionsInit.hx

+ 50 - 0
std/js/html/Cache.hx

@@ -0,0 +1,50 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\Cache.webidl. Do not edit!
+
+package js.html;
+
+/**
+	The `Cache` interface provides a storage mechanism for `Request` / `Response` object pairs that are cached, for example as part of the `ServiceWorker` life cycle. Note that the `Cache` interface is exposed to windowed scopes as well as workers. You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec.
+
+	Documentation [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/Cache$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/Cache>
+**/
+@:native("Cache")
+extern class Cache
+{
+	@:overload( function( request : String, ?options : CacheQueryOptions) : Promise<Response> {} )
+	function match( request : Request, ?options : CacheQueryOptions ) : Promise<Response>;
+	@:overload( function( ?request : String, ?options : CacheQueryOptions) : Promise<Array<Response>> {} )
+	function matchAll( ?request : Request, ?options : CacheQueryOptions ) : Promise<Array<Response>>;
+	@:overload( function( request : String) : Promise<Void> {} )
+	function add( request : Request ) : Promise<Void>;
+	function addAll( requests : Array<haxe.extern.EitherType<Request,String>> ) : Promise<Void>;
+	@:overload( function( request : String, response : Response) : Promise<Void> {} )
+	function put( request : Request, response : Response ) : Promise<Void>;
+	@:overload( function( request : String, ?options : CacheQueryOptions) : Promise<Bool> {} )
+	function delete( request : Request, ?options : CacheQueryOptions ) : Promise<Bool>;
+	@:overload( function( ?request : String, ?options : CacheQueryOptions) : Promise<Array<Request>> {} )
+	function keys( ?request : Request, ?options : CacheQueryOptions ) : Promise<Array<Request>>;
+}

+ 33 - 0
std/js/html/CacheQueryOptions.hx

@@ -0,0 +1,33 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\Cache.webidl. Do not edit!
+
+package js.html;
+
+typedef CacheQueryOptions =
+{
+	@:optional var cacheName : String;
+	@:optional var ignoreMethod : Bool;
+	@:optional var ignoreSearch : Bool;
+	@:optional var ignoreVary : Bool;
+}

+ 65 - 0
std/js/html/CacheStorage.hx

@@ -0,0 +1,65 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\CacheStorage.webidl. Do not edit!
+
+package js.html;
+
+/**
+	The `CacheStorage` interface represents the storage for `Cache` objects.
+
+	Documentation [CacheStorage](https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage>
+**/
+@:native("CacheStorage")
+extern class CacheStorage
+{
+	/** @throws DOMError */
+	function new( namespace : CacheStorageNamespace, principal : Dynamic/*MISSING Principal*/ ) : Void;
+	
+	/**
+		Checks if a given `Request` is a key in any of the `Cache` objects that the `CacheStorage` object tracks, and returns a `Promise` that resolves to that match.
+	**/
+	@:overload( function( request : String, ?options : CacheQueryOptions) : Promise<Response> {} )
+	function match( request : Request, ?options : CacheQueryOptions ) : Promise<Response>;
+	
+	/**
+		Returns a `Promise` that resolves to `true` if a `Cache` object matching the `cacheName` exists.
+	**/
+	function has( cacheName : String ) : Promise<Bool>;
+	
+	/**
+		Returns a `Promise` that resolves to the `Cache` object matching the `cacheName` (a new cache is created if it doesn't already exist.)
+	**/
+	function open( cacheName : String ) : Promise<Cache>;
+	
+	/**
+		Finds the `Cache` object matching the `cacheName`, and if found, deletes the `Cache` object and returns a `Promise` that resolves to `true`. If no `Cache` object is found, it returns `false`.
+	**/
+	function delete( cacheName : String ) : Promise<Bool>;
+	
+	/**
+		Returns a `Promise` that will resolve with an array containing strings corresponding to all of the named `Cache` objects tracked by the `CacheStorage`. Use this method to iterate over a list of all the `Cache` objects.
+	**/
+	function keys() : Promise<Array<String>>;
+}

+ 31 - 0
std/js/html/CacheStorageNamespace.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\CacheStorage.webidl. Do not edit!
+
+package js.html;
+
+enum abstract CacheStorageNamespace(String)
+{
+	var CONTENT = "content";
+	var CHROME = "chrome";
+}

+ 1 - 0
std/js/html/DOMElement.hx

@@ -241,6 +241,7 @@ extern class DOMElement extends Node
 	var ontimeupdate : haxe.Constraints.Function;
 	var onvolumechange : haxe.Constraints.Function;
 	var onwaiting : haxe.Constraints.Function;
+	var onselectstart : haxe.Constraints.Function;
 	var ontoggle : haxe.Constraints.Function;
 	var onpointercancel : haxe.Constraints.Function;
 	var onpointerdown : haxe.Constraints.Function;

+ 6 - 0
std/js/html/Document.hx

@@ -174,6 +174,11 @@ extern class Document extends Node
 		Represents the event handling code for the `afterscriptexecute` event.
 	**/
 	var onafterscriptexecute : haxe.Constraints.Function;
+	
+	/**
+		Is an `EventHandler` representing the code to be called when the `selectionchange` event is raised.
+	**/
+	var onselectionchange : haxe.Constraints.Function;
 	var currentScript(default,null) : Element;
 	
 	/**
@@ -343,6 +348,7 @@ extern class Document extends Node
 	var ontimeupdate : haxe.Constraints.Function;
 	var onvolumechange : haxe.Constraints.Function;
 	var onwaiting : haxe.Constraints.Function;
+	var onselectstart : haxe.Constraints.Function;
 	var ontoggle : haxe.Constraints.Function;
 	var onpointercancel : haxe.Constraints.Function;
 	var onpointerdown : haxe.Constraints.Function;

+ 30 - 0
std/js/html/GetNotificationOptions.hx

@@ -0,0 +1,30 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\Notification.webidl. Do not edit!
+
+package js.html;
+
+typedef GetNotificationOptions =
+{
+	@:optional var tag : String;
+}

+ 75 - 0
std/js/html/IntersectionObserver.hx

@@ -0,0 +1,75 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\IntersectionObserver.webidl. Do not edit!
+
+package js.html;
+
+/**
+	provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport.
+
+	Documentation [IntersectionObserver](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver>
+**/
+@:native("IntersectionObserver")
+extern class IntersectionObserver
+{
+	
+	/**
+		A specific ancestor of the target `element` being observed. If no value was passed to the constructor or this is `null`, the top-level document's viewport is used.
+	**/
+	var root(default,null) : Element;
+	
+	/**
+		An offset rectangle applied to the root's `bounding box` when calculating intersections, effectively shrinking or growing the root for calculation purposes. The value returned by this property may not be the same as the one specified when calling the constructor as it may be changed to match internal requirements. Each offset can be expressed in pixels (`px`) or as a percentage (`%`). The default is "0px 0px 0px 0px".
+	**/
+	var rootMargin(default,null) : String;
+	
+	/**
+		A list of thresholds, sorted in increasing numeric order, where each threshold is a ratio of intersection area to bounding box area of an observed target. Notifications for a target are generated when any of the thresholds are crossed for that target. If no value was passed to the constructor, 0 is used.
+	**/
+	var thresholds(default,null) : Array<Float>;
+	
+	/** @throws DOMError */
+	function new( intersectionCallback : Array<IntersectionObserverEntry> -> IntersectionObserver -> Void, ?options : IntersectionObserverInit ) : Void;
+	
+	/**
+		Tells the `IntersectionObserver` a target element to observe.
+	**/
+	function observe( target : Element ) : Void;
+	
+	/**
+		Tells the `IntersectionObserver` to stop observing a particular target element.
+	**/
+	function unobserve( target : Element ) : Void;
+	
+	/**
+		Stops the `IntersectionObserver` object from observing any target.
+	**/
+	function disconnect() : Void;
+	
+	/**
+		Returns an array of `IntersectionObserverEntry` objects for all observed targets.
+	**/
+	function takeRecords() : Array<IntersectionObserverEntry>;
+}

+ 73 - 0
std/js/html/IntersectionObserverEntry.hx

@@ -0,0 +1,73 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\IntersectionObserver.webidl. Do not edit!
+
+package js.html;
+
+/**
+	The `IntersectionObserverEntry` interface of the Intersection Observer API describes the intersection between the target element and its root container at a specific moment of transition.
+
+	Documentation [IntersectionObserverEntry](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry>
+**/
+@:native("IntersectionObserverEntry")
+extern class IntersectionObserverEntry
+{
+	
+	/**
+		A `DOMHighResTimeStamp` indicating the time at which the intersection was recorded, relative to the `IntersectionObserver`'s time origin.
+	**/
+	var time(default,null) : Float;
+	
+	/**
+		Returns a `DOMRectReadOnly` for the intersection observer's root.
+	**/
+	var rootBounds(default,null) : DOMRectReadOnly;
+	
+	/**
+		Returns the bounds rectangle of the target element as a `DOMRectReadOnly`. The bounds are computed as described in the documentation for `Element.getBoundingClientRect()`.
+	**/
+	var boundingClientRect(default,null) : DOMRectReadOnly;
+	
+	/**
+		Returns a `DOMRectReadOnly` representing the target's visible area.
+	**/
+	var intersectionRect(default,null) : DOMRectReadOnly;
+	
+	/**
+		A Boolean value which is `true` if the target element intersects with the intersection observer's root. If this is `true`, then, the `IntersectionObserverEntry` describes a transition into a state of intersection; if it's `false`, then you know the transition is from intersecting to not-intersecting.
+	**/
+	var isIntersecting(default,null) : Bool;
+	
+	/**
+		Returns the ratio of the `intersectionRect` to the `boundingClientRect`.
+	**/
+	var intersectionRatio(default,null) : Float;
+	
+	/**
+		The `Element` whose intersection with the root changed.
+	**/
+	var target(default,null) : Element;
+	
+}

+ 32 - 0
std/js/html/IntersectionObserverInit.hx

@@ -0,0 +1,32 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\IntersectionObserver.webidl. Do not edit!
+
+package js.html;
+
+typedef IntersectionObserverInit =
+{
+	@:optional var root : Element;
+	@:optional var rootMargin : String;
+	@:optional var threshold : haxe.extern.EitherType<Float,Array<Float>>;
+}

+ 59 - 0
std/js/html/MediaDeviceInfo.hx

@@ -0,0 +1,59 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MediaDeviceInfo.webidl. Do not edit!
+
+package js.html;
+
+/**
+	The `MediaDevicesInfo` interface contains information that describes a single media input or output device.
+
+	Documentation [MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo>
+**/
+@:native("MediaDeviceInfo")
+extern class MediaDeviceInfo
+{
+	
+	/**
+		Returns a `DOMString` that is an identifier for the represented device that is persisted across sessions. It is un-guessable by other applications and unique to the origin of the calling application. It is reset when the user clears cookies (for Private Browsing, a different identifier is used that is not persisted across sessions).
+	**/
+	var deviceId(default,null) : String;
+	
+	/**
+		Returns an enumerated value that is either `"videoinput"`, `"audioinput"` or `"audiooutput"`.
+	**/
+	var kind(default,null) : MediaDeviceKind;
+	
+	/**
+		Returns a `DOMString` that is a label describing this device (for example "External USB Webcam").
+	**/
+	var label(default,null) : String;
+	
+	/**
+		Returns a `DOMString` that is a group identifier. Two devices have the same group identifier if they belong to the same physical device — for example a monitor with both a built-in camera and a microphone.
+	**/
+	var groupId(default,null) : String;
+	
+	function toJSON() : Dynamic;
+}

+ 32 - 0
std/js/html/MediaDeviceKind.hx

@@ -0,0 +1,32 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MediaDeviceInfo.webidl. Do not edit!
+
+package js.html;
+
+enum abstract MediaDeviceKind(String)
+{
+	var AUDIOINPUT = "audioinput";
+	var AUDIOOUTPUT = "audiooutput";
+	var VIDEOINPUT = "videoinput";
+}

+ 48 - 0
std/js/html/MediaDevices.hx

@@ -0,0 +1,48 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MediaDevices.webidl. Do not edit!
+
+package js.html;
+
+/**
+	The `MediaDevices` interface provides access to connected media input devices like cameras and microphones, as well as screen sharing. In essence, it lets you obtain access to any hardware source of media data.
+
+	Documentation [MediaDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices>
+**/
+@:native("MediaDevices")
+extern class MediaDevices extends EventTarget
+{
+	
+	/**
+		The event handler for the `devicechange` event. This event is delivered to the `MediaDevices` object when a media input or output device is attached to or removed from the user's computer.
+	**/
+	var ondevicechange : haxe.Constraints.Function;
+	
+	function getSupportedConstraints() : MediaTrackSupportedConstraints;
+	/** @throws DOMError */
+	function enumerateDevices() : Promise<Array<MediaDeviceInfo>>;
+	/** @throws DOMError */
+	function getUserMedia( ?constraints : MediaStreamConstraints ) : Promise<MediaStream>;
+}

+ 118 - 0
std/js/html/MediaTrackSupportedConstraints.hx

@@ -0,0 +1,118 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MediaTrackSupportedConstraints.webidl. Do not edit!
+
+package js.html;
+
+/**
+	The `MediaTrackSupportedConstraints` dictionary establishes the list of constrainable properties recognized by the user agent or browser in its implementation of the `MediaStreamTrack` object. An object conforming to `MediaTrackSupportedConstraints` is returned by `MediaDevices.getSupportedConstraints()`.
+
+	Documentation [MediaTrackSupportedConstraints](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSupportedConstraints) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSupportedConstraints$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSupportedConstraints>
+**/
+typedef MediaTrackSupportedConstraints =
+{
+	
+	/**
+		A Boolean value whose value is `true` if the `aspectRatio` constraint is supported in the current environment.
+	**/
+	@:optional var aspectRatio : Bool;
+	
+	/**
+		A Boolean whose value is `true` if the `autoGainControl` constraint is supported in the current environment.
+	**/
+	@:optional var autoGainControl : Bool;
+	@:optional var browserWindow : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `channelCount` constraint is supported in the current environment.
+	**/
+	@:optional var channelCount : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `deviceId` constraint is supported in the current environment.
+	**/
+	@:optional var deviceId : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `echoCancellation` constraint is supported in the current environment.
+	**/
+	@:optional var echoCancellation : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `facingMode` constraint is supported in the current environment.
+	**/
+	@:optional var facingMode : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `frameRate` constraint is supported in the current environment.
+	**/
+	@:optional var frameRate : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `groupId` constraint is supported in the current environment.
+	**/
+	@:optional var groupId : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `height` constraint is supported in the current environment.
+	**/
+	@:optional var height : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `latency` constraint is supported in the current environment.
+	**/
+	@:optional var latency : Bool;
+	@:optional var mediaSource : Bool;
+	
+	/**
+		A Boolean whose value is `true` if the `noiseSuppression` constraint is supported in the current environment.
+	**/
+	@:optional var noiseSuppression : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `sampleRate` constraint is supported in the current environment.
+	**/
+	@:optional var sampleRate : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `sampleSize` constraint is supported in the current environment.
+	**/
+	@:optional var sampleSize : Bool;
+	@:optional var scrollWithPage : Bool;
+	@:optional var viewportHeight : Bool;
+	@:optional var viewportOffsetX : Bool;
+	@:optional var viewportOffsetY : Bool;
+	@:optional var viewportWidth : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `volume` constraint is supported in the current environment.
+	**/
+	@:optional var volume : Bool;
+	
+	/**
+		A Boolean value whose value is `true` if the `width` constraint is supported in the current environment.
+	**/
+	@:optional var width : Bool;
+}

+ 8 - 0
std/js/html/Navigator.hx

@@ -78,6 +78,11 @@ extern class Navigator
 	**/
 	var buildID(default,null) : String;
 	
+	/**
+		Returns a reference to a `MediaDevices` object which can then be used to get information about available media devices (`MediaDevices.enumerateDevices()`), find out what constrainable properties are supported for media on the user's computer and user agent (`MediaDevices.getSupportedConstraints()`), and to request access to media using `MediaDevices.getUserMedia()`.
+	**/
+	var mediaDevices(default,null) : MediaDevices;
+	
 	/**
 		Returns a `ServiceWorkerContainer` object, which provides access to registration, removal, upgrade, and communication with the `ServiceWorker` objects for the associated document.
 	**/
@@ -97,6 +102,7 @@ extern class Navigator
 	var language(default,null) : String;
 	var languages(default,null) : Array<String>;
 	var onLine(default,null) : Bool;
+	var storage(default,null) : StorageManager;
 	
 	@:overload( function( duration : Int ) : Bool {} )
 	function vibrate( pattern : Array<Int> ) : Bool;
@@ -104,6 +110,8 @@ extern class Navigator
 	/** @throws DOMError */
 	function getGamepads() : Array<Gamepad>;
 	/** @throws DOMError */
+	function requestMIDIAccess( ?options : js.html.midi.MIDIOptions ) : Promise<js.html.midi.MIDIAccess>;
+	/** @throws DOMError */
 	@:overload( function( url : String, ?data : ArrayBufferView) : Bool {} )
 	@:overload( function( url : String, ?data : ArrayBuffer) : Bool {} )
 	@:overload( function( url : String, ?data : FormData) : Bool {} )

+ 32 - 0
std/js/html/PerformanceEntryFilterOptions.hx

@@ -0,0 +1,32 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PerformanceObserverEntryList.webidl. Do not edit!
+
+package js.html;
+
+typedef PerformanceEntryFilterOptions =
+{
+	@:optional var entryType : String;
+	@:optional var initiatorType : String;
+	@:optional var name : String;
+}

+ 42 - 0
std/js/html/PerformanceObserver.hx

@@ -0,0 +1,42 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PerformanceObserver.webidl. Do not edit!
+
+package js.html;
+
+/**
+	The `PerformanceObserver` interface is used to observe performance measurement events and be notified of new performance entries as they are recorded in the browser's performance timeline.
+
+	Documentation [PerformanceObserver](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver>
+**/
+@:native("PerformanceObserver")
+extern class PerformanceObserver
+{
+	/** @throws DOMError */
+	function new( callback : PerformanceObserverEntryList -> PerformanceObserver -> Void ) : Void;
+	function observe( options : PerformanceObserverInit ) : Void;
+	function disconnect() : Void;
+	function takeRecords() : Array<PerformanceEntry>;
+}

+ 40 - 0
std/js/html/PerformanceObserverEntryList.hx

@@ -0,0 +1,40 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PerformanceObserverEntryList.webidl. Do not edit!
+
+package js.html;
+
+/**
+	The `PerformanceObserverEntryList` interface is a list of peformance events that were explicitly observed via the `observe()` method.
+
+	Documentation [PerformanceObserverEntryList](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList>
+**/
+@:native("PerformanceObserverEntryList")
+extern class PerformanceObserverEntryList
+{
+	function getEntries( ?filter : PerformanceEntryFilterOptions ) : Array<PerformanceEntry>;
+	function getEntriesByType( entryType : String ) : Array<PerformanceEntry>;
+	function getEntriesByName( name : String, ?entryType : String ) : Array<PerformanceEntry>;
+}

+ 31 - 0
std/js/html/PerformanceObserverInit.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PerformanceObserver.webidl. Do not edit!
+
+package js.html;
+
+typedef PerformanceObserverInit =
+{
+	@:optional var buffered : Bool;
+	var entryTypes : Array<String>;
+}

+ 17 - 0
std/js/html/ServiceWorkerRegistration.hx

@@ -61,6 +61,11 @@ extern class ServiceWorkerRegistration extends EventTarget
 	**/
 	var onupdatefound : haxe.Constraints.Function;
 	
+	/**
+		Returns a reference to the `PushManager` interface for managing push subscriptions including subscribing, getting an active subscription, and accessing push permission status.
+	**/
+	var pushManager(default,null) : js.html.push.PushManager;
+	
 	
 	/**
 		Checks the server for an updated version of the service worker without consulting caches.
@@ -73,4 +78,16 @@ extern class ServiceWorkerRegistration extends EventTarget
 		@throws DOMError
 	**/
 	function unregister() : Promise<Bool>;
+	
+	/**
+		Displays the notification with the requested title.
+		@throws DOMError
+	**/
+	function showNotification( title : String, ?options : NotificationOptions ) : Promise<Void>;
+	
+	/**
+		Returns a `Promise` that resolves to an array of `Notification` objects.
+		@throws DOMError
+	**/
+	function getNotifications( ?filter : GetNotificationOptions ) : Promise<Array<Notification>>;
 }

+ 46 - 0
std/js/html/StorageEstimate.hx

@@ -0,0 +1,46 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\StorageManager.webidl. Do not edit!
+
+package js.html;
+
+/**
+	The `StorageEstimate` dictionary is used by the `StorageManager` to provide estimates of the size of a site's or application's data store and how much of it is in use. The `estimate()` method returns an object that conforms to this dictionary when its `Promise` resolves.
+
+	Documentation [StorageEstimate](https://developer.mozilla.org/en-US/docs/Web/API/StorageEstimate) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/StorageEstimate$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/StorageEstimate>
+**/
+typedef StorageEstimate =
+{
+	
+	/**
+		A numeric value which provides a conservative approximation of the total storage the user's device or computer has available for the site origin or Web app. It's possible that there's more than this amount of space available though you can't rely on that being the case.
+	**/
+	@:optional var quota : Int;
+	
+	/**
+		A numeric value approximating the amount of storage space currently being used by the site or Web app, out of the available space as indicated by `quota`.
+	**/
+	@:optional var usage : Int;
+}

+ 55 - 0
std/js/html/StorageManager.hx

@@ -0,0 +1,55 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\StorageManager.webidl. Do not edit!
+
+package js.html;
+
+/**
+	The `StorageManager` interface of the the Storage API provides an interface for managing persistance permissions and estimating available storage. You can get a reference to this interface using either `navigator.storage` or `WorkerNavigator.storage`.
+
+	Documentation [StorageManager](https://developer.mozilla.org/en-US/docs/Web/API/StorageManager) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/StorageManager$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/StorageManager>
+**/
+@:native("StorageManager")
+extern class StorageManager
+{
+	
+	/**
+		Returns a `Promise` that resolves to `true` if persistence has already been granted for your site's storage.
+		@throws DOMError
+	**/
+	function persisted() : Promise<Bool>;
+	
+	/**
+		Returns a `Promise` that resolves to `true` if the user agent is able to persist your site's storage.
+		@throws DOMError
+	**/
+	function persist() : Promise<Bool>;
+	
+	/**
+		Returns a `StorageEstimate` object containing usage and quota numbers for your origin.
+		@throws DOMError
+	**/
+	function estimate() : Promise<StorageEstimate>;
+}

+ 2 - 0
std/js/html/Window.hx

@@ -309,6 +309,7 @@ extern class Window extends EventTarget
 	var ontimeupdate : haxe.Constraints.Function;
 	var onvolumechange : haxe.Constraints.Function;
 	var onwaiting : haxe.Constraints.Function;
+	var onselectstart : haxe.Constraints.Function;
 	var ontoggle : haxe.Constraints.Function;
 	var onpointercancel : haxe.Constraints.Function;
 	var onpointerdown : haxe.Constraints.Function;
@@ -368,6 +369,7 @@ extern class Window extends EventTarget
 	**/
 	var isSecureContext(default,null) : Bool;
 	var indexedDB(default,null) : js.html.idb.Factory;
+	var caches(default,null) : CacheStorage;
 	
 	/**
 		Returns a reference to the session storage object used to store data that may only be accessed by the origin that created it.

+ 1 - 0
std/js/html/WorkerGlobalScope.hx

@@ -69,6 +69,7 @@ extern class WorkerGlobalScope extends EventTarget
 	var origin(default,null) : String;
 	var isSecureContext(default,null) : Bool;
 	var indexedDB(default,null) : js.html.idb.Factory;
+	var caches(default,null) : CacheStorage;
 	
 	
 	/**

+ 1 - 0
std/js/html/WorkerNavigator.hx

@@ -44,6 +44,7 @@ extern class WorkerNavigator
 	var language(default,null) : String;
 	var languages(default,null) : Array<String>;
 	var onLine(default,null) : Bool;
+	var storage(default,null) : StorageManager;
 	
 	function taintEnabled() : Bool;
 }

+ 58 - 0
std/js/html/midi/MIDIAccess.hx

@@ -0,0 +1,58 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIAccess.webidl. Do not edit!
+
+package js.html.midi;
+
+/**
+	The `MIDIAccess` interface of the Web MIDI API provides methods for listing MIDI input and output devices, and obtaining access to those devices.
+
+	Documentation [MIDIAccess](https://developer.mozilla.org/en-US/docs/Web/API/MIDIAccess) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/MIDIAccess$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/MIDIAccess>
+**/
+@:native("MIDIAccess")
+extern class MIDIAccess extends js.html.EventTarget
+{
+	
+	/**
+		Returns an instance of `MIDIInputMap` which provides access to any available MIDI input ports.
+	**/
+	var inputs(default,null) : MIDIInputMap;
+	
+	/**
+		Returns an instance of `MIDIOutputMap` which provides access to any available MIDI output ports.
+	**/
+	var outputs(default,null) : MIDIOutputMap;
+	
+	/**
+		Called whenever a new MIDI port is added or an existing port changes state.
+	**/
+	var onstatechange : haxe.Constraints.Function;
+	
+	/**
+		A boolean attribute indicating whether system exclusive support is enabled on the current MIDIAccess instance.
+	**/
+	var sysexEnabled(default,null) : Bool;
+	
+}

+ 45 - 0
std/js/html/midi/MIDIConnectionEvent.hx

@@ -0,0 +1,45 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIConnectionEvent.webidl. Do not edit!
+
+package js.html.midi;
+
+/**
+	The `MIDIConnectionEvent` interface of the Web MIDI API is the event passed to the `onstatechange` event of the `MIDIAccess` interface and the `onstatechange` event of the `MIDIPorts` interface. This occurs any time a new port becomes available, or when a previously available port becomes unavailable. For example, this event is fired whenever a MIDI device is either plugged in to or unplugged from a computer.
+
+	Documentation [MIDIConnectionEvent](https://developer.mozilla.org/en-US/docs/Web/API/MIDIConnectionEvent) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/MIDIConnectionEvent$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/MIDIConnectionEvent>
+**/
+@:native("MIDIConnectionEvent")
+extern class MIDIConnectionEvent extends js.html.Event
+{
+	
+	/**
+		Returns a reference to a `MIDIPort` instance for a port that has been connected or disconnected."
+	**/
+	var port(default,null) : MIDIPort;
+	
+	/** @throws DOMError */
+	function new( type : String, ?eventInitDict : MIDIConnectionEventInit ) : Void;
+}

+ 31 - 0
std/js/html/midi/MIDIConnectionEventInit.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIConnectionEvent.webidl. Do not edit!
+
+package js.html.midi;
+
+typedef MIDIConnectionEventInit =
+{
+	> EventInit,
+	@:optional var port : MIDIPort;
+}

+ 43 - 0
std/js/html/midi/MIDIInput.hx

@@ -0,0 +1,43 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIInput.webidl. Do not edit!
+
+package js.html.midi;
+
+/**
+	Use the `MIDIInput` interface of the Web MIDI API to access and pass messages to a MIDI input port.
+
+	Documentation [MIDIInput](https://developer.mozilla.org/en-US/docs/Web/API/MIDIInput) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/MIDIInput$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/MIDIInput>
+**/
+@:native("MIDIInput")
+extern class MIDIInput extends MIDIPort
+{
+	
+	/**
+		When the current port receives a `MIDIMessage` it triggers a call to this event handler.
+	**/
+	var onmidimessage : haxe.Constraints.Function;
+	
+}

+ 53 - 0
std/js/html/midi/MIDIInputMap.hx

@@ -0,0 +1,53 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIInputMap.webidl. Do not edit!
+
+package js.html.midi;
+
+/**
+	The `MIDIInputMap` read-only interface of the Web MIDI API provides a `Map`-like interface to the currently available MIDI input ports. Though it works generally like a map, because it is read-only it does not contain `clear()`, `delete()`, or `set()` functions.
+
+	Documentation [MIDIInputMap](https://developer.mozilla.org/en-US/docs/Web/API/MIDIInputMap) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/MIDIInputMap$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/MIDIInputMap>
+**/
+@:native("MIDIInputMap")
+extern class MIDIInputMap
+{
+	var size(default,null) : Int;
+	
+	/** @throws DOMError */
+	function entries() : Dynamic;
+	/** @throws DOMError */
+	function keys() : Dynamic;
+	/** @throws DOMError */
+	function values() : Dynamic;
+	/** @throws DOMError */
+	function forEach( callback : Dynamic, ?thisArg : Dynamic ) : Void;
+	/** @throws DOMError */
+	@:pure
+	function has( key : String ) : Bool;
+	/** @throws DOMError */
+	@:pure
+	function get( key : String ) : Dynamic;
+}

+ 34 - 0
std/js/html/midi/MIDIMessageEvent.hx

@@ -0,0 +1,34 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIMessageEvent.webidl. Do not edit!
+
+package js.html.midi;
+
+@:native("MIDIMessageEvent")
+extern class MIDIMessageEvent extends js.html.Event
+{
+	var data(default,null) : js.html.Uint8Array;
+	
+	/** @throws DOMError */
+	function new( type : String, ?eventInitDict : MIDIMessageEventInit ) : Void;
+}

+ 31 - 0
std/js/html/midi/MIDIMessageEventInit.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIMessageEvent.webidl. Do not edit!
+
+package js.html.midi;
+
+typedef MIDIMessageEventInit =
+{
+	> EventInit,
+	@:optional var data : js.html.Uint8Array;
+}

+ 31 - 0
std/js/html/midi/MIDIOptions.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIOptions.webidl. Do not edit!
+
+package js.html.midi;
+
+typedef MIDIOptions =
+{
+	@:optional var software : Bool;
+	@:optional var sysex : Bool;
+}

+ 33 - 0
std/js/html/midi/MIDIOutput.hx

@@ -0,0 +1,33 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIOutput.webidl. Do not edit!
+
+package js.html.midi;
+
+@:native("MIDIOutput")
+extern class MIDIOutput extends MIDIPort
+{
+	/** @throws DOMError */
+	function send( data : Array<Int>, ?timestamp : Float ) : Void;
+	function clear() : Void;
+}

+ 53 - 0
std/js/html/midi/MIDIOutputMap.hx

@@ -0,0 +1,53 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIOutputMap.webidl. Do not edit!
+
+package js.html.midi;
+
+/**
+	The `MIDIOutputMap` read-only interface of the Web MIDI API provides a `Map`-like interface to the currently available MIDI output ports. Although it works like a map, because it is read-only, it does not contain `clear()`, `delete()`, or `set()` functions.
+
+	Documentation [MIDIOutputMap](https://developer.mozilla.org/en-US/docs/Web/API/MIDIOutputMap) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/MIDIOutputMap$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/MIDIOutputMap>
+**/
+@:native("MIDIOutputMap")
+extern class MIDIOutputMap
+{
+	var size(default,null) : Int;
+	
+	/** @throws DOMError */
+	function entries() : Dynamic;
+	/** @throws DOMError */
+	function keys() : Dynamic;
+	/** @throws DOMError */
+	function values() : Dynamic;
+	/** @throws DOMError */
+	function forEach( callback : Dynamic, ?thisArg : Dynamic ) : Void;
+	/** @throws DOMError */
+	@:pure
+	function has( key : String ) : Bool;
+	/** @throws DOMError */
+	@:pure
+	function get( key : String ) : Dynamic;
+}

+ 41 - 0
std/js/html/midi/MIDIPort.hx

@@ -0,0 +1,41 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIPort.webidl. Do not edit!
+
+package js.html.midi;
+
+@:native("MIDIPort")
+extern class MIDIPort extends js.html.EventTarget
+{
+	var id(default,null) : String;
+	var manufacturer(default,null) : String;
+	var name(default,null) : String;
+	var version(default,null) : String;
+	var type(default,null) : MIDIPortType;
+	var state(default,null) : MIDIPortDeviceState;
+	var connection(default,null) : MIDIPortConnectionState;
+	var onstatechange : haxe.Constraints.Function;
+	
+	function open() : Promise<MIDIPort>;
+	function close() : Promise<MIDIPort>;
+}

+ 32 - 0
std/js/html/midi/MIDIPortConnectionState.hx

@@ -0,0 +1,32 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIPort.webidl. Do not edit!
+
+package js.html.midi;
+
+enum abstract MIDIPortConnectionState(String)
+{
+	var OPEN = "open";
+	var CLOSED = "closed";
+	var PENDING = "pending";
+}

+ 31 - 0
std/js/html/midi/MIDIPortDeviceState.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIPort.webidl. Do not edit!
+
+package js.html.midi;
+
+enum abstract MIDIPortDeviceState(String)
+{
+	var DISCONNECTED = "disconnected";
+	var CONNECTED = "connected";
+}

+ 31 - 0
std/js/html/midi/MIDIPortType.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\MIDIPort.webidl. Do not edit!
+
+package js.html.midi;
+
+enum abstract MIDIPortType(String)
+{
+	var INPUT = "input";
+	var OUTPUT = "output";
+}

+ 31 - 0
std/js/html/push/PushEncryptionKeyName.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushSubscription.webidl. Do not edit!
+
+package js.html.push;
+
+enum abstract PushEncryptionKeyName(String)
+{
+	var P256DH = "p256dh";
+	var AUTH = "auth";
+}

+ 45 - 0
std/js/html/push/PushEvent.hx

@@ -0,0 +1,45 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushEvent.webidl. Do not edit!
+
+package js.html.push;
+
+/**
+	The `PushEvent` interface of the Push API represents a push message that has been received. This event is sent to the global scope of a `ServiceWorker`. It contains the information sent from an application server to a `PushSubscription`.
+
+	Documentation [PushEvent](https://developer.mozilla.org/en-US/docs/Web/API/PushEvent) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/PushEvent$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/PushEvent>
+**/
+@:native("PushEvent")
+extern class PushEvent extends js.html.ExtendableEvent
+{
+	
+	/**
+		Returns a reference to a `PushMessageData` object containing data sent to the `PushSubscription`.
+	**/
+	var data(default,null) : PushMessageData;
+	
+	/** @throws DOMError */
+	function new( type : String, ?eventInitDict : PushEventInit ) : Void;
+}

+ 31 - 0
std/js/html/push/PushEventInit.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushEvent.webidl. Do not edit!
+
+package js.html.push;
+
+typedef PushEventInit =
+{
+	> ExtendableEventInit,
+	@:optional var data : haxe.extern.EitherType<haxe.extern.EitherType<js.html.ArrayBufferView,js.html.ArrayBuffer>,String>;
+}

+ 57 - 0
std/js/html/push/PushManager.hx

@@ -0,0 +1,57 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushManager.webidl. Do not edit!
+
+package js.html.push;
+
+/**
+	The `PushManager` interface of the Push API provides a way to receive notifications from third-party servers as well as request URLs for push notifications.
+
+	Documentation [PushManager](https://developer.mozilla.org/en-US/docs/Web/API/PushManager) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/PushManager$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/PushManager>
+**/
+@:native("PushManager")
+extern class PushManager
+{
+	/** @throws DOMError */
+	function new( scope : String ) : Void;
+	
+	/**
+		Subscribes to a push service. It returns a `Promise` that resolves to a `PushSubscription` object containing details of a push subscription. A new push subscription is created if the current service worker does not have an existing subscription.
+		@throws DOMError
+	**/
+	function subscribe( ?options : PushSubscriptionOptionsInit ) : Promise<PushSubscription>;
+	
+	/**
+		Retrieves an existing push subscription. It returns a `Promise` that resolves to a `PushSubscription` object containing details of an existing subscription. If no existing subscription exists, this resolves to a `null` value.
+		@throws DOMError
+	**/
+	function getSubscription() : Promise<PushSubscription>;
+	
+	/**
+		Returns a `Promise` that resolves to the permission state of the current `PushManager`, which will be one of `'granted'`, `'denied'`, or `'prompt'`.
+		@throws DOMError
+	**/
+	function permissionState( ?options : PushSubscriptionOptionsInit ) : Promise<PushPermissionState>;
+}

+ 60 - 0
std/js/html/push/PushMessageData.hx

@@ -0,0 +1,60 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushMessageData.webidl. Do not edit!
+
+package js.html.push;
+
+/**
+	The `PushMessageData` interface of the Push API provides methods which let you retrieve the push data sent by a server in various formats.
+
+	Documentation [PushMessageData](https://developer.mozilla.org/en-US/docs/Web/API/PushMessageData) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/PushMessageData$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/PushMessageData>
+**/
+@:native("PushMessageData")
+extern class PushMessageData
+{
+	
+	/**
+		Extracts the data as an `ArrayBuffer` object.
+		@throws DOMError
+	**/
+	function arrayBuffer() : js.html.ArrayBuffer;
+	
+	/**
+		Extracts the data as a `Blob` object.
+		@throws DOMError
+	**/
+	function blob() : js.html.Blob;
+	
+	/**
+		Extracts the data as a JSON object.
+		@throws DOMError
+	**/
+	function json() : Dynamic;
+	
+	/**
+		Extracts the data as a plain text string.
+	**/
+	function text() : String;
+}

+ 32 - 0
std/js/html/push/PushPermissionState.hx

@@ -0,0 +1,32 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushManager.webidl. Do not edit!
+
+package js.html.push;
+
+enum abstract PushPermissionState(String)
+{
+	var GRANTED = "granted";
+	var DENIED = "denied";
+	var PROMPT = "prompt";
+}

+ 68 - 0
std/js/html/push/PushSubscription.hx

@@ -0,0 +1,68 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushSubscription.webidl. Do not edit!
+
+package js.html.push;
+
+/**
+	The `PushSubscription` interface of the Push API provides a subcription's URL endpoint and allows unsubscription from a push service.
+
+	Documentation [PushSubscription](https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
+
+	@see <https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription>
+**/
+@:native("PushSubscription")
+extern class PushSubscription
+{
+	
+	/**
+		A `USVString` containing the endpoint associated with the push subscription.
+	**/
+	var endpoint(default,null) : String;
+	
+	/**
+		An object containing the options used to create the subscription.
+	**/
+	var options(default,null) : PushSubscriptionOptions;
+	
+	/** @throws DOMError */
+	function new( initDict : PushSubscriptionInit ) : Void;
+	
+	/**
+		Returns an `ArrayBuffer` which contains the client's public key, which can then be sent to a server and used in encrypting push message data.
+		@throws DOMError
+	**/
+	function getKey( name : PushEncryptionKeyName ) : js.html.ArrayBuffer;
+	
+	/**
+		Starts the asynchronous process of unsubscribing from the push service, returning a `Promise` that resolves to a `Boolean` when the current subscription is successfully unregistered.
+		@throws DOMError
+	**/
+	function unsubscribe() : Promise<Bool>;
+	
+	/**
+		Standard serializer — returns a JSON representation of the subscription properties.
+		@throws DOMError
+	**/
+	function toJSON() : PushSubscriptionJSON;
+}

+ 34 - 0
std/js/html/push/PushSubscriptionInit.hx

@@ -0,0 +1,34 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushSubscription.webidl. Do not edit!
+
+package js.html.push;
+
+typedef PushSubscriptionInit =
+{
+	@:optional var appServerKey : haxe.extern.EitherType<js.html.ArrayBufferView,js.html.ArrayBuffer>;
+	@:optional var authSecret : js.html.ArrayBuffer;
+	var endpoint : String;
+	@:optional var p256dhKey : js.html.ArrayBuffer;
+	var scope : String;
+}

+ 31 - 0
std/js/html/push/PushSubscriptionJSON.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushSubscription.webidl. Do not edit!
+
+package js.html.push;
+
+typedef PushSubscriptionJSON =
+{
+	@:optional var endpoint : String;
+	@:optional var keys : PushSubscriptionKeys;
+}

+ 31 - 0
std/js/html/push/PushSubscriptionKeys.hx

@@ -0,0 +1,31 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushSubscription.webidl. Do not edit!
+
+package js.html.push;
+
+typedef PushSubscriptionKeys =
+{
+	@:optional var auth : String;
+	@:optional var p256dh : String;
+}

+ 32 - 0
std/js/html/push/PushSubscriptionOptions.hx

@@ -0,0 +1,32 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushSubscriptionOptions.webidl. Do not edit!
+
+package js.html.push;
+
+@:native("PushSubscriptionOptions")
+extern class PushSubscriptionOptions
+{
+	var applicationServerKey(default,null) : js.html.ArrayBuffer;
+	
+}

+ 30 - 0
std/js/html/push/PushSubscriptionOptionsInit.hx

@@ -0,0 +1,30 @@
+/*
+ * Copyright (C)2005-2019 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+// This file is generated from mozilla\PushManager.webidl. Do not edit!
+
+package js.html.push;
+
+typedef PushSubscriptionOptionsInit =
+{
+	@:optional var applicationServerKey : haxe.extern.EitherType<haxe.extern.EitherType<js.html.ArrayBufferView,js.html.ArrayBuffer>,String>;
+}