@rescript/webapi 0.1.0-experimental-29b94b3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -0
  3. package/package.json +38 -0
  4. package/rescript.json +19 -0
  5. package/src/CSSFontLoadingAPI/FontFace.res +34 -0
  6. package/src/CSSFontLoadingAPI/FontFaceSet.res +112 -0
  7. package/src/CSSFontLoadingAPI.res +101 -0
  8. package/src/CanvasAPI/ImageBitmap.res +8 -0
  9. package/src/CanvasAPI/OffscreenCanvas.res +123 -0
  10. package/src/CanvasAPI.res +55 -0
  11. package/src/ChannelMessagingAPI/MessagePort.res +120 -0
  12. package/src/ChannelMessagingAPI.res +13 -0
  13. package/src/ClipboardAPI/Clipboard.res +106 -0
  14. package/src/ClipboardAPI/ClipboardItem.res +21 -0
  15. package/src/ClipboardAPI.res +31 -0
  16. package/src/CredentialManagementAPI/CredentialsContainer.res +31 -0
  17. package/src/CredentialManagementAPI.res +140 -0
  18. package/src/DOMAPI/Animation.res +137 -0
  19. package/src/DOMAPI/AnimationEffect.res +19 -0
  20. package/src/DOMAPI/CSSRuleList.res +7 -0
  21. package/src/DOMAPI/CSSStyleDeclaration.res +36 -0
  22. package/src/DOMAPI/CSSStyleSheet.res +32 -0
  23. package/src/DOMAPI/CSSStyleValue.res +13 -0
  24. package/src/DOMAPI/CaretPosition.res +4 -0
  25. package/src/DOMAPI/CharacterData.res +272 -0
  26. package/src/DOMAPI/Comment.res +278 -0
  27. package/src/DOMAPI/CustomElementRegistry.res +31 -0
  28. package/src/DOMAPI/DOMImplementation.res +30 -0
  29. package/src/DOMAPI/DOMMatrix.res +169 -0
  30. package/src/DOMAPI/DOMMatrixReadOnly.res +103 -0
  31. package/src/DOMAPI/DOMPoint.res +29 -0
  32. package/src/DOMAPI/DOMPointReadOnly.res +24 -0
  33. package/src/DOMAPI/DOMRect.res +23 -0
  34. package/src/DOMAPI/DOMRectList.res +4 -0
  35. package/src/DOMAPI/DOMRectReadOnly.res +17 -0
  36. package/src/DOMAPI/DOMTokenList.res +72 -0
  37. package/src/DOMAPI/Document.res +634 -0
  38. package/src/DOMAPI/DocumentFragment.res +261 -0
  39. package/src/DOMAPI/DocumentTimeline.res +9 -0
  40. package/src/DOMAPI/Element.res +634 -0
  41. package/src/DOMAPI/ElementInternals.res +39 -0
  42. package/src/DOMAPI/FileList.res +8 -0
  43. package/src/DOMAPI/HTMLAnchorElement.res +693 -0
  44. package/src/DOMAPI/HTMLAreaElement.res +687 -0
  45. package/src/DOMAPI/HTMLAudioElement.res +750 -0
  46. package/src/DOMAPI/HTMLBRElement.res +686 -0
  47. package/src/DOMAPI/HTMLBaseElement.res +687 -0
  48. package/src/DOMAPI/HTMLBodyElement.res +687 -0
  49. package/src/DOMAPI/HTMLButtonElement.res +714 -0
  50. package/src/DOMAPI/HTMLCanvasElement.res +741 -0
  51. package/src/DOMAPI/HTMLCollection.res +15 -0
  52. package/src/DOMAPI/HTMLCollectionOf.res +16 -0
  53. package/src/DOMAPI/HTMLDListElement.res +690 -0
  54. package/src/DOMAPI/HTMLDataElement.res +687 -0
  55. package/src/DOMAPI/HTMLDataListElement.res +697 -0
  56. package/src/DOMAPI/HTMLDialogElement.res +715 -0
  57. package/src/DOMAPI/HTMLDivElement.res +686 -0
  58. package/src/DOMAPI/HTMLElement.res +685 -0
  59. package/src/DOMAPI/HTMLEmbedElement.res +693 -0
  60. package/src/DOMAPI/HTMLFieldSetElement.res +718 -0
  61. package/src/DOMAPI/HTMLFormControlsCollection.res +16 -0
  62. package/src/DOMAPI/HTMLFormElement.res +720 -0
  63. package/src/DOMAPI/HTMLFrameSetElement.res +697 -0
  64. package/src/DOMAPI/HTMLHRElement.res +686 -0
  65. package/src/DOMAPI/HTMLHeadElement.res +687 -0
  66. package/src/DOMAPI/HTMLHeadingElement.res +693 -0
  67. package/src/DOMAPI/HTMLHtmlElement.res +687 -0
  68. package/src/DOMAPI/HTMLIFrameElement.res +696 -0
  69. package/src/DOMAPI/HTMLImageElement.res +696 -0
  70. package/src/DOMAPI/HTMLInputElement.res +773 -0
  71. package/src/DOMAPI/HTMLLIElement.res +686 -0
  72. package/src/DOMAPI/HTMLLabelElement.res +690 -0
  73. package/src/DOMAPI/HTMLLegendElement.res +693 -0
  74. package/src/DOMAPI/HTMLLinkElement.res +687 -0
  75. package/src/DOMAPI/HTMLMapElement.res +686 -0
  76. package/src/DOMAPI/HTMLMediaElement.res +749 -0
  77. package/src/DOMAPI/HTMLMenuElement.res +687 -0
  78. package/src/DOMAPI/HTMLMetaElement.res +687 -0
  79. package/src/DOMAPI/HTMLMeterElement.res +690 -0
  80. package/src/DOMAPI/HTMLModElement.res +686 -0
  81. package/src/DOMAPI/HTMLOListElement.res +690 -0
  82. package/src/DOMAPI/HTMLObjectElement.res +717 -0
  83. package/src/DOMAPI/HTMLOptGroupElement.res +697 -0
  84. package/src/DOMAPI/HTMLOptionElement.res +693 -0
  85. package/src/DOMAPI/HTMLOptionsCollection.res +21 -0
  86. package/src/DOMAPI/HTMLOutputElement.res +711 -0
  87. package/src/DOMAPI/HTMLParagraphElement.res +701 -0
  88. package/src/DOMAPI/HTMLPictureElement.res +693 -0
  89. package/src/DOMAPI/HTMLPreElement.res +686 -0
  90. package/src/DOMAPI/HTMLProgressElement.res +697 -0
  91. package/src/DOMAPI/HTMLQuoteElement.res +690 -0
  92. package/src/DOMAPI/HTMLScriptElement.res +699 -0
  93. package/src/DOMAPI/HTMLSelectElement.res +762 -0
  94. package/src/DOMAPI/HTMLSlotElement.res +713 -0
  95. package/src/DOMAPI/HTMLSourceElement.res +693 -0
  96. package/src/DOMAPI/HTMLSpanElement.res +687 -0
  97. package/src/DOMAPI/HTMLStyleElement.res +690 -0
  98. package/src/DOMAPI/HTMLTableCaptionElement.res +714 -0
  99. package/src/DOMAPI/HTMLTableCellElement.res +701 -0
  100. package/src/DOMAPI/HTMLTableElement.res +755 -0
  101. package/src/DOMAPI/HTMLTableRowElement.res +713 -0
  102. package/src/DOMAPI/HTMLTableSectionElement.res +730 -0
  103. package/src/DOMAPI/HTMLTemplateElement.res +697 -0
  104. package/src/DOMAPI/HTMLTextAreaElement.res +758 -0
  105. package/src/DOMAPI/HTMLTimeElement.res +687 -0
  106. package/src/DOMAPI/HTMLTitleElement.res +690 -0
  107. package/src/DOMAPI/HTMLTrackElement.res +690 -0
  108. package/src/DOMAPI/HTMLUListElement.res +690 -0
  109. package/src/DOMAPI/HTMLVideoElement.res +778 -0
  110. package/src/DOMAPI/IdleDeadline.res +7 -0
  111. package/src/DOMAPI/ImageData.res +18 -0
  112. package/src/DOMAPI/Location.res +22 -0
  113. package/src/DOMAPI/MediaList.res +19 -0
  114. package/src/DOMAPI/MediaQueryList.res +82 -0
  115. package/src/DOMAPI/NamedNodeMap.res +45 -0
  116. package/src/DOMAPI/Navigator.res +114 -0
  117. package/src/DOMAPI/Node.res +179 -0
  118. package/src/DOMAPI/NodeFilter.res +4 -0
  119. package/src/DOMAPI/NodeIterator.res +13 -0
  120. package/src/DOMAPI/NodeList.res +8 -0
  121. package/src/DOMAPI/NodeListOf.res +9 -0
  122. package/src/DOMAPI/Range.res +149 -0
  123. package/src/DOMAPI/SVGGraphicsElement.res +675 -0
  124. package/src/DOMAPI/SVGLength.res +11 -0
  125. package/src/DOMAPI/ScreenOrientation.res +88 -0
  126. package/src/DOMAPI/Selection.res +103 -0
  127. package/src/DOMAPI/ShadowRoot.res +274 -0
  128. package/src/DOMAPI/StylePropertyMap.res +50 -0
  129. package/src/DOMAPI/StylePropertyMapReadOnly.res +13 -0
  130. package/src/DOMAPI/StyleSheetList.res +7 -0
  131. package/src/DOMAPI/Text.res +285 -0
  132. package/src/DOMAPI/TextTrackList.res +89 -0
  133. package/src/DOMAPI/TimeRanges.res +19 -0
  134. package/src/DOMAPI/TreeWalker.res +43 -0
  135. package/src/DOMAPI/VideoColorSpace.res +13 -0
  136. package/src/DOMAPI/VideoFrame.res +111 -0
  137. package/src/DOMAPI/Window.res +582 -0
  138. package/src/DOMAPI/XPathExpression.res +12 -0
  139. package/src/DOMAPI/XPathResult.res +13 -0
  140. package/src/DOMAPI.res +9668 -0
  141. package/src/EncryptedMediaExtensionsAPI/MediaKeySession.res +132 -0
  142. package/src/EncryptedMediaExtensionsAPI/MediaKeyStatusMap.res +13 -0
  143. package/src/EncryptedMediaExtensionsAPI/MediaKeySystemAccess.res +13 -0
  144. package/src/EncryptedMediaExtensionsAPI/MediaKeys.res +28 -0
  145. package/src/EncryptedMediaExtensionsAPI.res +100 -0
  146. package/src/EventAPI/AbortController.res +15 -0
  147. package/src/EventAPI/AbortSignal.res +106 -0
  148. package/src/EventAPI/Event.res +35 -0
  149. package/src/EventAPI/EventTarget.res +86 -0
  150. package/src/EventAPI.res +215 -0
  151. package/src/FetchAPI/FormData.res +58 -0
  152. package/src/FetchAPI/Headers.res +50 -0
  153. package/src/FetchAPI/Request.res +57 -0
  154. package/src/FetchAPI/Response.res +105 -0
  155. package/src/FetchAPI/URLSearchParams.res +68 -0
  156. package/src/FetchAPI.res +287 -0
  157. package/src/FileAPI/Blob.res +37 -0
  158. package/src/FileAPI/File.res +42 -0
  159. package/src/FileAPI/FileSystemDirectoryHandle.res +46 -0
  160. package/src/FileAPI/FileSystemFileHandle.res +23 -0
  161. package/src/FileAPI/FileSystemHandle.res +7 -0
  162. package/src/FileAPI/FileSystemWritableFileStream.res +63 -0
  163. package/src/FileAPI/ReadableStream.res +61 -0
  164. package/src/FileAPI/WritableStream.res +29 -0
  165. package/src/FileAPI/WritableStreamDefaultController.res +8 -0
  166. package/src/FileAPI.res +218 -0
  167. package/src/FileAndDirectoryEntriesAPI/FileSystemDirectoryEntry.res +42 -0
  168. package/src/FileAndDirectoryEntriesAPI/FileSystemDirectoryReader.res +12 -0
  169. package/src/FileAndDirectoryEntriesAPI/FileSystemEntry.res +11 -0
  170. package/src/FileAndDirectoryEntriesAPI.res +87 -0
  171. package/src/GamepadAPI/GamepadHapticActuator.res +17 -0
  172. package/src/GamepadAPI.res +85 -0
  173. package/src/GeolocationAPI/Geolocation.res +29 -0
  174. package/src/GeolocationAPI/GeolocationCoordinates.res +7 -0
  175. package/src/GeolocationAPI/GeolocationPosition.res +7 -0
  176. package/src/GeolocationAPI.res +78 -0
  177. package/src/Global.res +302 -0
  178. package/src/HistoryAPI/History.res +33 -0
  179. package/src/HistoryAPI.res +26 -0
  180. package/src/IndexedDBAPI/IDBDatabase.res +135 -0
  181. package/src/IndexedDBAPI/IDBFactory.res +31 -0
  182. package/src/IndexedDBAPI/IDBIndex.res +74 -0
  183. package/src/IndexedDBAPI/IDBObjectStore.res +167 -0
  184. package/src/IndexedDBAPI/IDBTransaction.res +102 -0
  185. package/src/IndexedDBAPI.res +205 -0
  186. package/src/MediaCapabilitiesAPI/MediaCapabilities.res +19 -0
  187. package/src/MediaCapabilitiesAPI.res +81 -0
  188. package/src/MediaCaptureAndStreamsAPI/MediaDeviceInfo.res +7 -0
  189. package/src/MediaCaptureAndStreamsAPI/MediaDevices.res +113 -0
  190. package/src/MediaCaptureAndStreamsAPI/MediaStream.res +142 -0
  191. package/src/MediaCaptureAndStreamsAPI/MediaStreamTrack.res +122 -0
  192. package/src/MediaCaptureAndStreamsAPI.res +194 -0
  193. package/src/MediaSessionAPI/MediaMetadata.res +7 -0
  194. package/src/MediaSessionAPI/MediaSession.res +17 -0
  195. package/src/MediaSessionAPI.res +83 -0
  196. package/src/NotificationAPI/Notification.res +102 -0
  197. package/src/NotificationAPI.res +82 -0
  198. package/src/PerformanceAPI/Performance.res +169 -0
  199. package/src/PerformanceAPI/PerformanceEntry.res +7 -0
  200. package/src/PerformanceAPI/PerformanceMark.res +15 -0
  201. package/src/PerformanceAPI.res +86 -0
  202. package/src/PermissionsAPI/Permissions.res +7 -0
  203. package/src/PermissionsAPI.res +39 -0
  204. package/src/PictureInPicture.res +18 -0
  205. package/src/PictureInPictureAPI.res +18 -0
  206. package/src/Prelude/DOMException.res +7 -0
  207. package/src/Prelude/DOMStringList.res +15 -0
  208. package/src/Prelude.res +39 -0
  209. package/src/PushManagerAPI/PushManager.res +25 -0
  210. package/src/PushManagerAPI/PushSubscription.res +19 -0
  211. package/src/PushManagerAPI.res +67 -0
  212. package/src/RemotePlaybackAPI/RemotePlayback.res +102 -0
  213. package/src/RemotePlaybackAPI.res +21 -0
  214. package/src/ResizeObserverAPI/ResizeObserver.res +27 -0
  215. package/src/ResizeObserverAPI.res +58 -0
  216. package/src/ScreenWakeLockAPI/WakeLock.res +7 -0
  217. package/src/ScreenWakeLockAPI/WakeLockSentinel.res +88 -0
  218. package/src/ScreenWakeLockAPI.res +26 -0
  219. package/src/ServiceWorkerAPI/Cache.res +100 -0
  220. package/src/ServiceWorkerAPI/CacheStorage.res +46 -0
  221. package/src/ServiceWorkerAPI/NavigationPreloadManager.res +25 -0
  222. package/src/ServiceWorkerAPI/ServiceWorker.res +101 -0
  223. package/src/ServiceWorkerAPI/ServiceWorkerContainer.res +114 -0
  224. package/src/ServiceWorkerAPI/ServiceWorkerRegistration.res +114 -0
  225. package/src/ServiceWorkerAPI.res +134 -0
  226. package/src/StorageAPI/StorageManager.res +26 -0
  227. package/src/StorageAPI.res +10 -0
  228. package/src/ViewTransitionsAPI/ViewTransition.res +7 -0
  229. package/src/ViewTransitionsAPI.res +23 -0
  230. package/src/VisualViewportAPI.res +38 -0
  231. package/src/WebAudioAPI/AnalyserNode.res +180 -0
  232. package/src/WebAudioAPI/AudioBuffer.res +35 -0
  233. package/src/WebAudioAPI/AudioBufferSourceNode.res +183 -0
  234. package/src/WebAudioAPI/AudioContext.res +266 -0
  235. package/src/WebAudioAPI/AudioListener.res +1 -0
  236. package/src/WebAudioAPI/AudioNode.res +143 -0
  237. package/src/WebAudioAPI/AudioParam.res +56 -0
  238. package/src/WebAudioAPI/AudioProcessingEvent.res +38 -0
  239. package/src/WebAudioAPI/AudioScheduledSourceNode.res +171 -0
  240. package/src/WebAudioAPI/AudioWorkletNode.res +160 -0
  241. package/src/WebAudioAPI/BaseAudioContext.res +212 -0
  242. package/src/WebAudioAPI/BiquadFilterNode.res +168 -0
  243. package/src/WebAudioAPI/ChannelMergerNode.res +157 -0
  244. package/src/WebAudioAPI/ChannelSplitterNode.res +159 -0
  245. package/src/WebAudioAPI/ConstantSourceNode.res +172 -0
  246. package/src/WebAudioAPI/ConvolverNode.res +157 -0
  247. package/src/WebAudioAPI/DelayNode.res +150 -0
  248. package/src/WebAudioAPI/DynamicsCompressorNode.res +162 -0
  249. package/src/WebAudioAPI/GainNode.res +149 -0
  250. package/src/WebAudioAPI/IIRFilterNode.res +168 -0
  251. package/src/WebAudioAPI/MediaElementAudioSourceNode.res +168 -0
  252. package/src/WebAudioAPI/MediaStreamAudioDestinationNode.res +168 -0
  253. package/src/WebAudioAPI/MediaStreamAudioSourceNode.res +168 -0
  254. package/src/WebAudioAPI/OfflineAudioCompletionEvent.res +40 -0
  255. package/src/WebAudioAPI/OfflineAudioContext.res +246 -0
  256. package/src/WebAudioAPI/OscillatorNode.res +176 -0
  257. package/src/WebAudioAPI/PannerNode.res +150 -0
  258. package/src/WebAudioAPI/PeriodicWave.res +8 -0
  259. package/src/WebAudioAPI/StereoPannerNode.res +157 -0
  260. package/src/WebAudioAPI/WaveShaperNode.res +157 -0
  261. package/src/WebAudioAPI/Worklet.res +13 -0
  262. package/src/WebAudioAPI.res +1271 -0
  263. package/src/WebCryptoAPI/Crypto.res +13 -0
  264. package/src/WebCryptoAPI/SubtleCrypto.res +173 -0
  265. package/src/WebCryptoAPI.res +71 -0
  266. package/src/WebLocksAPI/LockManager.res +29 -0
  267. package/src/WebLocksAPI.res +47 -0
  268. package/src/WebMIDIAPI.res +37 -0
  269. package/src/WebSocketsAPI/CloseEvent.res +37 -0
  270. package/src/WebSocketsAPI/MessageEvent.res +38 -0
  271. package/src/WebSocketsAPI/WebSocket.res +130 -0
  272. package/src/WebSocketsAPI.res +125 -0
  273. package/src/WebSpeechAPI/SpeechSynthesis.res +112 -0
  274. package/src/WebSpeechAPI/SpeechSynthesisUtterance.res +88 -0
  275. package/src/WebSpeechAPI.res +82 -0
  276. package/src/WebStorageAPI/Storage.res +44 -0
  277. package/src/WebStorageAPI/StorageEvent.res +37 -0
  278. package/src/WebStorageAPI.res +57 -0
  279. package/src/WebVTTAPI/TextTrack.res +96 -0
  280. package/src/WebVTTAPI/TextTrackCueList.res +10 -0
  281. package/src/WebVTTAPI.res +122 -0
@@ -0,0 +1,113 @@
1
+ open EventAPI
2
+ open MediaCaptureAndStreamsAPI
3
+
4
+ external asEventTarget: mediaDevices => eventTarget = "%identity"
5
+ /**
6
+ Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.
7
+
8
+ The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.
9
+
10
+ When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.
11
+
12
+ When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.
13
+
14
+ When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
15
+
16
+ If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.
17
+
18
+ The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
19
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
20
+ */
21
+ @send
22
+ external addEventListener: (
23
+ mediaDevices,
24
+ ~type_: eventType,
25
+ ~callback: eventListener<'event>,
26
+ ~options: addEventListenerOptions=?,
27
+ ) => unit = "addEventListener"
28
+
29
+ /**
30
+ Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.
31
+
32
+ The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.
33
+
34
+ When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.
35
+
36
+ When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.
37
+
38
+ When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
39
+
40
+ If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.
41
+
42
+ The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
43
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
44
+ */
45
+ @send
46
+ external addEventListener2: (
47
+ mediaDevices,
48
+ ~type_: eventType,
49
+ ~callback: eventListener<'event>,
50
+ ~options: bool=?,
51
+ ) => unit = "addEventListener"
52
+
53
+ /**
54
+ Removes the event listener in target's event listener list with the same type, callback, and options.
55
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
56
+ */
57
+ @send
58
+ external removeEventListener: (
59
+ mediaDevices,
60
+ ~type_: eventType,
61
+ ~callback: eventListener<'event>,
62
+ ~options: eventListenerOptions=?,
63
+ ) => unit = "removeEventListener"
64
+
65
+ /**
66
+ Removes the event listener in target's event listener list with the same type, callback, and options.
67
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
68
+ */
69
+ @send
70
+ external removeEventListener2: (
71
+ mediaDevices,
72
+ ~type_: eventType,
73
+ ~callback: eventListener<'event>,
74
+ ~options: bool=?,
75
+ ) => unit = "removeEventListener"
76
+
77
+ /**
78
+ Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.
79
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent)
80
+ */
81
+ @send
82
+ external dispatchEvent: (mediaDevices, event) => bool = "dispatchEvent"
83
+
84
+ /**
85
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaDevices/enumerateDevices)
86
+ */
87
+ @send
88
+ external enumerateDevices: mediaDevices => Promise.t<array<mediaDeviceInfo>> = "enumerateDevices"
89
+
90
+ /**
91
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints)
92
+ */
93
+ @send
94
+ external getSupportedConstraints: mediaDevices => mediaTrackSupportedConstraints =
95
+ "getSupportedConstraints"
96
+
97
+ /**
98
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaDevices/getUserMedia)
99
+ */
100
+ @send
101
+ external getUserMedia: (
102
+ mediaDevices,
103
+ ~constraints: mediaStreamConstraints=?,
104
+ ) => Promise.t<mediaStream> = "getUserMedia"
105
+
106
+ /**
107
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaDevices/getDisplayMedia)
108
+ */
109
+ @send
110
+ external getDisplayMedia: (
111
+ mediaDevices,
112
+ ~options: displayMediaStreamOptions=?,
113
+ ) => Promise.t<mediaStream> = "getDisplayMedia"
@@ -0,0 +1,142 @@
1
+ open EventAPI
2
+ open MediaCaptureAndStreamsAPI
3
+
4
+ /**
5
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream)
6
+ */
7
+ @new
8
+ external make: unit => mediaStream = "MediaStream"
9
+
10
+ /**
11
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream)
12
+ */
13
+ @new
14
+ external make2: mediaStream => mediaStream = "MediaStream"
15
+
16
+ /**
17
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream)
18
+ */
19
+ @new
20
+ external make3: array<mediaStreamTrack> => mediaStream = "MediaStream"
21
+
22
+ external asEventTarget: mediaStream => eventTarget = "%identity"
23
+ /**
24
+ Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.
25
+
26
+ The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.
27
+
28
+ When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.
29
+
30
+ When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.
31
+
32
+ When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
33
+
34
+ If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.
35
+
36
+ The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
37
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
38
+ */
39
+ @send
40
+ external addEventListener: (
41
+ mediaStream,
42
+ ~type_: eventType,
43
+ ~callback: eventListener<'event>,
44
+ ~options: addEventListenerOptions=?,
45
+ ) => unit = "addEventListener"
46
+
47
+ /**
48
+ Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.
49
+
50
+ The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.
51
+
52
+ When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.
53
+
54
+ When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.
55
+
56
+ When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
57
+
58
+ If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.
59
+
60
+ The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
61
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
62
+ */
63
+ @send
64
+ external addEventListener2: (
65
+ mediaStream,
66
+ ~type_: eventType,
67
+ ~callback: eventListener<'event>,
68
+ ~options: bool=?,
69
+ ) => unit = "addEventListener"
70
+
71
+ /**
72
+ Removes the event listener in target's event listener list with the same type, callback, and options.
73
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
74
+ */
75
+ @send
76
+ external removeEventListener: (
77
+ mediaStream,
78
+ ~type_: eventType,
79
+ ~callback: eventListener<'event>,
80
+ ~options: eventListenerOptions=?,
81
+ ) => unit = "removeEventListener"
82
+
83
+ /**
84
+ Removes the event listener in target's event listener list with the same type, callback, and options.
85
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
86
+ */
87
+ @send
88
+ external removeEventListener2: (
89
+ mediaStream,
90
+ ~type_: eventType,
91
+ ~callback: eventListener<'event>,
92
+ ~options: bool=?,
93
+ ) => unit = "removeEventListener"
94
+
95
+ /**
96
+ Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.
97
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent)
98
+ */
99
+ @send
100
+ external dispatchEvent: (mediaStream, event) => bool = "dispatchEvent"
101
+
102
+ /**
103
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream/getAudioTracks)
104
+ */
105
+ @send
106
+ external getAudioTracks: mediaStream => array<mediaStreamTrack> = "getAudioTracks"
107
+
108
+ /**
109
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream/getVideoTracks)
110
+ */
111
+ @send
112
+ external getVideoTracks: mediaStream => array<mediaStreamTrack> = "getVideoTracks"
113
+
114
+ /**
115
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream/getTracks)
116
+ */
117
+ @send
118
+ external getTracks: mediaStream => array<mediaStreamTrack> = "getTracks"
119
+
120
+ /**
121
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream/getTrackById)
122
+ */
123
+ @send
124
+ external getTrackById: (mediaStream, string) => mediaStreamTrack = "getTrackById"
125
+
126
+ /**
127
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream/addTrack)
128
+ */
129
+ @send
130
+ external addTrack: (mediaStream, mediaStreamTrack) => unit = "addTrack"
131
+
132
+ /**
133
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream/removeTrack)
134
+ */
135
+ @send
136
+ external removeTrack: (mediaStream, mediaStreamTrack) => unit = "removeTrack"
137
+
138
+ /**
139
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream/clone)
140
+ */
141
+ @send
142
+ external clone: mediaStream => mediaStream = "clone"
@@ -0,0 +1,122 @@
1
+ open EventAPI
2
+ open MediaCaptureAndStreamsAPI
3
+ open WebAudioAPI
4
+
5
+ external asEventTarget: mediaStreamTrack => eventTarget = "%identity"
6
+ /**
7
+ Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.
8
+
9
+ The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.
10
+
11
+ When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.
12
+
13
+ When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.
14
+
15
+ When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
16
+
17
+ If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.
18
+
19
+ The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
20
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
21
+ */
22
+ @send
23
+ external addEventListener: (
24
+ mediaStreamTrack,
25
+ ~type_: eventType,
26
+ ~callback: eventListener<'event>,
27
+ ~options: addEventListenerOptions=?,
28
+ ) => unit = "addEventListener"
29
+
30
+ /**
31
+ Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.
32
+
33
+ The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.
34
+
35
+ When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.
36
+
37
+ When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.
38
+
39
+ When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
40
+
41
+ If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.
42
+
43
+ The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
44
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
45
+ */
46
+ @send
47
+ external addEventListener2: (
48
+ mediaStreamTrack,
49
+ ~type_: eventType,
50
+ ~callback: eventListener<'event>,
51
+ ~options: bool=?,
52
+ ) => unit = "addEventListener"
53
+
54
+ /**
55
+ Removes the event listener in target's event listener list with the same type, callback, and options.
56
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
57
+ */
58
+ @send
59
+ external removeEventListener: (
60
+ mediaStreamTrack,
61
+ ~type_: eventType,
62
+ ~callback: eventListener<'event>,
63
+ ~options: eventListenerOptions=?,
64
+ ) => unit = "removeEventListener"
65
+
66
+ /**
67
+ Removes the event listener in target's event listener list with the same type, callback, and options.
68
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
69
+ */
70
+ @send
71
+ external removeEventListener2: (
72
+ mediaStreamTrack,
73
+ ~type_: eventType,
74
+ ~callback: eventListener<'event>,
75
+ ~options: bool=?,
76
+ ) => unit = "removeEventListener"
77
+
78
+ /**
79
+ Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.
80
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent)
81
+ */
82
+ @send
83
+ external dispatchEvent: (mediaStreamTrack, event) => bool = "dispatchEvent"
84
+
85
+ /**
86
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/clone)
87
+ */
88
+ @send
89
+ external clone: mediaStreamTrack => mediaStreamTrack = "clone"
90
+
91
+ /**
92
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/stop)
93
+ */
94
+ @send
95
+ external stop: mediaStreamTrack => unit = "stop"
96
+
97
+ /**
98
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities)
99
+ */
100
+ @send
101
+ external getCapabilities: mediaStreamTrack => mediaTrackCapabilities = "getCapabilities"
102
+
103
+ /**
104
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getConstraints)
105
+ */
106
+ @send
107
+ external getConstraints: mediaStreamTrack => mediaTrackConstraints = "getConstraints"
108
+
109
+ /**
110
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings)
111
+ */
112
+ @send
113
+ external getSettings: mediaStreamTrack => mediaTrackSettings = "getSettings"
114
+
115
+ /**
116
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/applyConstraints)
117
+ */
118
+ @send
119
+ external applyConstraints: (
120
+ mediaStreamTrack,
121
+ ~constraints: mediaTrackConstraints=?,
122
+ ) => Promise.t<unit> = "applyConstraints"
@@ -0,0 +1,194 @@
1
+ @@warning("-30")
2
+
3
+ open EventAPI
4
+
5
+ type mediaDeviceKind =
6
+ | @as("audioinput") Audioinput
7
+ | @as("audiooutput") Audiooutput
8
+ | @as("videoinput") Videoinput
9
+
10
+ type mediaStreamTrackState =
11
+ | @as("ended") Ended
12
+ | @as("live") Live
13
+
14
+ /**
15
+ 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.
16
+ [See MediaDevices on MDN](https://developer.mozilla.org/docs/Web/API/MediaDevices)
17
+ */
18
+ type mediaDevices = {
19
+ ...eventTarget,
20
+ }
21
+
22
+ /**
23
+ The MediaDevicesInfo interface contains information that describes a single media input or output device.
24
+ [See MediaDeviceInfo on MDN](https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo)
25
+ */
26
+ type mediaDeviceInfo = {
27
+ /**
28
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/deviceId)
29
+ */
30
+ deviceId: string,
31
+ /**
32
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/kind)
33
+ */
34
+ kind: mediaDeviceKind,
35
+ /**
36
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/label)
37
+ */
38
+ label: string,
39
+ /**
40
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/groupId)
41
+ */
42
+ groupId: string,
43
+ }
44
+
45
+ /**
46
+ A stream of media content. A stream consists of several tracks such as video or audio tracks. Each track is specified as an instance of MediaStreamTrack.
47
+ [See MediaStream on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream)
48
+ */
49
+ type mediaStream = {
50
+ ...eventTarget,
51
+ /**
52
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream/id)
53
+ */
54
+ id: string,
55
+ /**
56
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream/active)
57
+ */
58
+ active: bool,
59
+ }
60
+
61
+ /**
62
+ A single media track within a stream; typically, these are audio or video tracks, but other track types may exist as well.
63
+ [See MediaStreamTrack on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack)
64
+ */
65
+ type mediaStreamTrack = {
66
+ ...eventTarget,
67
+ /**
68
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/kind)
69
+ */
70
+ kind: string,
71
+ /**
72
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/id)
73
+ */
74
+ id: string,
75
+ /**
76
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/label)
77
+ */
78
+ label: string,
79
+ /**
80
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/enabled)
81
+ */
82
+ mutable enabled: bool,
83
+ /**
84
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/muted)
85
+ */
86
+ muted: bool,
87
+ /**
88
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/readyState)
89
+ */
90
+ readyState: mediaStreamTrackState,
91
+ /**
92
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/contentHint)
93
+ */
94
+ mutable contentHint: string,
95
+ }
96
+
97
+ type mediaTrackSupportedConstraints = {
98
+ mutable width?: bool,
99
+ mutable height?: bool,
100
+ mutable aspectRatio?: bool,
101
+ mutable frameRate?: bool,
102
+ mutable facingMode?: bool,
103
+ mutable sampleRate?: bool,
104
+ mutable sampleSize?: bool,
105
+ mutable echoCancellation?: bool,
106
+ mutable autoGainControl?: bool,
107
+ mutable noiseSuppression?: bool,
108
+ mutable channelCount?: bool,
109
+ mutable deviceId?: bool,
110
+ mutable groupId?: bool,
111
+ mutable backgroundBlur?: bool,
112
+ mutable displaySurface?: bool,
113
+ }
114
+
115
+ type mediaStreamConstraints = {
116
+ mutable video?: unknown,
117
+ mutable audio?: unknown,
118
+ mutable preferCurrentTab?: bool,
119
+ mutable peerIdentity?: string,
120
+ }
121
+
122
+ type displayMediaStreamOptions = {
123
+ mutable video?: unknown,
124
+ mutable audio?: unknown,
125
+ }
126
+
127
+ type uLongRange = {
128
+ mutable max?: int,
129
+ mutable min?: int,
130
+ }
131
+
132
+ type doubleRange = {
133
+ mutable max?: float,
134
+ mutable min?: float,
135
+ }
136
+
137
+ type mediaTrackCapabilities = {
138
+ mutable width?: uLongRange,
139
+ mutable height?: uLongRange,
140
+ mutable aspectRatio?: doubleRange,
141
+ mutable frameRate?: doubleRange,
142
+ mutable facingMode?: array<string>,
143
+ mutable sampleRate?: uLongRange,
144
+ mutable sampleSize?: uLongRange,
145
+ mutable echoCancellation?: array<bool>,
146
+ mutable autoGainControl?: array<bool>,
147
+ mutable noiseSuppression?: array<bool>,
148
+ mutable channelCount?: uLongRange,
149
+ mutable deviceId?: string,
150
+ mutable groupId?: string,
151
+ mutable backgroundBlur?: array<bool>,
152
+ mutable displaySurface?: string,
153
+ }
154
+
155
+ type mediaTrackConstraintSet = {
156
+ mutable width?: int,
157
+ mutable height?: int,
158
+ mutable aspectRatio?: float,
159
+ mutable frameRate?: float,
160
+ mutable facingMode?: string,
161
+ mutable sampleRate?: int,
162
+ mutable sampleSize?: int,
163
+ mutable echoCancellation?: bool,
164
+ mutable autoGainControl?: bool,
165
+ mutable noiseSuppression?: bool,
166
+ mutable channelCount?: int,
167
+ mutable deviceId?: string,
168
+ mutable groupId?: string,
169
+ mutable backgroundBlur?: bool,
170
+ mutable displaySurface?: string,
171
+ }
172
+
173
+ type mediaTrackConstraints = {
174
+ ...mediaTrackConstraintSet,
175
+ mutable advanced?: array<mediaTrackConstraintSet>,
176
+ }
177
+
178
+ type mediaTrackSettings = {
179
+ mutable width?: int,
180
+ mutable height?: int,
181
+ mutable aspectRatio?: float,
182
+ mutable frameRate?: float,
183
+ mutable facingMode?: string,
184
+ mutable sampleRate?: int,
185
+ mutable sampleSize?: int,
186
+ mutable echoCancellation?: bool,
187
+ mutable autoGainControl?: bool,
188
+ mutable noiseSuppression?: bool,
189
+ mutable channelCount?: int,
190
+ mutable deviceId?: string,
191
+ mutable groupId?: string,
192
+ mutable backgroundBlur?: bool,
193
+ mutable displaySurface?: string,
194
+ }
@@ -0,0 +1,7 @@
1
+ open MediaSessionAPI
2
+
3
+ /**
4
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaMetadata)
5
+ */
6
+ @new
7
+ external make: (~init: mediaMetadataInit=?) => mediaMetadata = "MediaMetadata"
@@ -0,0 +1,17 @@
1
+ open MediaSessionAPI
2
+
3
+ /**
4
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaSession/setActionHandler)
5
+ */
6
+ @send
7
+ external setActionHandler: (
8
+ mediaSession,
9
+ ~action: mediaSessionAction,
10
+ ~handler: mediaSessionActionHandler,
11
+ ) => unit = "setActionHandler"
12
+
13
+ /**
14
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaSession/setPositionState)
15
+ */
16
+ @send
17
+ external setPositionState: (mediaSession, ~state: mediaPositionState=?) => unit = "setPositionState"
@@ -0,0 +1,83 @@
1
+ @@warning("-30")
2
+
3
+ open Prelude
4
+
5
+ type mediaSessionPlaybackState =
6
+ | @as("none") None
7
+ | @as("paused") Paused
8
+ | @as("playing") Playing
9
+
10
+ type mediaSessionAction =
11
+ | @as("nexttrack") Nexttrack
12
+ | @as("pause") Pause
13
+ | @as("play") Play
14
+ | @as("previoustrack") Previoustrack
15
+ | @as("seekbackward") Seekbackward
16
+ | @as("seekforward") Seekforward
17
+ | @as("seekto") Seekto
18
+ | @as("skipad") Skipad
19
+ | @as("stop") Stop
20
+
21
+ type mediaImage = {
22
+ mutable src: string,
23
+ mutable sizes?: string,
24
+ @as("type") mutable type_?: string,
25
+ }
26
+
27
+ /**
28
+ [See MediaMetadata on MDN](https://developer.mozilla.org/docs/Web/API/MediaMetadata)
29
+ */
30
+ type mediaMetadata = {
31
+ /**
32
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaMetadata/title)
33
+ */
34
+ mutable title: string,
35
+ /**
36
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaMetadata/artist)
37
+ */
38
+ mutable artist: string,
39
+ /**
40
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaMetadata/album)
41
+ */
42
+ mutable album: string,
43
+ /**
44
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaMetadata/artwork)
45
+ */
46
+ mutable artwork: array<mediaImage>,
47
+ }
48
+
49
+ /**
50
+ [See MediaSession on MDN](https://developer.mozilla.org/docs/Web/API/MediaSession)
51
+ */
52
+ type mediaSession = {
53
+ /**
54
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaSession/metadata)
55
+ */
56
+ mutable metadata: Null.t<mediaMetadata>,
57
+ /**
58
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaSession/playbackState)
59
+ */
60
+ mutable playbackState: mediaSessionPlaybackState,
61
+ }
62
+
63
+ type mediaMetadataInit = {
64
+ mutable title?: string,
65
+ mutable artist?: string,
66
+ mutable album?: string,
67
+ mutable artwork?: array<mediaImage>,
68
+ }
69
+
70
+ type mediaSessionActionDetails = {
71
+ mutable action: mediaSessionAction,
72
+ mutable seekOffset?: float,
73
+ mutable seekTime?: float,
74
+ mutable fastSeek?: bool,
75
+ }
76
+
77
+ type mediaPositionState = {
78
+ mutable duration?: float,
79
+ mutable playbackRate?: float,
80
+ mutable position?: float,
81
+ }
82
+
83
+ type mediaSessionActionHandler = mediaSessionActionDetails => unit